Aptitude vs. apt-get: Którego (zalecanego „właściwego”) narzędzia należy użyć?


94

Jakiś czas temu przeczytałem, że aptitudejest to preferowane narzędzie do instalacji w systemach opartych na Debianie. Ale kiedy rozglądasz się, jak administrować systemem opartym na Debianie, rzadko wspomina się o umiejętności Wydaje się, apt-getże większość ludzi woli - i to nawet dotyczy stron wiki Debiana!

Zastanawiam się więc, czy coś przeoczyłem. Którego narzędzia należy użyć?


Co ciekawe, Ubuntu nie instaluje się już aptitudedomyślnie.
Ślimak mechaniczny

2
Jedną z najważniejszych różnic dla mnie jest to, że po dokładnym przeczytaniu dokumentacji nie mogę znaleźć źródła pakietu dzięki aptitude. apt-get source package-namezrobię to, ale nie widziałem żadnego odpowiednika umiejętności
EricR

2
Jedną rzeczą jest to, że aptitude search package-namedziała w umiejętności. Kolejna jest aptitude why package-namerównież przydatna, ale nie w apt-get. Uważam też, że wiersz poleceń aptitudejest nieco oczyszczony w porównaniu do apt-get. Ale jak zauważyłeś, nie ma, aptitude build-dep package-nameale nie aptitude source package-name.
Anders

Odpowiedzi:


73

aptitudei apt-getdziałają tak samo dla wielu zadań, ale w najtrudniejszych przypadkach, takich jak ulepszenia dystrybucji ( apt-get dist-upgradevs. aptitude full-upgrade), mają one inne reguły, a reguły aptitude są prawie zawsze lepsze w praktyce tam, gdzie się nie zgadzają.

Powodem widać więcej dokumentacji dla apt-getprzejęcia aptitudejest głównie bezwładności: aptitudenie były zalecanej przód do APT dla wszystkich, że długo, tak wiele z istniejącej dokumentacji nie został zaktualizowany i jest mnóstwo ludzi, którzy rozpoznają w sobie zalety aptitudenad apt-getale używaj apt-getodruchowo.

Niedawno doszedłem do punktu, w którym zwykle podążam aptza literą „ a”, ia nie -podczas pisania.

Postscript Należy pamiętać, że zasady stosowane w apt-geti aptitudeporuszają się cele - jak Hubert zauważa w komentarzach, ścieżka aktualizacji zalecane z Debian Lenny teraz używa apt-get, nie aptitude. Odzwierciedla to fakt, że apt-getśledzi mniej informacji o bieżącym pakiecie niż aptitude, i dlatego nie trzeba się martwić, że stan APT nie będzie „czysty”, a apt-getreguły są mądrzejsze niż kiedyś. Nadal używam i polecam aptitudeponad apt-get, ale jest to bardziej szczegółowa rekomendacja


6
Oprócz tego aptitude pozwala na łatwe przeglądanie możliwych rozwiązań konfliktów, podczas gdy w apt-get zwykle pokazany jest tylko jeden możliwy sposób i albo go akceptujesz, albo musisz ręcznie rozwiązać (np. Używając dpkg).
liori

20
apt-getma tę zaletę, że jest bardziej wydajna pod względem pamięci. Jest to mało prawdopodobne dla większości użytkowników; Tak naprawdę nie wiedziałem o tym, dopóki nie próbowałem uaktualnić pakietów przy pełnej instalacji Debiana z 32 MB pamięci RAM. aptitudeskończyło się na wymiotowaniu w zamianie przez około godzinę na bieg; apt-get był znacznie szybszy.
intuicyjnie

4
Oficjalna dokumentacja wyciskania Debiana wyraźnie stwierdza, że ​​nie należy używać aptitudedo aktualizacji od Lenny'ego, mimo że była obsługiwana dla poprzednich aktualizacji, więc nie sądzę, że jest to tylko bezwładność ...
Hubert Kario

@HubertKario - Tak, rzeczywiście. Zaktualizowałem swoją odpowiedź.
Charles Stewart,

Mogę tylko powiedzieć, że apt-getprawie zawsze zgłasza błędy (doświadczenie z serwera Ubuntu 12.10, 14.04), podczas gdy aptitudefaktycznie może coś zrobić. Nadal nie rozumiem, jak apt-get wciąż istnieje.
Totty.js

20

aptitudesprawia, że ​​wygodnie jest pokazać, które programy w wyszukiwaniu masz już zainstalowane w systemie (za pomocą grep):

aptitude search flash | grep ^i

W rzeczywistości aptitudewyszukiwanie jest znacznie potężniejsze niż przepływanie grep, ponieważ obsługuje wyszukiwanie kontekstowe:

np. znajdzie to wszystkie zainstalowane pakiety z „flash” w nazwie pakietu:

aptitude search '~iflash'

Odpowiednik „długiej formy” „krótkiej formy” ~i:

aptitude search '?installed(flash)'

Pamiętaj, że wzorce wyszukiwania są domyślnie bezpłatne (niezakotwiczone). Aby je zakotwiczyć, musisz użyć wzorów kotwicy ' ^' (początek łańcucha) i / lub ' $' (koniec łańcucha).

Aby znaleźć wszystkie pakiety, których nazwy zaczynają się od „ttf” lub „font”:

aptitude search '(^ttf|^font)'

(Uwaga: jest to obejście błędu aptitude, ponieważ poprawne wyrażenie regularne '^(ttf|font)'nie działa poprawnie - wyszukuje pakiety, których nazwy zaczynają się na „ttf” lub zawierają „font”.)

Inne fajne aptitudefunkcje:

Pokaż wszystkie pakiety z „firmware” w nazwie, które mają w opisie TAKŻE „bezprzewodowy”:

aptitude search 'firmware ~dwireless'

lub długa forma:

aptitude search '?and(?name(firmware),?description(wireless))'

(Uwaga: w skrócie argumenty rozdzielane spacjami są ANDed w cudzysłowach; jeśli są przekazywane jako osobne argumenty wiersza polecenia argv [], są ORedowane).

p   atmel-firmware       - Firmware for Atmel at76c50x wireless networking chips.
p   firmware-atheros     - Binary firmware for Atheros wireless cards
...
p   libertas-firmware    - Firmware for Marvell's libertas wireless chip series
p   zd1211-firmware      - Firmware images for the zd1211rw wireless driver

~U pokazuje wszystkie pakiety, które można uaktualnić z ich bieżących wersji o nowe wersje:

# aptitude update ; aptitude versions '~U'
Package virtualbox-4.1:            
i   4.1.18-78361~Debian~squeeze                       100
p   4.1.20-80170~Debian~squeeze     <NULL>            500

Pokaż pakiety polecające „gcc-multilib”

$ aptitude search '~DRecommends:gcc-multilib'
i   libc6-dev-i386   - Embedded GNU C Library: 32-bit development libraries for AMD64

Wyjaśnij, dlaczego może być konieczne zainstalowanie „fuse-utils”

$ aptitude why fuse-utils
i   xorg           Depends    xterm | x-terminal-emulator
pi  gnome-terminal Provides   x-terminal-emulator
pi  gnome-terminal Recommends gvfs
pi  gvfs           Depends    libgdu0 (>= 2.29.90)
pi  libgdu0        Depends    udisks (< 1.1.0)
pi  udisks         Recommends ntfsprogs
pi  ntfsprogs      Depends    fuse-utils (> 2.5.0)

(Ten przykład pokazuje pewne szaleństwo wynikające z domyślnego ustawienia Squeeze (?) Instalowania wszystkich pakietów „Poleca”. Instalacja gnome-terminal kończy się instalowaniem ntfsprogs i fuse-utils, egad! Myślę, że większość ludzi chce tylko perspektywy terminala i nie wbudowana integracja NTFS, która jest opcjonalna, chyba że ją określono.)

Znajdź wszystkie pakiety, które zapewniają usługę „mail-transport-agent”:

$ aptitude search '?provides(mail-transport-agent)'
p   citadel-mta          - complete and feature-rich groupware server (mail transport agent)
...
p   nullmailer           - simple relay-only mail transport agent
p   postfix              - High-performance mail transport agent
i   sendmail-bin         - powerful, efficient, and scalable Mail Transport Agent
p   ssmtp                - extremely simple MTA to get mail off the system to a mail hub
p   xmail                - advanced, fast and reliable ESMTP/POP3 mail server

Pokaż wszystkie zainstalowane nazwy pakietów, które nie są ani niezbędne, ani automatycznie instalowane według zależności:

$ aptitude search '~i!(~E|~M)' -F '%p'

Niestety, te rzeczy są raczej słabo udokumentowane i trudne do znalezienia, ale oto najlepsza referencja (od opiekuna „aptitude”).


4
Funkcje wyszukiwania są dostępne apt-getza pośrednictwemapt-cache search NAME
EricR

@EricR to prawda, ale nie znalazłem takich możliwości wyszukiwania
niceman

4

Według Debian GNU / Linux FAQ na temat zarządzania pakietami aptitude jest bardziej złożony niż apt-get i zależy od mniej złożonych narzędzi do zarządzania pakietami apt-get i dpkg.

Dlatego w przypadku prostszych potrzeb możesz korzystać z prostszych narzędzi, natomiast w przypadku bardziej złożonych potrzeb możesz liczyć na bardziej wyrafinowane narzędzie (wielkość).

Cytat z FAQ Debiana: „aptitude zapewnia funkcjonalność dselect i apt-get, a także wiele dodatkowych funkcji, których nie ma w żadnym programie”.


3

aptitude oznacza pakiety, które zostały zainstalowane z powodu zależności z tagiem auto. Jeśli teraz wyczyścisz lub usuniesz pakiet, aptitude automatycznie usunie automatycznie zainstalowane pakiety, które nie są już używane wraz z pakietem, który chcesz usunąć lub usunąć.

To jest główny powód, dla którego osobiście uważam, że predyspozycje są zawsze lepsze niż trafne.


Cytowanie potrzebne, ale to byłaby istotna różnica.
Kzqai


W rzeczywistości apt-getrobi to również z apt-get autoremove <package-name>. Zarówno apt-geti aptitudezaznacz automatycznie zainstalowane pakiety
Legionair

Ale aptitudeczyść auto pakiety za każdym razem, gdy są używane. Chociaż apt-getmusisz zacząć to jawnie.
Anders

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.