Blog > Komentarze do wpisu

Sprzątanie w Debianie, czyli jak usunąć stare pakiety.

Debian to system, który - na podstawie założeń twórców i moich doświadczeń - bez problemu można zaktualizować do kolejnej wersji, jednak - jak pokazuje praktyka - nie zawsze zostaną przy tym usunięte wszystkie zbędne pakiety. Szczególnie, jeśli korzystamy z dodatkowych, nieoficjalnych repozytoriów. Poniżej quick'n'dirty sposób na półautomatyczne znalezienie i usunięcie pakietów, które nie mają już kandydata do instalacji z repozytorium.

Dziś siadłem na chwilę do starego desktopa, na którym działa Lenny (upgrade od Sarge, przez Etch i parę wersji testowych, na dodatek nie wg release notes) i stwierdziłem (po odpaleniu mp3 z netu, które uruchomiło się w beep media player), że są jakieś stare pakiety typu proftpd-common, a miejsce na / się kończy. Pakiety stare, czyli takie z Sarge/Etch. Postanowiłem zrobić porządek. Szybki gógiel nie dał rozwiązania, a przyszedł mi do głowy prosty algorytm, więc stanęło na DIY.

Wyświetlenie pakietów, które są zainstalowane (lub ich pliki konfiguracyjne), a które nie są z Lenny'ego. Dodatkowo zapisujemy wynik do 2delete.txt w celu dalszej obróbki.

dpkg -l | awk '{print $2}' | perl -ne 'chomp; $res=`wajig policy $_ | \
grep lenny`; print $_,$/ if $?' | tee 2delete.txt

Założenie jest takie, że w /etc/apt/sources.list wszystkie wpisy odnoszą się do lenny. Jeśli mamy także stable, to należy zmienić grep lenny na egrep "lenny|stable". Przed zrobieniem czegoś więcej należy przejrzeć listę w 2delete.txt i usunąć wrażliwe pakiety (oraz te, które chcemy zatrzymać), mając na uwadze fakt, że powyższe polecenie wyświetli także pakiety zainstalowane ręcznie (własny kernel!).

Jak już jesteśmy pewni, że wiemy co robimy (w przypadku usunięcia zbyt wielu pakietów możemy ładnie i łatwo zepsuć system do takiego stopnia, że bez liveCD nie przywrócimy go do działania) i że w pliku 2delete.txt nie ma jakichś jednak potrzebnych pakietów, to możemy spróbować automatycznie usunąć pakiety z listy (po jednym):

cat 2delete.txt | xargs wajig purge

Wynikowi powyższego warto się przyjrzeć, w szczególności błędom podczas przetwarzania. W moim przypadku wynikały one z zależności pomiędzy usuwanymi bibliotekami i wywołanie ich razem, w jednym poleceniu wajig purge rozwiązało problem.

Na koniec możemy zobaczyć, czy pojawiły się jakieś "sierotki" czyli wydajemy polecenie deborphan lub orphaner. Po usunięciu sierotek możemy spróbować wywołać dla pewności nasz pierwszy skrypt, a następnie zrestartować system (czyli tzw. chwila prawdy, czy się nie pomyliliśmy). U mnie działa.

sobota, 29 sierpnia 2009, rozieblox

Sprzątanie w Debianie, czyli jak usunąć stare pakiety. Lenny pakiet linux debian


TrackBack
TrackBack w tym blogu jest moderowany. TrackBack URL do wpisu:
Wyszukiwanie pakietów nie z danej wersji w Debianie Ubuntu . z Pomiędzy bitami
Pisałem o sprzątaniu pakietów w systemie Debian przy okazji upgrade u. Rozwiązanie tyleż skuteczne, co nieeleganckie, szczególnie ten dpkg, awk, perl, grep i wajig na dokładkę. Dziś, przy okazji innego taska jak znaleźć pakiety nie z określonej ... »
Wysłany 2010/07/30 21:22:04
Komentarze
Gość: Lech Karol Pawłaszek, ip-62-69-207-199.globalconnect.pl
2009/08/30 17:57:44
deborhpan --guess-all ? jest jeszcze debfoster... no i oczywiście cruft ; który chyba ma robić co tu sugerujesz.

Słaby skill google'a masz ziom! :-)
-
2009/08/30 18:39:34
No właśnie żaden nie robi dokładnie tego, choć przyznaję, że debfoster jest bardzo ciekawy. Dzięki.


RSS - Subskrybuj wpisy na Pomiędzy bitami
Staty
Related Posts Plugin for WordPress, Blogger...
statystyka
Nawigacja
Blogroll
bronikowski.com Embedded Linux development fenski.pl Fnord! migotanie słów Niby Blog ;) Notatnik zapisywany wieczorami replikator memetyczny Ta ruda metalówa, co ma bloga o gotowaniu Terminally Incoherent Wampiryczny blog Zmiętoszony kajecik neurotyka