web-dev-qa-db-fra.com

Pourquoi y a-t-il des fichiers deb dans / var / cache / apt / archives /?

Pourquoi y a-t-il des fichiers deb dans /var/cache/apt/archives/?

Dans quels cas les fichiers deb ont-ils été téléchargés dans ce répertoire?

11
Tim

Informations d'arrière-plan

Il y a deux choses dans Ubuntu (et dans Debian, sur lesquelles Ubuntu est basée) qui sont communément appelées "le gestionnaire de paquets": dpkg et APT.

dpkg est un programme qui installe et supprime les packages et maintient une base de données des packages installés et des versions correspondantes. Lorsqu'il installe des packages, il le fait à partir des fichiers d'archive .deb. Ces archives sont la façon dont les paquets sont distribués.

dpkg fait plus que copier (ou supprimer) des fichiers et mettre à jour sa base de données - il exécutera également les scripts d'installation et de suppression. Cela peut être considéré comme assez sophistiqué. Mais ce qu’il ne fera pas, c’est trouver et télécharger des paquets.

APT recherche et télécharge les packages et exécute dpkg de manière appropriée pour les installer, les mettre à niveau et les supprimer. APT n'est pas vraiment un logiciel, bien qu'il existe un apt Install apt paquet qui fournit ses parties essentielles.

APT comprend une bibliothèque ( libapt-pkg ) qui fournit des fonctionnalités essentielles, accessible par divers outils. Certains de ces outils, tels que apt-get, sont également fournis par le apt Install apt package. Les autres outils sont installés séparément. APT fournit également divers fichiers de configuration qui contrôlent le fonctionnement de sa bibliothèque principale et des programmes qui l'utilisent.

Plus que cela, APT est un système pour le stockage et la récupération de données sur les sources de logiciels fournissant quels packages dans quelles versions, et pour agir sur ces données pour effectuer automatiquement des tâches de gestion de packages, telles que l'installation et la mise à niveau de packages. Cela inclut le suivi des packages nécessaires au fonctionnement de autres , ainsi que la sélection et l'installation automatiques des packages appropriés pour satisfaire ces dépendances.

Par exemple, lorsque je dis à l'utilitaire apt-get d'installer le programme chocolate-Doom Install chocolate-Doom package, il détermine quels autres packages doivent être installés pour fonctionner, puis les récupère et les installe automatiquement:

$ 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.

Des outils graphiques tels que le centre logiciel, le programme de mise à jour de logiciels/gestionnaire de mise à jour et Synaptic remplissent des fonctions similaires à celles de apt-get. Ils utilisent également le système APT - en combinant l'observation de ses règles et en utilisant fonctionnalité fournie par les bibliothèques principales - pour changer les paquetages installés, pour donner à l'utilisateur ce qu'il/elle veut (généralement), de manière à ce que les choses continuent (normalement) à fonctionner.

Comment et quand le dossier /var/cache/apt/archives est utilisé

Lorsque apt-get , aptitude , Centre logiciel , Synaptic , Programme de mise à jour de logiciels/Gestionnaire de mise à jour , ou tout autre utilitaire de gestion de paquets télécharge les packages (et les autres packages dont ils dépendent) à partir de configurés sources logicielles et les installe, ainsi que les packages téléchargés (c'est-à-dire les fichiers d'archive .deb à partir desquels ils sont installés) sont stockés dans /var/cache/apt/archives.

Si vous avez un fichier .deb sur le disque et que vous l'installez avec dpkg , cela ne provoque pas la copie de celui-ci dans /var/cache/apt/archives. Mais quand un programme qui utilise ou implémente le système APT de résolution automatique des dépendances et de récupération de paquet télécharge des paquets, c'est là qu'il les stocke.

Les fichiers .deb des packages téléchargés automatiquement sont stockés dans et installés à partir de /var/cache/apt/archives, mais ils ne sont pas téléchargés directement à cet emplacement. Au lieu de cela, des téléchargements de fichiers .deb incomplets (c.-à-d. En cours) existent dans /var/cache/apt/archives/partial et sont ensuite déplacés vers /var/cache/apt/archives lorsque vous avez terminé.

Les fichiers de package .deb restent mis en cache dans /var/cache/apt/archives même après une installation réussie au cas où ils seraient nécessaires pour une utilisation ultérieure. Cependant, vous pouvez supprimer en toute sécurité des fichiers .deb suffisamment anciens, avec Sudo apt-get autoclean, ou effacer entièrement les fichiers .deb mis en cache avec Sudo apt-get clean. Voir man apt-get pour plus d'informations.

Pour illustrer la fonction de Sudo apt-get autoclean et des commandes similaires, ainsi que pour déterminer si vous souhaitez les exécuter, vous pouvez simuler leurs actions en exécutant ensuite le Drapeau -s. Il est préférable de passer cet indicateur avant le verbe d'action autoclean (ou autre). Il n'est généralement pas nécessaire d'exécuter un utilitaire en tant qu'utilisateur root avec Sudo lors de l'utilisation de -s, car aucune modification n'a été apportée.

Par exemple, sur mon système:

$ 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]
    ....

Les paquets listés ne seraient pas désinstallés ; à la place, seuls les fichiers .deb mis en cache seraient supprimés. (En fait, rien ne s'est passé lorsque j'ai exécuté cette commande, car il s'agissait simplement d'une simulation.)

Autres fichiers téléchargés

Le logiciel installé via dpkg (via APT ou autrement) n'est pas réellement exécuté à partir du fichier .deb qui le fournit. Comme indiqué dans la section Informations de base , les fichiers .deb sont extraits. C'est pourquoi ils peuvent être supprimés et le package installé continue de fonctionner.

Les fichiers du système installés à partir de packages .deb ne sont pas téléchargés vers leurs emplacements actuels. Ils leur sont plutôt extraits des fichiers .deb qui les fournissent (ou peut-être spécialement créés lors de l'installation ou ultérieurement, comme c'est le cas pour certains fichiers de configuration).

Mais les fichiers .deb ne sont pas les seuls fichiers téléchargés par les utilitaires de gestion de paquets. Souvent, d'autres fichiers téléchargés fournissent des informations sur l'emplacement des packages.

Par exemple, lorsque je lance Sudo apt-get update, la sortie comprend des lignes telles que:

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

Cela signifie qu'un fichier tel que http://us.archive.ubuntu.com/ubuntu/dists/utopic/main/binary-AMD64/Packages.bz2 a été téléchargé et examiné pour aider à mettre à jour le APT base de données contenant des informations sur les paquetages disponibles (et dans quelles versions) à partir de cette source de logiciel particulière. Vous pouvez trouver des fichiers de packages et d'autres fichiers du même genre dans le répertoire /var/lib/apt/list. Des noms distinctifs sont attribués aux copies qui y sont stockées, telles que us.archive.ubuntu.com_ubuntu_dists_utopic_main_binary-AMD64_Packages, car il peut y en avoir beaucoup.

Vous avez spécifiquement posé des questions sur apt-cache. Il interroge la base de données du paquet, mais n'apporte aucune modification au système et ne télécharge aucun fichier.

Fichiers téléchargés spécifiques au Centre de logiciel

Lorsque le Centre de logiciel Ubuntu télécharge des données pour son propre usage, qui lui sont propres et qui ne concernent pas la fonctionnalité générale APT (ou dpkg), il les stocke dans /var/cache/software-center.

Par exemple, sur mon système (et sur la plupart des systèmes), ce dossier contient un sous-dossier xapian:

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

Le centre de logiciel utilise Xapian pour indexer les informations pour une recherche rapide.

Fichiers téléchargés pour d'autres utilitaires associés

Certains utilitaires supplémentaires fonctionnant avec le système APT téléchargent et stockent des fichiers dans le cadre de leur fonctionnement. apt-file n'est pas installé par défaut dans Ubuntu, mais peut l'être à partir du fichier apt-file Install apt-file package.

apt-file stocke des informations sur les fichiers fournis par quels packages (même pour les packages qui ne sont pas installés localement). Il obtient ces informations sur le contenu des paquets en téléchargeant les fichiers Contents compressés:

$ 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

Lorsque apt-file update est exécuté en tant que root (comme ci-dessus), ces fichiers sont téléchargés dans le répertoire /var/cache/apt/apt-file. Pour découvrir cela, j'ai couru:

$ 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

Notez que les informations fournies dans ce message donnent un certain nombre d'exemples de fichiers de données téléchargés et stockés par les utilitaires de gestion de paquets sur Ubuntu, mais ne doivent pas être considérés comme une liste exhaustive d'instances dans lesquelles ces fichiers sont utilisés. et stocké

21
Eliah Kagan