web-dev-qa-db-fra.com

Lire l'état complet de la base de données dpkg sans le programme dpkg

Depuis une clé USB en direct, et sans utiliser les programmes installés d'Ubuntu tels que dpkg, dpkg-query, dselect, aptitude, apt-get ou tout autre (car ils sont tous Illegal instruction cassé ), comment lire les listes de paquetages que apt lit, en tant que liste afin de cataloguer les paquetages installés, à réinstaller ultérieurement?

Reading package lists... Done
Building dependency tree
Reading state information... Done

où est la base de données locale des paquets? est presque une réponse parfaite:

/var/lib/dpkg/status est modifié par dpkg si vous modifiez l’état d’un paquet, c’est-à-dire que vous l’installez, le supprimez, le marquez pour une action, ...

  • Je ne veux pas simplement lister les paquets "modifiés", mais aussi les paquets dépendants, tout l'état du système, etc. Est-ce que cela est contenu par dpkg/status?

    • Sur un autre système en bon état, ce fichier contient ~ 3800 Package: entrées; sur le système cible, il possède 3 600 entrées Package: et sur le Live USB, il ne compte que 2 000 entrées. Cela semble juste, sauf que je crains que cela ne répertorie pas tous les paquets.
  • Je ne cherche ni le cache .deb téléchargé, ni le cache pour dpkg/apt qui contient des fichiers de données temporaires - ceux-ci ne donnent pas l'état complet du système.

  • /var/lib/apt/lists semble contenir une liste de sources et de paquetages, ce qui est presque parfait, sauf que de nombreuses analyses sont nécessaires pour obtenir une liste de noms de paquets. Est-ce la meilleure option?

Le fichier /var/cache/apt/pkgcache.bin existe, mais comme il s'agit d'un binaire généré, je ne pense pas que le copier dans une nouvelle installation suffira.

1
cat

Voir man dpkg :

Les autres fichiers répertoriés ci-dessous se trouvent dans leurs répertoires par défaut. Voir l'option _--admindir_ pour savoir comment modifier l'emplacement de ces fichiers.

  • _/var/lib/dpkg/available_ Liste des packages disponibles.

  • _/var/lib/dpkg/status_ États des packages disponibles.

    Ce fichier contient des informations indiquant si un package doit ou non être supprimé, s'il est installé ou non, etc. Voir la section Informations sur les packages pour plus d'informations. Le fichier d'état est sauvegardé quotidiennement dans _/var/backups_. Cela peut être utile s'il est perdu ou corrompu en raison de problèmes liés aux systèmes de fichiers.

Vous pouvez cesser de vous inquiéter. Si le paquet n'est pas dans status, dpkg ne le sait pas. Du tout.


En passant, les "listes de paquets" dont apt s’occupe sont une chose différente: ce sont les listes qu’il a téléchargées à partir des sources dans _/etc/apt/sources.list_, etc. et qui sont dans _/var/lib/apt/lists_. Ceux-ci contiennent des informations sur les paquets dans les référentiels et n'ont rien sur le système local.


À propos de votre problème actuel, vous pouvez utiliser le dpkg du système actif pour lire ce fichier, à l'aide de l'option _--admindir_ mentionnée ci-dessus.

2
muru