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


56

Tôi không hiểu tại sao có hai chương trình khác nhau trong một cài đặt tối thiểu để cài đặt phần mềm. Họ không làm điều tương tự sao? Có một sự khác biệt lớn? Tôi đã đọc ở khắp mọi nơi để sử dụng năng khiếu trên apt-get nhưng tôi vẫn không biết sự khác biệt

Câu trả lời:


48

aptitude là một trình bao bọc cho dpkg giống như apt-get / apt-cache, nhưng nó là một công cụ một cửa để tìm kiếm / cài đặt / gỡ bỏ / truy vấn. Một vài ví dụ mà apt có thể không cung cấp:

$ aptitude why libc6
i   w64codecs Depends libc6 (>= 2.3.2)
$ aptitude why-not libc6
Unable to find a reason to remove libc6.

$ aptitude show libc6
Package: libc6
State: installed
Automatically installed: no
Version: 2.9-4ubuntu6
Priority: required
Section: libs
Maintainer: Ubuntu Core developers <ubuntu-devel-discuss@lists.ubuntu.com>
Uncompressed Size: 12.1M
Depends: libgcc1, findutils (>= 4.4.0-2ubuntu2)
Suggests: locales, glibc-doc
Conflicts: libterm-readline-gnu-perl (< 1.15-2), 
tzdata (< 2007k-1), tzdata-etch, nscd (< 2.9)
Replaces: belocs-locales-bin
Provides: glibc-2.9-1
Description: GNU C Library: Shared libraries
 Contains the standard libraries that are used by nearly all programs 
 on the system. This package includes shared versions of the standard 
 C library and the standard math library, as well as many others.

10
không đề cập đến: $ aptitude changelog bash
pss

Các thủ thuật khác aptitudebiết rằng thậm chí mới nhất aptkhông thể thực hiện: aptitude search '~i linux'tìm kiếm các gói có linuxtên hoặc mô tả được cài đặt; aptitude search '~o'liệt kê các gói lỗi thời (các gói đã cài đặt không còn được cung cấp bởi bất kỳ kho lưu trữ nào); aptitude search '!~M ~i'hiển thị các gói không được đánh dấu là tự động cài đặt; aptitude search '~i lib.*-dev'hiển thị các thư viện phát triển đã cài đặt và bạn có thể thay thế searchbằng markautohoặc unmarkautođánh dấu các gói này là cài đặt tự động hoặc thủ công.
Mikko Rantalainen

44
mikeage@linode ~$ aptitude -h | tail -n 1
              This aptitude does not have Super Cow Powers.
mikeage@linode ~$ apt-get -h | tail -n 1
                   This APT has Super Cow Powers.
mikeage@linode ~$ aptitude moo
    There are no Easter Eggs in this program.
mikeage@linode ~$ apt-get moo
         (__)
         (oo)
   /------\/
  / |    ||
 *  /\---/\
    ~~   ~~
...."Have you mooed today?"...
mikeage@linode ~$ aptitude -v moo
There really are no Easter Eggs in this program.
mikeage@linode ~$ aptitude -vv moo
Didn't I already tell you that there are no Easter Eggs in this program?
mikeage@linode ~$ aptitude -vvv moo
Stop it!
mikeage@linode ~$ aptitude -vvvv moo
Okay, okay, if I give you an Easter Egg, will you go away?
mikeage@linode ~$ aptitude -vvvvv moo
All right, you win.

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

19

Công cụ chính thức hiện đang được sử dụng trong trình cài đặt Debian và được đề xuất trong ghi chú phát hànhaptitude.

Aptitude cung cấp một giao diện lời nguyền (khi chạy mà không có bất kỳ tham số) và một giao diện dòng lệnh có thể làm gần như tất cả những gì apt-cache/ apt-getlàm. Nó cũng có một trình giải quyết phụ thuộc tốt hơn cho phép bạn duyệt giữa nhiều giải pháp. Ngay cả khi sử dụng phiên bản dòng lệnh, bạn có thể tương tác với giải pháp được đề xuất và đưa ra các lệnh hoặc gợi ý bổ sung (như cài đặt hoặc xóa gói được đề xuất bởi một giải pháp khác).

Nhưng aptitude dựa trên thư viện libapt (nó không phải là trình bao bọc trực tiếp của dpkg) và do đó nó phụ thuộc vào aptgói để bạn không thể cài đặt aptitude mà không có apt-get (cũng nằm trong gói apt).

$ dpkg --status aptitude| grep Depends
Depends: libapt-pkg-libc6.9-6-4.7, [...]
$ dpkg --status apt|grep Provides
Provides: libapt-pkg-libc6.9-6-4.7
$ dpkg --search /usr/lib/libapt-pkg-libc6.9-6.so.4.7 /usr/bin/apt-get
apt: /usr/lib/libapt-pkg-libc6.9-6.so.4.7
apt: /usr/bin/apt-get

Để tìm hiểu thêm về cách apt / dpkg / aptitude tương tác, bạn có thể kiểm tra sơ đồ được tạo bởi Daniel Burrows (tác giả chính của aptitude). Một sơ đồ khác trình bày thông tin được lưu trữ bởi các công cụ quản lý gói khác nhau: Bản đồ của các tệp trạng thái apt và dpkg .

Bạn cũng có thể đọc bài viết của tôi apt-get, aptitude, tầm chọn trình quản lý gói phù hợp với bạn


7

aptitudenhớ những gói bạn cố tình cài đặt và gói nào được cài đặt tự động để đáp ứng phụ thuộc. Khi loại bỏ một gói năng khiếu sẽ loại bỏ các gói được cài đặt tự động để giữ cho hệ thống của bạn gọn gàng. apt-getkhông phải là thông minh.

aptitudesẽ nhanh chóng trở thành một công cụ không thể thiếu khi bạn sử dụng các kho lưu trữ khác nhau với các phiên bản khác nhau của một gói. Hãy tưởng tượng bạn đang làm việc với backports.org hoặc các kho lưu trữ không chính thức như debian-multidia.org . Sau đó aptitudesẽ hiển thị (ở dưới cùng của trang chi tiết của một gói nhất định) số phiên bản có sẵn và cho phép bạn chọn một phiên bản.

Nếu bạn gặp phải tình huống các chương trình xung đột do sử dụng các kho lưu trữ không chính thức như vậy, bạn sẽ thấy màn hình "Hỏng: ..." ở trên cùng. Bạn có thể nhập l ~ b (giới hạn / cờ / bị hỏng) và chỉ cần lấy danh sách các gói xung đột với nhau. Làm cho nó dễ dàng hơn nhiều để giải quyết xung đột bằng tay.

Hơn nữa, bạn có thể sử dụng " l" để giới hạn danh sách gói. Hãy tưởng tượng bạn đang tìm kiếm các gói bắt đầu bằng " openoffice ", sau đó nhấn " l" và gõ " ^openoffice" (đó là biểu thức chính quy) và bạn sẽ chỉ thấy các gói đó. Chọn một "danh sách gói phẳng" từ menu và bạn sẽ nhanh chóng đạt được mục tiêu của mình.

Cẩm nang hoàn chỉnh rất lớn, cung cấp cho bạn nhiều bộ lọc và khả năng hơn. Ngay cả khi bạn không biết chúng aptitudelà một sự thay thế tiện dụng apt-getvà bạn có thể sử dụng nó với các thông số phổ biến như:

aptitude install ... (install or upgrade a package)
aptitude remove ... (remove the binary portions of a package but preserve your /etc configuration)
aptitude purge ... (remove the package completely including your configuration)

2
Trên thực tế, kể từ Lenny, apt-get cũng theo dõi các gói được cài đặt chỉ là phần phụ thuộc của thứ bạn yêu cầu rõ ràng. Tôi sử dụng năng khiếu bản thân mình, nhưng apt-get autoremovebây giờ loại bỏ các gói đã được cài đặt như là phụ thuộc của gói đã bị xóa.
Telemachus

Ngày nay bạn cũng có thể sử dụng chỉ aptvà nó có thể làm một hỗn hợp của những thứ đó apt-getapt-cacheđược sử dụng để làm. Ví dụ, apt search foosẽ liệt kê các gói có chứa footrong tên hoặc mô tả. apt install foosẽ cài đặt gói được gọi foonếu có sẵn và apt policy foosẽ liệt kê phiên bản hiện được cài đặt và tất cả các phiên bản có sẵn của gói foo.
Mikko Rantalainen

Việc aptitudevẫn có thể làm nhiều hơn aptnhưng đơn giản aptthường nhanh hơn nhiều.
Mikko Rantalainen

5

Ngoài việc cung cấp một giao diện người dùng giao diện điều khiển đẹp khi bạn chạy aptitudemà không có đối số, nó kết hợp các apt-*lệnh khác nhau (và dselect) vào một tiện ích ..

Để tìm kiếm một gói và cài đặt nó, sử dụng apt-get:

apt-cache search somepkg
apt-get install somepkg

..nhưng với năng khiếu đó là cùng một lệnh:

aptitude search somepkg
aptitude install somepkg

aptitudecó một số tính năng bổ sung, như aptitude changelog somepkgvà những thứ như giữ các gói (để ngăn chặn chúng được nâng cấp) - không có gì bạn không thể đạt được thông qua các lệnh / phương thức khác, nó chỉ đơn giản hơn và tốt hơn để sử dụng.


3
quá tệ, nó không có "chính sách apt-cache" tương đương.
hayalci

4

như bạn biết khi bạn cài đặt một gói nếu nó cần các gói khác (phụ thuộc), chúng cũng sẽ được tải xuống và cài đặt. Theo dõi aptitude, tại thời điểm cài đặt, các gói đi kèm với gói đã cài đặt, vì vậy khi bạn loại bỏ apt apt sau đó sẽ yêu cầu bạn loại bỏ các phụ thuộc khác (hiện chưa được sử dụng). apt-get sẽ giữ chúng trong hệ thống của bạn một cách im lặng nếu bạn loại bỏ gói "chính".

có vẻ như các phiên bản mới nhất của apt-get có chức năng tương tự: http://www.psychocats.net/ubfox/aptitude


aptitudehoặc apttrên thực tế không giữ danh sách các gói đã được cài đặt làm phụ thuộc cho bất kỳ gói nào. Nó chỉ đơn giản là theo dõi nếu một gói được cài đặt bằng tay hoặc tự động. Và nếu một gói đã được đánh dấu là tự động cài đặt và không có gói nào khác Phụ thuộc hoặc Đề xuất gói đó, nó sẽ bị xóa bằng apt autoremovehoặc aptitude dist-upgrade.
Mikko Rantalainen

3

Sự khác biệt lớn nhất là aptitude được thiết kế để tương tác trong đó các công cụ apt phù hợp hơn cho công việc viết kịch bản. Bạn có thể sử dụng công cụ sau, tức là các công cụ apt, tương tác tốt với nhiều nỗ lực hơn để có được kết quả tương tự mà aptitude cung cấp. Nếu bạn phải giải quyết chỉ bằng một công cụ này hay công cụ khác vì một lý do nào đó thì bạn cần phải quyết định bạn muốn bỏ ra bao nhiêu công sức cho việc quản lý gói của mình.


1

Một trong những lợi thế nghiêm trọng của năng khiếu là khả năng tính toán phụ thuộc. Đầu tiên, nó có thể tự xử lý các phụ thuộc lẫn nhau phức tạp mà không cần sự can thiệp của chính mình, điều này thường khiến apt-get thất bại. Nhưng nếu bạn không thích giải pháp mà nó đã trình bày cho bạn (và nó sẽ chấm điểm giải pháp của chính nó để chứng minh nó tốt như thế nào), bạn có thể yêu cầu nó biến mất và đưa ra giải pháp khác để giải quyết xung đột.

Nó thực sự làm một số quản lý gói tuyệt vời.


1

Sự khác biệt lớn nhất là: gõ "aptitude" mà không có bất kỳ tham số nào.

Nó cung cấp cho bạn giao diện người dùng dựa trên Văn bản, bạn có thể sử dụng bàn phím để tìm kiếm / điều hướng, v.v. xem thông tin về các phụ thuộc, phụ thuộc ngược, tất cả các phiên bản có sẵn của gói và bạn có thể thực hiện bất kỳ thao tác quản lý gói nào trên chúng từ màn hình đó.

Bạn có thể nhấn "g" để xem xét các thay đổi, sửa đổi bổ sung và xóa gói nếu cần và áp dụng tất cả các hoạt động đang chờ xử lý.

Một cách trực quan tuyệt vời của quản lý gói qua kết nối ssh hoặc thiết bị đầu cuối cũ đơn giản.

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.