Perché ci sono file deb in / var / cache / apt / archives /?

Perché ci sono file deb in /var/cache/apt/archives/ ?

In quali casi i file deb sono stati scaricati in quella directory?

Informazioni di base

Ci sono due cose in Ubuntu (e in Debian, su cui è basato Ubuntu) che sono comunemente chiamate “il gestore di pacchetti”: dpkg e APT.

dpkg è un programma che installa e rimuove i pacchetti e mantiene un database di quali pacchetti sono installati, a quali versioni. Quando installa i pacchetti, lo fa da file di archivio .deb . Questi archivi sono il modo in cui i pacchetti sono distribuiti.

dpkg fa molto di più che copiare (o eliminare) i file e aggiornare il suo database – eseguirà anche script di installazione e script di rimozione. Può essere considerato piuttosto sofisticato. Ma ciò che non farà è trovare e scaricare pacchetti.

APT trova e scarica i pacchetti ed esegue dpkg appropriato per installarli, aggiornarli e rimuoverli. APT non è realmente un singolo software, sebbene ci sia un apt Installa apt pacchetto che fornisce le sue parti essenziali.

APT include una libreria ( libapt-pkg ) che fornisce funzionalità di base, accessibile da vari strumenti. Alcuni di questi strumenti, come apt-get , sono forniti anche da apt Installa apt pacchetto. Altri strumenti sono installati separatamente. APT fornisce inoltre vari file di configurazione che controllano il funzionamento della libreria principale e dei programmi che lo utilizzano.

Oltre a ciò, APT è un sistema per la memorizzazione e il recupero dei dati su quali sorgenti software forniscono quali pacchetti in quali versioni e per agire su tali dati per eseguire automaticamente le attività di gestione dei pacchetti come l’installazione e l’aggiornamento dei pacchetti. Ciò include tenere traccia di quali pacchetti sono necessari per il funzionamento di altri pacchetti e raccogliere e installare automaticamente pacchetti appropriati per soddisfare queste dipendenze.

Ad esempio, quando dico all’utility apt-get di installare il cioccolato-doom Installa il cioccolato-doom pacchetto, capisce quali altri pacchetti devono essere installati affinché funzioni, e li recupera e li installa automaticamente anche:

 $ sudo apt-get install chocolate-doom Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: doom-wad-shareware libmikmod3 libsdl-mixer1.2 libsdl-net1.2 libsdl1.2debian Recommended packages: doom-engine The following NEW packages will be installed: chocolate-doom doom-wad-shareware libmikmod3 libsdl-mixer1.2 libsdl-net1.2 libsdl1.2debian 0 upgraded, 6 newly installed, 0 to remove and 1 not upgraded. Need to get 0 B/2,846 kB of archives. After this operation, 8,626 kB of additional disk space will be used. 

Strumenti grafici come Software Center, Software Updater / Update Manager e Synaptic eseguono funzioni simili a apt-get . Usano anche il sistema APT – attraverso una combinazione di osservando le sue regole e utilizzando le funzionalità fornite dalle librerie principali – per cambiare i pacchetti installati, per dare all’utente ciò che lui / lei (di solito) vuole, in modo tale che le cose (di solito) continua a lavorare.

Come e quando viene utilizzata la cartella /var/cache/apt/archives

Quando apt-get , aptitude , Software Center , Synaptic , Software Updater / Update Manager , o qualsiasi altra utility di gestione pacchetti scarica pacchetti (e gli altri pacchetti da cui dipendono) da fonti software configurate e li installa, i pacchetti scaricati (cioè, il File di archivio .deb da cui sono installati) sono memorizzati in /var/cache/apt/archives .

Se hai un file .deb su disco e lo installi con dpkg , questo non ne causa una copia in /var/cache/apt/archives . Ma quando un programma che utilizza o implementa il sistema APT di pacchetti di download di download e risoluzione di dipendenza automatica e pacchetti di recupero, è lì che li archivia.

Mentre i file .deb per i pacchetti scaricati automaticamente sono memorizzati e installati da /var/cache/apt/archives , non vengono effettivamente scaricati direttamente in quella posizione. Invece, i download di file .deb incompleti (cioè in corso) esistono in /var/cache/apt/archives/partial e vengono quindi spostati in /var/cache/apt/archives al termine.

I file del pacchetto .deb rimangono memorizzati nella cache in /var/cache/apt/archives anche dopo una corretta installazione nel caso in cui siano necessari per un uso futuro. Ma puoi tranquillamente rimuovere i file .deb che sono abbastanza vecchi da non essere più necessari con sudo apt-get autoclean , o cancellare completamente i file .deb nella cache con sudo apt-get clean . Vedi man apt-get per maggiori informazioni.

Per illustrare la funzione di sudo apt-get autoclean e comandi simili, nonché per determinare se si desidera eseguirli, è ansible simulare le loro azioni eseguendo poi con il flag -s . È meglio passare questo flag prima del verbo di azione autoclean (o qualunque altro). In genere non è necessario eseguire un’utilità come root con sudo quando si utilizza -s , poiché non vengono apportate modifiche effettive.

Ad esempio, sul mio sistema:

 $ apt-get -s autoclean NOTE: This is only a simulation! apt-get needs root privileges for real execution. Keep also in mind that locking is deactivated, so don't depend on the relevance to the real current situation! Reading package lists... Done Building dependency tree Reading state information... Done Del libubsan0 4.9.1-15ubuntu1 [83.7 kB] Del cups-server-common 1.7.5-3 [519 kB] Del python2.7 2.7.8-9 [205 kB] Del g++-4.9 4.9.1-15ubuntu1 [17.4 MB] Del libstdc++-4.9-dev 4.9.1-15ubuntu1 [1,121 kB] .... 

I pacchetti elencati non verrebbero disinstallati ; invece, solo i file .deb memorizzati nella cache verrebbero eliminati. (Infatti non è successo nemmeno quando ho eseguito quel comando, in quanto si trattava semplicemente di una simulazione.)

Altri file scaricati

Il software installato tramite dpkg (tramite APT o altro) non viene effettivamente eseguito dal file .deb che lo fornisce. Come indicato nella sezione Informazioni di base , vengono estratti i file .deb. Questo è il motivo per cui possono essere rimossi e il pacchetto installato continua a funzionare.

I file in tutto il sistema installati dai pacchetti .deb non vengono scaricati nelle posizioni correnti, ma vengono estratti dai file .deb che li forniscono (o forse creati appositamente durante l’installazione o successivamente, come è il caso per alcuni file di configurazione).

Ma i file .deb non sono gli unici file scaricati dalle utility di gestione dei pacchetti. Spesso vengono scaricati altri file che forniscono informazioni su dove esistono i pacchetti.

Ad esempio, quando sudo apt-get update , l’output include righe come:

 Get:13 http://us.archive.ubuntu.com utopic/main i386 Packages [1,341 kB] 

Ciò significa che un file come http://us.archive.ubuntu.com/ubuntu/dists/utopic/main/binary-amd64/Packages.bz2 è stato scaricato ed esaminato per aiutare ad aggiornare il database APT con informazioni su quali pacchetti sono disponibili ( e in quali versioni) da quella particolare fonte di software. Puoi trovare i file Packages e altri file simili nella directory /var/lib/apt/list . Le copie memorizzate us.archive.ubuntu.com_ubuntu_dists_utopic_main_binary-amd64_Packages nomi distintivi come us.archive.ubuntu.com_ubuntu_dists_utopic_main_binary-amd64_Packages , in quanto potrebbero esserci molti di questi file.

Hai chiesto specificamente su apt-cache . Interroga il database del pacchetto, ma non apporta alcuna modifica al sistema o scarica alcun file.

File scaricati specifici per il Software Center

Quando il Software Center di Ubuntu scarica i dati per il proprio uso, specifico e non relativo alla funzionalità generale APT (o dpkg ), li memorizza in /var/cache/software-center .

Ad esempio, sul mio sistema (e sulla maggior parte dei sistemi), tale cartella contiene una sottocartella xapian :

 [email protected]:/var/cache/software-center/xapian$ ls flintlock postlist.baseB record.baseB spelling.baseB termlist.baseB iamchert postlist.DB record.DB spelling.DB termlist.DB postlist.baseA record.baseA spelling.baseA termlist.baseA 

Il Centro software utilizza Xapian per indicizzare le informazioni per la ricerca rapida.

File scaricati per altre utilità correlate

Alcune utilità aggiuntive che funzionano con il sistema APT scaricano e archiviano i file come parte della loro operazione. apt-file non è installato di default in Ubuntu, ma può essere installato dal file apt Installa il file apt pacchetto.

apt-file memorizza informazioni su quali file vengono forniti da quali pacchetti (anche per i pacchetti che non sono installati localmente). Ottiene queste informazioni sul contenuto dei pacchetti scaricando file di Contents compressi:

 $ sudo apt-file update Downloading complete file http://us.archive.ubuntu.com/ubuntu/dists/utopic/Contents-amd64.gz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 29.6M 100 29.6M 0 0 856k 0 0:00:35 0:00:35 --:--:-- 832k 

Quando apt-file update viene eseguito come root (come sopra), questi file vengono scaricati nella directory /var/cache/apt/apt-file . Per scoprire questo, ho eseguito:

 $ sudo updatedb $ locate Contents-amd64 /var/cache/apt/apt-file/us.archive.ubuntu.com_ubuntu_dists_utopic-proposed_Contents-amd64.gz /var/cache/apt/apt-file/us.archive.ubuntu.com_ubuntu_dists_utopic_Contents-amd64.gz 

Si noti che le informazioni fornite in questo post forniscono una serie di esempi di file di dati scaricati e archiviati dalle utilità di gestione dei pacchetti su Ubuntu, ma non dovrebbero essere considerati un elenco esauriente di casi in cui tali file vengono utilizzati e memorizzati.