Configurare apt per cancellare i pacchetti dalla cache
Configurare apt per cancellare i pacchetti dalla cache
Ciao,
A vostra conoscenza, è possibile configurare apt in modo che, durante un upgrade o dist-upgrade, subito dopo l'installazione con successo di ciascun singolo pacchetto "deb" tramite dpkg e prima di passare all'installazione del pacchetto successivo, ne effettui la cancellazione dalla cache dei pacchetti scaricati dalle rete in modo da liberare spazio sul disco (sopratutto sui sistemi con poco spazio libero sul disco) ?
Grazie.
A vostra conoscenza, è possibile configurare apt in modo che, durante un upgrade o dist-upgrade, subito dopo l'installazione con successo di ciascun singolo pacchetto "deb" tramite dpkg e prima di passare all'installazione del pacchetto successivo, ne effettui la cancellazione dalla cache dei pacchetti scaricati dalle rete in modo da liberare spazio sul disco (sopratutto sui sistemi con poco spazio libero sul disco) ?
Grazie.
Re: Configurare apt per cancellare i pacchetti dalla cache
Ho trovato questo, da provare:
Codice: Seleziona tutto
sudo sh -c "echo 'DSELECT::Clean "always";' >> /etc/apt/apt.conf.d/99AutomaticClean"
Re: Configurare apt per cancellare i pacchetti dalla cache
Ciao Aki,
forse ho capito male e nel caso mi scuso.
A me piace molto utilizzare un file apt.conf dove imposto alcune cose relative soprattutto all'output perché lo voglio ordinato.
Detto questo, non so (perché non l'ho mai utilizzato) se
Gli esempi sono in
Poi va beh c'è anche questo ma non penso sia quello che cerchi:
forse ho capito male e nel caso mi scuso.
A me piace molto utilizzare un file apt.conf dove imposto alcune cose relative soprattutto all'output perché lo voglio ordinato.
Detto questo, non so (perché non l'ho mai utilizzato) se
può essere utile.Clean
Modalità di pulizia della cache; i valori permessi sono always, prompt, auto, pre-auto e never. always e prompt rimuovono tutti i pacchetti dalla cache dopo ogni aggiornamento; prompt (il valore predefinito) lo fa in modo condizionato. auto rimuove solo quei pacchetti che non sono più scaricabili (ad esempio perché sostituiti da una nuova versione). pre-auto effettua questa azione prima di scaricare i nuovi pacchetti.
Gli esempi sono in
Codice: Seleziona tutto
/usr/share/doc/apt/examples/apt.conf
/usr/share/doc/apt/examples/configure-index.gz
Clean-Installed
Attiva in modo predefinito. Quando attiva, la funzionalità autoclean rimuove dalla cache ogni pacchetto che non può più essere scaricato. Se disattivata, allora sono esclusi dalla rimozione anche i pacchetti che sono installati; fare attenzione però al fatto che APT non fornisce alcun mezzo diretto per reinstallarli.
Re: Configurare apt per cancellare i pacchetti dalla cache
una soluzione alternativa potrebbe essere cambiare la cartella dove vengono scaricati i pacchetti, puntando ad una partizione/disco meno utilizzato, che deve essere sempre montato quando si scaricano pacchetti:
change location of the “lists” and “archives” folders
change location of the “lists” and “archives” folders
Re: Configurare apt per cancellare i pacchetti dalla cache
Ciao a tutti,
Vi ringrazio innanzitutto per le risposte rapide, dettagliate e puntuali.
Per quanto riguarda "DSELECT::Clean" nella mia installazione (una Debian Buster "standard") dselect non è installato e, quindi, credo non sia applicabile (dselect è un front-end analogo ad apt-get e che lo ha preceduto).
Per quanto riguarda il parametro "Clean" in /etc/apt/apt.conf è la stessa che ha indicato azioga:
Per quanto riguarda la possibilità di collocare la cache (anche temporaneamente) nella partizione di un altro disco, è sicuramente fattibile e, se un altro disco è disponibile, è forse il modo più pulito per ottenere il risultato senza modificare le configurazione e/o il funzionamento ordinario di apt.
Sulla base delle vostre osservazioni e della richiesta di chiarimenti di Selky, provo, a specificare meglio il quesito, facendo un esempio, anche per approfondire come apt (in qualità di front-end verso il gestore di pacchetti) utilizza il gestore dei pacchetti ("package manager) che in Debian Buster è il programma dpkg.
Ad esempio, provando ad installare il pacchetto "hello" (presente nei repository debian), questo è l'output di apt quando si chiede di mostrare come dpkg è invocato dal comando apt-get (che, a sua volta, è invocato dal comando apt):
Come vedete, dpkg è invocato due volte:
1) la prima con il comando /usr/bin/dpkg --unpack rispetto al pacchetto della cache di apt ; questo comando decomprime il contenuto del nuovo pacchetto, attività preceduta da altre attività qualora il pacchetto fosse già installato ad una precedente versione; qualora la richiesta di installazione fosse per più pacchetti, comparirebbe qui l'elenco dei pacchetti da installare dalla cache;
2) la seconda con il comando /usr/bin/dpkg --configure --pending ; questo comando fa sì che dpkg configuri tutti i pacchetti che, dal registro dei pacchetti installati, risultano in stato di "unpacked"; dal manuale di dpkg:
Vi ringrazio innanzitutto per le risposte rapide, dettagliate e puntuali.
Per quanto riguarda "DSELECT::Clean" nella mia installazione (una Debian Buster "standard") dselect non è installato e, quindi, credo non sia applicabile (dselect è un front-end analogo ad apt-get e che lo ha preceduto).
Per quanto riguarda il parametro "Clean" in /etc/apt/apt.conf è la stessa che ha indicato azioga:
In ogni caso, credo che il "clean" si applichi alla fine dell'upgrade o dist-upgrade e non dopo l'installazione di ogni singolo pacchetto.APT IN DSELECT
Quando APT viene usato come metodo per dselect(1) svariate direttive di configurazione controllano il comportamento
predefinito; queste sono nella sezione DSelect.
Clean
Modalità di pulizia della cache; i valori permessi sono always, prompt, auto, pre-auto e never. always e
prompt rimuovono tutti i pacchetti dalla cache dopo ogni aggiornamento; prompt (il valore predefinito) lo fa in
modo condizionato. auto rimuove solo quei pacchetti che non sono più scaricabili (ad esempio perché sostituiti
da una nuova versione). pre-auto effettua questa azione prima di scaricare i nuovi pacchetti.
Per quanto riguarda la possibilità di collocare la cache (anche temporaneamente) nella partizione di un altro disco, è sicuramente fattibile e, se un altro disco è disponibile, è forse il modo più pulito per ottenere il risultato senza modificare le configurazione e/o il funzionamento ordinario di apt.
Sulla base delle vostre osservazioni e della richiesta di chiarimenti di Selky, provo, a specificare meglio il quesito, facendo un esempio, anche per approfondire come apt (in qualità di front-end verso il gestore di pacchetti) utilizza il gestore dei pacchetti ("package manager) che in Debian Buster è il programma dpkg.
Ad esempio, provando ad installare il pacchetto "hello" (presente nei repository debian), questo è l'output di apt quando si chiede di mostrare come dpkg è invocato dal comando apt-get (che, a sua volta, è invocato dal comando apt):
Codice: Seleziona tutto
root@debian:~# apt-get -o Debug::pkgDPkgPM=true install hello
Lettura elenco dei pacchetti... Fatto
Generazione albero delle dipendenze
Lettura informazioni sullo stato... Fatto
I seguenti pacchetti NUOVI saranno installati:
hello
0 aggiornati, 1 installati, 0 da rimuovere e 0 non aggiornati.
È necessario scaricare 0 B/56,1 kB di archivi.
Dopo quest'operazione, verranno occupati 287 kB di spazio su disco.
/usr/bin/dpkg --status-fd 27 --no-triggers --unpack --auto-deconfigure /var/cache/apt/archives/hello_2.10-2_amd64.deb
/usr/bin/dpkg --status-fd 27 --configure --pending
1) la prima con il comando /usr/bin/dpkg --unpack rispetto al pacchetto della cache di apt ; questo comando decomprime il contenuto del nuovo pacchetto, attività preceduta da altre attività qualora il pacchetto fosse già installato ad una precedente versione; qualora la richiesta di installazione fosse per più pacchetti, comparirebbe qui l'elenco dei pacchetti da installare dalla cache;
2) la seconda con il comando /usr/bin/dpkg --configure --pending ; questo comando fa sì che dpkg configuri tutti i pacchetti che, dal registro dei pacchetti installati, risultano in stato di "unpacked"; dal manuale di dpkg:
Quello che ipotizzavo di provare a realizzare è fare in modo che il pacchetto scaricato nella cache di apt fosse cancellato tra il comando 1) e 2), con il beneficio di occupare meno spazio, ma con l'indubbio svantaggio che in caso di errori di configurazione del pacchetto si renderebbe necessario un nuovo download del pacchetto.Package states
[..]
unpacked
The package is unpacked, but not configured.
Re: Configurare apt per cancellare i pacchetti dalla cache
Qui dovresti trovare quello che cerchi:
https://sources.debian.org/src/apt/2.1. ... ure-index/
Magari disabilitando completamente la cache (cancelli i file *.bin che contengono la cache e imposti il valore opportuno in apt.conf.d a "") ottieni quello che desideri.
In particolare:
https://sources.debian.org/src/apt/2.1. ... ure-index/
Magari disabilitando completamente la cache (cancelli i file *.bin che contengono la cache e imposti il valore opportuno in apt.conf.d a "") ottieni quello che desideri.
In particolare:
Codice: Seleziona tutto
Dir::Cache
Dir::Cache::pkgcache
Dir::Cache::archives
Re: Configurare apt per cancellare i pacchetti dalla cache
questo non è elegantissimo, ma potrebbe funzionare
Codice: Seleziona tutto
DPkg::Post-Invoke {"/bin/rm -f /var/cache/apt/archives/*.deb || true";};
Re: Configurare apt per cancellare i pacchetti dalla cache
ps. un disco di rete sarebbe ipotizzabile?
Re: Configurare apt per cancellare i pacchetti dalla cache
Questa discussione é un modo per apprendere cose nuove, ormai la figuraccia con Aki l'ho fatta quindi...
Ho trovato ma per aptitude sempre da inserire nel file apt-conf
Però Aki con aptitude non ho confidenza, probabilmente pure questa indicazione é sbagliata perché la descrizione riporta
Ho trovato ma per aptitude sempre da inserire nel file apt-conf
Codice: Seleziona tutto
Opzione: Aptitude::Clean-After-Install
Predefinito: false
Descrizione: Se questa opzione è true, aptitude ripulisce tutti i file nella directory della cache dei pacchetti (vedere Azioni → Pulisci la cache dei pacchetti) dopo l'installazione con successo di pacchetto (o operazioni simili). Questa opzione è simile a Aptitude::Autoclean-After-Update.
Codice: Seleziona tutto
dopo l'installazione con successo di pacchetto
Re: Configurare apt per cancellare i pacchetti dalla cache
Ciao a tutti,Quello che ipotizzavo di provare a realizzare è fare in modo che il pacchetto scaricato nella cache di apt fosse cancellato tra il comando 1) e 2)
Leggendo la discussione mi è sorta una curiosità: dentro ogni deb ci sono due archivi (data e control).
Sicuramente durante l'unpack dpkg spacchetta l'archivio "data" nel sistema, mentre a leggere la man di dpkg sembra che "control", che contiene il postinst script, venga spacchettato durante il configure.
In quale directory viene conservato l'archivio "control" ( nel tempo che intercorre tra unpack e configure)?
Il punto, giusto per tornare a tema col quesito iniziale, è che "control" contiene lo script postinst che viene eseguito durante il configure e bisogna essere sicuri che lo script sia disponibile in quella fase..
Re: Configurare apt per cancellare i pacchetti dalla cache
Sono archiviati in /var/lib/dpkg/info/ dove gli script di configurazione del pacchetto sono conservati prima della configurazione del pacchetto (tra unpack e configure) ed anche dopo la configurazione del pacchetto.Ombra ha scritto:[..] sembra che "control", che contiene il postinst script, venga spacchettato durante il configure. In quale directory viene conservato l'archivio "control" ( nel tempo che intercorre tra unpack e configure)?