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


Réponses:


21

Informations d'arrière-plan

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

dpkgest un programme qui installe et supprime des packages et maintient une base de données des packages installés, à quelles versions. Lorsqu'il installe des packages, il le fait à partir de .debfichiers d'archives. Ces archives sont la façon dont les packages sont distribués.

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

APT recherche et télécharge les packages et s'exécute dpkgcorrectement pour les installer, les mettre à niveau et les supprimer. APT n'est pas vraiment un logiciel unique, bien qu'il existe un package aptInstaller apt qui fournit ses parties essentielles.

APT comprend une bibliothèque ( libapt-pkg ) qui fournit des fonctionnalités de base, accessibles par divers outils. Certains de ces outils, comme apt-get, sont également fournis par le package aptInstaller apt . D'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 stocker et récupérer des données sur les sources logicielles qui fournissent 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 comprend le suivi des packages nécessaires au fonctionnement des autres packages, ainsi que la sélection et l'installation automatiques des packages appropriés pour satisfaire ces dépendances.

Par exemple, lorsque je dis à l' apt-getutilitaire d'installer le paquet chocolate-doomInstaller Chocolate-doom , il détermine quels autres paquets doivent être installés pour qu'il fonctionne, et les récupérera et les installera automatiquement aussi:

$ 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 logiciel Updater / Update Manager et Synaptic remplissent des fonctions similaires à apt-get. Ils utilisent également le système APT - en combinant l' observation de ses règles et l' utilisation des fonctionnalités fournies par les bibliothèques de base - pour changer les packages installés, pour donner à l'utilisateur ce qu'il / elle veut (généralement), de telle sorte que les choses (généralement) continuer à travailler.

Comment et quand le /var/cache/apt/archivesdossier est utilisé

Lorsque apt-get, aptitude, Software Center , Synaptic , Software Updater / Update Manager , ou tout autre package téléchargements utilitaires de gestion des paquets (et les autres paquets dont ils dépendent) de configurées sources de logiciels et les installe, les paquets téléchargés ( à savoir 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 n'entraîne pas une copie de celui-ci dans /var/cache/apt/archives. Mais lorsqu'un programme qui utilise ou implémente le système APT de résolution automatique des dépendances et de récupération de packages télécharge des packages, c'est là qu'il les stocke.

Bien que les fichiers .deb des packages téléchargés automatiquement soient stockés et installés à partir de /var/cache/apt/archives, ils ne sont pas réellement téléchargés directement à cet emplacement. Au lieu de cela, des téléchargements de fichiers .deb incomplets (c'est-à-dire en cours) existent /var/cache/apt/archives/partialet sont ensuite déplacés vers une /var/cache/apt/archivesfois terminé.

Les fichiers du package .deb restent en cache /var/cache/apt/archivesmême après une installation réussie au cas où ils seraient nécessaires pour une utilisation future. Mais vous pouvez supprimer en toute sécurité les fichiers .deb qui sont assez vieux avec lesquels ils ne seront probablement plus nécessaires sudo apt-get autoclean, ou effacer .debentièrement les fichiers mis en cache avec sudo apt-get clean. Voir man apt-getpour plus d'informations.

Pour illustrer la fonction sudo apt-get autocleanet les commandes similaires, ainsi que pour déterminer si vous souhaitez les exécuter, vous pouvez simuler leurs actions en les exécutant ensuite avec le -sdrapeau. Il est préférable de passer ce drapeau avant le autocleanverbe d'action (ou autre). Il n'est généralement pas nécessaire d'exécuter un utilitaire en tant que root avec sudolors de l'utilisation -s, car aucune modification réelle n'est en cours.

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 packages répertoriés ne seront pas désinstallés ; à la place, seuls les fichiers .deb mis en cache seront supprimés. (En fait, rien ne s'est produit 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 autre) n'est pas réellement exécuté à partir du fichier .deb qui le fournit. Comme indiqué dans la section Informations générales , 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 qui sont installés à partir des packages .deb ne sont pas téléchargés vers leur emplacement actuel - ils leur sont plutôt extraits des fichiers .deb qui les fournissent (ou peut-être spécialement créés lors de l'installation ou après, 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 des packages. Souvent, d'autres fichiers téléchargés fournissent des informations sur l'emplacement des packages.

Par exemple, lorsque je cours sudo apt-get update, la sortie comprend des lignes comme:

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

Cela signifie qu'un fichier comme http://us.archive.ubuntu.com/ubuntu/dists/utopic/main/binary-amd64/Packages.bz2 a été téléchargé et examiné pour aider à mettre à jour la base de données APT avec des informations sur les packages disponibles ( et dans quelles versions) de cette source logicielle particulière. Vous pouvez trouver des fichiers Packages et d'autres fichiers de ce type dans le /var/lib/apt/listrépertoire. Les copies qui y sont stockées portent des noms distinctifs comme us.archive.ubuntu.com_ubuntu_dists_utopic_main_binary-amd64_Packages, car il peut y avoir de nombreux fichiers de ce type.

Vous avez posé une question apt-cacheprécise. Il interroge la base de données du package, mais n'apporte aucune modification au système ni ne télécharge aucun fichier.

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

Lorsque l'Ubuntu Software Center télécharge des données pour son propre usage, qui lui sont propres et ne concernent pas les fonctionnalités générales APT (ou dpkg), il les stocke /var/cache/software-center.

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

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 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 qui fonctionnent avec le système APT téléchargent et stockent des fichiers dans le cadre de leur fonctionnement. apt-filen'est pas installé par défaut dans Ubuntu, mais peut être installé à partir du package apt-fileInstaller le fichier apt .

apt-filestocke 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 packages en téléchargeant des Contentsfichiers 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 updateest exécuté en tant que root (comme ci-dessus), ces fichiers sont téléchargés dans le /var/cache/apt/apt-filerépertoire. 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 post donnent un certain nombre d'exemples de fichiers de données téléchargés et stockés par les utilitaires de gestion de packages sur Ubuntu, mais ne doivent pas être considérés comme une liste exhaustive des cas où ces fichiers sont utilisés et stockés.


Merci. Est-ce que apt-cache ou / et apt-fileaussi télécharger beaucoup de choses? Si oui, où sont-ils?
Tim

"Mais lorsqu'un programme qui utilise ou implémente le système APT de résolution automatique des dépendances et de récupération des packages télécharge les packages, c'est là qu'il les stocke." signifier?
Tim

@Tim J'ai considérablement élargi ma réponse, d'une manière qui, je l'espère, répond correctement à ces questions (et plus). Comme toujours, vos commentaires sont les bienvenus - surtout si quelque chose n'est pas clair.
Eliah Kagan du

Merci "apt-cache interroge la base de données du package", la base de données est-elle en ligne ou sur l'ordinateur local? Apt-cache doit-il avoir accès à Internet?
Tim

1
@Orian (je suis content que cette réponse ait aidé!) Vous pouvez cliquer sur l'étoile de la question. C'est juste en dessous du score de la question et des flèches de vote. Ensuite, la question apparaît dans l' onglet Favoris de votre profil . Seules les questions peuvent être favorisées. Dans le cas de cette réponse, c'est actuellement la seule sur la question. D'autres peuvent être publiés - bien que vous souhaitiez probablement les consulter également, car parfois de nouvelles réponses contiennent des informations sur les nouveaux développements dans un sujet. Vous pouvez utiliser les signets de votre navigateur, qui fonctionnent même pour les réponses. Utilisez le lien de partage sous la réponse pour ouvrir la page à une réponse spécifique.
Eliah Kagan
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.