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


Risposte:


21

Informazioni di base

Ci sono due cose in Ubuntu (e in Debian, su cui si basa Ubuntu) che sono comunemente chiamate "gestore dei pacchetti": dpkge 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 dai .debfile di archivio. Questi archivi sono il modo in cui i pacchetti sono distribuiti.

dpkgfa molto di più che copiare (o eliminare) file e aggiornare il proprio 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 in modo dpkgappropriato per installarli, aggiornarli e rimuoverli. APT non è in realtà un singolo software, sebbene esista un pacchetto aptInstalla apt che fornisce le sue parti essenziali.

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

Inoltre, APT è un sistema per l'archiviazione e il recupero di dati su quali origini software forniscono quali pacchetti in quali versioni e per agire su tali dati per eseguire automaticamente 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 selezionare e installare automaticamente i pacchetti appropriati per soddisfare queste dipendenze.

Ad esempio, quando dico apt-getall'utility di installare il pacchetto chocolate-doomInstalla la rovina del cioccolato , scopre quali altri pacchetti devono essere installati affinché funzioni, e li recupererà automaticamente e li installerà 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 svolgono funzioni simili a apt-get. Usano anche il sistema APT - attraverso una combinazione di osservazione delle sue regole e utilizzo delle funzionalità fornite dalle librerie principali - per cambiare quali pacchetti sono installati, per dare all'utente ciò che (di solito) vuole, in modo tale che le cose (di solito) continuano a funzionare.

Come e quando /var/cache/apt/archivesviene utilizzata la cartella

Quando apt-get, aptitude, Software Center , Synaptic , Software Updater Update Manager / o qualsiasi altro pacchetto download di utility di gestione dei pacchetti (e gli altri pacchetti che dipendono) dal configurati fonti di software e li installa, i pacchetti scaricati (ad esempio, i file di archivio .deb da cui sono installati) sono memorizzati /var/cache/apt/archives.

Se si dispone di un file .deb sul disco e lo si installa con dpkg, ciò non causa una copia di esso /var/cache/apt/archives. Ma quando un programma che utilizza o implementa il sistema APT di risoluzione automatica delle dipendenze e download dei pacchetti scarica pacchetti, è lì che li memorizza.

Mentre i file .deb per i pacchetti scaricati automaticamente vengono archiviati e installati da /var/cache/apt/archives, in realtà non vengono scaricati direttamente in quella posizione. Al contrario, esistono download di file .deb incompleti (ovvero in corso) in cui /var/cache/apt/archives/partialvengono quindi spostati al /var/cache/apt/archivestermine.

I file del pacchetto .deb rimangono memorizzati /var/cache/apt/archivesanche dopo una corretta installazione nel caso siano necessari per un uso futuro. Ma puoi rimuovere in modo sicuro i file .deb che sono abbastanza vecchi con cui è improbabile che siano nuovamente necessari sudo apt-get autocleano cancellare completamente i .debfile memorizzati nella cache sudo apt-get clean. Vedi man apt-getper maggiori informazioni.

Per illustrare la funzione di sudo apt-get autocleane comandi simili, nonché per determinare se si desidera eseguirli, è possibile simulare le loro azioni eseguendo quindi con il -sflag. È meglio passare questo flag prima del autoclean(o qualunque altro) verbo di azione. In genere non è necessario eseguire un'utilità come root con sudoquando 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 verranno disinstallati ; invece, verranno eliminati solo i file .deb memorizzati nella cache. (In realtà non è accaduto 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 in altro modo) 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 che vengono installati dai pacchetti .deb non vengono scaricati nelle loro posizioni correnti, ma vengono estratti dai file .deb che li forniscono (o forse creati appositamente durante l'installazione o in seguito, come nel 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 sulla posizione dei pacchetti.

Ad esempio, quando corro sudo apt-get update, l'output include linee 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 software. È possibile trovare i file dei pacchetti e altri file simili nella /var/lib/apt/listdirectory. Le copie memorizzate lì hanno nomi distinti come us.archive.ubuntu.com_ubuntu_dists_utopic_main_binary-amd64_Packages, in quanto potrebbero esserci molti di questi file.

Hai chiesto informazioni apt-cachespecifiche. Interroga il database dei pacchetti, ma non apporta alcuna modifica al sistema né scarica alcun file.

File scaricati specifici per il Software Center

Quando Ubuntu Software Center scarica i dati per uso proprio, specifici per esso e non relativi alla funzionalità APT generale (o dpkg), li archivia /var/cache/software-center.

Ad esempio, sul mio sistema (e sulla maggior parte dei sistemi), quella cartella contiene una xapiansottocartella:

ek@Ilex:/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 Software Center utilizza Xapian per indicizzare le informazioni per una rapida ricerca.

File scaricati per altre utilità correlate

Alcune utility aggiuntive che funzionano con il sistema APT scaricano e archiviano i file come parte del loro funzionamento. apt-filenon è installato di default in Ubuntu, ma può essere installato dal pacchetto apt-fileInstalla apt-file .

apt-filememorizza informazioni su quali file sono forniti da quali pacchetti (anche per i pacchetti che non sono installati localmente). Ottiene queste informazioni sul contenuto dei pacchetti scaricando i Contentsfile 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 updateviene eseguito come root (come sopra), questi file vengono scaricati nella /var/cache/apt/apt-filedirectory. Per scoprirlo, ho corso:

$ 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 utility di gestione dei pacchetti su Ubuntu, ma non devono essere considerati un elenco esaustivo di casi in cui tali file vengono utilizzati e archiviati.


Grazie. Fare apt-cache o / e apt-fileanche scaricare molte cose? Se si, dove sono?
Tim

Cosa significa "Ma quando un programma che utilizza o implementa il sistema APT di risoluzione automatica delle dipendenze e download dei pacchetti scarica pacchetti, è lì che li memorizza." significare?
Tim

@Tim Ho ampliato considerevolmente la mia risposta, in modo che spero risponda correttamente a quelle domande (e altro). Come sempre il tuo feedback è molto gradito, soprattutto se qualcosa non è chiaro.
Eliah Kagan,

Grazie a "apt-cache interroga il database dei pacchetti", il database è online o sul computer locale? Apt-cache necessita dell'accesso a Internet?
Tim

1
@Orian (sono contento che questa risposta abbia aiutato!) Puoi fare clic sulla stella sulla domanda. È appena sotto il punteggio della domanda e le frecce di voto. Quindi la domanda appare nella scheda dei preferiti del tuo profilo . Solo le domande possono essere favorite. Nel caso di questa risposta, è attualmente l'unico sulla domanda. Altri potrebbero essere pubblicati, anche se probabilmente vorrai dare un'occhiata anche a quelli, poiché a volte nuove risposte contengono informazioni sui nuovi sviluppi in un argomento. Puoi usare i segnalibri del tuo browser, che funzionano anche per le risposte. Usa il link di condivisione sotto la risposta per aprire la pagina con una risposta specifica.
Eliah Kagan,
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.