Wie lösche ich alte Pakete, die von pacman in Arch Linux installiert wurden?

51

Ich habe kürzlich Arch Linux installiert und festgestellt, dass ich relativ schnell viel Speicherplatz wegfresse. Aus irgendeinem Grund habe ich bereits 17 GB in nur etwa 2 Wochen verwendet. Ich habe nicht viel Software installiert, daher glaube ich, dass alle alten Pakete irgendwo gepflegt werden.

Um dies zu unterstützen, habe ich festgestellt, dass pacman, wenn ich ein Paket installiert habe, dieses Paket entfernt und dann erneut installiert, lediglich die Software entpackt und erneut installiert, ohne sie erneut herunterladen zu müssen.

Nachdem ich mein Basissystem installiert hatte, bevor ich zusätzliche Software installiert habe, habe ich vielleicht etwa 2 GB verwendet. Ich habe seitdem nur Matlab, Skype, Wine und ein paar andere kleine Programme installiert. Natürlich habe ich auch fehlende Bibliotheken und ähnliches installiert, aber nicht annähernd 15GB wert.

Bin ich hier völlig falsch oder löscht Arch niemals alte Pakete, wenn ich neue Versionen herunterlade / aktualisiere?

Wenn ja, wie lösche ich diese nicht verwendeten Pakete?

Auch wenn ich installierte Pakete entferne, verwende ich pacman -R ...

sherrellbc
quelle
1
Es ist wahrscheinlich eine gute Idee, paccache als regulären Job cronoder systemdJob einzurichten .
Sparhawk

Antworten:

59

Nein, Pacman entfernt keine alten Pakete aus Ihrem Cache ( /var/cache/pacman/pkg), sodass sie sich mit der Zeit füllen können.

Sie können den Cache auf zwei Arten leeren: Die Brute-Force-Methode mit pacman -Sc:

-c, --clean Entfernt
Pakete, die nicht mehr im Cache installiert sind, sowie derzeit nicht verwendete Synchronisierungsdatenbanken, um Speicherplatz freizugeben. Wenn Pacman Pakete herunterlädt, werden diese in einem Cache-Verzeichnis gespeichert. Außerdem werden Datenbanken für jede Synchronisierungs-DB gespeichert, von der Sie herunterladen, und nicht gelöscht, selbst wenn sie aus der Konfigurationsdatei pacman.conf (5) entfernt werden. Verwenden Sie einen --clean-Schalter, um nur Pakete zu entfernen, die nicht mehr installiert sind. Verwenden Sie zwei, um alle Dateien aus dem Cache zu entfernen. In beiden Fällen haben Sie die Option "Ja" oder "Nein", um Pakete und / oder nicht verwendete heruntergeladene Datenbanken zu entfernen.

Oder für einen differenzierteren Ansatz können Sie eines der Hilfsprogramme verwenden, die mit Pacman-Contrib geliefert werden paccache:

paccache ist ein flexibles Hilfsprogramm zur Bereinigung von Pacman-Caches, das über zahlreiche Optionen verfügt, mit denen gesteuert werden kann, wie viel und was aus jedem Verzeichnis gelöscht wird, das Pacman-Paket-Tarballs enthält.

Standardmäßig paccachewerden alle bis auf die letzten drei Versionen eines installierten Pakets entfernt. Sie können diese Nummer jedoch mit dem -k, --keepSchalter ändern . Es gibt auch einen -d, --dryrunSchalter, mit dem Sie eine Vorschau Ihrer Änderungen anzeigen können. Sehen Sie paccache --helpfür alle Schalter.

Das Paket pacman-contrib enthält eine Reihe von Dienstprogrammen, die Sie bei der Paketverwaltung unterstützen. Es lohnt sich, sie alle zu prüfen und sich ein Bild von ihrer Funktionsweise zu machen, um das Ausführen von Arch zu vereinfachen. Sie können die vollständige Liste anzeigen mit:

pacman -Ql pacman-contrib | awk -F"[/ ]" '/\/usr\/bin/ {print $NF}'
jasonwryan
quelle
jasonwryan hat es gesagt :) Seien Sie auch beim Double- --cleanSwitch sehr vorsichtig: Dies verhindert, dass Sie leicht auf das Arbeitspaket zurückgreifen können, falls ein Problem mit der neuesten Version auftritt (z. B. wenn ein neues Paket auf einer älteren lib- oder Python-Version basiert; dasselbe gilt für Hardware und die neueste Version Kernel). Ich finde das Setzen des Pacman-Cache an /einer anderen Stelle als einer viel besseren Lösung (setze einfach den Pfad in /etc/pacman.conf ).
Tuk0z
2
Wenn Sie nicht haben paccache, können Sie es erhalten, indem Sie das pacman-contribPaket installieren .
Pfrenssen
+1, aber ich schlage vor $ pacman -Ql pacman-contrib | awk -F"[/ ]" '/\/usr\/bin\/./ {print $NF}', eine Leerzeile in den Ergebnissen zu vermeiden? ;-)
Cbhihe
Welp, rm -rf /var/cache/pacman/pkgwar das Falsche
Post Self
13

Ihr Paket-Cache ist in /var/cache/pacman/pkg/.

HINWEIS: pacman Pakete wurden 2018 aktualisiert und müssen zusätzlich installiert werden pacman-contrib, um Skripte / Tools wie paccacheunten beschrieben zu verwenden.

Machen:

paccache -d

Gehen Sie -dryrunwie folgt vor, um zu sehen, was durch eine Ausführung dieses Dienstprogramms beim nächsten Mal entfernt werden könnte:

paccache -r

So entfernen Sie zwischengespeicherte Pakete 17gbs klingt steil. Stellen Sie sicher, dass Sie keine Run-Away-Protokolle haben. Machen:

du -h /var/log

Oder auch nur:

du -h /var

Für eine allgemeinere Vorstellung davon, was los ist.

mikeserv
quelle
7

pacman -Scctut was du fragst, aber es wird nicht empfohlen. Aus dem Wiki

Es ist auch möglich, den Cache-Ordner mit pacman-SCC vollständig zu leeren , dies wird jedoch als schlechte Praxis angesehen, da es zusätzlich zu den oben genannten auch verhindert, dass ein Paket im Bedarfsfall direkt aus dem Cache-Ordner neu installiert wird, wodurch erzwungen wird um es erneut herunterzuladen. Sie sollten es niemals verwenden, es sei denn, Sie benötigen dringend mehr Speicherplatz.

Wenn ich Pakete deinstalliere, bevorzuge ich die Verwendung pacman -Rnsc, da dadurch auch Paketabhängigkeiten sowie Pakete, die von diesem abhängen, entfernt werden. Lesen Sie wie immer sorgfältig, welche Pakete entfernt werden, da Sie unser System sehr leicht unbrauchbar machen können.

aprad046
quelle
Das ist cool - also entspricht es rm /var/cache/pacman/pkg/*dann? Oder - es ist zumindest standardmäßig, denke ich. Ich habe meinen pkg-Cache vor /tmplanger Zeit auf die meisten Computer verlagert und squideinen einzelnen zentralen Cache am Router verwalten lassen. Gar nicht so einfach pacman -Scc.
mikeserv
@mikeserv Ein zentraler Pacman-Paket-Cache an Ihrem Router? Wie haben Sie es eingerichtet? Ich mag den Klang, da ich sowohl einen Arch-Desktop als auch einen Laptop habe.
Mehrere
6

Ich empfehle dringend die Verwendung von paccacheanstelle von pacman -Sc. Es gibt sogar ein sehr effektives Flag zum selektiven Entfernen der Versionen von deinstallierten Paketen -u. Die von paccachemir empfohlenen Flags sind (als Teil von paccache v5.0.2):

  • -d, --dryrun: Trockenlauf durchführen und nur Kandidatenpakete finden
  • -r, --remove: Kandidatenpakete entfernen
  • -u, --uninstalled: Ziel nur deinstallierte Pakete
  • -k, --keep <num>: behalte "num" jedes Pakets im Cache (Standard: 3)

Beispiel: Suchen Sie nach verbleibenden Cache-Versionen von deinstallierten Paketen

paccache -dvuk0
strpeter
quelle
1
Wie werden die vorhandenen Antworten ergänzt, außer dass die Optionen ausgedruckt werden?
Jasonwryan
Wenn Sie viele nicht verwendete große Pakete entfernt haben, möchten Sie diese aus dem Cache von pacman entfernen. Dies ist mit der Flagge -uvon möglich paccache. Beispiele für große Pakete sind zB Gnome, KDE oder Texlive, um Ihnen eine Idee zu geben.
Strpeter
1
Ja, ich kenne die Flagge. Mein Punkt ist, der Antwort einfach mehr Flags hinzuzufügen, was nichts an der Tatsache ändert, dass nur das repliziert wird, was bereits vorhanden ist.
Jasonwryan
Die -kFlagge war für mich neu und im Hilfedialog nicht sehr gut erklärt, daher war ihre Verwendung hier nützlich.
hLk