วิธีการให้ `dpkg -i` ติดตั้งการพึ่งพาสำหรับฉัน


324

พูดว่าฉันมีfoo-1.2.3.debซึ่งขึ้นอยู่กับperlและpythonอย่างไรก็ตามการใช้คำสั่ง:

dpkg -i ./foo-1.2.3.deb

จะไม่ติดตั้งการขึ้นต่อกันเหล่านี้ ดังนั้นฉันต้องapt-get install perl pythonด้วยมือ

จะdpkg -iติดตั้งการพึ่งพาเหล่านี้ให้ฉันโดยอัตโนมัติได้อย่างไร



5
@ pd12: ไชโยสำหรับการอ้างอิงแบบวงกลม! :-D
David Foerster

เฮ้ฉันตัดสินใจที่จะเชื่อมโยงทั้งสองและดูว่าหนึ่ง mods จะเลือก
pd12

3
มันน่าพิศวงว่าในปี 2016 ที่มีการติดตั้งกราฟิก .deb ยังคงล้มเหลวอย่างเงียบ ๆ โดยไม่บอกอะไรผู้ใช้เกี่ยวกับการอ้างอิงที่ขาดหายไป
Dan Dascalescu

คำตอบ:


416

หลังจากใช้dpkgงานการรันคำสั่งต่อไปนี้ช่วยให้ฉันติดตั้งการพึ่งพาที่จำเป็น:

sudo apt-get -f install

โดยรวมเทอร์มินัลของคุณควรมีลักษณะดังนี้:

$ sudo dpkg -i package_with_unsatisfied_dependencies.deb
dpkg: dependency problems prevent ... 
[additional messages]

$ sudo apt-get -f install
[apt messages]
Setting up [dependency]...
Setting up package_with_unsatisfied_dependencies...

ขอให้สังเกตSetting up package_with_unsatisfied_dependenciesเส้นเกี่ยวกับ นี้แก้ไข (และเสร็จสิ้น) package_with_unsatisfied_dependencies.debการติดตั้ง


8
ฉันควรวิ่งsudo dpkg -i mypackage.debอีกครั้งหรือไม่
มูฮัมหมัด Gelbana

23
หลังจากเรียกใช้sudo apt-get -f installแพคเกจของฉันและมันขึ้นอยู่กับการติดตั้งทั้งหมด sudo dpkg -i my_package.debไม่จำเป็นต้องรันและจะติดตั้งแพคเกจอีกครั้ง
Gus E

5
ต่อไปนี้การทำงานบน Ubuntu sudo dpkg -i package.deb; sudo apt-get -f install; sudo dpkg -i package.deb14.04: การdpkg -iรันครั้งแรกทำเครื่องหมายการขึ้นต่อกัน, การapt-get -f installติดตั้งการพึ่งพาที่จำเป็นและครั้งที่สองdpkg -iติดตั้งแพ็กเกจสำเร็จ โปรดทราบว่าapt-get install -fเป็นคำสั่งที่แตกต่างกันโดยสิ้นเชิง
Mikko Rantalainen

1
@ysth ไม่ไม่ทำdpkg -i --force; ที่จะบังคับให้ติดตั้งแพ็คเกจที่เสียหาย! การรันdpkg/ ไม่ / --forceจะทำรายการที่จำเป็นในฐานข้อมูลแพ็คเกจเพื่อที่apt-get -f installจะทำสิ่งที่ถูกต้อง
Brian A. Henning

@ Lotharyx: ฉันไม่สามารถลองได้ในตอนนี้ แต่ฉันไม่คิดว่า dpkg ที่ไม่มีการบังคับ (ที่ล้มเหลวเนื่องจากการขึ้นต่อกันที่ขาดหายไป) จะทำให้รายการในฐานข้อมูลแพ็กเกจ
ysth

111

คุณสามารถติดตั้งgdebi-coreซึ่งเป็นเวอร์ชันบรรทัดคำสั่งของตัวติดตั้งแพ็คเกจ GDebi จาก 10.04 และก่อนหน้า ใน Ubuntu รุ่นใหม่กว่านั้น Software Center จะใช้ในการติดตั้ง debs ซึ่งไม่มีบรรทัดคำสั่งเทียบเท่า

หากต้องการติดตั้งแพ็กเกจ deb โดยใช้ gdebi เพียงเรียกใช้:

sudo gdebi my_package_1.0.deb

64

เริ่มต้นด้วย apt 1.1 (มีอยู่ใน Xenial (16.04), ยืดได้) apt installยังอนุญาตให้ไฟล์ในเครื่อง:

sudo apt install ./foo-1.2.3.deb

ง่ายกว่าและสะอาดกว่ามาก

ดูประกาศการเปิดตัว


4
มันเกี่ยวกับเวลาที่มีอยู่
Mike

วิธีนี้ไม่ได้ผล สิ่งที่เกิดขึ้นนั้นเป็นรายการข้อผิดพลาด
Billy S

@BillyS ขออภัยที่ได้ยินว่ามันไม่ได้ผลสำหรับคุณ แต่หากไม่มีรุ่น distro ที่คุณใช้อยู่และข้อผิดพลาดที่คุณได้รับสิ่งนี้ไม่สามารถดำเนินการได้เลย
ตำรา

คำสั่งไม่ทำงานสำหรับฉัน แต่apt ./install foo-1.2.3.debทำงานได้
Cenk Alti

1
การแก้ไขคำสั่งให้การแสดงความคิดเห็นดังกล่าวข้างต้นจะเรียกว่ารุ่นก่อนหน้าของคำตอบที่พลาดที่จำเป็นใน./เส้นทางหรือ
Zanna

38

Gdebi

gdebiติดตั้งแพคเกจ deb และการอ้างอิงของมัน วิธีใช้งาน:

sudo gdebi package.deb

ใน Ubuntu รุ่นใหม่กว่านี้ไม่ได้ติดตั้งตามค่าเริ่มต้นดังนั้นคุณจะต้องติดตั้งจากที่เก็บ

ดูman gdebiรายการตัวเลือกทั้งหมด

gdebiเป็นบรรทัดคำสั่งเทียบเท่ากับเครื่องมือกราฟิกที่มีชื่อเดียวกันกับที่เคยถูกรวมไว้ใน Ubuntu คำสั่งสำหรับเครื่องมือกราฟิกคือgdebi-gtkและมีฟังก์ชันการทำงานที่คล้ายกัน:

gdebi-GTK


gdebi-gtk จะไม่แสดง deps ที่จำเป็น (เวอร์ชั่นที่ฉันมีที่นี่เป็นอย่างน้อยและดูเหมือนว่ามีข้อบกพร่อง) แต่บรรทัดคำสั่งจะ! หากเรามีเครื่องอื่นที่มีแพคเกจที่เราสามารถใช้dpkg-repackมันขึ้นอยู่กับรายการ deps ดังกล่าว :)
กุมภ์ Power

21

วิ่ง

sudo apt-get install -f

หลังจากติดตั้งแพคเกจด้วย dpkg อาจแก้ปัญหาการแตกหัก (อย่างน้อยคนฉลาด - รับพูดอย่างนั้น ... ) ไม่อัปเดตเมื่อฉันจะตรวจสอบ


ฉันควรวิ่งsudo dpkg -i mypackage.debอีกครั้งหรือไม่
มูฮัมหมัด Gelbana

3
apt-get -f installใช้งานได้ แต่apt-get install -fไม่เหมือนกัน
200_success

9

dpkg ไม่มีการสนับสนุนการพึ่งพา มีวิธีการอยู่รอบ ๆ แต่นั่นจะทำให้คุณต้องสร้างฐานข้อมูลท้องถิ่น (และคุณจะรู้ถึงการพึ่งพา) แล้วและถือว่าล้าสมัย (... )

ต้องเป็นบรรทัดคำสั่งหรือไม่ (ติดตั้งเซิร์ฟเวอร์หรือไม่) หากเป็นเช่นนั้นให้ดูที่apt-get -fแต่ต้องระวัง: การแก้ปัญหาการพึ่งพาหลังจากการติดตั้งอาจทำให้คุณต้องจบด้วยระบบที่ใช้งานไม่ได้

gdebi (gui frontend) เคยทำสิ่งนี้ได้ แต่ถูกแทนที่ด้วย USC

คุณดาวน์โหลด. deb มาได้อย่างไร คุณสมบัติใหม่ 11.04 บางส่วนเป็นการจัดการ. deb ที่ดาวน์โหลดจากเว็บไซต์: ได้รับการเปิดใน USC ดังนั้นการติดตั้งจะขึ้นอยู่กับการแก้ไขของผู้ติดตั้ง

แก้ไขตามความคิดเห็นโดย andrew: sudo gdebi foo-1.2.3.deb จะทำเคล็ดลับ !!


gdebi ยังสามารถใช้งานได้ Software Center เป็นเพียงแอพเริ่มต้น นอกจากนี้ในฐานะที่เป็นบันทึกของ Chen Xiao-Long, gdebi ยังสามารถใช้ในบรรทัดคำสั่ง
andrewsomething

เย็น! คำถามนั้นมีคำตอบเพราะสามารถใช้ gdebi กับ commandline ได้
Rinzwind

นี่ควรเป็นคำตอบที่ยอมรับได้
prosti

3

เป็นอีกทางเลือกหนึ่งที่gdebi-gtkคุณสามารถใช้ศูนย์ซอฟต์แวร์ Ubuntu

ดับเบิลคลิกที่แพ็คเกจและควรติดตั้งปุ่ม


3

คุณสามารถสร้างไฟล์ที่dpkg-dep-instมีเนื้อหาดังต่อไปนี้

#!/bin/bash

DEBIAN_FILE1=$1
dpkg -i $DEBIAN_FILE1 || apt-get --fix-broken install

ฉันถือว่าคุณสร้างไฟล์ในโฟลเดอร์บ้านของคุณ ทำให้มันปฏิบัติการด้วยchmod +x dpkg-dep-instและย้ายไปด้วย/usr/local/binsudo cp dpkg-dep-inst /usr/local/bin

ตอนนี้คุณสามารถติดตั้งแพคเกจเดเบียนที่มีการขึ้นต่อกันโดยอัตโนมัติด้วย:

sudo dpkg-dep-inst foo-1.2.3.deb

1
ใช้apt-get --yes --fix-broken installและทำให้การแก้ไขอัตโนมัติ
Lucas

@ysth ไม่ไม่ใช่โดยทั่วไป
BuZZ-dEE

1

ฉันเพิ่งพบปัญหานี้ การโทรapt-get install -fจะไม่ติดตั้งการอ้างอิงที่แนะนำแม้ว่า! วิธีแก้ปัญหาเฉพาะสำหรับสิ่งนี้คือการสร้างที่เก็บในเครื่องแล้วเพิ่มไปที่/etc/apt/sources.list:

apt-ftparchive packages . > Packages && gzip < Packages > Packages.gz
sudo echo "deb file://$PWD /" >> /etc/apt/sources.list
sudo apt-get update

0

จริงๆแล้วคำตอบก็คือdpkgตัวจัดการแพ็คเกจไม่สามารถติดตั้งการพึ่งพาได้นอกกรอบ คุณแคมman dpkgและพบว่า ดังนั้นคุณจำเป็นต้องใช้เครื่องมือเช่นapt, apt-get, aptitude, ... , dpkgขึ้นอยู่กับ

ฉันจะบอกว่าเป็นกรณีเดียวกันสำหรับrpmผู้จัดการแพคเกจในซีกโลก Linux อื่น ๆ rmpไม่ได้หมายความว่าจะทำการติดตั้งโดยอ้างอิง มันสามารถติดตั้งแพคเกจเดียวและสำหรับการติดตั้งการอ้างอิงที่คุณใช้yum, urpmi, up2dateเหล่านี้ทั้งหมดขึ้นอยู่กับ RPM

ตามที่ระบุไว้มีความเสี่ยงเล็กน้อยในการติดตั้งแพ็กเกจด้วยdpkgโดยตรงเนื่องจากการแก้ไขปัญหาการพึ่งพาในภายหลังอาจจบลงด้วยระบบที่ไม่ทำงานตามที่ @Rinzwind ระบุไว้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.