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ć?

Vokuhila-Oliba
źródło
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

Charles Stewart
źródło
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”).

Chris P.
źródło
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”.

pagliuca
źródło
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.

Fleshgrinder
źródło
Cytowanie potrzebne, ale to byłaby istotna różnica.
Kzqai
Cytowanie: debian-handbook.info/browse/stable/…
deizel 10.09.13
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
2

Nie ma odpowiedniego narzędzia, możesz mieszać i dopasowywać oba, w zależności od tego, które uznasz za najbardziej odpowiednie dla danego zadania. aptitude jest świetnym narzędziem do testowania / sid użytkowników, ale zwykle jest mniej niezawodne przy aktualizacji z jednej stabilnej do drugiej. Zobacz mój artykuł apt-get, aptitude ... wybierz odpowiedni menedżer pakietów dla siebie .

Raphaël Hertzog
źródło