È sicuro eliminare manualmente il contenuto / var / cache / apt?


21

Su un sistema incorporato con uno spazio su disco molto limitato ho la cartella /var/cache/aptpiena con circa 700 MB srcpkgcache.bin.*e un paio di *.binfile di grandi dimensioni.

L'esibizione sudo apt-get cleannon ha fatto la differenza.

È sicuro eliminare manualmente questi *.bin*file?


6
A partire da Ubuntu 14.04 è perfettamente sicuro rimuovere i *.binfile in detta cartella - supponendo che al momento non sia in esecuzione alcun processo relativo a apt. Il prossimo apt-get updaterigenererà i *.binfile. Questa domanda non riguarda decisamente i file in /var/cache/apt/archives, ma i file /var/cache/apt/*.bin. Grande differenza. Il primo può essere pulito emettendo apt-get clean, il secondo deve essere rimosso manualmente. Chiaramente chi vota per chiudere la domanda non ha letto correttamente la domanda. Purtroppo non posso votare per riaprire dopo aver assegnato alcuni dei miei rappresentanti in taglie.
0xC0000022L

3
Questo non è un duplicato. La risposta collegata riguarda la sottodirectory archivesall'interno /var/cache/apt/, questa riguarda i *.bin*file.
Olaf Dietsche,

Risposte:


11

Non proprio. Questi file aiutano il tuo sistema a determinare cosa è disponibile e cosa no. Svuotare quella directory si tradurrà in un sistema apt-get rotto. Ecco un paio di consigli.

Innanzitutto, pulizia automatica

aggiungere un

DPkg::Post-Invoke { "apt-get clean"; };

fino alla fine di /etc/apt/apt.conf. Richiederà più tempo ai processi apt e dpkg, ma renderà la directory della cache sempre pulita.

Quindi, rimuovere gli archivi

Inizia rimuovendo e disabilitando tutti gli archivi di origine (che non stai utilizzando). Su un sistema incorporato probabilmente non ti servono. Quindi rimuovere tutti gli archivi che non sono in uso. È possibile eseguire apt-cache policyper capire da quale repo proviene un pacchetto se non si è sicuri.

Più rimozione degli archivi

Alcuni PPA sono spaventosi di avere un numero enorme di pacchetti in essi quando hai solo bisogno di 1 o 2. Prova a disabilitare quei PPA e basta installare manualmente i file deb. In questi casi risparmi spazio, ma perdi l'aggiornamento automatico. Tieni presente che dpkg gestirà le dipendenze, quindi puoi comunque installare cosa-con-tonnellate-di-deps.deb e poi eseguire apt-get -f installper recuperare le dipendenze.

Risposta totalmente estrema 1

Poiché si parlava di un sistema incorporato, il 90% dei repository principali non ti gioverà. Per gestirlo, è possibile eseguire il proprio server repo apt-get Vedi questo collegamento . Non è facile ed è un PIA per una sola macchina. Ma se hai molte di queste macchine ne vale la pena. (Il tuo server repo apt può ospitare solo un sottoinsieme di pacchetti che usi effettivamente. Non devi eseguire il mirroring dell'intera cosa)

Risposta totalmente estrema 2

Se lo spazio è davvero così grande di un problema, puoi disabilitare apt tutti insieme e tornare all'installazione manuale tramite dpkg. Ho dovuto farlo su diversi sistemi integrati. Funziona, ma è un incubo da amministratore.


Questa è un'ottima risposta (specialmente quelle totalmente estreme) ma /etc/apt/apt.conf non esiste più in Ubuntu 14.04. Qual è la migliore pratica attuale?
Zachaysan,

1
Basta fare il file se non esiste. Sarà ancora letto.
Coteyr,

5
Per favore, perché scrivi non è sicuro rimuovere i *.binfile? Qualsiasi esecuzione di apt-get updaterigenera quei file da zero (testati). Ad esempio, il mio caso d'uso è che desidero creare modelli di container LXC e deselezionare l'archivio il più possibile. Non riesco a vedere alcun motivo perché non è sicuro. E la tua risposta non indica un motivo, afferma solo che non è sicuro. Testato che è perfettamente sicuro su Ubuntu 14.04.
0xC0000022L

1
Stai dicendo che includendo apt-cache cleanin una chiamata dpkg si otterrà una cache più pulita, ma l'utente dice che apt-cache cleannon ha pulito nulla per loro. Inoltre, la tua risposta è totalmente sbagliata perché dpkg non usa il /var/cache/apt/*contenuto per essere informato sulla statistica del pacchetto.
Anwar,

1
La manpage apt-get descrive chiaramente la funzione di clean* clean cancella il repository locale dei file di pacchetto recuperati. Rimuove tutto tranne il file di blocco da / var / cache / apt / archives / e /var/cache/apt/archives/partial/.* Se è pericoloso, non ci sarebbe una tale funzione da pulire.
Anwar,

3

Ovviamente puoi cancellare pkgcache.bine srcpkgcache.bin, non succede nulla. Corri apt-get updateper ricrearli.


... ed è vero indipendentemente dall'eliminazione dei .debfile?
einpoklum - ripristina Monica

1

Conserva pkgcache.bine srcpkgcache.bin, puoi tranquillamente eliminare gli altri. Non toccare le directory!


Ok grazie. Ho temporaneamente spostato i *bin.*file in una cartella di backup. Tuttavia, perché apt-get gestisce la cache all'interno della cache? Una directory cache dovrebbe essere una memoria temporanea per natura.
Sì,

Questo problema è già stato segnalato. :) Vedi qui
Frantique,

Ovviamente puoi eliminare pkgcache.bin e srcpkgcache.bin, non succede nulla. apt-get update li ricrea.
Tomas M,

0

Naturalmente è possibile creare una condivisione NFS (filesystem di rete) per questo. Lasciare questi file su un server e montare la condivisione solo quando si desidera aggiornare / installare i pacchetti. In ambienti embedded, l'installazione sarà comunque relativamente statica.

sshfs è un'altra buona opzione, è molto più facile da configurare (in pratica richiede solo SSH che è standard), ma ha più sovraccarico (più lento).


Questo dovrebbe tecnicamente funzionare, tranne per il fatto che non hai il pieno controllo di quando apt viene eseguito. Se usi qualcosa del genere devi assicurarti di disabilitare le attività "automatizzate" come i lavori cron che eseguono apt-get update.
coteyr,
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.