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

background image

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

]

background image

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. transitional packages)
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.

background image

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.

background image

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

background image

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

background image

nie świadomego użytkownika. Nie zajmują wiele
miejsca, ale z drugiej strony nie ma potrzeby ich
trzymać.

Pliki konfiguracyjne stworzone przez

dpkg

mogą

mieć następujące sufiksy (są to ciągi znaków
dodane na końcu pliku):

.dpkg-old

— kopia pliku z dysku twardego,

tworzona gdy użytkownik zdecyduje się
nadpisać swój plik konfiguracyjny plikiem z
pakietu

.dpkg-dist

— kopia pliku z pakietu,

tworzona gdy użytkownik zdecyduje się
pozostawić swój plik konfiguracyjny

.dpkg-new

— kopia pliku z pakietu,

tworzona gdy użytkownik zdecyduje się
uruchomić powłokę w celu zbadania sytuacji

Aby znaleźć wszystkie takie pliki, wystarczy
wydać polecenie

find /etc/ -regex '.*dpkg-\(dist\

Polecenie to przeszukuje tylko katalog

/etc

, w

którym powinny być przechowywane pliki
konfiguracyjne. Może się zdarzyć, że niektóre
pakiety będą pliki konfiguracyjne trzymać w
innym miejscu. W takiej sytuacji można
przeszukać wszystkie katalogi obecne w
systemie, ale prawdopodobnie zajmie to
wielokrotnie więcej czasu.

Znalezione pliki można bez przeszkód usunąć,
chociaż wcześniej warto zobaczyć różnice
między kopią a lokalnie zainstalowanym plikiem i
ewentualnie nanieść poprawki.

Usuwanie starych plików
konfiguracyjnych

Zarówno apt-get, jak i aptitude, mają dwa
polecenia do usuwania zainstalowanych
pakietów:

remove

oraz

purge

. Różnica między

nimi jest taka, że

remove

usuwa pakiet, ale

pozostawia jego pliki konfiguracyjne. W ten
sposób jeżeli w przyszłości ponownie dany
pakiet zostanie zainstalowany, nie będzie
potrzeby jego ponownej konfiguracji.

Jednak sytuacje, gdy chcemy zostawić pliki
konfiguracyjne, należą raczej do rzadkości.
Zazwyczaj gdy usuwamy pakiet, nie chcemy w
systemie żadnych po nim pozostałości. Mimo to
często one pozostają.

Aby znaleźć wszystkie pakiety które nie są
zainstalowane, ale pozostawiły po sobie jakieś
pliki konfiguracyjne, wystarczy wydać polecenie:

aptitude -F "%p" search '~c'

Zamiast

search

można użyć

purge

, aby od razu

je usunąć.

Być może ktoś chciałby usunąć stare pliki
konfiguracyjne pod warunkiem, że nie zostały
one zmienione. Nie istnieje żadne narzędzie

background image

które je automatycznie znajdzie, jednak można
napisać sobie nieskomplikowany skrypt, który to
zrobi.

Jego podstawą będzie powyższe polecenie,
wyszukujące wszystkie pakiety, które
pozostawiły po sobie pliki konfiguracyjne.
Następnie należy zdobyć sumy MD5 tych plików
konfiguracyjnych. Można to zrobić poleceniem:

dpkg-query -W -f '${Conffiles}' n

Ostatnim krokiem jest policzenie sumy MD5 pliku
konfiguracyjnego znajdującego się na dysku.
Jeżeli sumy się różnią, to znaczy że plik został
zmieniony i nie powinno się go usuwać.

Napisanie takiego skryptu pozostawiam tym,
którzy uważają że potrzebują takich funkcji.

Usuwanie plików, które nie
należą do żadnego
zainstalowanego pakietu

Każdy posiada wiele plików, które nie należą do
żadnego zainstalowanego pakietu. Większość
plików w

/home

pochodzi z jakiegoś

zewnętrznego źródła, tak samo jak pliki w

/tmp

.

Wiele programów może sobie tworzyć własne
pliki w katalogu

/var

(logi, pliki .pid itp.).

Oprogramowanie o zamkniętym kodzie
źródłowym powinno instalować się w katalogu

/opt

. Te cztery katalogi są miejscami, gdzie pliki

spoza repozytoriów mają pełne prawo
przebywać. Jednak nie powinny się znaleźć
nigdzie indziej w systemie plików.

Aby znaleźć wszystkie pliki, które nie pochodzą
z żadnego zainstalowanego pakietu, można
wykorzystać program

cruft

. Należy go

uruchomić w ten sposób (jako root):

cruft -d / --ignore /tmp --ignore

Po opcji

-r

należy podać nazwę pliku, do

którego

cruft

wypisze wyniki swojej pracy.

Można ją pominąć, aby wyniki wysłać na
standardowe wyjście, jednak nie jest to
zalecane. Opcja

--ignore

wskazuje na katalogi,

które mają zostać pominięte w trakcie pracy
programu (w których niemal na pewno znajdują
się pliki spoza zainstalowanych pakietów, które
tylko zaciemnią otrzymany wynik). Opcja

-d

wskazuje na katalogi, które mają zostać
przeszukane. Zazwyczaj będzie to główny
katalog systemu plików. Warto zauważyć, że

cruft

domyślnie nie sprawdza katalogów, które

znajdują się na innych partycjach. Jeżeli chcemy
je sprawdzić, należy uruchomić go w ten
sposób:

cruft -d "/ /usr"

cruft

będzie musiał sprawdzić ogromne ilości

plików, dlatego jego wykonywanie może zająć

background image

nawet kilkadziesiąt minut. Należy cierpliwie
czekać, aż skończy pracę, a potem spojrzeć do
uzyskanego pliku raportu. Analiza raportu jest
zajęciem dla przynajmniej średnio
zaawansowanych użytkowników systemu,
ponieważ baza

cruft

wciąż nie jest doskonała i

zgłasza wiele nieprawidłowych wskazań. Z tego
powodu trzeba samodzielnie określić, które pliki
rzeczywiście można spokojnie usunąć, a które
lepiej zostawić.

Usuwanie starych plików z
katalogu domowego
użytkownika

Niestety nie istnieje (i raczej nigdy nie będzie
istniał) żaden sposób na stuprocentowe
określenie, czy dany plik w katalogu domowym
użytkownika jest jeszcze potrzebny, czy można
go spokojnie usunąć. Można jednak napisać
narzędzia, które wskażą kandydatów do
usunięcia, czyli pliki które — z mniejszym lub
większym prawdopodobieństwem — nie są już
potrzebne.

ls --full-time -lah ~ |sort -k 6

Powyższe polecenie pokaże wszystkie pliki i
katalogi znajdujące się bezpośrednio w katalogu
domowym użytkownika i posortuje je wg czasu
ostatniej zmiany, gdzie najdawniej zmienione
będą na samym dole. Jeżeli system plików, na
którym znajduje się katalog domowy
użytkownika, jest montowany z zapisem czasu
dostępu (opcja

atime

polecenia

mount

), do

polecenia ls można dodać

--time=atime

, dzięki

czemu uzyska się listę posortowaną wg czasu
dostępu do katalogu/pliku (dostępem jest także
np. kopiowanie) — taka lista znacznie rzetelniej
oddaje, które pliki/katalogi rzeczywiście nie są
już potrzebne.

find

potrafi także znaleźć wszystkie pliki

nowsze niż wskazana data (lub określony plik).
Stosując operator negacji, można go
wykorzystać do znalezienia plików starszych niż
pewna określona data. Należy wydać polecenie:

find ~ -not -newerXt YYYYMMDD

gdzie w miejsce X należy wstawić a (czas
dostępu), m (czas modyfikacji) lub c (czas
utworzenia), zaś w miejsce YYYYMMDD — datę
w formacie rok (4 cyfry) miesiąc (2 cyfry) dzień
(2 cyfry).

Dając odpowiednio odległą datę (np. 2007 rok)
można znaleźć pliki, które prawdopodobnie nie
są już potrzebne.

Podsumowanie

Jak widać, istnieje wiele sposobów na
znalezienie plików/pakietów które nie są już
potrzebne. Istnieje też kilka sposobów na

background image

pot eb e st eje te

a sposobó

a

odchudzenie Debiana (spowodowanie, żeby
zajmował mniej miejsca na dysku twardym),
jednak zagadnienie to nie wchodzi w zakres
niniejszego artykułu.

Na samy końcu chciałbym tylko przypomnieć,
że nigdy nie powinno się bezmyślnie usuwać
plików wskazywanych przez powyższe
polecenia.

Niektóre części artykułu powstały z
wykorzystaniem serii wpisów na blogu Raphaëla
Hertzoga. Dostępne są w Internecie (po
angielsku):

#1

,

#2

,

#3

,

#4

,

#5

,

#6

.


Wyszukiwarka

Podobne podstrony:
USUWANIE PLIKÓW Z Temp i Temporary Internet Files, różne przeróżne
3) Kopiowanie i usuwanie plików, Informatyka -all, INFORMATYKA-all
KONFIGURACJA DHCP W SYSTEMIE DEBIAN
Optymalizacja systemu poprzez usunięcie plików tymczasowych
PORADY DOMOWE czyszczenie różnych rzeczy i usuwanie zapachów
Praktyczny podręcznik do systemu Debian GNULinux
systemy operacyjne cw 03 linux siec ssh pakiety
SO8 Systemy plików
System plików to sposób organizacji danych na dyskach, Notatki z systemów
6 - Znaczenie konformizmu w systemie kontroli spol. sms, zchomikowane, 35 000 edukacyjnych plikó
System plików, zOthers, Systemy operacyjne i sieci komputerowe
Systemy plików
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
07 Linux System plików
m System plików FAT
Przenoszenie plików systemowych do pamięci operacyjnej

więcej podobnych podstron