- Wyszukiwanie pakietów po nazwie i opisie:
- Wyszukiwanie pakietów zainstalowanych z danego archiwum.
- Zmiana zaznaczenia pakietów z automatycznie instalowanych na ręcznie instalowane.
- Wyszukiwanie pakietów z zepsutymi zależnościami (broken dependencies) i ich naprawa.
- Blokada aktualizacji danego pakietu.
- Usuwanie wszystkich pakietów należących do danej sekcji.
- Brak pliku przy kompilacji programu.
- Usuwanie plików pozostałych po odinstalowanych pakietach.
Czasem należy wykonać kilka bardziej złożonych operacji przy pomocy aptitude. Pełną pomoc do aptitude można znaleźć w podręczniku użytkownika aptitude, jednak zdarzają się przypadki, kiedy nie ma czasu zgłębiać dokumentacji. W niniejszym wpisie zamieszczam kika zastosowań aptitude w przypadkach, z którymi się zetknąłem lub sam miałem do czynienia.
Wyszukiwanie pakietów po nazwie i opisie:
% aptitude search "?or(~nnetwork, ~dnetwork)"
Polecenie wyszuka wszystkie pakiety, które w opisie bądź w nazwie zawierają słowo network.
Wyszukiwanie pakietów zainstalowanych z danego archiwum.
Wyszukiwanie pakietów np. z archiwum experimental i wyświetlenie samych nazw pakietów, np. w celu użycia jako argument dla innego polecenia.
% aptitude aptitude search ~i~Aexperimental -F "%p"
Zmiana zaznaczenia pakietów z automatycznie instalowanych na ręcznie instalowane.
Kiedy instalujemy pakiet przy pomocy aptitude, pakiety zależne są instalowane automatycznie poprzez zależności. Takie automatycznie zainstalowane pakiety są zaznaczanie prze menadżera pakietów jako A – instalowane automatycznie. Czasem przy usuwaniu pakietu, takie zależności również są usuwane, gdyż zostały automatycznie zainstalowane. Czasem jest to zachowanie niepożądane w stosunku do niektórych pakietów, np. takich które chcemy jednak zostawić. Podczas odinstalowywania pakietu widzimy, które pakiety będą automatycznie odinstalowane. Należy przerwać proces i wszystkim pakietom, które chcemy zostawić usunąć flagę A – auto.
# aptitude unmarkauto pakiet1 pakiet2
Można użyć wyników wyszukiwania jako argumentów polecenia, np. gdy chcemy usunąć metapakiet kde4, ale nie usuwać całego kde4
# aptitude unmarkauto `apt-cache depends kde4 | awk '{if ($1=="Depends:") print $2}'`
Następnie można usunąć metapakiet kde4 po to aby spokojnie usunąć tę część kde, której nie używamy, np. kdegames.
# aptitude remove kdegames
Wyszukiwanie pakietów z zepsutymi zależnościami (broken dependencies) i ich naprawa.
% aptitude search ~i~b
Załóżmy, że to pakiet mplayer-nogui ma złamane zależności:
iBA mplayer-nogui – The Ultimate Movie Player For Linux
Szukamy teraz pakietu, z którym jest problem:
#aptitude search `apt-cache depends mplayer-nogui | awk '{if ($1=="Depends:") print $2}'`
Pakiety, które (w moim przypadku) są interesujące to libxvmc1 oraz libxv1.
idA libxv1 – X11 Video extension library
iBA libxvmc1 – X11 Video extension library
Problem polegał na tym, że pakiet libxv1 był zaznaczony do usunięcia – flaga d. Wystarczyło polecenie:
# aptitude install libxv1
Blokada aktualizacji danego pakietu.
# aptitude hold pakiet
Usuwanie wszystkich pakietów należących do danej sekcji.
Załóżmy, że przestaliśmy lubić kde i chcemy znaleźć każdy zainstalowany program z sekcji kde, aby pozbyć się kde raz na zawsze. Następnie użyć listy do usunięcia kde.
% aptitude search ~skde | egrep "^i" | awk '{ if($2 ~/A/){ print $3} else print $2}'
# aptitude purge `aptitude search ~skde | egrep "^i" | awk '{ if($2 ~/A/){ print $3} else print $2}'`
Brak pliku przy kompilacji programu.
Jak sobie poradzić? Nie jest to trudne, ale nie zawsze rozwiązuje problem, ze względu na różne czynniki.
# apt-file search usr/lib/gcc/i486-linux-gnu/4.2/include/limits.h | awk -F ':' '{print $1}' | xargs aptitude install
Program apt-file musi być zainstalowany i jego baza zaktualizowana (apt-file update)
Usuwanie plików pozostałych po odinstalowanych pakietach.
# COLUMNS=140 dpkg -l|grep ^rc|awk {'print $2'}|xargs dpkg -P
lub
aptitude purge `aptitude search ~c -F %p`
Można by było przywołać więcej niestandardowych zastosowań aptitude i innych narzędzi do zarządzania pakietami. Po więcej zapraszam do poczytania podręcznika do aptitude. Dwa istotnie linki z tego podręcznika:
