Cách cài đặt gói .deb cục bộ với apt-get


144

Có cách nào để cài đặt các gói lưu trữ trên HD của bạn bằng apt-get apt-get install ./package.debkhông?

Nếu không, làm thế nào để xử lý các phụ thuộc một cách rất rất dễ dàng?


Điều này làm việc bây giờ. Nếu bạn vẫn sử dụng SuperUser, bạn có thể cập nhật câu trả lời được chấp nhận không? Xem bên dưới.
mikemaccana

Câu trả lời:


121

thông thường tôi làm dpkg -i <deb file>, nó sẽ thất bại khi nói nó cần phụ thuộc. Sau đó, khi bạn thực hiện, apt-get updatenó sẽ nói cuối cùng một cái gì đó như "phụ thuộc đã sẵn sàng để cài đặt" Tôi nghĩ nó sẽ khuyên bạn nên sử dụng apt-get install -f.

Khi đã xong, tôi sử dụng dpkg -ilại.

Làm việc tốt cho tôi vài năm qua.

chỉnh sửa: nhìn xa hơn một chút, rõ ràng một công cụ được gọi gdebicó thể làm điều này như gdebi [deb file].


1
Cảm ơn tôi đã làm như vậy bằng "lỗi" dpkg sau đó apt-get install -f và nó đã hoạt động.
Louis

2
gdebiđược làm việc cho tôi, và đơn giản nhất tôi đã thấy cho đến nay.
ctrl-alt-delor

55

Sirex có ít nhiều đúng, nhưng câu trả lời của anh ta không rõ ràng. Tôi chỉ giải quyết điều này, vì vậy đây là những gì tôi đã làm:

sudo dpkg -i /path/to/filename.deb

Nếu điều này không thành công với một thông báo về gói tùy thuộc vào thứ gì đó chưa được cài đặt, bạn có thể sửa nó nếu bạn chạy

sudo apt-get -f install

Điều này sẽ cài đặt các phụ thuộc (giả sử chúng có sẵn trong các repos mà hệ thống của bạn biết) VÀ gói ban đầu bạn yêu cầu cài đặt ('f' là tùy chọn 'sửa chữa' và 'y' là 'giả sử có để nhắc' hoặc 'đừng hỏi tôi nếu nó ổn, chỉ cần cài đặt tùy chọn này' - rất hữu ích cho các cài đặt im lặng theo kịch bản). Trên hệ thống tôi đã bật, không cần phải chạy lại dpkg nữa (Ubuntu lucid 10.04).

Tôi thấy thú vị rằng nếu bạn rời khỏi -f khi bạn chạy sudo apt-get install, nó sẽ liệt kê gói của bạn là không được cấu hình do sự phụ thuộc chưa được giải quyết cũng như gợi ý hữu ích:Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

Biên tập:

Nếu bạn muốn cài đặt mà không phải trả lời 'y' cho tất cả các câu hỏi, bạn có thể thêm công cụ ysửa đổi như ban đầu tôi đưa vào : sudo apt-get -fy install. Tuy nhiên, một nhà bình luận chỉ ra rằng apt đôi khi sẽ đề nghị bạn gỡ cài đặt toàn bộ môi trường máy tính để bàn của bạn. Tôi đã làm công việc này trong một máy ảo và không có mối quan tâm đó, nhưng bài đăng này đã được cập nhật để phản ánh cẩn thận hơn một chút.


Nếu tôi có tất cả các tệp gói đã có trong một thư mục, có cách nào để nói với apt rằng đây là kho lưu trữ mới không, vì vậy tôi sẽ không buộc nó phải cài đặt bất cứ thứ gì mà không phụ thuộc?
Berry Tsakala

2
Tôi xin lỗi, nhưng tôi không biết. Tôi đề nghị hỏi như một câu hỏi cấp cao khác.
Akrikos

Điên thật lạ là điều này là bắt buộc. Trên raspian, điều này sẽ yêu cầu sudo (cho cả dpkg và apt-get) : sudo dpkg -i mypackages.deb, v.v.
Brent Faust

@Rubistro truy cập root nó yêu cầu trên tất cả các hệ thống. Tôi đoán các câu trả lời giả định rằng các lệnh được thực thi bởi root (ví dụ từ shell gốc tương tác hoặc tập lệnh thực thi như root).
Amos Shapira

2
Đối với bạn tốt, không thêm -ytùy chọn. Điều khá phổ biến là apt đề xuất, ví dụ, gỡ cài đặt toàn bộ môi trường máy tính để bàn của bạn nếu bạn thử điều này với gói không đúng lúc (ít nhất là trên Debian).
oseiskar

45

Bạn cũng có thể cài đặt tệp .deb bằng gdebi. Chạy các lệnh bên dưới để cài đặt gdebi,

sudo apt-get install gdebi-core

Cài đặt gói .deb với gdebi,

sudo gdebi /path/to/filename.deb

Nó cũng sửa chữa phụ thuộc.


4
Lưu ý rằng gdebi chỉ mất một đối số duy nhất và âm thầm thả phần còn lại trên sàn. Điều này có nghĩa là nếu bạn đang cài đặt nhiều bản sửa lỗi cùng một lúc (có lẽ vì chúng phụ thuộc vào nhau), bạn sẽ cần phải cẩn thận tạo gdebicác lệnh cho phép chúng cài đặt. Imo nửa này đánh bại mục đích của gdebi, nhưng bạn vẫn có thể thấy nó hữu ích cho một tệp duy nhất
Anthony Sottile

@Anthony sau đófind -name *.deb -exec gdebi {} \;
jjmontes

3
@jjmontes sẽ chỉ hoạt động nếu sự phụ thuộc lẫn nhau theo thứ tự bảng chữ cái mà tôi đặt cược là khá hiếm
Anthony Sottile

Tôi đã theo dõi freesoftwaremagazine.com/articles/ (lỗi của repo cục bộ phải có tại / var / www / html / debs) và synaptic tiếp tục cố gắng tải xuống từ xa ngay cả w / o internet, vì vậy gdebi đã làm việc rất tốt với repo cục bộ ! Ngoài ra, các tệp .deb phải làchmod +r *.deb
Aquarius Power

34

Vâng, lệnh bạn đề xuất là chính xác.

sudo apt-get install ./package.deb

hoặc là

sudo apt install ./package.deb

sẽ cài đặt gói bạn nhận được từ một nguồn khác ngoài APT và đồng thời sử dụng các khả năng của APT để tự động giải quyết các phụ thuộc của nó. Thật không may, apt-gettính năng này không được ghi lại trong trang man .

Xem https://askubfox.com/a/769542/250300https://askubfox.com/a/795048/250300 để biết chi tiết.


8
Đây phải là câu trả lời được chấp nhận.
Peter

Phiên bản nào của apt-get được thêm khả năng này?
Kurt Fitzner

@KurtFitzner Nó đã được thêm vào APT 1.1 trên mỗi thông báo phát hành (được tìm thấy qua askubfox.com/a/795048/250300 ).
Melebius
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.