Jaka jest prawdziwa różnica między „apt-get” a „aptitude”? (Co powiesz na „wajig”?)

256

Wiem, że zarówno apt-geti aptitudesą interfejsy zarządzania pakietami linii poleceń na Debianie Linux pochodzą z różnych opcji, ale nadal jestem trochę zdezorientowany. Czy pod maską nie używają tego samego systemu APT?

Dlaczego Debian utrzymuje te równoległe narzędzia? (Dodatkowe pytanie: czym do diabła jest wajig ?)

Kevin Cantu
źródło
Wiem, że to nie jest właściwy odpowiedź na twoje pytanie, ale dlaczego nie możesz spróbować synaptic? jest bardzo przyjazny dla użytkownika i automatycznie pobiera i instaluje zależności. Czy gnome nie jest obecny w twoim systemie?
Hemant,
Jestem stronniczy, ale myślę, że to pytanie na stronie Ubuntu SE może być trafne.
David Z
@ Wim z powodu wajig tego pytania postanowiłem połączyć 244 w to pytanie zamiast na odwrót
ksenoterracid
1
Warto zauważyć, że aptitude ma zostać usunięty z domyślnej instalacji w następnej wersji Ubuntu (chociaż zawsze można go później zainstalować za pomocą apt-get)
Rob Cowell,

Odpowiedzi:

223

Najbardziej oczywistą różnicą jest to, że aptitudezapewnia interfejs menu terminala (podobnie jak Synaptic w terminalu), podczas apt-getgdy nie.

Biorąc pod uwagę tylko interfejsy każdego z nich, są one dość podobne i w większości przypadków nie ma znaczenia, którego używasz. Najnowsze wersje obu będą śledzić, które pakiety zostały zainstalowane ręcznie, a które zostały zainstalowane jako zależności (i dlatego kwalifikują się do automatycznego usunięcia). W rzeczywistości uważam, że jeszcze niedawno te dwa narzędzia zostały zaktualizowane, aby współużytkować tę samą bazę danych ręcznie i automatycznie zainstalowanych pakietów, więc przypadki, w których instalujesz coś za pomocą apt-get, a następnie aptitude chce go odinstalować, to głównie przeszłość.

Istnieje kilka drobnych różnic:

  • aptitude automatycznie usunie odpowiednie pakiety, podczas gdy apt-get wymaga do tego osobnego polecenia
  • Komendy upgrade- a -dist-upgrade zostały przemienione w odpowiedni sposób na prawdopodobnie bardziej dokładne nazwy, odpowiednio, safe-upgrade i full-upgrade .
  • aptitude faktycznie wykonuje funkcje nie tylko apt-get, ale także niektórych narzędzi towarzyszących, takich jak apt-cache i apt-mark.
  • aptitude ma nieco inną składnię zapytań do wyszukiwania (w porównaniu do apt-cache)
  • aptitude ma komendy „ dlaczego i dlaczego” , które informują, które ręcznie zainstalowane pakiety uniemożliwiają podjęcie działania.
  • Jeśli działania (instalowanie, usuwanie, aktualizowanie pakietów), które chcesz podjąć, powodują konflikty, aptitude może zasugerować kilka potencjalnych rozwiązań. apt-get powie po prostu: „Przykro mi, Dave, nie mogę ci na to pozwolić”.

Istnieją inne małe różnice, ale są to najważniejsze, o których mogę myśleć.

Krótko mówiąc, aptitude bardziej poprawnie należy do kategorii z nakładkami Synaptic i innymi menedżerami pakietów wyższego poziomu. Zdarza się, że ma również interfejs wiersza poleceń podobny do apt-get.

Runda bonusowa: Co to jest wajig?

Pamiętasz, jak wspomniałem o narzędziach „towarzyszących”, takich jak apt-cache i apt-mark? Cóż, jest ich sporo, a jeśli będziesz ich często używać, możesz nie pamiętać, które z nich zapewniają, które polecenia. wajig jest jednym z rozwiązań tego problemu. Zasadniczo jest to dyspozytor, który otacza wszystkie te narzędzia. W razie potrzeby stosuje się również sudo. Kiedy mówisz wajig install foo, wajig mówi „Ok, installjest zapewniany apt-geti wymaga uprawnień administratora” i działa sudo apt-get install foo. Kiedy mówisz wajig search foo, wajig mówi „Ok, searchjest zapewniany apt-cachei nie wymaga uprawnień administratora” i działa apt-cache search foo. Jeśli użyjesz wajig zamiast apt-get, apt-mark, apt-cache i innych, nigdy nie będziesz mieć tego problemu:

$ apt-get search foo
E: Invalid operation search

Jeśli chcesz wiedzieć, co wajig robi za kulisami, jakich narzędzi używa do implementacji określonego polecenia, ma --simulatei --teachingtryby.

Dwa często używane polecenia wajig to wajig listfiles fooi wajig whichpkg /usr/bin/foo.

Ryan Thompson
źródło
Jednym z dużych problemów, jakie miałem z aptitude, jest to, że uzyskanie uzupełnień tabulatorów w nazwach pakietów (np. aptitude install linux-imTab) zajmuje dużo czasu , a apt-get jest bardzo szybki. Wydaje się, że w rodzinie apt-get jest trochę pamięci podręcznej, której brakuje umiejętności.
levesque,
12
aptitudetakże niesamowite aptitude search, których możesz używać z bardzo zaawansowanymi wzorami wyszukiwania . Masz aptitude reinstall. Możesz także użyć interfejsu ncurses (menu terminala), aby przygotować złożone operacje na pakiecie, takie jak częściowa aktualizacja, usunąć jeden pakiet, zamrozić inny, uaktualnić ten, który możesz następnie wykonać w jednej operacji ... Och, i ma interaktywne rozwiązywanie konfliktów .
Totor
3
@Totor, święta krowa, korzystając z interfejsu ncurses aptitude w celu przygotowania poleceń sprzedał mnie na aptitude raz na zawsze! (po latach myślenia umiejętności warto to robić, ale wpisując apt-get z pamięci mięśniowej)
TJ Ellis
2
... a aptitudetakże musi aptitude download package-namepobrać plik .deb pakietu!
Totor
2
Znalazłem tylko jedną rzecz, której nie ma, aptitudeale jest apt-geti tak jest apt-get --compile source package-name. apt-get build-dep package-nameistnieją, ale myślę, że aptitude build-dep package-namewykonują lepszą pracę.
Anders
71

Często się zastanawiałem. Wikipedia podkreśla, że główną cechą wyróżniającą jest to, że aptitude ma pełnoekranowy interfejs trybu tekstowego (przekleństwa). Fakt, że możesz używać większości apt-getargumentów poleceń aptitudesam w sobie, jest tylko decyzją projektową, aby ułatwić apt-getużytkownikom przejście aptitudei odwrotnie.

Nigdy nie korzystałem wajig, ale dokumentacja sugeruje, że jest to tylko skrypt, który wie, czy przekazujesz mu debplik (gdy działa dpkg), czy aptnazwę pakietu (gdy działa apt-getzamiast niego). Czy możesz to wypróbować i sprawdzić, czy tak właśnie działa?

Oczywiście prawdziwa różnica polega na:

gaurav@fern:~$ apt-get moo
         (__) 
         (oo) 
   /------\/ 
  / |    ||   
 *  /\---/\ 
    ~~   ~~   
...."Have you mooed today?"...
gaurav@fern:~$ aptitude moo
There are no Easter Eggs in this program.
Gauraw
źródło
52
Nie! aptitudema wiecej. Zapomniałeś umieścić niekończące się -vflagi moo. (Możesz iść do góry -vvvvvv)
Umang
12
Nie zapomnij o wszystkich ważnych mocach Super Cow, które apt-getmają, ale aptitudenie mają. (Spróbuj --helpobu)
derobert,
lmao. to zabawna odpowiedź do przeczytania, mimo że odpowiedź @ Ryana jest o wiele bardziej złożona;)
Michael Trouw
26

aptitude jest preferowanym programem do zarządzania pakietami z poziomu konsoli, zarówno do instalacji pakietów, jak i aktualizacji pakietów lub systemu w Debianie.

Oto przegląd narzędzia i jego funkcji w stosunku do apt-get: http://www.debian.org/doc/FAQ/ch-pkgtools.en.html#s-aptitude

Radzę więc po prostu apt-get install aptitude :)

dsp
źródło
2
Informacje o wydaniu mówią , że apt-get jest teraz zalecany zamiast aptitude do aktualizacji do ściśnięcia.
jrdioko
1
Tak, ale tylko do tego. W przeciwnym razie są one uważane za równe, ale aptitudema wiele bardziej zaawansowanych funkcji, takich jak wyszukiwanie i tryb pełnoekranowy, niż apt-get.
Anders
Z jakiegoś powodu wykorzystał aptitude do zainstalowania emacsa i bez szukania go usunął gdm! Więc na razie będę używać apt-get, ale jestem bardzo ciekawy umiejętności.
TomFirth
20

aptitudepamięta, które pakiety zostały wyraźnie zażądane, a które zostały zainstalowane tylko z powodu zależności. Automatycznie odinstaluje pakiety, które nie zostały wyraźnie zamówione, gdy nie są już potrzebne.

apt-get traktuje pakiety żądane jawnie i ich zależności tak samo.

Więc lepsze wykorzystanie aptitude, pomaga utrzymać system w czystości.

starblue
źródło
4
To kiedyś było prawdą, ale wiem, że mój apt-get ma apt-get autoremovepolecenie usuwania pakietów zainstalowanych tylko jako zależności. Nie wiem, kiedy ta funkcja została dodana, ale jedna strona sugeruje, że mogła się zdarzyć z Debianem Lennym (czerwiec 2010).
Gaurav,
8
apt-get autoremovenie usuwa pakietów zainstalowanych tylko jako zależności, usuwa osierocone zależności, co jest subtelną różnicą; nie jest w stanie stwierdzić, czy pakiet „liść” został zainstalowany celowo, czy zależnie, więc zostawia go tam, skąd aptitude będzie go wiedział i usuwa.
pjz
Jestem sprzedany! Są inne fajne rzeczy, aptitudeale jest to praktyczna funkcja zabójcy.
iconoclast
12

apt-get, a także różne narzędzia towarzyszące, zużywają znacznie mniej pamięci niż odpowiednie wywołania z wiersza poleceń aptitudei są nieco szybsze. Byłem błogo nieświadomy tego, dopóki nie spróbowałem uaktualnić instalacji Debiana na starym, pomalowanym pentium Thinkpad z 32 MB pamięci RAM. Uruchomienie zajęłoby mi godzinę lub dwie apt-get, które zakończyły się powodzeniem; aptitudezawiedzie po dłuższym okresie czasu.

To rozróżnienie jest mniej więcej bez znaczenia dla czegokolwiek przypominającego nowoczesny system stacjonarny.

intuicyjny
źródło
9

Bazując na odpowiedzi @ Gaurav, pisanki w dwóch menedżerach pakietów są dość zabawne !:

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.

i tak dalej.

Siddhartha
źródło
7

Jak wspomniano, http://pthree.org/2007/08/12/aptitude-vs-apt-get/ , aptitudema znacznie łatwiejszy w użyciu interfejs wiersza poleceń.

Czy pod maską nie używają tego samego systemu APT? Tak.

Podstawowy system to nie tylko apt, ale dpkg. Ten system jest tak samo głupi jak RPM, może obsłużyć tylko instalację i administrację pojedynczymi pakietami. Śledzi, które zainstalowane pliki należą do którego pakietu.

aptobsługuje pobieranie repozytoriów, śledzenie zależności i tak dalej dla wszystkich pojedynczych pakietów - które następnie instaluje dpkg. aptituderobi to samo z innym interfejsem.

vdboor
źródło
6

Zarówno apt-get, jak i aptitude opierają się na bibliotece APT, tak.

Zobacz moją odpowiedź na serverfault.com .

Debian nie jest jednostką monolityczną, są ludzie o różnych opiniach, a opiekun aptitude zdecydował, że apt-get ma pewne niedociągnięcia i chciał zbudować coś lepszego dzięki aptitude. Udoskonalił logikę, aby znaleźć rozwiązania dla złożonych scenariuszy aktualizacji, dodał GUI dla konsoli itp. I jest coś więcej niż tylko apt-get i aptitude, zobacz mój artykuł apt-get, aptitude,… wybierz odpowiedni menedżer pakietów dla siebie .

Raphaël Hertzog
źródło
6

Nie jestem pewien, czy nadal tak jest, ale najnowocześniejszy deweloper Debiana, Joey Hess, zawsze bronił umiejętności apt-get. Oczywiście rzeczy się zmieniają wraz z rozwojem oprogramowania. Apt-get obsługuje teraz zależności lepiej niż kiedyś. Od http://lists.debian.org/debian-user/2004/04/msg03138.html

Data: wtorek, 20 kwietnia 2004 22:27:12 -0400 Od: Joey Hess

Dziewięć powodów, dla których powinieneś używać aptitude zamiast apt-get lub dselect.

  1. aptitude może wyglądać jak apt-get

    Jeśli uruchomisz „aktualizację aptitude” lub „aptitude upgrade” lub „aptitude install”, wygląda i działa tak samo, jak apt-get, z kilkoma ulepszeniami. Więc nie ma krzywej uczenia się.

    (Jeśli jesteś użytkownikiem dselect, krzywa uczenia się oczywiście nie jest jednym z twoich problemów).

  2. aptitude śledzi automatycznie instalowane pakiety

    Przestań się martwić przycinaniem nieużywanych bibliotek i pakietów wsparcia z twojego systemu. Jeśli użyjesz aptitude do zainstalowania wszystkiego, będzie śledzić, które pakiety są pobierane przez same zależności i usuwają te pakiety, gdy nie są już potrzebne.

  3. aptitude rozsądnie obsługuje

    Długotrwałą porażką apt-get był brak wsparcia dla relacji Polecane. Co jest problemem, ponieważ wiele pakietów w Debianie polega na Zaleca pobranie oprogramowania, które przeciętny użytkownik zazwyczaj używa z pakietem. Nie jest to rzadka przyczyna problemów, mimo że ostatnio apt-get mógł przynajmniej wspomnieć o zalecanych pakietach, łatwo przeoczyć jego ostrzeżenia.

    Aptitude domyślnie obsługuje Polecenia i można je skonfigurować, aby obsługiwać Sugestie. Obsługuje nawet instalowanie zalecanych pakietów, gdy są używane w trybie wiersza polecenia.

  4. używaj aptitude jako zwykłego użytkownika i unikaj ukrywania systemu

    Być może nie wiedziałeś, że możesz uruchomić aptitude w trybie GUI jako zwykły użytkownik. Wprowadź zmiany, które chcesz wypróbować. Jeśli wpadniesz w prawdziwy bałagan, możesz nacisnąć „q” i wyjść, twoje zmiany nie zostaną zapisane. (Aptitude pozwala również używać ctrl-u do cofania zmian.) Ponieważ jest uruchomiony jako zwykły użytkownik, nie możesz podłączyć systemu do czasu, aż powiesz aptitude coś do zrobienia, w którym to momencie poprosi cię o podanie hasła roota.

  5. aptitude ma potężny interfejs użytkownika i możliwości wyszukiwania

    Pomiędzy kategoryczną przeglądarką aptitude i doskonałym wsparciem dla filtrowania w stylu mutta i wyszukiwania pakietów według nazwy, opisu, opiekuna, zależności itp., Powinieneś być w stanie znaleźć pakiety szybciej niż kiedykolwiek przed użyciem aptitude.

  6. aptitude ułatwia śledzenie przestarzałego oprogramowania

    Jeśli Debian przestanie dystrybuować pakiet, apt pozostawi go w systemie na czas nieokreślony, bez ostrzeżeń i aktualizacji. Aptitude wyświetla takie pakiety w sekcji „Przestarzałe i lokalnie tworzone pakiety”, dzięki czemu możesz być informowany o problemie i coś z tym zrobić.

  7. aptitude ma interfejs do systemu zadań Debiana

    Aptitude pozwala korzystać z systemu zadań Debiana, ponieważ został zaprojektowany do użycia. Możesz przeglądać dostępne zadania, wybrać zadanie do zainstalowania, a następnie wkopać je i usunąć zaznaczenie części zadania, których nie chcesz. apt-get nie ma wsparcia dla zadań, a aptitude jest lepszy nawet niż narzędzia specjalnego przeznaczenia, takie jak tasksel.

  8. aptitude obsługuje wiele źródeł

    Jeśli twoja strona sources.list jest skonfigurowana tak, aby udostępnić wiele wersji pakietu, aptitude pozwala ci przejść w dół, aby zobaczyć dostępne wersje i wybrać wersję inną niż domyślna do zainstalowania. Jeśli pakiet psuje się niestabilnie, po prostu przywróć go do wersji testowej.

  9. aptitude rejestruje swoje działania

    Pakiet Aptitude logs instaluje, aktualizuje i usuwa do / varlog / aptitude, co może być przydatne, aby dowiedzieć się, dlaczego rzeczy zaczęły się psuć po wczorajszej aktualizacji lub po usunięciu pakietu partiticlar.

- patrz nieśmiały jo

=================== Istnieje również nowsza dyskusja z 2010 roku tutaj https://superuser.com/questions/93437/aptitude-vs-apt-get-which- jest polecanym aka-odpowiednim-narzędziem do użycia na StackExchange.

Manselton
źródło