Jak usunąć stare pakiety zainstalowane przez Pacmana w Arch Linux?

51

Niedawno zainstalowałem Arch Linux i stwierdziłem, że stosunkowo szybko jem dużo pamięci. Z jakiegokolwiek powodu wykorzystałem już 17 GB w ciągu zaledwie około 2 tygodni. Nie mam zainstalowanej dużej ilości oprogramowania, więc jestem przekonany, że wszystkie stare pakiety są gdzieś przechowywane.

Aby to wesprzeć, zauważyłem, że jeśli zainstalowałem pakiet, usuń go, a następnie zainstaluj ponownie, a Pacman po prostu rozpakuje i ponownie zainstaluje oprogramowanie bez konieczności ponownego pobierania.

Po zainstalowaniu systemu podstawowego, przed dodatkowym oprogramowaniem, zużyłem około 2 GB lub więcej. Od tamtej pory zainstalowałem tylko Matlab, Skype, Wine i kilka innych małych programów. Oczywiście zainstalowałem również brakujące biblioteki i tym podobne, ale nie o wartości prawie 15 GB.

Czy całkowicie się tu mylę, czy Arch nigdy nie usuwa starych pakietów podczas pobierania / aktualizacji do nowych wersji?

Jeśli tak, to jak usunąć te nieużywane pakiety?

Ponadto po usunięciu zainstalowanych pakietów korzystam pacman -R ...

sherrellbc
źródło
1
Prawdopodobnie dobrym pomysłem jest skonfigurowanie paccache jako regularnej cronlub systemdpracy.
Sparhawk

Odpowiedzi:

59

Nie, pacman nie usuwa starych pakietów z pamięci podręcznej ( /var/cache/pacman/pkg), więc z czasem może się zapełnić.

Możesz zastosować dwa podejścia do czyszczenia pamięci podręcznej: brutalna siła z pacman -Sc:

-c, --clean
Usuń pakiety, które nie są już instalowane z pamięci podręcznej, a także obecnie nieużywane bazy danych synchronizacji, aby zwolnić miejsce na dysku. Kiedy pacman pobiera pakiety, zapisuje je w katalogu pamięci podręcznej. Ponadto bazy danych są zapisywane dla każdej pobranej bazy danych synchronizacji i nie są usuwane, nawet jeśli zostaną usunięte z pliku konfiguracyjnego pacman.conf (5). Użyj jednego przełącznika --clean, aby usunąć tylko te pakiety, które nie są już zainstalowane; użyj dwóch, aby usunąć wszystkie pliki z pamięci podręcznej. W obu przypadkach będziesz mieć opcję tak lub nie, aby usunąć pakiety i / lub nieużywane pobrane bazy danych.

Lub, dla bardziej szczegółowego podejścia, możesz użyć jednego z narzędzi dostarczanych z pacman-contrib paccache:

paccache to elastyczne narzędzie do czyszczenia pamięci podręcznej pacman, które ma wiele opcji pomagających kontrolować, ile i co jest usuwane z dowolnego katalogu zawierającego archiwum pakietów pacman.

Domyślnie paccacheusunie wszystkie oprócz trzech ostatnich wersji zainstalowanego pakietu, ale możesz zmienić ten numer za pomocą -k, --keepprzełącznika. Istnieje również -d, --dryrunprzełącznik, aby wyświetlić podgląd zmian. Zobacz paccache --helpwszystkie przełączniki.

W pakiecie pacman-contrib znajduje się wiele narzędzi pomocnych w zarządzaniu pakietami, warto je wszystkie przejrzeć i zrozumieć, jak działają i mogą znacznie ułatwić obsługę Arch. Możesz zobaczyć pełną listę z:

pacman -Ql pacman-contrib | awk -F"[/ ]" '/\/usr\/bin/ {print $NF}'
jasonwryan
źródło
powiedział jasonwryan :) Bądź też bardzo ostrożny z podwójnym --cleanprzełącznikiem: zabrania łatwego powrotu do działającego pakietu, na wypadek, gdyby wystąpił jakiś problem z najnowszą wersją (np. nowy pakiet opiera się na starszej wersji lib lub Python; to samo ze sprzętem i najnowszym jądro). Uważam, że ustawianie pamięci podręcznej Pacmana jest gdzie indziej niż /o wiele lepsze rozwiązanie (wystarczy ustawić ścieżkę w /etc/pacman.conf ).
tuk0z
2
Jeśli nie masz paccache, możesz go zdobyć, instalując pacman-contribpakiet.
pfrenssen
+1, ale proponuję $ pacman -Ql pacman-contrib | awk -F"[/ ]" '/\/usr\/bin\/./ {print $NF}'unikać pustej linii w wynikach? ;-)
Cbhihe
Welp, postąpił rm -rf /var/cache/pacman/pkgniewłaściwie
Post Self
13

Pamięć podręczna pakietu jest w /var/cache/pacman/pkg/.

UWAGA: pacman pakiety zostały zaktualizowane w 2018 roku i dodatkowo wymagają instalacji, pacman-contribaby móc korzystać ze skryptów / narzędzi, jak paccacheopisano poniżej.

Zrobić:

paccache -d

Aby to zrobić -dryruni zobaczyć, co uruchomienie tego narzędzia może usunąć, gdy wykonasz następujące czynności:

paccache -r

Aby usunąć buforowane pakiety. 17 gbs brzmi stromo. Upewnij się, że nie masz dzienników ucieczki. Zrobić:

du -h /var/log

A nawet po prostu:

du -h /var

Aby uzyskać bardziej ogólny obraz tego, co się dzieje.

mikeserv
źródło
7

pacman -Sccrobi to, o co prosisz, ale nie jest to zalecane. Z Wiki

Możliwe jest również całkowite opróżnienie folderu pamięci podręcznej za pomocą pacman -Scc , ale robienie tego jest uważane za złą praktykę, ponieważ oprócz powyższego zapobiega również ponownej instalacji pakietu bezpośrednio z folderu pamięci podręcznej w razie potrzeby, co wymusza aby go ponownie pobrać. Nigdy nie powinieneś go używać, chyba że rozpaczliwie potrzebujesz więcej miejsca na dysku.

Nawiasem mówiąc, kiedy odinstalowuję pakiety, wolę używać pacman -Rnsc, ponieważ usuwa ono również zależności pakietów, a także pakiety zależne od tego. Jak zawsze dokładnie przeczytaj, które pakiety są usuwane, ponieważ możesz bardzo łatwo pozostawić nasz system w stanie nieużytecznym.

aprad046
źródło
Fajnie - więc to równoważne z rm /var/cache/pacman/pkg/*tym? Lub - tak przynajmniej domyślnie. /tmpDawno temu przeniosłem pamięć podręczną pkg na większość komputerów i pozwoliłem squidobsłużyć jedną centralną pamięć podręczną na routerze. Nie tak proste, jak pacman -Sccgdyby.
mikeserv
@mikeserv Centralna pamięć podręczna pakietu Pacman na routerze? Jak to skonfigurowałeś, podoba mi się dźwięk, ponieważ mam zarówno komputer stacjonarny Arch, jak i laptop.
severen
6

Zdecydowanie sugeruję użycie paccachezamiast pacman -Sc. Istnieje nawet bardzo skuteczna flaga do selektywnego usuwania wersji odinstalowanych pakietów -u. Flagi paccachepolecam to (jako część paccache v5.0.2):

  • -d, --dryrun: wykonaj próbę próbną, wyszukując tylko pakiety kandydujące
  • -r, --remove: usuń pakiety kandydatów
  • -u, --uninstalled: celuj tylko w odinstalowane pakiety
  • -k, --keep <num>: zachowaj „num” każdego pakietu w pamięci podręcznej (domyślnie: 3)

Przykład: Sprawdź, czy pozostała wersja pamięci podręcznej zdeinstalowanych pakietów

paccache -dvuk0
streter
źródło
1
W jaki sposób wpływa to na istniejące odpowiedzi, poza wypisywaniem opcji?
jasonwryan
Jeśli usunąłeś wiele nieużywanych dużych pakietów, chcesz je usunąć z pamięci podręcznej pacmana. Jest to możliwe z flagą -uz paccache. Przykłady dużych pakietów to np. Gnome, KDE lub Texlive, aby dać ci pomysł.
strpeter
1
Tak, znam flagę. Chodzi mi o to, że dodanie więcej flag do odpowiedzi nie zmienia faktu, że po prostu replikuje to, co już jest.
jasonwryan
-kflag było dla mnie nowe i nie bardzo dobrze wyjaśnione w oknie pomocy, więc jego użycie tutaj był użyteczny.
hLk