Nie upodabniaj się do komputera, lecz staraj się upodabniać komputer do siebie.
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.
% aptitude search "?or(~nnetwork, ~dnetwork)"
Polecenie wyszuka wszystkie pakiety, które w opisie bądź w nazwie zawierają słowo network.
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"
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
% 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
# aptitude hold pakiet
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}'`
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)
# 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: