Sự khác biệt giữa `dpkg -i` và` apt-get install`


16

Từ tất cả các câu hỏi và trả lời khác (như: sự khác biệt giữa dpkg và aptitude / apt-get là gì? ) Tôi hiểu rằng đó apt-getlà một trình bao bọc dpkgvà cung cấp quản lý phụ thuộc.

Giả sử tôi đang cài đặt một cái gì đó không có bất kỳ sự phụ thuộc nào (hoặc chúng cũng được cài đặt cùng một lúc) sẽ có bất kỳ sự khác biệt nào giữa việc cài đặt nó bằng cách sử dụng apt-getvsdpkg

Ví dụ (sự khác biệt cụ thể mà tôi đang tìm kiếm)

  • nói dpkgkhông thể tải pkg từ đâu đó, tôi phải tải xuống trước khi bắt đầu cài đặt, trong khi đó apt-getsẽ thay mặt tôi làm việc này.
  • dpkgsẽ không cấu hình pkg, nó sẽ chỉ sao chép các tập tin. apt-getsẽ cấu hình quá.

...

Câu trả lời:


16

dpkg -icài đặt *.debcác gói, có nghĩa là các gói bạn đã tải xuống từ đâu đó. Nó cũng cấu hình chúng, nhưng không tải / cài đặt phụ thuộc. Bạn cần phải tải xuống (các) tệp gói nhị phân thủ công từ đâu đó. Cũng có thể có các mối nguy hiểm trong việc tải xuống các gói từ các vị trí không phải là kho lưu trữ mà bản phân phối của bạn đã bao gồm / được bật theo mặc định, vì các gói của bên thứ ba có thể có bản chất độc hại.


apt-get/aptitude install tự động truy cập vào kho và chỉ mục PPAs bạn đã bật, tìm kiếm ứng cử viên tốt nhất, tải xuống và tất cả các phụ thuộc của nó cũng như cài đặt và tự động định cấu hình chúng.

Sử dụng apt-get install -f, bạn có thể tự động cài đặt các phụ thuộc bị thiếu của các gói, ví dụ như được cài đặt qua dpkg -i.


5
Một lưu ý nhanh ở đây, apt-getcó thể cài đặt các phụ thuộc từ các gói được cài đặt dpkg -i. Chạy apt-get install -fđể thực hiện điều đó.
noirscape

1
@ Ev1l0rd Đúng, tôi đã thêm nó vào câu trả lời của tôi.
Chỉ huy Byte

2
Một sự khác biệt quan trọng khác, và một trường hợp để sử dụng apt-gethoặc aptitude, là họ nhớ liệu một gói được cài đặt thủ công (được yêu cầu cụ thể) hay liệu nó đã được cài đặt để đáp ứng sự phụ thuộc. Bằng cách đó, khi bạn xóa gói sau đó, họ có thể tự động xóa (hoặc ít nhất là cho bạn biết về) các gói "được cài đặt tự động và không còn cần thiết". Nếu bạn đã cài đặt từng gói dpkgthì bạn phải nhớ và xóa thủ công không chỉ gói của bạn mà tất cả các phụ thuộc của gói đó (giả sử không có gì khác phụ thuộc vào chúng).
Benjamin Staton

1
@BenjaminStaton Vâng, vì dpkg -ikhông quan tâm đến sự phụ thuộc, tất cả mọi thứ được cài đặt với nó tất nhiên được cài đặt "thủ công".
Chỉ huy Byte
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.