Sự khác biệt giữa dpkg và aptitude / apt-get là gì?


125

Khi cài đặt phần mềm qua dpkg -i packageA.deb, các phụ thuộc theo yêu cầu packageAcó được tải xuống và cài đặt tự động không? Điều này khác với việc sử dụng apt-gethay aptitudenhư thế nào?


Liên quan (đặc biệt là liên quan đến các phụ thuộc): askubfox.com/q/40779/250300
Melebius

Câu trả lời:


168

Không, dpkgchỉ cài đặt một gói, do đó, dpkg -i packageName.debsẽ chỉ cài đặt gói Deb này và sẽ thông báo cho bạn về bất kỳ phụ thuộc nào cần cài đặt, nhưng nó sẽ không cài đặt chúng và nó sẽ không cấu hình packageName.debvì ... phụ thuộc là không có

apt-getlà một Hệ thống quản lý gói xử lý việc cài đặt các gói Deb trên các bản phân phối Linux dựa trên Debian . Hệ thống quản lý gói là một bộ công cụ sẽ giúp bạn cài đặt, gỡ bỏ và thay đổi các gói dễ dàng. Như vậy apt-getlà giống như một thông minh dpkg.

Tôi thích nghĩ về dòng thời gian theo cách này (sau đây chỉ là tôi nói từ kinh nghiệm. Nó có nghĩa là chỉ cung cấp cho bạn một ý tưởng về toàn bộ điều này):

  • Họ đã nghĩ ra cách "lưu trữ" các tệp của ứng dụng trong một "gói" để có thể dễ dàng cài đặt. Vì vậy, gói Deb ( .debtệp mở rộng ) đã ra đời.

    Một .debtệp chứa các tệp cần thiết cho một ứng dụng để chạy, cũng như (tôi muốn gọi nó) "siêu dữ liệu" chứa thông tin khác, chẳng hạn như tên của các phụ thuộc mà ứng dụng cần. Nếu bạn muốn xem nội dung của .debtệp, bạn có thể sử dụng lệnh dpkg -c packageName.debvà nếu bạn muốn xem thông tin "siêu dữ liệu" này, hãy sử dụng lệnh dpkg -I pacakgeName.deb(và nếu bạn chỉ muốn xem phần phụ thuộc, hãy làm dpkg -I packageName.deb | grep Depends).

  • Họ cần một công cụ để cài đặt các .debtệp này , vì vậy họ đã đưa ra dpkgcông cụ này. Tuy nhiên, công cụ này sẽ chỉ cài đặt .debtệp, nhưng sẽ không cài đặt các phụ thuộc của nó vì nó không có các tệp đó và nó không có quyền truy cập vào "kho" để lấy các phụ thuộc từ đó.

  • Sau đó, họ đã đưa ra apt-get, trong đó tự động hóa các vấn đề ở điểm trước. Bên dưới mui xe, apt-getvề cơ bản dpkg(tôi thích nghĩ về nó như apt-getlà một mặt trước cho dpkg), nhưng một cái thông minh sẽ tìm kiếm các phụ thuộc và cài đặt chúng. Nó thậm chí còn xem xét các phụ thuộc hiện được cài đặt và xác định các gói không được sử dụng bởi bất kỳ gói nào khác và sẽ thông báo cho bạn rằng bạn có thể xóa chúng.

aptituderồi đi cùng. Nó sử dụng các thư viện apt-getsử dụng và thực sự có một giao diện người dùng tương tác (giao diện người dùng). Nếu bạn muốn xem UI này, chỉ cần gõ aptitudevào terminal. Đó là aptitude . Nó tận dụng các thư viện để cung cấp nhiều tùy chọn và đặc quyền hơn apt-get. Ví dụ, aptitudesẽ tự động loại bỏ các gói đủ điều kiện, trong khi apt-getcần một lệnh riêng để làm như vậy. Nhưng, cuối cùng, làm sudo aptitude install packageName.debnên ít nhất là giống như sudo apt-get install packageName.deb. Có thể có sự khác biệt tinh tế ở đây và ở đó mà tôi không biết, nhưng cả hai sẽ tìm kiếm sự phụ thuộc và làm tất cả những thứ đó. Bạn có thể đọc câu trả lời ở đây để biết thêm thông tin về sự khác biệt giữa aptitudeapt-get.

Ngoài ra, aptitudekhông có Super Cow Powers.

EDIT: Rõ ràng, nó làm. aptitude -v[v[v[v[v]]]] moo.

aptitudecó thể không được cài đặt theo mặc định. Để cài đặt nó, làm sudo apt-get install aptitudehoặc nhấp vào đây: aptitudeCài đặt năng khiếu .


Thêm

Các thông tin sau đây không thực sự trả lời trực tiếp " Sự khác biệt giữa dpkg và aptitude / apt-get là gì? " Nhưng nó góp phần vào bức tranh lớn.


Từ bình luận của Carlos Campderrós dưới đây :

gdebilà một công cụ khác là một loại hỗn hợp giữa apt-getaptitude. Khi bạn sử dụng nó để cài đặt một .debgói ( gdebi packageName.deb), nó sẽ xác định các phụ thuộc bị thiếu, cài đặt chúng bằng cách sử dụng apt-get, và cuối cùng là cài đặt và định cấu hình gói bằng cách sử dụng dpkg. Nó thậm chí còn có một GUI đơn giản và gọn gàng cung cấp cho bạn thông tin về .debgói, các tệp có trong gói và những phụ thuộc nào cần được cài đặt. Để xem GUI này, bạn sẽ làm gdebi-gtk packageName.deb. Bạn có thể gdebithử bằng cách cài đặt nó sudo apt-get install gdebihoặc nhấp vào đây: gdebiCài đặt gdebi .


Tôi không muốn gây nhầm lẫn cho bất kỳ ai, nhưng chỉ để cung cấp cho bạn một phần khác của bức tranh, có một định dạng gói Linux phổ biến khác được gọi là RPM và các tệp của nó có .rpmphần mở rộng. Định dạng gói này được sử dụng trên các bản phân phối Linux dựa trên RPM (như Red Hat, CentOS và Fedora). Họ sử dụng lệnh rpmđể cài đặt một gói và yumlà phần đầu cho nó, đó là một gói thông minh. Vì vậy, .rpmtệp của họ là tệp của chúng tôi .deb, rpmcông cụ của họ là dpkgcông cụ của chúng tôi và của họ yumlà của chúng tôi apt-get.

Từ bình luận của Paddy Landau dưới đây :

alienlà một công cụ chuyển đổi giữa .rpm.debcác gói. Vì vậy, nếu bạn từng rơi vào tình huống có .rpmgói và muốn cài đặt trên Ubuntu (hoặc bất kỳ bản phân phối dựa trên Debian nào khác), bạn có thể sử dụng lệnh alien rpm_packageName.rpmđể chuyển đổi thành gói .deb, sau đó cài đặt nó bằng cách sử dụng dpkg. Bạn có thể làm ngược lại (chuyển đổi .debsang .rpm) bằng cách sử dụng alien -r packageName.deb.


5
Điều đó rất hữu ích và chính xác những gì tôi đang tìm kiếm. Tx!
Aniket Thakur

4
Ngoài ra, bạn có thể sử dụng gdebi( apt-get install gdebi-core) mà trộn apt-get/ aptitudevới dpkg. Bạn gọi nó với gdebi some_package.debvà nó sẽ phân tích các phụ thuộc của nó, gọi apt-getđể cài đặt những cái còn thiếu và khi tất cả các phụ thuộc được hoàn thành, sau đó gọi dpkgđể cuối cùng cài đặt gói của bạn.
Carlos Campderrós

2
@Alaa Dưới Extra , bạn cũng có thể đề cập đến việc alienchuyển đổi các gói giữa .rpm.deb. Điều này hữu ích cho các gói có sẵn cho RPM nhưng không phải cho DEB (hoặc ngược lại). Ví dụ, alien packagename.rpmđể làm cho nó có thể sử dụng được cho Ubuntu.
Paddy Landau

1
@AlaaAli aptitudekhông phải là tiền đề cho apt-get. Cả hai chương trình đều là tiền đề cho libapt-pkgthư viện.
Eliah Kagan

1
@edwardtorvalds AskUbfox là một trang web câu hỏi và trả lời. Tìm kiếm câu trả lời của bạn ở đây trên trang web từ hàng ngàn câu hỏi cũ và nếu bạn không tìm thấy câu hỏi đó, hãy đặt câu hỏi của riêng bạn, những người có kinh nghiệm hơn tôi hy vọng cũng sẽ trả lời.
Alaa Ali

5

apt-get

Quản lý gói thông qua apt-getchạy tay trong tay với /etc/apt/sources.listtệp.

apt-get install <package_name> cài đặt gói mới vào máy tính của bạn

apt-get build-dep <package_name> Lệnh này tìm kiếm các kho lưu trữ và cài đặt các phụ thuộc xây dựng cho. Nếu gói không nằm trong kho thì nó sẽ trả về lỗi.

apt-get install <package1_name> <package2_name> <package3_name> apt-get cho phép cài đặt nhiều gói. tách các gói với một không gian.

auto-apt run <command_string> Khi được gọi, lệnh auto-apt sẽ tự động cài đặt các gói khi truy cập tệp bị thiếu. Nếu một chương trình cố gắng truy cập một tệp được biết là thuộc gói đã gỡ cài đặt, auto-apt sẽ cài đặt gói đó bằng cách sử dụng apt-get. Tính năng này yêu cầu apt và sudo để làm việc.

Truy cập trang hướng dẫn apt-get

năng khiếu

aptitudecung cấp chức năng dselectapt-getcũng như nhiều tính năng bổ sung không có trong một trong hai chương trình.

aptitude có vỏ của riêng nó là bàn phím hoặc chuột được kích hoạt và chạy trong cửa sổ đầu cuối

aptitude build-dep <package> - Cài đặt các phụ thuộc xây dựng của các gói - có nghĩa là các gói cần thiết để biên dịch (hoặc xây dựng ) gói nguồn của nó. Ví dụ: nhiều gói cần debhelperhoặc autotoolsđược xây dựng, nhưng không cần chúng để chạy.

Truy cập trang hướng dẫn năng khiếu

dpkg

là một công cụ để cài đặt, xây dựng, gỡ bỏ và quản lý các gói Debian. liên kết

dpkg -i <package.deb>cài đặt gói Debian vào máy tính của bạn. Nó không cài đặt bất kỳ phụ thuộc nào như tôi có thể tìm thấy từ các tập tin trợ giúp.

Để biết chi tiết gõ dpkg --helpvào một cửa sổ đầu cuối.

Hướng dẫn

một hướng dẫn để quản lý tập tin có thể được tìm thấy ở đây


0

Tôi nghĩ điều quan trọng nhất và cũng có một điểm khác biệt là bạn nên sử dụng apt-getcông cụ để cài đặt các gói. ( apthoặc aptitudelà tốt như vậy).

Điều này là do dpkgcó nghĩa là để cài đặt các gói mà không cần cài đặt các gói phụ thuộc. Do đó chỉ cần cài đặt một gói với dpkg, có thể dẫn đến một vấn đề sau này trong đó độ phân giải phụ thuộc có thể kết thúc với một hệ thống bị hỏng.

Bạn nên sử dụng dòng lệnh apt-gethoặc aptcông cụ (kể từ 14.04) để cài đặt các gói. Các công cụ này đang sử dụng dpkgcho bạn và đồng thời có cơ chế giải quyết phụ thuộc bên trong.

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.