Sự khác biệt thực sự giữa các apt apt get get và apt aptitude là gì? (Làm thế nào về những người wajig '?


256

Tôi biết rằng cả hai apt-getaptitudeđều là giao diện quản lý gói dòng lệnh trên Linux có nguồn gốc từ Debian, với các tùy chọn khác nhau, nhưng tôi vẫn hơi bối rối. Dưới mui xe, không phải họ đang sử dụng cùng một hệ thống APT sao?

Tại sao Debian duy trì các công cụ song song này? (Câu hỏi thưởng: những gì trên trái đất là wajig ?)


Tôi biết nó không phải là câu trả lời chính xác cho câu hỏi của bạn nhưng tại sao bạn không thể thử synap? người dùng rất thẳng thắn và tự động tải xuống và cài đặt các phụ thuộc. Là gnome không có mặt trên hệ thống của bạn?
Hemant

Tôi thiên vị, nhưng tôi nghĩ câu hỏi này trên trang Ubuntu SE có thể có liên quan.
David Z


@Wim vì phần wajig của câu hỏi này, tôi đã quyết định hợp nhất 244 vào câu hỏi này thay vì cách khác
xenoterracide

1
Cần lưu ý rằng aptitude được dự kiến ​​loại bỏ khỏi cài đặt mặc định trên phiên bản tiếp theo của Ubuntu (mặc dù bạn luôn có thể cài đặt nó bằng apt-get sau đó)
Rob Cowell

Câu trả lời:


223

Sự khác biệt rõ ràng nhất là aptitudecung cấp giao diện menu terminal (giống như Synaptic trong terminal), trong khi apt-getthì không.

Chỉ xem xét các giao diện dòng lệnh của mỗi giao diện, chúng khá giống nhau và đối với hầu hết các phần, nó thực sự không quan trọng bạn sử dụng giao diện nào. Các phiên bản gần đây của cả hai sẽ theo dõi gói nào được cài đặt thủ công và gói nào được cài đặt dưới dạng phụ thuộc (và do đó đủ điều kiện để tự động xóa). Trên thực tế, tôi tin rằng thậm chí gần đây, hai công cụ đã được cập nhật để thực sự chia sẻ cùng một cơ sở dữ liệu của các gói được cài đặt thủ công, do đó, trường hợp bạn cài đặt một cái gì đó với apt-get và sau đó aptitude muốn gỡ cài đặt thì chủ yếu là quá khứ.

Có một vài khác biệt nhỏ:

  • aptitude sẽ tự động loại bỏ các gói đủ điều kiện, trong khi apt-get yêu cầu một lệnh riêng để làm như vậy
  • Các lệnh cho nâng cấp so với dist-upgrade đã được đổi tên trong aptitude để tên có lẽ chính xác hơn an toàn nâng cấptoàn nâng cấp , tương ứng.
  • aptitude thực sự thực hiện các chức năng của không chỉ apt-get, mà cả một số công cụ đồng hành của nó, chẳng hạn như apt-cache và apt-mark.
  • aptitude có một cú pháp truy vấn hơi khác để tìm kiếm (so với apt-cache)
  • aptitude có các lý do tại saotại sao không phải là lệnh để cho bạn biết các gói được cài đặt thủ công nào đang ngăn chặn một hành động mà bạn có thể muốn thực hiện.
  • Nếu các hành động (cài đặt, gỡ bỏ, cập nhật các gói) mà bạn muốn gây ra xung đột, thì khả năng có thể đề xuất một số giải pháp tiềm năng. apt-get sẽ chỉ nói "Tôi xin lỗi Dave, tôi không thể cho phép bạn làm điều đó."

Có những khác biệt nhỏ khác, nhưng đó là những khác biệt quan trọng nhất mà tôi có thể nghĩ ra.

Nói tóm lại, năng khiếu đúng hơn thuộc về thể loại với Synaptic và các mặt trận quản lý gói cấp cao hơn khác. Nó cũng có giao diện dòng lệnh giống với apt-get.

Vòng thưởng: wajig là gì?

Hãy nhớ làm thế nào tôi đã đề cập đến các công cụ "đồng hành" như apt-cache và apt-mark? Chà, có một loạt chúng, và nếu bạn sử dụng chúng nhiều, bạn có thể không nhớ cái nào cung cấp lệnh nào. wajig là một giải pháp cho vấn đề đó. Nó thực chất là một bộ điều phối, một trình bao bọc xung quanh tất cả các công cụ đó. Nó cũng áp dụng sudo khi cần thiết. Khi bạn nói wajig install foo, wajig nói "Ok, installđược cung cấp bởi apt-getvà yêu cầu đặc quyền của quản trị viên" và nó chạy sudo apt-get install foo. Khi bạn nói wajig search foo, wajig nói "Ok, searchđược cung cấp bởi apt-cachevà không yêu cầu quyền quản trị viên" và nó chạy apt-cache search foo. Nếu bạn sử dụng wajig thay vì apt-get, apt-mark, apt-cache và những thứ khác, thì bạn sẽ không bao giờ gặp phải vấn đề này:

$ apt-get search foo
E: Invalid operation search

Nếu bạn muốn biết wajig đang làm gì đằng sau hậu trường, công cụ nào nó đang sử dụng để thực hiện một lệnh cụ thể, thì nó có --simulate--teachingcác chế độ.

Hai lệnh wajig mà tôi thường sử dụng là wajig listfiles foowajig whichpkg /usr/bin/foo.


Một vấn đề lớn mà tôi gặp phải với aptitude là phải mất một thời gian dài để hoàn thành tab trên tên gói (ví dụ: aptitude install linux-imtab), trong khi đó rất nhanh cho apt-get. Dường như có một số bộ nhớ đệm hiện diện trong gia đình apt-get thiếu năng khiếu.
levesque

12
aptitudecũng có những điều tuyệt vời aptitude searchmà bạn có thể sử dụng với các mẫu tìm kiếm rất mạnh mẽ . Bạn có aptitude reinstall. Bạn cũng có thể sử dụng giao diện ncurses (menu terminal) để chuẩn bị các thao tác gói phức tạp như nâng cấp một phần, xóa một gói, đóng băng gói khác, nâng cấp gói này, sau đó bạn có thể thực hiện trong một thao tác duy nhất ... Ồ, và nó có một giải quyết xung đột tương tác .
Totor

3
@Totor thánh bò, sử dụng giao diện ncurses của aptitude để chuẩn bị các lệnh chỉ bán cho tôi một lần và mãi mãi! (sau nhiều năm suy nghĩ năng khiếu là việc đáng làm, nhưng gõ apt-get từ bộ nhớ cơ bắp)
TJ Ellis

2
... Và aptitudecũng aptitude download package-namephải lấy tệp .deb gói!
Totor

2
Đó chỉ là một điều tôi đã tìm thấy không phải trong aptitudenhưng là trong apt-get, và đó là apt-get --compile source package-name. apt-get build-dep package-nametồn tại nhưng tôi nghĩ rằng aptitude build-dep package-namelàm một công việc tốt hơn.
Anders

71

Tôi thường tự hỏi chính mình. Wikipedia nhấn mạnh rằng tính năng phân biệt chính là aptitude có giao diện chế độ văn bản toàn màn hình (lời nguyền). Việc bạn có thể sử dụng hầu hết các apt-getđối số lệnh với aptitudechính nó chỉ là một quyết định thiết kế để giúp apt-getngười dùng dễ dàng di chuyển đến aptitudevà ngược lại.

Tôi chưa bao giờ sử dụng wajig, nhưng tài liệu cho thấy rằng đó chỉ là một tập lệnh biết liệu bạn truyền cho nó một debtệp (khi nó chạy dpkg) hay apttên gói (khi nó chạy apt-getthay thế). Bạn có thể thử nó và xem nếu đó là những gì nó làm?

Tất nhiên, sự khác biệt thực sự là:

gaurav@fern:~$ apt-get moo
         (__) 
         (oo) 
   /------\/ 
  / |    ||   
 *  /\---/\ 
    ~~   ~~   
...."Have you mooed today?"...
gaurav@fern:~$ aptitude moo
There are no Easter Eggs in this program.

52
Không! aptitudecó nhiều hơn Bạn quên đặt -vcờ vô tận moo. (Bạn có thể đi lên -vvvvvv)
Umang

12
Đừng quên tất cả các Quyền lực Siêu bò quan trọng, apt-getcó nhưng aptitudekhông. (Thử --helpcả hai)
derobert

Cười rớt mông. đó là một câu trả lời thú vị để đọc, mặc dù câu trả lời của @ ryan phức tạp hơn nhiều;)
Michael Trouw

26

aptitude là chương trình ưa thích để quản lý gói từ bảng điều khiển cho cả cài đặt gói và nâng cấp gói hoặc hệ thống trong Debian.

Dưới đây là tổng quan về công cụ và các tính năng mà nó có trên apt-get: http://www.debian.org/doc/FAQ/ch-pkgtools.en.html#s-aptitude

Vì vậy, lời khuyên của tôi là chỉ cần apt-get install aptitude :)


2
Các ghi chú phát hành cho biết apt-get hiện được khuyến nghị hơn khả năng nâng cấp để siết chặt.
jrdioko

1
Có, nhưng chỉ cho điều đó. Mặt khác, chúng được coi là bằng nhau nhưng aptitudecó nhiều tính năng nâng cao hơn, như tìm kiếm và chế độ toàn màn hình, hơn apt-get.
Anders

Vì một số lý do, sử dụng năng khiếu để cài đặt emacs và không cần nhìn nó đã gỡ bỏ gdm! Vì vậy, bây giờ sẽ sử dụng apt-get nhưng tôi rất tò mò về năng khiếu.
TomFirth

20

aptitudenhớ những gói nào được yêu cầu rõ ràng và gói nào chỉ được cài đặt do phụ thuộc. Nó sẽ tự động gỡ cài đặt các gói không được yêu cầu rõ ràng khi không còn cần thiết.

apt-get đối xử với các gói được yêu cầu rõ ràng và sự phụ thuộc của chúng giống nhau.

Vì vậy, sử dụng tốt hơn aptitude, điều này giúp giữ cho hệ thống của bạn sạch sẽ.


4
Điều này đã từng đúng, nhưng tôi biết apt-get của tôi có một apt-get autoremovelệnh để loại bỏ các gói chỉ được cài đặt dưới dạng phụ thuộc. Tôi không biết khi nào tính năng này được thêm vào, nhưng một trang web cho thấy nó có thể đã xảy ra với Debian Lenny (tháng 6 năm 2010).
Gaurav

8
apt-get autoremovekhông loại bỏ các gói được cài đặt chỉ là phụ thuộc, nó loại bỏ các phụ thuộc mồ côi, đó là một sự khác biệt tinh tế; nó không thể biết liệu gói 'lá' đã được cài đặt với mục đích hay là một phụ thuộc để nó rời khỏi nó, nơi năng khiếu sẽ biết và loại bỏ nó.
pjz

Tôi đang bán! Có những điều tốt đẹp khác về aptitudenhưng đây là một tính năng giết người.
iconoclast

12

apt-get, cũng như các công cụ đồng hành khác nhau, sử dụng bộ nhớ ít hơn đáng kể so với các yêu cầu dòng lệnh tương ứng aptitudevà nhanh hơn một chút. Tôi đã không biết gì về điều này cho đến khi tôi thử nâng cấp cài đặt debian trên một thinkpad pentium cũ đã bị lỗi với 32 MB ram. Sẽ mất một hoặc hai giờ để trao đổi apt-get, để hoàn thành thành công; aptitudesẽ thất bại sau khi tôi nghĩ một khoảng thời gian dài hơn.

Sự khác biệt này ít nhiều không liên quan đến bất cứ thứ gì tương tự như một hệ thống máy tính để bàn hiện đại.


9

Dựa trên câu trả lời của @ Gaurav, những quả trứng Phục sinh trong hai người quản lý gói khá hài hước!:

siddhartha@siddhartha-dev:~$ apt-get  moo
             (__) 
             (oo) 
       /------\/ 
      / |    ||   
     *  /\---/\ 
        ~~   ~~   
..."Have you mooed today?"...

siddhartha@siddhartha-dev:~$ aptitude  moo
There are no Easter Eggs in this program.
siddhartha@siddhartha-dev:~$ aptitude -v moo
There really are no Easter Eggs in this program.
siddhartha@siddhartha-dev:~$ aptitude -vv moo
Didn't I already tell you that there are no Easter Eggs in this program?
siddhartha@siddhartha-dev:~$ aptitude -vvv moo
Stop it!
siddhartha@siddhartha-dev:~$ aptitude -vvvv moo
Okay, okay, if I give you an Easter Egg, will you go away?
siddhartha@siddhartha-dev:~$ aptitude -vvvvv moo
All right, you win.

                               /----\
                       -------/      \
                      /               \
                     /                |
   -----------------/                  --------\
   ----------------------------------------------
siddhartha@siddhartha-dev:~$ aptitude -vvvvvv moo
What is it?  It's an elephant being eaten by a snake, of course.
siddhartha@siddhartha-dev:~$ aptitude -vvvvvvv moo
What is it?  It's an elephant being eaten by a snake, of course.
siddhartha@siddhartha-dev:~$ aptitude -vvvvvvvv moo
What is it?  It's an elephant being eaten by a snake, of course.

vân vân



7

Như đã đề cập là http://pthree.org/2007/08/12/aptitude-vs-apt-get/ , aptitudecó giao diện dòng lệnh dễ sử dụng hơn nhiều.

Dưới mui xe, không phải họ đang sử dụng cùng một hệ thống APT sao? Đúng.

Hệ thống cơ bản không chỉ apt, mà dpkg. Hệ thống này chỉ câm như RPM, nó chỉ có thể xử lý việc cài đặt và quản trị các gói duy nhất. Nó theo dõi các tập tin cài đặt thuộc về gói nào.

aptxử lý việc tải xuống các kho lưu trữ, theo dõi các phụ thuộc, v.v. cho tất cả các gói riêng lẻ - sau đó cài đặt bằng cách sử dụng dpkg. aptitudelàm như vậy, với một giao diện khác.


6

Cả apt-get và aptitude đều dựa vào thư viện APT, vâng.

Xem câu trả lời của tôi trên serverfault.com .

Debian không phải là một thực thể nguyên khối, có những người có ý kiến ​​khác nhau và người duy trì năng khiếu đã quyết định rằng apt-get có một số thiếu sót và muốn xây dựng một cái gì đó tốt hơn bằng năng khiếu. Anh ấy đã cải thiện logic để tìm giải pháp cho các kịch bản nâng cấp phức tạp, thêm GUI cho bảng điều khiển, v.v. Và không chỉ có apt-get và aptitude, hãy xem bài viết của tôi apt-get, aptitude, Nhẫn chọn trình quản lý gói phù hợp cho bạn .


6

Tôi không chắc liệu điều này có còn hay không nhưng nhà phát triển Debian nổi tiếng Joey Hess luôn sử dụng để ủng hộ năng khiếu hơn apt-get. Tất nhiên mọi thứ phải thay đổi khi phần mềm phát triển. Apt-get bây giờ xử lý các phụ thuộc tốt hơn trước đây. Từ http://lists.debian.org/debian-user/2004/04/msg03138.html

Ngày: Thứ ba, ngày 20 tháng 4 năm 2004 22:27:12 -0400 Từ: Joey Hess

Chín lý do tại sao bạn nên sử dụng aptitude thay vì apt-get hoặc dselect.

  1. năng khiếu có thể trông giống như apt-get

    Nếu bạn chạy update cập nhật năng khiếu 'hoặc' nâng cấp năng khiếu 'hoặc' cài đặt năng khiếu ', nó sẽ hoạt động và hoạt động giống như apt-get, với một vài cải tiến. Vì vậy, không có đường cong học tập.

    (Nếu bạn là người dùng DSelect, đường cong học tập rõ ràng không phải là một trong những vấn đề của bạn.)

  2. theo dõi các gói cài đặt tự động

    Ngừng lo lắng về việc cắt tỉa các thư viện không sử dụng và các gói hỗ trợ từ hệ thống của bạn. Nếu bạn sử dụng năng khiếu để cài đặt mọi thứ, nó sẽ theo dõi những gói nào được kéo vào bởi các phụ thuộc một mình và loại bỏ các gói đó khi không còn cần thiết.

  3. aptitude sanely xử lý đề nghị

    Một thất bại lâu dài của apt-get là sự thiếu hỗ trợ cho mối quan hệ Khuyến nghị. Đó là một vấn đề vì nhiều gói trong Debian dựa vào Khuyến nghị để sử dụng phần mềm mà người dùng trung bình thường sử dụng với gói. Đây không phải là nguyên nhân hiếm gặp của sự cố, mặc dù gần đây apt-get có thể ít nhất đề cập đến các gói được đề xuất, thật dễ dàng để bỏ lỡ các cảnh báo của nó.

    Aptitude hỗ trợ Đề xuất theo mặc định và cũng có thể được xác nhận để hỗ trợ Đề xuất. Nó thậm chí còn hỗ trợ cài đặt các gói được đề xuất khi được sử dụng trong chế độ dòng lệnh.

  4. sử dụng năng khiếu như một người dùng bình thường và tránh hos hệ thống của bạn

    Có lẽ bạn không biết rằng bạn có thể chạy aptitude trong chế độ gui như một người dùng thông thường. Thực hiện bất kỳ thay đổi nào bạn muốn thử. Nếu bạn gặp rắc rối thực sự, bạn có thể nhấn 'q' và thoát, những thay đổi của bạn sẽ không được lưu. (Aptitude cũng cho phép bạn sử dụng ctrl-u để hoàn tác các thay đổi.) Vì nó đang chạy như một người dùng bình thường, bạn không thể sử dụng hệ thống của mình cho đến khi bạn nói với apt apt để làm gì đó, tại thời điểm đó, nó sẽ nhắc bạn nhập mật khẩu gốc.

  5. aptitude có giao diện người dùng và khả năng tìm kiếm mạnh mẽ

    Giữa trình duyệt phân loại của aptitude và sự hỗ trợ tuyệt vời của nó để lọc và tìm kiếm các gói theo tên, mô tả, bảo trì, phụ thuộc, v.v., bạn sẽ có thể tìm thấy các gói nhanh hơn bao giờ hết trước khi sử dụng aptitude.

  6. aptitude giúp dễ dàng theo dõi phần mềm lỗi thời

    Nếu Debian ngừng phân phối một gói, apt sẽ để lại nó trên hệ thống của bạn một cách dứt khoát, không có cảnh báo và không nâng cấp. Aptitude liệt kê các gói như vậy trong phần "Gói đã lỗi thời và được tạo cục bộ", do đó bạn có thể được thông báo về vấn đề và làm gì đó với nó.

  7. aptitude có giao diện với hệ thống tác vụ Debian

    Aptitude cho phép bạn sử dụng hệ thống tác vụ của Debian vì nó được thiết kế để sử dụng. Bạn có thể duyệt các tác vụ có sẵn, chọn một tác vụ để cài đặt, sau đó đào sâu vào nó và bỏ chọn các phần của tác vụ mà bạn không muốn. apt-get không hỗ trợ cho các nhiệm vụ và apt apt thậm chí còn tốt hơn các công cụ mục đích đặc biệt như taskel.

  8. năng khiếu hỗ trợ nhiều nguồn

    Nếu nguồn.list của bạn được định cấu hình để cung cấp nhiều phiên bản của gói, aptitude cho phép bạn xem chi tiết để xem các phiên bản có sẵn và chọn phiên bản không mặc định để cài đặt. Nếu một gói bị hỏng không ổn định, chỉ cần cuộn nó trở lại phiên bản trong thử nghiệm.

  9. năng khiếu ghi lại hành động của nó

    Nhật ký Aptitude gói nó cài đặt, nâng cấp và xóa thành / varlog / aptitude, có thể hữu ích để tìm ra lý do tại sao mọi thứ bắt đầu bị hỏng sau khi nâng cấp ngày hôm qua hoặc khi bạn xóa gói partiticlar.

- thấy mắc cỡ

=================== cũng có một cuộc thảo luận mới hơn từ năm 2010 tại đây https://superuser.com/questions/93437/aptitude-vs-apt-get-which- is-the-recommend-aka-the-right-tool-to-use trên StackExchange.

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.