Aptitude vs. apt-get 37


Jestem użytkownikiem Ubuntu/Debiana (tak, jestem zwolennikiem obydwu systemów) i… zakochałem się w zaawansowanym narzędziu zarządzania pakietami (Advanced Packaging Tool) – szerzej znanym jako apt (słowo apt w tłumaczeniu na język polski to „trafny, zdolny” – przyp. tłum.). Zanim zacząłem używać Ubuntu pływałem w piekle niespełnionych zależności, z takimi dystrybucjami jak Red Hat, Mandrake (jak wtedy się nazywał) a nawet SuSE. Znajdowałem jakiś program, próbowałem zainstalować i najczęściej dowiadywałem się, że jego działanie zależy od innych pakietów. Instalowałem więc te brakujące pakiety i wtedy wychodziło na jaw, że są w konflikcie z nowszymi wersjami oprogramowania. W rzeczy samej – piekło. Kiedy odkryłem sposób w jaki Debian zarządza pakietami oprogramowania dziwiłem się czemu nikt wcześniej mi o nim nie wspomniał. To było jak zbawienie. „Tak się powinno instalować oprogramowanie!” – pomyślałem.

Tym, czego nowy użytkownik w świecie apta uczy się na początku, jest właśnie to, że apt-get jest narzędziem do instalowania oprogramowania w Twoim systemie. W czasie pracy z systemami z rodziny Debiana które używają apta (np. Ubuntu) uczymy się obsługi różnorakich narzędzi:

  • apt-get: służy zarówno do instalowania i usuwania pakietów z Twojego systemu, jak również do aktualizacji listy pakietów i samego oprogramowania.
  • apt-cache: jest narzędziem do wyszukiwania dostępnych pakietów, ze stworzonej przez użytkownika listy na lokalnej maszynie.
  • dpkg: tego narzędzia używamy do administrowania systemem, na przykład do ponownej konfiguracji Xorg.

Jeśli będziesz chciał się zagłębić w system i pogrzebać w nim trochę bardziej to poniżej są narzędzia których obsługi prawdopodobnie nauczysz się najpierw w systemach opartych na Debianie. Ale odpowiedzialność nie spoczywa na mnie. Ty sam musisz zapamiętać i nauczyć się obsługi innych narzędzi (jeśli zamierzasz w większym stopniu administrować swoim systemem). Wśród nich są:

  • apt-listbugs: używamy by sprawdzić listę błędów w programie zanim go zainstalujemy.
  • apt-listchanges: podobnie jak apt-listbugs; z tą różnicą, że sprawdzamy listę zmian w nowej wersji programu, a nie listę błędów.
  • apt-rdepends: narzędzie do sprawdzenia drzewa zależności.
  • deborphan: szuka niepotrzebnych już zależności które zostały po usunięciu głównego pakietu.
  • debfoster: pomaga deborphanowi zidentyfikować, które zależności pakietów nie są już potrzebne w systemie.
  • dselect: interfejs oparty na curses służący do podglądu, zaznaczania i szukania pakietów w systemie.

Jest ich jeszcze więcej: apt-cdrom, apt-config, apt-extracttemplates, apt-ftparchive, apt-key, apt-mark, i apt-sortpkgs.

Jeśli ktokolwiek jeszcze nie zauważył – jest 16 różnych narzędzi, z którymi musisz się zapoznać by zacząć uczyć się o dystrybucjach opartych na Debianie. Nie wiem jak Wy, ale ja sądzę, że „robimy to na opak”. Mam na myśli to, że jeśli używam na przykład OpenSSH do innych rzeczy niż scp, to cała funkcjonalność OpenSSH zawarta jest w jednym narzędziu – ssh. Zatem – czy nie sądzicie, że lepiej by było by cała funkcjonalność apta była w jednym narzędziu – czyli „apt”?

Co więcej, apt-get ma dość duży problem, którym dopiero zajęto się niedawno. Problemem tym jest usuwanie pakietów. Wiemy, że apt-get wykonuje świetną robotę – identyfikuje jakie zależności muszą zostać zainstalowane kiedy żądasz konkretnego pakietu, ale ponosi całkowitą porażkę kiedy chcesz usunąć ten pakiet. Jeśli zależności były wymagane użycie „apt-get autoremove” usunie pakiet, ale zostawi osierocone zależności w systemie. Serwis Psychocats.net na swoich stronach internetowych demonstruje to samo zjawisko na przykładzie pakietu kword. Rozwiązanie? Aptitude.

Ale zanim przejdę dalej chcę powiedzieć, że jestem świadomy istnienia „apt-get autoremove” które ostatecznie jest w stanie zająć się osieroconymi zależnościami. To jest krok we właściwym kierunku, rzecz jasna. Jednakże, apt-get (wraz z wieloma innymi narzędziami ze swojej rodziny) zasługuje jedynie na ocenę dostateczną. Aptitude (z ang. „łatwość, zdolność, predyspozycja” -przyp. tłum.), jak za chwilę zobaczycie, jest jednym narzędziem do wszystkich operacji.

Dzięki aptitude pakiety instaluje się, usuwa, aktualizuje i zarządza nimi w dużo lepszy sposób. Po pierwsze – od chwili powstania aptitude radzi sobie z osieroconymi zależnościami. Po drugie – posiada interfejs curses który zostawia dselect daleko w tyle. Na koniec – i to najważniejsze – wykorzystuje jedno narzędzie które zawiera wiele funkcji. Spójrzmy:

  • aptitude: uruchomienie bez żadnych parametrów przywołuje piękny interfejs do szukania, sterowania, instalowania, aktualizowania czy zarządzania w inny sposów pakietów.
  • aptitude install: instaluje oprogramowanie w twoim systemie razem z wymaganymi zależnościami.
  • aptitude remove: usuwa oprogramowanie razem z osieroconymi zależnościami.
  • aptitude purge: usuwa nie tylko oprogramowanie z osieroconymi zależnościami, ale także pliki konfiguracyjne.
  • aptitude search: szuka dostępnych pakietów oprogramowania na liście apta na danym komputerze.
  • aptitude update: aktualizuje lokalną listę pakietów.
  • aptitude upgrade: aktualizuje do nowszej wersji każdy pakiet oprogramowania jaki jest dostępny na liście pakietów.
  • aptitude clean: usuwa każdy ściągnięty plik który był wymagany przy instalacji oprogramowania na twoim komputerze.
  • aptitude dist-upgrade: aktualizuje oprogramowanie (nawet jeśli wiąże się to z deinstalacją niektórych pakietów).
  • aptitude show: pokazuje szczegółowe informacje o danym pakiecie.
  • aptitude autoclean: usuwa jedynie przestarzałe pakiety, ale zachowuje aktualne.
  • aptitude hold: naprawia pakiet w aktualnej wersji, ale nie aktualizuje go.

Czy widzicie tu pewien model? Jedna komenda z czytelną opcją (żadnych niepotrzebnych flag). A to tylko wierzchołek góry lodowej. Będzie jeszcze lepiej. Kiedy na przykład szukasz pakietu używając aptitude wyniki są układane w porządku alfabetycznym (o rany, potrafisz to sobie wyobrazić?) i wyrównane do szerokości kolumny. Mało tego, program informuje cię które pakiety już są zainstalowane, zamiast wyświetlać na chybił trafił pakiety w jakimś przypadkowym, nieczytelnym formacie, tak jak jest w przypadku apt-cache.

Już o tym wspominałem, ale powtórzę: uruchomienie aptitude bez żadnych opcji przywołuje aplikację opartą o bibliotekę curses do nawigacji w twoim systemie apt. Jeśli ktokolwiek jej używał ten wie, że jest znacznie lepsza od dselect, który zrobiony jest byle jak. Dzięki aptitude szukanie pakietów, ich aktualizowanie, usuwanie, wyświetlanie szczegółów i używanie innych potrzebnych narzędzi stało się prostsze. Jeśli popracujesz 20 minut w konsoli dojdziesz do wniosku, że ta właśnie aplikacja została zrobiona porządnie. Jeśli te 20 minut spędzisz nad dselect rozboli Cię głowa i będziesz zagubiony niczym mysz optyczna na wypolerowanym lustrze.

Aptitude jest ponadprzeciętny w porównaniu do apt-get w każdej kwestii, kształcie, formie. Ma lepsze podejście do zależności. Jest lepszą aplikacją opartą na curses. Posiada lepsze opcje. Jedno narzędzie. Lepsze formatowanie wyników. Można wymieniać bez końca. Na każdym kroku widzę, że ludzie używają apt-get. Na forach, IRCu, w e-mailach króluje apt-get. Trzeba nauczyć naszych braci i siostry odpowiedniego użycia narzędzi i pokazać im postępowy sposób instalacji – aptitude. Używam go od kiedy pierwszy raz się o nim dowiedziałem i będę używał do końca moich dni z Debianem i Ubuntu.

Dziękuję GarfieldTech za inspirację do napisania artykułu.

Wspieraj łatwość. Używaj aptitude.

Autor: Aaron Toponce

Tłumaczenie na podstawie: Aptitude vs apt-get

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.

37 komentarzy do “Aptitude vs. apt-get

  • Todu

    Ale za to ładnie rysuje słonia zjadanego przez węża 😉
    Ja jednak lubię sobie poklikać myszą, więc nie wiem, czy przekonam się do Aptitude’a, chyba jednak zostanę przy Synapticu.
    Chyba.

  • freak82

    … rola przyzwyczajenia jest tutaj przeogromna, od poczatku uzywalem apt’a i ciezko bedzie mi zmienic (badz co badz) to doskonale narzedzie do zarzadzania pakietami.
    jedyna kwestia, ktora moze mnie przekonac do aptitude to ten test z „psychocatsa”, ale to czas pokaze.

    btw. ostatnio korzystajac z aptitude (ciekawosc 😉 ) odkrylem ciekawa rzecz, z kazdej aktualizacji jest tworzony log jakie to pakiety zostaly zaktualizowane. teraz rodzi sie pytanie, czy apt ma podobny „system dzialania” ?

    btw2. bardzo dobry artykul 🙂

  • kuLa

    apt nie tworzy takich logów jak aptitude, ale jak chcesz sprawdzić co zostało zainstalowane przez apt to wystarczy przejrzyeć logi dpkg tam jest wszystko

  • vmario

    Uwielbiam aptitude, a z apt nie korzystam praktycznie nigdy. Są jednak sytuacje wyjątkowe, gdy piekło zależności daje o sobie znać pomimo całej inteligencji aptitude. Wtedy zazwyczaj udaje mi się jakoś rozwiązać problem eksperymentując z różnymi opcjami apt.

  • ppietryga

    [quote comment=”10769″]Okej, a jak przez pół roku używałem apt-get’a to teraz mogę przejść na aptitude? nie wywali mi się Debian?[/quote]
    Nie, nie wywali. Aptitude, to w DUŻYM uproszczeniu to samo narzędzie, ale lepiej. Sam system zarządzania pakietami się nie zmienia. Zmienia się tylko linia poleceń.
    Zamias pisać:
    apt-get install lub apt-cache search
    wpisujesz:
    aptitude install lub aptitude search
    Tak naprawdę, to nic dla Debiana (Ubuntu) się nie zmienia, poza automagiczną obsługą zależności już niepotrzebnych (np. po deinstalacji pakietu, który od nich zależał).
    Używam tego od lat. Więcej dowiesz się po: aptitude –help 🙂

  • qbsiu

    [quote post=”564″]Okej, a jak przez pół roku używałem apt-get’a to teraz mogę przejść na aptitude? nie wywali mi się Debian?[/quote]
    Jak jest napisane na: http://debian.linux.pl/viewtopic.php?t=1670
    [quote]”Mieszanie apt-get i aptitude

    Tak, mieszanie apt-get i aptitude – czy to w ogóle możliwe? Czy to niczemu nie szkodzi? Zdania na ten temat są podzielone. Znajomy deweloper Debina uważa, że nic złego stać się nie może, jeżeli będziemy mieszać te dwa narzędzia. Jednakże praktyka mówi inaczej. Jedni mieszają, drudzy nie. Jednym po mieszaniu, zależności się sypią, innym nie. Więc jak w końcu robić? Otóż, jeżeli jesteś niedoświadczonym użytkownikiem, polecam używać aptitude, a w przypadku wyższej konieczności apt-get. Jeżeli natomiast jesteś już doświadczony, wiesz to i owo i walka z zależnościami nie sprawia Ci większego problemu, to zapewne prędzej czy później spróbujesz mieszać te dwa narzędzia. Ale mówię, jeżeli jesteś niedoświadczony nie rób tego jeżeli nie musisz – jeżeli jednak znasz już trochę Debiana, to rób jak uważasz (uważaj jak robisz!).”[/quote]

  • Kataloger

    wajig sam używam i moim zdaniem jest bezkonkurencyjny. Wcześniej używałem apt-get, ale przerzuciłem się na wajig, dodając do tego graficzną nakładkę to spoko się na nim pracuje.

  • Mayday

    Witam !

    Muszę przyznać świetny artykuł, sam jestem dość swieżym użytkownikiem ubuntu i nawet nie maiłem pojęcia, że istnieje aptitude. Ale chyba zacznę go używać zamiast apt-get, choć apt-get fajnie brzmi i już się przyzwyczaiłem 😛

  • lukas

    1. artykuł świetny!!!
    2. ostatnio na jakilinux.org pytałem czy apt-get, aptitude mają mechanizm sprawdzania zainstalowanych programów. Teraz widzę, że aptitude ma ;D.
    3. aptitude search nie znalazł mi kiedyś paczki a apt-cache tak.
    4. Korzystałem kiedyś na Debianie z apt-get i aptitude i tak jak ktoś pisał wyżej, mogą być problemy. Ja miałem- niec strasznego, ale jednak.

    Więcej taki artykułów ;]

  • ppietryga

    Używanie tych narzędzi zamiennie nie może spowodować żadnych problemów. Jedyny problem znajduje się między klawiaturą a monitorem.
    Aptitude to frontend na apta. Nie zarządza pakietami inaczej niż apt. Aptitude po prostu dodaje nową funkcjonalność w postaci zarządzania pakietami osieroconymi i spaja wszystkie narzędzia apta.
    Aptitude poza tym 'potrafi’ rozwiązać problem gdy próbujemy wykonać operacje sprzeczne ze sobą.
    apt-get poprostu wyświetli komunikat o błędzie i zakończy pracę:
    http://www.cidernet.pl/~ppietryga/apt-1.jpg
    aptitude zaproponuje rozwiązanie, poda swoją ocenę rozwiązania i spyta co robić dalej:
    http://www.cidernet.pl/~ppietryga/apt-2.jpg
    I właśnie wtedy pojawia się problem wspomniany na początku, jeśli podejmiemy złą decyzję, to zaczną nam się sypać zależności. Należy sugerować się oceną (Wynik) aptitude i mniej więcej orientować się co tak na prawdę chcemy zrobić.
    Samo mieszanie narzędzi nie może nam zaszkodzić.

  • Todu

    Ppietryga, myślę, że jednak problem tkwi w funkcjach tych programów.
    O ile dobrze zrozumiałem sposób, w jaki Aptitude decyduje o tym, czy pakiet jest zbędny, to nie zna on zależności w pakietach instalowanych apt-getem i problem z zależnościami zaczyna się w np. takiej oto sytuacji:

    Instalujemy apt-getem pakiet X, który wymaga biblioteki libX, apt-get zatem instaluje także libX.
    Następnie instalujemy aptitude’m pakiet Y, który także wymaga libX. Aptitude zapamiętuje tę zależność.
    Y nam się znudził, więc go odinstalowujemy, znów używając aptitude. Aptitude uznaje, że libX był wykorzystywany tylko przez Y, gdyż nie zna zależności X. Odinstalowuje libX jako niepotrzebny pakiet (choć X go wymaga) i witamy w piekle zależności 🙂

    Zrozumiałe?
    Ale nie jestem pewien, czy dobrze zrozumiałem działanie aptitude. Nie używam go.

  • ppietryga

    @Todu: Aptitude to: „apt frontend”. Czyli „nakładka” na system zarządzania pakietami.
    http://pl.wikipedia.org/wiki/APT
    🙂

    apt-get, aptitude, synaptic, kynaptic, adept używają tej samej bazy dostepnych i zainstalowanych pakietów. Mają te same wiadomości o zależnościach (aptitude potrafi dodatkowo doinstalować automatycznie, tak jak np. synaptic, paczki zalecane), bo to autor/twórca pakietu decyduje jakie są zależności, a nie system.
    I żaden program nie usunie pakietu, od którego zależy pakiet, którego zamierzamy usuwać, chyba że użyjesz:
    dpkg –force-depends.

  • Todu

    [quote post=”564″]Mają te same wiadomości o zależnościach (aptitude potrafi dodatkowo doinstalować automatycznie, tak jak np. synaptic, paczki zalecane), bo to autor/twórca pakietu decyduje jakie są zależności, a nie system.[/quote]
    Właściwie, to zastanawiałem się, czy aptitude nie sprawdza informacji o zależnościach w locie, program po progamie (dlatego napisałem „O ile dobrze zrozumiałem sposób, w jaki Aptitude decyduje o tym, czy pakiet jest zbędny […]”), jednak na http://debian.linux.pl/viewtopic.php?t=1670 stoi jak byk napisane:[quote post=”564″]Co różni aptitude i APT? […] aptitude zapamiętuje instalowane zależności – co jest bardzo ważne jeżeli chcemy zachować porządek w systemie. Otóż, za każdym razem jak instalujesz jakieś pakiety, czy to przez apt, czy aptitude zawsze są potrzebne jakieś zależności, które są wtedy automatycznie instalowane. Niestety, tak się przykro złożyło, że apt-get nie zapamiętuje instalowanych zależności. To znaczy, że jeżeli przez apt-get zainstalujesz pakiet kde to zostanie zainstalowane 200 innych pakietów. Jednakże już przy próbie odinstalowania pakietu kde nie zostaną odinstalowane wszystkie zależności. Tak więc możemy sobie niezłego bałaganu narobić postępując w ten sposób. Z pomocą przychodzi aptitude, które zapamiętuje te zależności. Instalując pakiet kde przez aptitude i przy próbie jego odinstalowania, zostaną usunięte także zależności […].[/quote]
    Uznałem więc, że aptitude zapamiętuje zależności instalowanych pakietów, a nie sprawdza za każdym razem wszystkie zainstalowane pakiety pod kątem zależności. Nie używam aptitude’a, nie zagłębiałem się w działanie APT-a, więc po prostu wierzę w to, co inni napiszą.

  • ppietryga

    W podręczniku aptitude jest taka informacja o instalowaniu pakierów zalecanych i sugerowanych:
    ————
    –with-recommends, –with-suggests
    Powodują traktowanie odpowiednio rekomendacji i sugestii jako zależności przy instalowaniu nowych pakietów. (Mają pierwszeństwo nad ustawieniami w /etc/apt/apt.conf i ~/.aptitude/config.)

    W pliku konfiguracyjnym: Aptitude::Recommends-Important, Aptitude::Suggests-Important

    –without-recommends, –without-suggests
    Wyłączają traktowanie odpowiednio rekomendacji i sugestii jako zależności przy instalowaniu nowych pakietów.
    ————

  • Plichu

    @ Todu
    „Niestety, tak się przykro złożyło, że apt-get nie zapamiętuje instalowanych zależności.”
    Dziwne bo mi w ubuntu apt po wydaniu komendy
    sudo apt-get autoremove pakiet
    Usuwał pakiet wraz z tymi zależnościami z którymi był instalowany. Nie wiem czy różnica jest tu taka że apt zapamiętuje zależności tylko na jakiś czas…

  • pawel

    Sam przez dłuższy czas używałem aptitude, więc opiszę moje doświadczenia z nim.

    Od kiedy tylko zacząłem używać Debiana, przeczytałem na forum, że lepiej jest używać aptitude. I w rzeczy samej, używałem i na początku wydawał się w porządku. Po jakimś czasie okazało się, że z powodu niespełnionych zależności, aptitude chciał usunąć mi całe KDE (!). Co prawda w tym czasie używałem gałęzi Sid, ale apt-get aż taki „brutalny” nie był pod tym względem.

    Pomyślałem sobie, że te problemy są najprawdopodobniej spowodowane dystrybucją niestabilną, więc zainstalowałem wersję testową. I co się okazało? Nie mam pojęcia jak to jest możliwe, ale wyglądało to w ten sposób, jakby aptitude korzystał z innej bazy oprogramowania. To, co rzuciło mi się w oczy, to wersja 2.0.0.3 icewesel, zaś jak korzystałem z apt-get, była… 2.0.0.6 (przez dłuższy czas tak było, obecnie od tygodnia testuję Ubuntu, więc nie wiem, czy to już poprawiono). Sporo razy zdarzało mi się, że aptitude chciał mi, jako rozwiązanie problemów z zależnościami, usuwać wiele potrzebnych pakietów (nawet w linii Lenny).

    Ogólnie jednak nie mam zbyt dobrych wrażeń z używania aptitude i pomimo że apt-get nie usuwa zależności przy odinstalowywaniu jakiegoś programu, wydaje mi się, że apt-get nie robi takiego śmietnika i działa bardziej łagodnie.

    W sumie podoba mi się idea aptitude, ale jednak nie jest chyba jeszcze zbyt dopracowany i póki nie zmieni się to (chodzi mi o to co wyżej napisałem), pozostanę na razie przy apt-get.

  • tomsten

    Z tego co zauważyłem wszystko zależy od użytkownika. APT jest dobry dla doświadczonego usera, który z góry wie, których pakietów potrzebuje a których nie. Wtedy zależności dla takiego użytkownika na jego prywatnym komputerze nie mają znaczenia (znaczenie ma kwestia bezpieczeństwa a dlaczego to sami się domyślcie) Dla początkującego użytkownika bądź testera różnych paczek najlepsze będzie narzędzie APTITUDE – wtedy nie musi martwić zależnościami.

    Jako początkujący użytkownik (kilka dni temu przerzuciłem się z Windowsa) znalazłem sobie skrypcik, w którym zamiast komendy
    sudo aptitude install
    wystarczy wpisać
    install

    Gdy się poduczę i uznam to za stosowne po prostu podmienię komendę aptitude na apt. Dopóki nie znam pakietów z których będę najczęściej korzystał testuję coraz to nowe paczki. Do tego czasu aptitude sam zarządza mi zależnościami.

  • xxx

    Co za dziecinnie i bez jakiejkolwiek formy napisany (przepisany) artykuł.
    Do tego bez żadnej logicznej argumentacji na korzyść lub nie korzyść
    swojej tezy.

  • laybythesea

    [quote comment=”46404″]Co za dziecinnie i bez jakiejkolwiek formy napisany (przepisany) artykuł.
    Do tego bez żadnej logicznej argumentacji na korzyść lub nie korzyść
    swojej tezy.[/quote]
    Cieszy mnie taka postawa – czekamy na lepszy!

  • Cuba_Libre82

    Dzięki za bardzo pożyteczne informacje. Używam LMDE i jestem newbie w linie, więc jak dla mnie od dziś apttitude. Liczę, że przestaną przewracać mi się programy które testuję. 🙂