Risposte:
Ci sono due cose in Ubuntu (e in Debian, su cui si basa Ubuntu) che sono comunemente chiamate "gestore dei 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 dai .deb
file di archivio. Questi archivi sono il modo in cui i pacchetti sono distribuiti.
dpkg
fa 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 dpkg
appropriato per installarli, aggiornarli e rimuoverli. APT non è in realtà un singolo software, sebbene esista un pacchetto 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 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-get
all'utility di installare il pacchetto chocolate-doom , 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.
/var/cache/apt/archives
viene utilizzata la cartellaQuando 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/partial
vengono quindi spostati al /var/cache/apt/archives
termine.
I file del pacchetto .deb rimangono memorizzati /var/cache/apt/archives
anche 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 autoclean
o cancellare completamente i .deb
file memorizzati nella cache 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, è possibile simulare le loro azioni eseguendo quindi con il -s
flag. È meglio passare questo flag prima del autoclean
(o qualunque altro) verbo di azione. 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 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.)
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/list
directory. 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-cache
specifiche. Interroga il database dei pacchetti, ma non apporta alcuna modifica al sistema né scarica alcun file.
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 xapian
sottocartella:
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.
Alcune utility aggiuntive che funzionano con il sistema APT scaricano e archiviano i file come parte del loro funzionamento. apt-file
non è installato di default in Ubuntu, ma può essere installato dal pacchetto apt-file .
apt-file
memorizza 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 Contents
file 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 /var/cache/apt/apt-file
directory. 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.
apt-cache
o / eapt-file
anche scaricare molte cose? Se si, dove sono?