Wprawdzie część Was zapewne wie jak zainstalować program będący w repozytorium Raspbiana, bo ten aspekt był już poruszany wielokrotnie, to dziś „na wszelki wypadek” zbierzemy to w całość.
Zaczynamy od „apt-get”, gdyż jest to chyba podstawowe - i najczęściej używane, m.in.
Czasem jakiś program może przestać (prawidłowo) działać. Warto jednak zaznaczyć, że na obecną chwilę - pierwsza połowa 2020 - brak przesłanek, by w najbliższym czasie - jeśli w ogóle - polecenie apt-get miało zostać wyeliminowane z systemu.
Od jakiegoś czasu zamiast apt-get czy aptitude korzystam z polecenia apt, które w pewnym sensie porządkuje wszystkie operacje związane z zarządzaniem pakietami.
„Aptitude” to… Hm… Pewnie ktoś się zaraz będzie czepiał - ale uznajmy, że to taka nakładka ulepszająca APT.
Jeżeli zdarzy Wam się „niepotrzebnie” skasować coś, co jednak jest potrzebne, zawsze można zainstalować dany program jeszcze raz.
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.
Dziś siadłem na chwilę do starego desktopa, na którym działa Lenny. Taki pochodzący z upgrade od Sarge, przez Etch i parę wersji testowych, na dodatek nie wg release notes.
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.
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).
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.
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.
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.
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).
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).
Jeżeli pakiet został usunięty z repozytorium, to najprawdopodobniej dlatego, że był już przestarzały i/lub jego opiekun go porzucił. Zewnętrzne repozytoria czasem przestają być uaktualniane albo zawierają programy, które przeszkadzają w zwyczajnej aktualizacji Debiana.
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 oficjalnych repozytoriach.
Właściwym miejscem na zrozumienie różnicy „usunęło/nie usunęło” jest pamięć podręczna i to, co realnie zostało usunięte.
Re: O usuwaniu pakietów raz jeszcze ! W cache apt'a pewnie siedzi.
Użycie: apt-get [opcje] polecenie
Najczęściej używane polecenia to update i install.
Polecenia: update - Pobiera nowe listy pakietów upgrade - Wykonuje aktualizację install - Instaluje nowe pakiety (pakiet to np. libc6, nie libc6.deb) remove - Usuwa pakiety autoremove - Usuwa automatycznie wszystkie nieużywane pakiety purge - Usuwa pakiety łącznie z plikami konfiguracyjnymi source - Pobiera archiwa źródłowe build-dep - Konfiguruje zależności dla budowania pakietów źródłowych dist-upgrade - Aktualizacja dystrybucji, patrz apt-get(8) dselect-upgrade - Instaluje według wyborów dselect clean - Usuwa pobrane pliki archiwów autoclean - Usuwa stare pobrane pliki archiwów check - Sprawdza, czy wszystkie zależności są spełnione changelog - Pobiera i wyświetla dziennika zmian wybranych pakietów download - Pobiera pakiet binarny do bieżącego katalogu
Opcje: -h Ten tekst pomocy -q Nie pokazuje wskaźnika postępu (przydatne przy rejestrowaniu działania) -qq Nie wypisuje nic oprócz komunikatów błędów -d Tylko pobiera - NIE instaluje ani nie rozpakowuje archiwów -s Bez działania. Wykonuje tylko symulację ustalenia kolejności -y Zakłada odpowiedź "tak" na wszystkie pytania, nie pyta -f Próbuje naprawić system, w którym występują niespełnione zależności -m Próbuje działać nawet jeśli nie można znaleźć niektórych archiwów -u Pokazuje też listę aktualizowanych pakietów -b Buduje pakiet po pobraniu archiwum źródłowego -V Pokazuje pełną informację na temat wersji -c=? Czyta wskazany plik konfiguracyjny. -o=? Ustawia dowolną opcję konfiguracji, np. …
Trzeba wiedzieć, że dpkg nigdy nie usuwa ich automatycznie, przez co będą one leżeć na dysku twardym komputera zazwyczaj niczego nie świadomego użytkownika.
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.
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.
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.
Być może ktoś chciałby usunąć stare pliki konfiguracyjne pod warunkiem, że nie zostały one zmienione.
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.
Ostatnim krokiem jest policzenie sumy MD5 pliku konfiguracyjnego znajdującego się na dysku.
Każdy posiada wiele plików, które nie należą do żadnego zainstalowanego pakietu.
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).
Do odnajdywania pakietów, które są „niepotrzebnie” zainstalowane (żaden inny zainstalowany program ich nie potrzebuje) służy program deborphan.
deborphan domyślnie szuka takich pakietów tylko wśród bibliotek, co wyklucza większość błędów.
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.
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.
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.
Nie jest to jednak bezpieczne, ponieważ w takim trybie deborphan niemal na pewno wskaże wiele pakietów, które kazaliśmy zainstalować.
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.
Do wykrywania takich pakietów służy program apt-show-versions, który trzeba najpierw zainstalować.
Pierwsze polecenie zaktualizuje bazę pakietów apt-show-versions, drugie zaś znajdzie wszystkie te, które nie są już dostępne w żadnym repozytorium.
Zamiast apt-show-versions można użyć aptitude.
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.
Wyświetlenie pakietów, które są zainstalowane (lub ich pliki konfiguracyjne), a które nie są z Lenny’ego.
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, np.
W 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.
Na koniec możemy zobaczyć, czy pojawiły się jakieś „sierotki” czyli wydajemy polecenie deborphan lub orphaner.
Linux jest tak skonstruowany, by programy mogły współdzielić potrzebne im biblioteki.
Dzięki temu 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.
Istnieje wiele sposobów na znalezienie plików/pakietów które nie są już potrzebne.
Niektóre części artykułu powstały z wykorzystaniem serii wpisów na blogu Raphaëla Hertzoga.
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ć.
Aby znaleźć wszystkie pliki, które nie pochodzą z żadnego zainstalowanego pakietu, można wykorzystać program cruft.
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.
cruft będzie musiał sprawdzić ogromne ilości plików, dlatego jego wykonywanie może zająć 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ń.
Niе stety 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ąć.
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. 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.
Dając odpowiednio odległą datę (np.
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).
Postanowiłem zrobić porządek.
Wyświetlenie pakietów, które są zainstalowane (lub ich pliki konfiguracyjne), a które nie są z Lenny’ego.
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, np.
W moim przypadku wynikały one z zależności pomiędzy usuwanymi bibliotekami.
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).
Niektóre pytania z praktyki prowadzą do wniosku: usuwałeś pakiety, ale w cache apta mogły jeszcze zostać pobrane archiwa i dopiero czyszczenie cache porządkuje dysk.
Re: O usuwaniu pakietów raz jeszcze ! W cache apt'a pewnie siedzi.
clean - Usuwa pobrane pliki archiwów
autoclean - Usuwa stare pobrane pliki archiwów

| Narzędzie / polecenie | Co robi | Ryzyko |
|---|---|---|
| apt-get remove | Usuwa pakiety, ale pozostawia jego pliki konfiguracyjne | Średnie (pozostają konfiguracje) |
| apt-get purge | Usuwa pakiety łącznie z plikami konfiguracyjnymi | Średnie (czyści też /etc) |
| apt-get autoremove | Usuwa automatycznie wszystkie nieużywane pakiety | Średnie (zależne od zależności) |
| apt-get clean | Usuwa pobrane pliki archiwów | Niskie (cache) |
| apt-get autoclean | Usuwa stare pobrane pliki archiwów | Niskie (stare archiwa) |
| deborphan | Wskazuje pakiety „niepotrzebnie” zainstalowane (domyślnie biblioteki) | Niskie (sam nie usuwa) |
| orphaner | Wskazuje „sierotki” | Średnie (zależnie od wyników) |
| apt-show-versions | Wykrywa pakiety, których nie ma już w repozytoriach | Średnie (do weryfikacji) |
| cruft | Wykrywa pliki/katalogi niepochodzące z żadnego zainstalowanego pakietu | Średnie (fałszywe wskazania możliwe) |
tags: #debian #usuwanie #pakietu
About the author