Apt-get bez tajemnic 14


LinuxMagazine-grudzien

Od Redakcji: artykuł pochodzi z grudniowego wydania Linux Magazine. Kompletną listę artykułów możecie znaleźć na stronach miesięcznika.

Coraz rzadziej spotykamy „piekło zależności” – sytuacje, w których nie udaje nam się zainstalować danej aplikacji, gdyż wymaga ona innej, niezainstalowanej biblioteki. Możemy wprawdzie zacząć od instalacji brakującego programu, ale często prowadzi to do nieskończonej pętli mnożących się zależności, co – nawet przy największej wytrwałości – może wywołać u nas frustracje.

Na szczęście takie scenariusze odchodzą już w przeszłość dzięki systemowi zarządzania pakietami dpkg i apt-get. Ponad dekadę temu twórcy systemu pomyśleli, by instalować oprogramowanie zorganizowane w pakietach plików z dołączonymi skryptami, które automatycznie wyszukują brakujące biblioteki i konfigurują instalowane aplikacje. Ideę tę przejęły później inne systemy zarządzania pakietami, jak RPM Red Hata, więc piekło zależności napotykamy dziś z reguły tylko w przypadku aplikacji na wczesnym etapie produkcji, dla których nie stworzono jeszcze dobrych pakietów.

System pakietów Debiana wciąż jest wykorzystywany przez większość popularnych dystrybucji GNU / Linuksa, w tym Ubuntu, Linux Minta, MEPIS-a i gNewSense’a. W zasadzie aplikacją zarządzającą oprogramowaniem jest dpkg, a apt-get to narzędzie, które umożliwia komunikowanie się z tym pierwszym. Oba wykorzystywane są do instalacji oprogramowania z repozytoriów online, zapisanych w /etc/apt/sources.list.

Apt-geta możemy szczegółowo skonfigurować za pomocą pliku /etc/apt/apt.conf, popularniejsze są jednak podpolecenia i opcje. Nie są one trudne do opanowania, niezależnie od tego, co chcemy wykonywać: dodawać lub usuwać oprogramowanie czy zarządzać systemem. Dodatkowo mamy możliwość korzystania z rozbudowanego podsystemu narzędzi, stworzonych w celu zwiększenia kontroli nad programem.

Dodawanie i usuwanie oprogramowania

W odróżnieniu od większości poleceń apt-get składa się z trzech oddzielonych spacjami części: podstawowego polecenia, podpolecenia i interesujących nas pakietów. Na przykład by zainstalować zestaw gier pasjans pod nazwą Pysol, powinniśmy wpisać: apt-get (podstawowe polecenie), następnie install (podpolecenie) oraz pysol (nazwę pakietu).

Podpolecenie zawsze powinno wystąpić, natomiast w niektórych przypadkach – na przykład przy konserwacji systemu – nie musimy podawać listy pakietów. Te ostatnie wpisujemy oddzielone spacją lub korzystamy z wyrażeń regularnych, jak znak *, choć może to utrudniać wykrywanie i prowadzić do nieprzewidzianych rezultatów.

Jeśli chcemy zainstalować kilka pakietów, lepiej skorzystajmy z metapakietu. Jest to pseudopakiet, mający za zadanie uprościć instalację dużych aplikacji, podzielonych na kilka pakietów. Na przykład pod Debianem kde-minimal instaluje najmniejszą możliwą liczbę pakietów wymaganą do uruchomienia środowiska KDE. By sprawdzić, czy potrzebny nam pakiet jest dostępny, powinniśmy zajrzeć do repozytoriów dystrybucji online; jeśli wszystko inne zawiedzie, zawsze możemy próbować odgadnąć nazwę pakietu. O ile będziemy przy tym kierować się zdrowym rozsądkiem, mało prawdopodobne, byśmy dokonali zmian, których nie da się bez problemu cofnąć.

Podstawowe polecenie służące do dodawania i aktualizowania pakietów to po prostu apt-get install nazwa-pakietu. Po wpisaniu polecenia otrzymujemy z reguły podsumowanie czynności, jakie będą wykonane podczas instalacji, w tym listę zależności, które zostaną zainstalowane, pakietów, które zostaną zaktualizowane lub usunięte, oraz wymaganą ilość miejsca na dysku. Następnie program pyta, czy chcemy kontynuować proces instalacji (Rysunek 1) lub instaluje oprogramowanie automatycznie, jeśli uzna, że nie będzie to miało wpływu na inne składniki systemu. Zanim rozpoczniemy instalację, powinniśmy dokładnie przeczytać podsumowanie, by upewnić się, że nie spotkają nas żadne nieprzyjemne niespodzianki.

installingRysunek 1: Zanim apt-get wykona jakiekolwiek operacje, wyjaśnia, co będzie robić, i daje nam szansę wycofać się z procesu instalacji.

Jeśli korzystamy z niestandardowego repozytorium online, możemy również otrzymać komunikat, że nie zostało ono zweryfikowane jako wiarygodne źródło. W takim przypadku powinniśmy kontynuować tylko wtedy, gdy jesteśmy całkowicie pewni, że możemy ufać danemu repozytorium.

W trakcie pracy apt-get pokazuje, które pakiety pobiera, oraz podaje stopień zaawansowania, prędkość pobierania i czas wymagany do ukończenia operacji (Rysunek 2). Ten ostatni jest tylko szacunkowy, gdyż zmienia się w zależności od połączenia z Internetem. Po zakończeniu pobierania, apt-get instaluje oprogramowanie, od czasu do czasu zadając dodatkowe pytania dotyczące preferowanego sposobu instalacji. Na końcu wyświetla ewentualne podsumowanie napotkanych problemów, a zainstalowany program trafia do głównego menu.

installing-progressRysunek 2: W czasie wykonywania naszego polecenia apt-get dokładnie opisuje wszystkie czynności.

Podstawowe polecenia służące do instalacji oprogramowania dadzą się zmienić za pomocą kilku opcji. Możemy na przykład skorzystać z parametru -s, który przeprowadza symulację instalacji, dzięki czemu upewnimy się, że nie czyhają na nas żadne problemy. Jeśli takowe się pojawią, ponowne użycie polecenia z dodaną opcją -f pozwala liczyć na to, że apt-get sam znajdzie rozwiązanie problemu, a z opcją -m – zignorować brakujące zależności – zawsze możemy mieć nadzieję, że nie będą one kluczowe dla działania programu. Jeśli nie chcemy dokonywać wyborów podczas instalacji, możemy użyć opcji -y, która automatycznie odpowiada na wszystkie pytania „tak” – nie powinniśmy więc używać jej lekkomyślnie, chyba że naprawdę wiemy, co robimy. Jeśli natomiast chcemy tylko przeinstalować tę samą wersję danego programu, możemy skorzystać z opcji –reinstall.

Chyba najpopularniejszą opcją instalacji jest -t repository, pozwalająca określić repozytorium online, z którego chcemy pobrać pakiet i wszystkie zależności. Szczególnie przydaje się pod Debianem, którego główne repozytoria – stabilne, testowe i niestabilne – opisują etap rozwoju danego oprogramowania. Na przykład jeśli chcemy pobrać najnowszą wersję GNOME, choć nie została jeszcze przetestowana, możemy użyć polecenia apt-get -t unstable install gnome-desktop environment. Podobnie w przypadku innych dystrybucji opartych na Debianie – możemy w ten sposób zainstalować nieukończoną wersję programu, jaką dodaliśmy do swoich repozytoriów, lub autorską modyfikację, z której chcemy od czasu do czasu korzystać. Za pomocą tej opcji możemy też zainstalować starszą wersję pakietu, jeśli najnowsza zawiera błędy lub nie działa.

Alternatywą może być dopisanie na końcu polecenia słowa: /repository. Ta opcja instaluje jednak tylko określone pakiety z określonego źródła, więc również może nie rozwiązać naszego problemu.

Jeśli jesteśmy zaawansowanymi użytkownikami, możemy też pobrać odpowiedni pakiet na dysk – w takim przypadku przechodzimy bezpośrednio do dpkg. Na przykład jeśli pobierzemy wersję deweloperską menedżera obrazów digiKam, możemy zainstalować go, przechodząc do katalogu zawierającego pakiet i wpisując dpkg -i digikam.

W przypadku innych czynności struktura poleceń jest taka sama, zmienia się tylko podpolecenie. Mamy też do dyspozycji te same opcje, choć nie z każdym poleceniem ich użycie ma sens. Podpolecenie remove powoduje odinstalowanie oprogramowania, zaś purge usuwa wszelkie jego ślady z naszego komputera (nie usuwa jednak zależności, by to uczynić, musimy uciec się do podpoleceń konserwacyjnych opisanych poniżej). Jeśli chcemy zaktualizować wszystkie pakiety na naszym komputerze, to zamiast zajmować się każdym z nich z osobna, możemy użyć polecenia dist-upgrade. By zaś dodać każdą aplikację dostępną w repozytoriach (nawet tę, która została wcześniej zainstalowana), możemy skorzystać z polecenia upgrade; jednak często nie znajduje ono zastosowania.

Menedżer pakietów Debiana często jest wykorzystywany do instalacji prekompilowanych plików binarnych. Jeśli jednak chcemy mieć pewność, że wszystkie zainstalowane programy działają z najwyższą wydajnością, możemy użyć podpolecenia source, które pobiera pakiety źródłowe, oraz opcji -b, kompilującej je na naszym komputerze. Jeśli źródło wymaga jakichś zależności, dostarczamy ich za pomocą podpolecenia build-dep. Powinniśmy jednak pamiętać, że kompilowanie pakietów źródłowych zajmuje sporo czasu, szczególnie jeśli chodzi o większe aplikacje – w przypadku OpenOffice.org może to trwać nawet parę godzin.

Konserwacja oprogramowania

Dpkg i apt-get oferują narzędzia, które pomagają w utrzymaniu naszego oprogramowania w dobrym stanie. Gdy napotykamy problemy i potrzebujemy dodatkowych informacji, polecenie query dostarcza nam szczegółowych danych o interesujących nas pakietach. Jeśli na przykład wpiszemy dpkg-query -p kdepim, otrzymamy informacje na temat pakietu: dane kontaktowe jego twórców, zależności, rozmiar programu, opis oraz stronę internetową projektu (Rysunek 3). Możemy również użyć opcji -s, wyświetlającej status danego pliku, lub -L, która podaje nam listę wszystkich plików w pakiecie aplikacji. Informacje te mogą okazać się bezcenne w przypadku kłopotów, bez względu na to, czy podejmiemy się naprawy samodzielnie, czy znajdziemy kogoś, kto nas w tym wyręczy.

dpkg-queryRysunek 3: Narzędzie dpkg-query dostarcza nam absolutnie wszystkich istotnych informacji na temat każdego pakietu oprogramowania.

Polecenie apt-get oferuje kilka innych narzędzi w formie podpoleceń, których możemy użyć, nie odnosząc się do żadnego pakietu. Podobnie jak w razie problemów z systemem plików sięgamy po fsck, tak w przypadku systemu pakietów wszelkich informacji na temat ich funkcjonowania dostarcza nam apt-get check

Im więcej instalujemy i odinstalowujemy, tym częściej powinniśmy rozważyć uruchomienie apt-geta, korzystając z podpoleceń clean i auto-clean. To pierwsze usuwa wszelkie pakiety, które już pobraliśmy i zainstalowaliśmy, drugie natomiast usuwa pakiety, których nie można już pobrać. Uruchamiając oba od czasu do czasu, możemy łatwo oczyścić trochę przestrzeni dyskowej bez wpływania na funkcjonowanie systemu.

Kolejnym przydatnym podpoleceniem apt-geta jest autoremove. Usuwa ono osierocone pakiety – te, które do niczego nie służą, gdyż zostały dodane jako zależności do aplikacji, jaką już usunęliśmy. Nie robią one nic, prócz zajmowania miejsca na dysku, możemy je więc bez wahania odinstalować. W odróżnieniu od clean i autoclean, system pakietów Debiana na bieżąco przypomina użytkownikowi o istniejących „sierotach” przy każdym uruchomieniu apt-geta (Rysunek 4).

autoremove-messageRysunek 4: Apt-get informuje nas, kiedy powinniśmy skorzystać z podpolecenia autoremove, by zwolnić miejsce na dysku.

Kolejnym działaniem, które możemy wykonać, jest dodanie lub usunięcie repozytoriów online z /etc/apt/sources.list. Listę edytować można w vimie, emacsie lub dowolnym innym edytorze tekstu. Plik sources.list wskazuje wszystkie repozytoria online, z których korzystają apt-get i dpkg. Zgodnie z prostym systemem, każde repozytorium zajmuje jedną linijkę. Każdy wpis zaczyna się od deb (repozytoria binarne) lub deb-src (repozytoria pakietów źródłowych). Dalej następuje adres URL repozytorium, nazwa i podsekcje. Źródła blokujemy, wstawiając przed nimi znak #. Używany jest on również do dodawania komentarzy dla użytkownika (Rysunek 5).

sources.listRysunek 5: Dwa typowe wpisy w /etc/apt/sources.list: jeden dla plików binarnych, drugi dla plików z kodem źródłowym.

Kiedy dodajemy lub usuwamy repozytorium z sources.list, powinniśmy wykonać polecenie apt-get update, by wymienić repozytoria używane przez apt-get i dpkg, w przeciwnym razie system pakietów nadal będzie korzystać z wcześniejszych ustawień. Edycja i aktualizowanie za każdym razem zajmuje kilka minut, ale dzięki tym operacjom zawsze wiemy, z których źródeł korzystamy. Z tego powodu niektórzy użytkownicy wolą edytować sources.list i korzystać z opcji -t, by określić źródła, z jakich będą instalować. Zmniejszają w ten sposób prawdopodobieństwo pomyłki.

Inne narzędzia

W zależności od dystrybucji apt-get i dpkg mogą oferować również inne narzędzia. W większości z nich znajdziemy polecenie apt-cdrom, które pozwala na instalację z CD lub DVD; jednak z reguły przydaje się ono tylko przy pierwszej instalacji.

Inne, mniej popularne narzędzie to apt-spy. Wykrywa ono najszybsze dostępne repozytorium. Jedyną wadą tego rozwiązania jest to, że prędkość połączenia zmienia się w zależności od liczby użytkowników, więc powinniśmy je uruchomić kilka razy, zanim zdecydujemy się zmodyfikować na jego podstawie /etc/apt/sources.list.

Jeśli jesteśmy ostrożni, przed instalacją pakietu możemy sprawdzić, czy nasza dystrybucja zawiera polecenie apt-listbugs. Wyszukuje ono niedawne zgłoszenia błędów w wersji, którą mamy zamiar pobrać.

Prawdopodobnie najbardziej przydatnym narzędziem w pracy z pakietami jest apt-cache – prawdziwa skarbnica informacji o samych pakietach i systemie. Na przykład apt-cache showpkg nazwa-pakietu określa numer zainstalowanej wersji, najnowszą wersję dostępną w używanych przez nas repozytoriach oraz odwrotne zależności pakietu, to znaczy pakiety, które od niego zależą. apt-cache dump podaje listę zainstalowanych pakietów, zaś apt-cache stats dostarcza informacji takich, jak liczba zainstalowanych pakietów czy całkowita liczba zależności. Szczególnie przydatną opcją jest apt-cache search nazwa-pakietu, wyszukująca dokładną nazwę pakietu lub pakietów, które chcemy zainstalować.

Wzór do naśladowania

Tandem dpkg i apt-get liczy sobie ponad dwanaście lat. W pewnych aspektach zaczyna już zdradzać oznaki starości. Obie aplikacje oferują liczne opcje praktycznie nieprzydatne współczesnym użytkownikom, a wszelkie ulepszenia tworzone są zwykle z myślą o nowszych narzędziach. W efekcie otrzymujemy oprogramowanie, które może nam sprawiać problemy, gdy jesteśmy początkujący. Jeśli jednak wiemy, jak się nim posługiwać, może wciąż oddać nam nieocenione usługi. Trudno się dziwić, że inne systemy pakietów także uprościły proces instalacji.

W następnym miesiącu zobaczymy, jak Red Hat wzorował się na Debianie przy tworzeniu yuma – ekwiwalentu apt-geta.

Autor: Bruce Byfield

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.

14 komentarzy do “Apt-get bez tajemnic