czyszczenie systemu debian usuwanie plików konfiguracyjnych, starych plików i pakietów.pdf

(114 KB) Pobierz
718068326 UNPDF
Czyszczenie systemu Debian
GNU/Linux
Kategoria: Artykuły , etykiety: system , dpkg ,
oprogramowanie
Dodany przez: Minio , 2011-03-20 18:43
(zmodyfikowany: 2011-03-30 13:14)
Wyświetleń: 3470
Wprowadzenie
Debian GNU/Linux jest systemem, który może
pracować bez awarii przez wiele lat. Przez ten
czas może być wielokrotnie aktualizowany albo
modyfikowany. Im dłużej system jest używany,
tym większe prawdopodobieństwo, że znajdują
się w nim najróżniejsze śmieci. Mogą to być
niepotrzebne pakiety, pakiety które zostały już
porzucone przez swoich twórców, pliki
instalacyjne, pliki konfiguracyjne itp. Zazwyczaj
obecność tych plików w niczym nie
przeszkadza, dlatego też rzadko się je zauważa.
Nie oznacza to jednak, że systemu nie powinno
się od czasu do czasu sprzątać. Przede
wszystkim można w ten sposób oszczędzić
miejsce na dysku twardym (naturalnie im więcej
śmieci się usunie, tym więcej miejsca się
oszczędzi). Po drugie, takie śmieci potrafią dać o
sobie znać wiele lat później, powodując problemy
(przykładem może być BTS #546836 , który był
spowodowany pakietem zainstalowanym ręcznie
około 2000 roku). Wreszcie jest to kwestia
poczucia higieny — zazwyczaj przynajmniej raz
na jakiś czas sprzątamy mieszkania, więc
można też posprzątać swój komputer.
Uwagi natury ogólnej
Usuwanie zainstalowanych pakietów może
potencjalnie zepsuć Twój system (a przynajmniej
niektóre jego funkcje, gdyż APT posiada
dodatkowe zabezpieczenie przed
przypadkowym usunięciem najważniejszych
składników systemu). Nigdy, ale przenigdy nie
usuwaj pakietów na ślepo, bez rozeznania się,
co konkretnie zostanie usunięte. Jeżeli
korzystasz z apt-get lub aptitude, najpierw
uruchamiaj je z flagą -s — włącza to tryb
symulacyjny, w którym apt-get/aptitude pokaże
co by zrobił, ale tego nie zrobi. Dobrą praktyką
jest tworzenie list pakietów do usunięcia,
zapisywanie ich do pliku i podawanie apt-
get/aptitude właśnie tej listy. Np. tak:
aptitude purge $(cat /tmp/lista_p
Przed usunięciem danego pakietu sprawdź:
co to za pakiet: aptitude show pakiet
zwróć szczególną uwagę na opis pakietu i
na to, czy został zainstalowany
automatycznie
dlaczego został zainstalowany: aptitude
[ Wersja do druku ]
718068326.004.png
why pakiet
skąd pochodzi dany pakiet: apt-cache
policy pakiet
jeżeli jedyną dostępną wersją jest
/var/lib/dpkg/status , to pakiet albo został
zainstalowany ręcznie, albo porzucony
Jeżeli masz wątpliwości czy dany pakiet usunąć
czy zostawić, lepiej go zostaw .
Ponieważ niektóre zadania można wykonać na
przynajmniej dwa różne sposoby lub podane
polecenia mogą mieć pewne nieoczekiwane
konsekwencje, przed wykonaniem
któregokolwiek z nich, przeczytaj cały artykuł
(lub przynajmniej całą sekcję).
Usuwanie starych plików
instalacyjnych
Zacznijmy od czegoś prostego. Jak pewnie
wiesz, programy w Debianie znajdują się w
specjalnie przygotowanych plikach DEB. Czego
być może nie wiesz, podstawowy program do
instalowania pakietów w Debianie — dpkg
potrafi zainstalować tylko te programy, których
archiwa instalacyjne znajdują się na dysku
twardym komputera. Dlatego bardziej przyjazne
menedżery oprogramowania — apt-get, aptitude,
synaptic, software-center etc. - po prostu
pobierają pakiety DEB z serwera na dysk twardy
komputera i potem instalują je przy pomocy
dpkg. Pobrane pakiety DEB trzymają w katalogu
/var/cache/apt/archives/ .
Katalog ten będzie rósł w nieskończoność,
zajmując coraz więcej miejsca. Po zaledwie kilku
miesiącach może zajmować nawet kilka
gigabajtów na dysku twardym. Jego zawartość
można wyczyścić następującymi poleceniami:
aptitude clean
aptitude autoclean
Pierwsze z nich usunie wszystkie pakiety w
cache, drugie zaś tylko te, które nie są już
dostępne w repozytoriach APT (z dokładnością
co do wersji). Zamiast aptitude można użyć apt-
get (polecenia clean i autoclean pozostają bez
zmian).
Usuwanie pakietów
przejściowych
Pakiety przejściowe (ang. transitionalpackages )
są specjalnymi pakietami, które same z siebie
nie instalują żadnych plików, jednak zależą od
innych pakietów, które te pliki instalują. Ma to
miejsce zwłaszcza jeśli jakiś program zmieni
nazwę (np. Firefox na Iceweasel) lub jeżeli
pewien program zostaje włączony do innego
pakietu (np. host i dnsutils do pakietu bind9-
host). Pakiety przejściowe znajdują się w
repozytoriach dla zachowania kompatybilności
ze starszymi wersjami Debiana i mogą być
usunięte po aktualizacji.
718068326.005.png
Aby znaleźć wszystkie pakiety przejściowe,
należy wydać polecenie:
LANG=C aptitude search ~dtransiti
search można zastąpić purge aby je od razu
usunąć, ale ze względu na możliwość
znalezienia pakietu który w rzeczywistości nie
jest pakietem przejściowym, lepiej jest je
wyszukać i potem ręcznie usunąć.
Usuwanie pakietów, które nie
są dostępne w żadnym
repozytorium
Jeżeli mamy dużo pakietów zainstalowanych
ręcznie albo Debiana zainstalowanego kilka
wersji stabilnych temu i regularnie
aktualizowanego, istnieje duże
prawdopodobieństwo, że w systemie mamy
zainstalowane pakiety, które nie są już dostępne
w żadnym repozytorium. Jeżeli pakiet został
usunięty z repozytorium, to najprawdopodobniej
dlatego, że był już przestarzały i/lub jego opiekun
go porzucił. Pakiety takie nie są aktualizowane,
dlatego ich trzymanie może przynieść więcej
szkód niż korzyści (w najlepszym wypadku tylko
niepotrzebnie zajmują miejsce).
Do wykrywania takich pakietów służy program
apt-show-versions , który trzeba najpierw
zainstalować. Następnie należy wykonać jako
root:
apt-show-versions -i
apt-show-versions |grep 'No avail
Pierwsze polecenie zaktualizuje bazę pakietów
apt-show-versions, drugie zaś znajdzie
wszystkie te, które nie są już dostępne w
żadnym repozytorium. Listę tę należy przejrzeć,
a pakiety które nie są potrzebne — usunąć.
Zamiast apt-show-versions można użyć
aptitude . Poniższe polecenie powinno znaleźć
te same pakiety, co drugie z poleceń podanych
wyżej:
aptitude search ?obsolete
Jeżeli masz pakiety, które z jakiegoś powodu
chcesz mieć zainstalowane a które nie są już
dostępne w repozytoriach, pomyśl o stworzeniu
lokalnego repozytorium . Jest to lepsze
rozwiązanie niż instalacja pakietów przez
dpkg/gdebi.
Usuwanie pakietów, od
których nie zależą żadne inne
pakiety
Linux jest tak skonstruowany, by programy
mogły współdzielić potrzebne im biblioteki.
718068326.006.png 718068326.007.png 718068326.001.png
Dlatego mając zainstalowane całe GNOME,
instalacja kolejnych pakietów opartych o GTK
trwa krócej i wymaga pobrania mniej danych —
większość potrzebnych bibliotek (tzw.
zależności) jest już zainstalowana i nie ma
potrzeby instalować ich ponownie.
Do odnajdywania pakietów, które są
„niepotrzebnie” zainstalowane (żaden inny
zainstalowany program ich nie potrzebuje) służy
program deborphan . Należy go zainstalować.
deborphan domyślnie szuka takich pakietów
tylko wśród bibliotek, co wyklucza większość
błędów. Wystarczy wydać polecenie:
deborphan
aby uzyskać listę wszystkich pakietów, których
usunięcie nie powinno mieć żadnych szkód dla
systemu. deborphan nie potrafi samodzielnie
usuwać pakietów, dlatego jego używanie jest
bezpieczne. Jeżeli rzeczywiście chce się
usunąć wskazywane przez niego pakiety,
należy wynik jego działania przekierować do apt-
get/aptitude.
Może się jednak zdarzyć, że deborphan wskaże
pakiet, który samodzielnie przeznaczyliśmy do
instalacji. Na systemie 64-bitowym takim
pakietem będzie ia32-libs , które mogliśmy z
jakiegoś powodu chcieć mieć w systemie. W
takim wypadku należy deborphan poinformować,
że dany pakiet jest zainstalowany celowo i że nie
powinien o nim informować:
deborphan -A pakiet1 pakiet2 paki
Listę w ten sposób wstrzymanych pakietów
można wyświetlić poleceniem:
deborphan -L
Jak wspomniano, deborphan domyślnie szuka
tylko bibliotek (które zawsze powinny być
instalowane jako zależności). Można jednak go
poprosić by przeszukał wszystkie zainstalowane
pakiety, dodając opcję -a . Niestety, w takim
trybie deborphan niemal na pewno wskaże wiele
pakietów, które kazaliśmy zainstalować. Aby to
obejść, można wszystkie ręcznie zainstalowane
pakiety dodać do jego bazy:
aptitude -F %p search '~i!~M' |wh
Jednak prawdopodobnie najlepszym wyjściem
będzie pozostanie przy tym, by deborphan
przeszukiwał tylko zainstalowane biblioteki.
Usuwanie pakietów z
nieoficjalnych repozytoriów
W posiadaniu pakietów pochodzących z
nieoficjalnego repozytorium nie ma niczego
złego. Często takie repozytoria dostarczają
programy, których po prostu nie ma w
718068326.002.png
p og a y, tó yc po p ostu e a
oficjalnych repozytoriach. Jednak baza
oprogramowania Debiana stale rośnie, a
zewnętrzne repozytoria czasem przestają być
uaktualniane albo zawierają programy, które
przeszkadzają w zwyczajnej aktualizacji
Debiana. W takich wypadkach warto bliżej
przyjrzeć się pakietom pochodzącym z
nieoficjalnych źródeł i rozważyć usunięcie
przynajmniej części z nich.
Aby uzyskać listę takich pakietów, wystarczy
wydać polecenie:
aptitude search '?narrow(?install
Usuwanie plików
konfiguracyjnych
zainstalowanych w trakcie
działania dpkg
Aby zrozumieć tę część artykułu, potrzebna jest
pewna wiedza na temat dpkg. Postaram się
poniżej streścić najważniejsze elementy. Osoby
zainteresowane bardziej szczegółowymi
informacjami, powinny przeczytać (napisane w j.
angielskim) Załącznik E dokumentu Debian
Policy oraz wpis na blogu Raphaëla Hertzoga ,
jednego z opiekunów dpkg .
dpkg ma ściśle określoną politykę na temat
plików konfiguracyjnych. Podstawowe zasady są
takie:
w trakcie instalacji pakietu, dpkg sprawdza,
czy pliki konfiguracyjne znajdują się na
dysku komputera. Jeżeli ich nie ma, instaluje
pliki dostarczone w pakiecie.
jeżeli taki plik jest, sprawdza, czy różni on
się od pliku dostarczonego w pakiecie, z
którego plik pochodzi (zazwyczaj jest to
poprzednia wersja aktualnie instalowanego
pakietu).
1. jeżeli pliki się nie różnią, pozostawia
wersję obecną na dysku
2. jeżeli plik na dysku został zmieniony,
ale plik w pakiecie się nie zmienił,
pozostawia wersję obecną na dysku
3. jeżeli plik w pakiecie został zmieniony,
ale plik na dysku nie był modyfikowany,
instaluje plik z pakietu
4. jeżeli zarówno plik na dysku, jak i plik w
pakiecie, zostały zmienione, prosi
użytkownika o samodzielne
rozwiązanie problemu (użytkownik
może wybrać wersję z pakietu, wybrać
wersję na dysku, pokazać różnice
między wersjami oraz uruchomić
powłokę w celu zbadania sytuacji)
Właśnie w tej ostatniej sytuacji dpkg tworzy kopie
zapasowe plików konfiguracyjnych. Trzeba
wiedzieć, że dpkg nigdy nie usuwa ich
automatycznie, przez co będą one leżeć na
dysku twardym komputera zazwyczaj niczego
718068326.003.png
Zgłoś jeśli naruszono regulamin