Câu hỏi Làm thế nào để cho `dpkg -i` cài đặt phụ thuộc cho tôi?


Nói, tôi có foo-1.2.3.deb mà phụ thuộc vào perl và python, tuy nhiên, chạy lệnh:

dpkg -i ./foo-1.2.3.deb

sẽ không cài đặt những phụ thuộc này. Vì vậy, tôi phải apt-get install perl python bằng tay.

Làm thế nào để làm cho dpkg -i tự động cài đặt các phụ thuộc này cho tôi?


260
2018-05-04 13:11


gốc


Có thể trùng lặp Làm cách nào để tự động tìm nạp phụ thuộc bị thiếu khi cài đặt phần mềm từ .deb? - pd12
@ pd12: Hoan hô cho tham khảo vòng tròn! :-D - David Foerster
heh, tôi quyết định liên kết cả hai và xem mod nào sẽ được chọn. - pd12
Thật ngạc nhiên là vào năm 2016, Cài đặt đồ họa .deb vẫn không hoạt động âm thầm mà không nói cho người dùng biết bất kỳ điều gì về thiếu phụ thuộc. - Dan Dascalescu


Các câu trả lời:


Sau khi sử dụng dpkg, chạy lệnh sau đã giúp tôi cài đặt các phụ thuộc bắt buộc:

sudo apt-get -f install

Trong tất cả, thiết bị đầu cuối của bạn sẽ trông như thế này:

$ 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...

Để ý dòng về Setting up package_with_unsatisfied_dependencies. Điều này sửa lỗi (và hoàn thành) việc cài đặt package_with_unsatisfied_dependencies.deb.


348
2018-05-04 15:38



Tôi có nên chạy không sudo dpkg -i mypackage.deb lần nữa ? - Muhammad Gelbana
Sau khi chạy sudo apt-get -f install gói của tôi và tất cả phụ thuộc của nó đều đã được cài đặt. Đang chạy sudo dpkg -i my_package.deb là không cần thiết và sẽ chỉ cài đặt lại gói. - Gus E
Các tác phẩm sau trên Ubuntu 14.04: sudo dpkg -i package.deb; sudo apt-get -f install; sudo dpkg -i package.deb. Đầu tiên dpkg -i phụ thuộc dấu hiệu chạy, apt-get -f install cài đặt các phụ thuộc bắt buộc và thứ hai dpkg -icài đặt thành công gói. Lưu ý rằng apt-get install -f là lệnh hoàn toàn khác. - Mikko Rantalainen
@ không, đừng làm dpkg -i --force; sẽ buộc cài đặt gói bị hỏng! Đang chạy dpkg /không có/ --force sẽ thực hiện mục nhập cần thiết trong cơ sở dữ liệu gói để apt-get -f install sẽ làm điều đúng. - Brian A. Henning
@ Lotharyx: Tôi không thể thử nó ngay bây giờ, nhưng tôi không nghĩ rằng dpkg mà không có lực lượng (không thành công do thiếu phụ thuộc) sẽ làm cho một mục trong cơ sở dữ liệu gói - ysth


Bạn có thể cài đặt gdebi-core, là phiên bản dòng lệnh của trình cài đặt gói GDebi từ ngày 10.04 trở về trước. Trong các phiên bản mới hơn của Ubuntu, Trung tâm Phần mềm được sử dụng để cài đặt các deb, mà không có một dòng lệnh tương đương.

Để cài đặt gói deb bằng gdebi, chỉ cần chạy:

sudo gdebi my_package_1.0.deb

108
2018-05-04 14:47





Gdebi

gdebi cài đặt gói deb và các gói phụ thuộc của nó. Để sử dụng nó chạy:

sudo gdebi package.deb

Trong các phiên bản mới hơn của Ubuntu, điều này không được cài đặt theo mặc định, vì vậy bạn sẽ cần phải cài đặt nó từ các kho lưu trữ.

Xem man gdebi để có danh sách đầy đủ các tùy chọn.

gdebi là dòng lệnh tương đương với công cụ đồ họa có cùng tên được sử dụng để được bao gồm theo mặc định trong Ubuntu. Lệnh cho công cụ đồ họa là gdebi-gtk và có chức năng tương tự:

gdebi-gtk


35
2018-05-04 16:56



gdebi-gtk sẽ không hiển thị yêu cầu deps (phiên bản tôi có ở đây ít nhất, và nó trông giống như một lỗi), nhưng dòng lệnh sẽ! Nếu chúng ta có một máy khác với các gói chúng ta có thể sử dụng dpkg-repack trên nó dựa trên danh sách deps như vậy :) - Aquarius Power


bắt đầu với apt 1.1 (có sẵn trong Xenial (16.04), stretch) apt install cũng cho phép các tệp cục bộ:

sudo apt install ./foo-1.2.3.deb

Vì vậy, đơn giản hơn và sạch hơn.

Xem thông báo phát hành


27
2017-07-05 09:23



Đã đến lúc tính năng này khả dụng - Mike
Giải pháp này không hoạt động. Tất cả những gì đã xảy ra là một danh sách các lỗi. - Billy S
@BillyS xin lỗi khi biết rằng nó không hoạt động cho bạn, nhưng không có phiên bản distro bạn đang sử dụng và lỗi nào bạn nhận được này hoàn toàn không thể thực hiện được. - textshell
Lệnh không hiệu quả với tôi apt ./install foo-1.2.3.deb đã làm việc. - Cenk Alti
Đã sửa lệnh, nhận xét ở trên được đề cập đến phiên bản trả lời trước đó bị bỏ lỡ ./ hoặc đường dẫn - Zanna


đang chạy

sudo apt-get install -f

sau khi cài đặt gói với dpkg có thể giải quyết dep dep bị hỏng (ít nhất là người đàn ông apt-get nói như vậy ...). Ill cập nhật khi tôi sẽ kiểm tra nó.


18
2018-05-04 13:17



Tôi có nên chạy không sudo dpkg -i mypackage.deb lần nữa ? - Muhammad Gelbana
apt-get -f install hoạt động, nhưng apt-get install -f không giống nhau. - 200_success


dpkg không có sự hỗ trợ phụ thuộc. Có một cách xung quanh nó nhưng điều đó sẽ yêu cầu bạn tạo một cơ sở dữ liệu cục bộ (và do đó bạn đã biết các phụ thuộc) và nó được coi là lỗi thời (...).

Nó có phải là dòng lệnh không? (cài đặt máy chủ?) Nếu có thì hãy xem apt-get -f nhưng hãy cẩn thận: giải quyết các phụ thuộc sau khi cài đặt có thể khiến bạn kết thúc với một hệ thống bị hỏng.

gdebi (lối vào gui) được sử dụng để có thể làm điều này nhưng đã được thay thế bằng USC.

Bạn đã tải xuống .deb như thế nào. Một số tính năng 11.04 mới là việc xử lý .deb được tải xuống từ một trang web: nó được mở trong USC để các phụ thuộc sẽ được trình cài đặt giải quyết.

EDIT dựa trên bình luận của andrew: sudo gdebi foo-1.2.3.deb  sẽ làm các trick !!


9
2018-05-04 13:32



gdebi vẫn có thể được sử dụng cho việc này. Trung tâm phần mềm hiện chỉ là ứng dụng mặc định. Ngoài ra, như ghi chú Chen Xiao-Long, gdebi cũng có thể được sử dụng trên dòng lệnh. - andrewsomething
mát mẻ! thì câu hỏi có câu trả lời vì gdebi có thể được sử dụng trên dòng lệnh quá. - Rinzwind
Đây sẽ là câu trả lời được chấp nhận. - prosti


Thay thế cho gdebi-gtk bạn có thể sử dụng Trung tâm phần mềm Ubuntu.

Nhấp đúp vào gói và nút cài đặt sẽ khả dụng.


3
2018-05-10 07:55





Bạn có thể tạo một tập tin dpkg-dep-inst với nội dung sau.

#!/bin/bash

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

Tôi giả sử bạn đã tạo tệp trong thư mục chính của mình. Làm cho nó thực thi với chmod +x dpkg-dep-inst và di chuyển nó đến /usr/local/bin với sudo cp dpkg-dep-inst /usr/local/bin.

Bây giờ bạn có thể tự động cài đặt gói debian với các phụ thuộc với:

sudo dpkg-dep-inst foo-1.2.3.deb

3
2018-01-28 16:01



Sử dụng apt-get --yes --fix-broken install và tự động sửa lỗi. - Lucas
@ysth Không, không phải nói chung. - BuZZ-dEE


Tôi chỉ gặp vấn đề này. Đang gọi apt-get install -f sẽ không phải cài đặt, dựng lên đề nghịphụ thuộc, mặc dù! Cách giải quyết duy nhất cho việc này là sau đó tạo một kho lưu trữ cục bộ và thêm vào /etc/apt/sources.list, I E.:

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

1
2018-02-10 15:19