Come eliminare i vecchi pacchetti installati da Pacman in Arch Linux?


51

Di recente ho installato Arch Linux e ho scoperto che sto mangiando in un sacco di spazio di archiviazione relativamente rapidamente. Per qualsiasi motivo ho già usato 17 GB in circa 2 settimane. Non ho installato molti software, quindi sono indotto a credere che tutti i vecchi pacchetti siano mantenuti da qualche parte.

A supporto di ciò, ho notato che se ho installato un pacchetto, rimuovo quel pacchetto e quindi reinstallalo che pacman semplicemente decomprime e reinstalla il software senza doverlo scaricare di nuovo.

Dopo aver installato il mio sistema di base, prima del software aggiuntivo, ho usato circa 2 GB circa. Da allora ho installato solo Matlab, Skype, Wine e alcuni altri piccoli programmi. Naturalmente ho anche installato librerie mancanti e simili, ma non per un valore di quasi 15 GB.

Sbaglio completamente qui o Arch non elimina mai i vecchi pacchetti durante il download / l'aggiornamento a nuove versioni?

In tal caso, come posso eliminare questi pacchetti non utilizzati?

Inoltre, quando rimuovo i pacchetti installati che uso pacman -R ...


1
Probabilmente è una buona idea impostare paccache come un normale crono systemdlavoro.
Sparhawk,

Risposte:


59

No, pacman non rimuove i vecchi pacchetti dalla cache ( /var/cache/pacman/pkg), quindi, nel tempo, può riempirsi.

Puoi adottare due approcci per svuotare la cache: la forza bruta con pacman -Sc:

-c, --clean
Rimuove i pacchetti che non sono più installati dalla cache e i database di sincronizzazione attualmente inutilizzati per liberare spazio su disco. Quando pacman scarica i pacchetti, li salva in una directory della cache. Inoltre, i database vengono salvati per ogni DB di sincronizzazione scaricato e non vengono eliminati anche se vengono rimossi dal file di configurazione pacman.conf (5). Utilizzare uno switch --clean per rimuovere solo i pacchetti che non sono più installati; usa due per rimuovere tutti i file dalla cache. In entrambi i casi, avrai un'opzione sì o no per rimuovere pacchetti e / o database scaricati inutilizzati.

Oppure, per un approccio più sfumato, è possibile utilizzare uno dei programmi di utilità fornito con pacman-contrib, paccache:

paccache è un'utilità di pulizia cache pacman flessibile, che ha numerose opzioni per aiutare a controllare quanto e cosa viene cancellato da qualsiasi directory contenente i tarball del pacchetto pacman.

Per impostazione predefinita, paccacheverranno rimosse tutte le ultime tre versioni di un pacchetto installato, ma è possibile modificare questo numero con lo -k, --keepswitch. C'è anche un -d, --dryruninterruttore per visualizzare in anteprima le modifiche. Vedi paccache --helpper tutti gli interruttori.

Esistono diverse utilità nel pacchetto pacman-contrib per aiutare nella gestione dei pacchetti, vale la pena esaminarle tutte e comprendere come funzionano e possono rendere molto più semplice l'esecuzione di Arch. Puoi vedere l'elenco completo con:

pacman -Ql pacman-contrib | awk -F"[/ ]" '/\/usr\/bin/ {print $NF}'

jasonwryan lo ha detto :) Fai anche molta attenzione con il doppio --cleanswitch: ciò proibisce di tornare facilmente al pacchetto di lavoro, nel caso in cui qualsiasi problema si verifichi con l'ultima versione (ad es. il nuovo pacchetto si basa su una versione lib o Python precedente; lo stesso con hardware e ultimo kernel). Trovo che impostare la cache pacman altrove sia /una soluzione molto migliore (basta impostare il percorso in /etc/pacman.conf ).
tuk0z,

2
Se non lo paccachehai puoi ottenerlo installando il pacman-contribpacchetto.
pfrenssen,

+1, ma vi suggerisco $ pacman -Ql pacman-contrib | awk -F"[/ ]" '/\/usr\/bin\/./ {print $NF}'di evitare una riga vuota nei risultati? ;-)
Cbhihe,

Welp, rm -rf /var/cache/pacman/pkgera la cosa sbagliata da fare
Post Self


13

La cache del pacchetto è in /var/cache/pacman/pkg/.

NOTA: i pacman pacchetti sono stati aggiornati nel 2018 e richiedono inoltre l'installazione pacman-contribper utilizzare script / strumenti come paccachedescritto di seguito.

Fare:

paccache -d

Per fare una -dryrune vedere cosa potrebbe rimuovere una corsa di tale utility alla prossima operazione:

paccache -r

Per rimuovere i pacchetti memorizzati nella cache. 17 GB suona ripido. Assicurati di non avere alcuni log di scappamento. Fare:

du -h /var/log

O anche solo:

du -h /var

Per un'idea più generale di ciò che sta succedendo.


7

pacman -Sccfa quello che stai chiedendo, ma non è raccomandato. Dal Wiki

È anche possibile svuotare completamente la cartella cache con pacman -Scc , ma farlo è considerato una cattiva pratica, poiché, oltre a quanto sopra, impedisce anche di reinstallare un pacchetto direttamente dalla cartella cache in caso di necessità, costringendo così per scaricarlo di nuovo. Non dovresti mai usarlo a meno che non vi sia un disperato bisogno di più spazio su disco.

Inoltre, quando disinstallo i pacchetti, preferisco utilizzare pacman -Rnsc, poiché rimuove anche le dipendenze dei pacchetti e i pacchetti che dipendono da questo. Come sempre, leggi attentamente quali pacchetti vengono rimossi, poiché potresti facilmente lasciare il nostro sistema in uno stato inutilizzabile.


È fantastico, quindi equivale a rm /var/cache/pacman/pkg/*allora? Oppure - almeno per impostazione predefinita, immagino. Ho trasferito la mia cache pkg /tmpsulla maggior parte delle macchine molto tempo fa e ho lasciato squidgestire una singola cache centrale sul router. Non facile come pacman -Sccse.
Mikeserv,

@mikeserv Una cache di pacchetto Pacman centrale sul tuo router? Come lo hai impostato, mi piace il suono dato che ho sia un desktop Arch che un laptop.
reciso dal

6

Consiglio vivamente l'uso di paccacheinvece di pacman -Sc. Esiste persino un flag molto efficace per rimuovere selettivamente le versioni dei pacchetti disinstallati -u. I flag di paccacheI raccomando sono (come parte di paccache v5.0.2):

  • -d, --dryrun: esegue una corsa a secco, trovando solo pacchetti candidati
  • -r, --remove: rimuove i pacchetti candidati
  • -u, --uninstalled: destinazione solo pacchetti disinstallati
  • -k, --keep <num>: mantenere "num" di ciascun pacchetto nella cache (impostazione predefinita: 3)

Esempio: verificare la presenza di versioni cache rimanenti dei pacchetti disinstallati

paccache -dvuk0

1
In che modo ciò si aggiunge alle risposte esistenti, oltre alla stampa delle opzioni?
Jasonwryan,

Se hai rimosso molti grandi pacchetti inutilizzati, vuoi rimuoverli dalla cache di pacman. Questo è possibile con la bandiera -udi paccache. Esempi di grandi pacchetti sono ad esempio Gnome, KDE o Texlive per darti un'idea.
strpeter,

1
Sì, ho familiarità con la bandiera. Il mio punto è semplicemente aggiungere più flag alla risposta, non cambia il fatto che replica solo ciò che è già qui.
Jasonwryan,

la -kbandiera era nuova per me e non molto ben spiegata nella finestra di dialogo della guida, quindi il suo utilizzo qui è stato utile.
hLk
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.