Jaka jest różnica między apt-get a aptitude?

56

Nie rozumiem, dlaczego w minimalnej instalacji są dwa różne programy do zainstalowania oprogramowania. Czy oni nie robią tego samego? Czy jest duża różnica? Wszędzie czytałem, żeby użyć aptitude zamiast apt-get, ale wciąż nie znam różnicy

Thomaschaaf
źródło

Odpowiedzi:

48

aptitude jest opakowaniem dla dpkg, podobnie jak apt-get / apt-cache, ale jest narzędziem do wyszukiwania / instalacji / usuwania / wysyłania zapytań. Kilka przykładów, których apt może nie dostarczyć:

$ 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 <[email protected]>
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.
katriel
źródło
10
nie wspominając: $ aptitude changelog bash
pgs
Inne sztuczki, które aptitudewiedzą, że nawet najnowsze aptnie są w stanie: aptitude search '~i linux'wyszukiwać pakietów z linuxzainstalowaną nazwą lub opisem; aptitude search '~o'wyświetla listę przestarzałych pakietów (zainstalowane pakiety, które nie są już udostępniane przez żadne repozytorium); aptitude search '!~M ~i'pokazuje pakiety, które nie są oznaczone jako zainstalowane automatycznie; aptitude search '~i lib.*-dev'pokazy zainstalowano bibliotek rozwoju i można zastąpić searchz markautolub unmarkautooznaczyć te pakiety jako zainstalowane automatycznie lub ręcznie.
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. 
Mikeage
źródło
19

Oficjalne narzędzie, które jest obecnie używane w instalatorze Debiana i zalecane w uwagach do wydania, to aptitude.

Aptitude oferuje interfejs przekleństw (gdy jest uruchamiany bez żadnego parametru) oraz interfejs wiersza poleceń, który może zrobić prawie wszystko, co apt-cache/ apt-getrobi. Ma także lepszy mechanizm rozpoznawania zależności, który umożliwia przeglądanie wielu rozwiązań. Nawet podczas korzystania z wersji wiersza poleceń możesz wchodzić w interakcje z proponowanym rozwiązaniem i udzielać dodatkowych zamówień lub wskazówek (takich jak instalowanie lub usuwanie pakietu zalecanego przez inny).

Ale aptitude opiera się na bibliotece libapt (nie jest to bezpośrednie opakowanie dpkg) i jako takie zależy od aptpakietu, więc nie możesz zainstalować aptitude bez apt-get (który również znajduje się w pakiecie 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

Aby dowiedzieć się więcej na temat interakcji apt / dpkg / aptitude, możesz sprawdzić schemat wykonany przez Daniela Burrowsa (głównego autora aptitude). Kolejny schemat przedstawia informacje przechowywane przez różne narzędzia do zarządzania pakietami: Mapa plików stanu apt i dpkg .

Możesz także przeczytać mój artykuł apt-get, aptitude,… wybrać odpowiedni menedżer pakietów dla siebie

Raphaël Hertzog
źródło
7

aptitudepamięta, które pakiety celowo zainstalowałeś i które zostały automatycznie zainstalowane w celu spełnienia zależności. Po usunięciu pakietu aptitude usunie te automatycznie zainstalowane pakiety, aby utrzymać porządek w systemie. apt-getnie jest taki mądry.

aptitudeszybko stanie się niezbędnym narzędziem, gdy użyjesz różnych repozytoriów z różnymi wersjami pakietu. Wyobraź sobie, że pracujesz z backports.org lub nieoficjalnymi repozytoriami, takimi jak debian-multimedia.org . Następnie aptitudepokaże (na dole strony szczegółów określonego pakietu) dostępny numer wersji i pozwoli ci go wybrać.

Jeśli wpadniesz w sytuację, w której programy powodują konflikty z powodu takiego użycia nieoficjalnych repozytoriów, zobaczysz na górze ekran „Broken: ...” . Możesz wpisać l ~ b (limit / flag / broken) i po prostu uzyskać listę pakietów, które są ze sobą w konflikcie. Znacznie ułatwia ręczne rozwiązanie konfliktu.

Ponadto możesz użyć „ l”, aby ograniczyć listę pakietów. Wyobraź sobie, że szukasz pakietów zaczynających się od „ openoffice ”, a następnie naciśnij „ l” i wpisz „ ^openoffice” (jest to wyrażenie regularne), a zobaczysz tylko te pakiety. Wybierz z menu „płaską listę pakietów”, a szybko osiągniesz swój cel.

Kompletny podręcznik jest bardzo duży, oferując o wiele więcej filtrów i możliwości. Nawet jeśli ich nie znasz, aptitudejest to przydatny zamiennik apt-geti możesz go używać z typowymi parametrami, takimi jak:

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)
Signum
źródło
2
W rzeczywistości, od Lenny'ego, apt-get śledzi również pakiety zainstalowane tylko jako zależności od czegoś, o co wyraźnie prosiłeś. Sam używam aptitude, ale apt-get autoremoveteraz usuwa pakiety, które zostały zainstalowane jako zależności pakietu, który został usunięty.
Telemachus
W dzisiejszych czasach można również używać tylko apti może to zrobić mieszankę rzeczy, które apt-geti apt-cacheczynili. Na przykład apt search foowyświetli listę pakietów, które zawierają foonazwę lub opis. apt install foozainstaluje pakiet o nazwie foojeśli jest dostępny i apt policy foowyświetli aktualnie zainstalowaną wersję oraz wszystkie dostępne wersje pakietu foo.
Mikko Rantalainen
aptitudeJeszcze może zrobić więcej niż apttylko zwykły aptjest często dużo szybciej.
Mikko Rantalainen
5

Oprócz zapewnienia ładnego interfejsu użytkownika konsoli, gdy uruchamiasz aptitudebez argumentów, łączy różne apt-*polecenia (i dselect) w jednym narzędziu.

Aby wyszukać pakiet i zainstalować go za pomocą apt-get:

apt-cache search somepkg
apt-get install somepkg

.. ale z aptitude to to samo polecenie:

aptitude search somepkg
aptitude install somepkg

aptitudema kilka dodatkowych funkcji, takich jak aptitude changelog somepkgi wstrzymywanie pakietów (aby zatrzymać ich aktualizację) - nic, czego nie można osiągnąć za pomocą innych poleceń / metod, jest po prostu bardziej jednolity i przyjemny w użyciu.

dbr
źródło
3
szkoda, że ​​nie ma odpowiednika „apt-cache policy”.
hayalci
4

jak wiesz, kiedy instalujesz pakiet, jeśli potrzebuje on innych pakietów (zależności), zostaną one również pobrane i zainstalowane. aptitude śledzi, w momencie instalacji, pakiety, które są dołączone do zainstalowanego, więc kiedy usuniesz ten drugi, aptitude poprosi cię o usunięcie innych (teraz nieużywanych) zależności „osieroconych”. apt-get zachowa je w systemie cicho, jeśli usuniesz pakiet „główny”.

wygląda na to, że najnowsze wersje apt-get mają podobną funkcjonalność: http://www.psychocats.net/ubuntu/aptitude

gpilotino
źródło
aptitudelub aptw rzeczywistości nie przechowuje listy pakietów, które zostały zainstalowane jako zależności dla danego pakietu. Po prostu śledzi, czy pakiet został zainstalowany ręcznie czy automatycznie. A jeśli pakiet został oznaczony jako zainstalowany automatycznie i żaden inny pakiet go nie uzależnia ani nie zaleca, zostanie usunięty za pomocą apt autoremovelub aptitude dist-upgrade.
Mikko Rantalainen
3

Największą różnicą jest to, że aptitude jest zaprojektowane tak, aby było interaktywne, a narzędzia apt lepiej nadają się do pracy skryptowej. Możesz użyć tego drugiego, tj. Narzędzi apt, interaktywnie w porządku, z dużo większym wysiłkiem, aby uzyskać te same wyniki, które zapewnia aptitude. Jeśli z jakiegoś powodu musiałeś zdecydować się na jedno lub drugie narzędzie, musisz zdecydować, ile wysiłku chcesz włożyć w zarządzanie pakietami.

użytkownik3146
źródło
1

Jedną z poważnych zalet umiejętności jest umiejętność obliczania zależności. Po pierwsze, może poradzić sobie ze skomplikowanymi zależnościami bez interwencji użytkownika, co często kończy się niepowodzeniem. Ale jeśli nie podoba ci się rozwiązanie, które ci przedstawił (i oceni własne rozwiązanie, aby wykazać, jak dobrze myśli, że jest), możesz poprosić go o odejście i zaproponowanie innego rozwiązania, aby rozwiązać konflikt.

To naprawdę robi niesamowite zarządzanie pakietami.

Coops
źródło
1

Największą różnicą jest: wpisz „aptitude” bez żadnych parametrów.

Daje ci interfejs tekstowy, możesz użyć klawiatury do wyszukiwania / nawigacji itp., Zobacz informacje o zależnościach, odwrotnych zależnościach, wszystkich dostępnych wersjach pakietu, i możesz wykonywać na nich dowolne operacje menedżera pakietów z tego ekranu.

Możesz nacisnąć „g”, aby przejrzeć zmiany, w razie potrzeby zmodyfikować uzupełnienia i usunięcia pakietów oraz zastosować wszystkie oczekujące operacje.

Świetny wizualny sposób zarządzania pakietami przez połączenie ssh lub zwykły stary terminal.

Hayalci
źródło