Nous savions déjà comment lister les packages installés et aussi comment lister les dépendances d'un paquet sous Linux. Aujourd'hui, nous allons voir comment lister le contenu d'un paquet sous Linux. Peu importe que le paquet soit installé ou non. Il est possible de lire le contenu d'un package installé ou non installé.
Sous Linux et Unix, la plupart des programmes ne se retrouvent généralement pas dans un seul répertoire. Lorsque vous installez un package, tous les fichiers de ce package sont dispersés dans le système de fichiers et enregistrés dans des chemins différents. Habituellement, les fichiers exécutables (par exemple les binaires/scripts) sont stockés dans les répertoires '/bin' ou '/usr/bin' ou '/usr/local/bin', les fichiers de bibliothèque dans '/usr/lib', les fichiers de configuration dans '/etc', données statiques dans '/usr/share', etc. Trouvons maintenant la liste des fichiers dans un paquet et où sont-ils réellement stockés sous Linux.
Répertorier le contenu d'un paquet sous Linux
Tout d'abord, nous verrons comment lire le contenu d'un paquet dans les systèmes basés sur DEB, par exemple Ubuntu.
Répertorier le contenu d'un paquet installé dans Ubuntu
J'ai déjà installé Microsoft Teams package sur mon bureau Ubuntu 20.04.
Pour afficher le contenu du package Microsoft Teams, exécutez simplement :
$ dpkg -L teams
Exemple de résultat :
/. /usr /usr/bin /usr/bin/teams /usr/share /usr/share/applications /usr/share/applications/teams.desktop /usr/share/pixmaps /usr/share/pixmaps/teams.png /usr/share/teams . . . /usr/share/teams/swiftshader/libEGL.so /usr/share/teams/swiftshader/libGLESv2.so /usr/share/teams/teams /usr/share/teams/v8_context_snapshot.bin
Voir? La sortie ci-dessus montre les fichiers installés par le package Teams et leur emplacement dans mon système Ubuntu.
Voici une autre façon d'afficher le contenu d'un paquet installé dans Ubuntu :
$ dpkg-query -L teams
Répertorier le contenu d'un paquet non installé dans Ubuntu
Comme je l'ai déjà dit, les commandes ci-dessus affichent le contenu d'un package installé. Que faire si le package n'est pas installé et que vous souhaitez lire son contenu ? C'est possible aussi ! Vous pouvez trouver quels fichiers seront installés par un paquet avant même de l'installer.
Téléchargez d'abord le fichier .deb. J'ai déjà téléchargé le fichier .deb de l'application Teams. Accédez à l'emplacement où vous avez téléchargé le fichier .deb et exécutez la commande suivante pour afficher son contenu :
$ dpkg --contents teams_1.2.00.32451_amd64.deb
Ou,
$ dpkg -c teams_1.2.00.32451_amd64.deb
Exemple de résultat :
drwxr-xr-x root/root 0 2019-11-20 20:55 ./ drwxr-xr-x root/root 0 2019-11-20 20:54 ./usr/ drwxr-xr-x root/root 0 2019-11-20 20:54 ./usr/bin/ -rwxr-xr-x root/root 286 2019-11-20 20:54 ./usr/bin/teams drwxr-xr-x root/root 0 2019-11-20 20:54 ./usr/share/ drwxr-xr-x root/root 0 2019-11-20 20:54 ./usr/share/applications/ -rw-r--r-- root/root 352 2019-11-20 20:54 ./usr/share/applications/teams.desktop . . . -rwxr-xr-x root/root 286264 2019-11-20 20:54 ./usr/share/teams/swiftshader/libEGL.so -rwxr-xr-x root/root 2677296 2019-11-20 20:54 ./usr/share/teams/swiftshader/libGLESv2.so -rwxr-xr-x root/root 114944384 2019-11-20 20:54 ./usr/share/teams/teams -rw-r--r-- root/root 1040824 2019-11-20 20:54 ./usr/share/teams/v8_context_snapshot.bin
Alternativement, vous pouvez le faire en utilisant apt-file outil également.
Installez le fichier apt comme indiqué ci-dessous s'il n'est pas déjà installé :
$ sudo apt install apt-file
Si vous venez d'installer apt-file, le cache à l'échelle du système peut être vide. Vous devez exécuter "apt-file update" en tant que root pour mettre à jour le cache. Vous pouvez également exécuter "apt-file update" en tant qu'utilisateur normal pour utiliser un cache dans le répertoire personnel de l'utilisateur.
Mettons à jour le cache de la base de données à l'aide de la commande :
$ sudo apt-file update
Maintenant, listez le contenu d'un paquet installé, par exemple vim, comme ci-dessous :
$ apt-file list vim
Exemple de résultat :
vim: /usr/bin/vim.basic vim: /usr/share/bug/vim/presubj vim: /usr/share/bug/vim/script vim: /usr/share/doc/vim/NEWS.Debian.gz vim: /usr/share/doc/vim/changelog.Debian.gz vim: /usr/share/doc/vim/copyright vim: /usr/share/lintian/overrides/vim
L'outil apt-file est également utilisé pour rechercher les packages qui fournissent un fichier spécifique. Par exemple, recherchez le package qui fournit alisp.h fichier avec la commande :
$ apt-file find alisp.h
Ou,
$ apt-file search alisp.h
Exemple de résultat :
libasound2-dev: /usr/include/alsa/alisp.h
Comme vous pouvez le voir, le package "libasound2-dev" fournit le fichier alisp.h.
Pour plus de détails, consultez le lien suivant.
- Comment trouver le package qui fournit un fichier spécifique sous Linux
Voici quelques façons d'afficher le contenu d'un package dans les systèmes basés sur DEB. Voyons maintenant comment répertorier le contenu du package dans les systèmes basés sur RPM, par exemple CentOS.
Répertorier le contenu d'un package installé/non installé dans CentOS
Dans les systèmes basés sur RPM comme CentOS, nous pouvons trouver le contenu d'un paquet en utilisant "repoquery" commande.
Le package "yum-utils" fournit la commande repoquery, alors installons-le à l'aide de la commande :
$ sudo yum install yum-utils
Découvrons maintenant le contenu du package de l'éditeur "nano" à l'aide de la commande :
# repoquery --installed --list nano
Ou,
# repoquery --list nano
Ou,
# repoquery -l nano
Exemple de résultat :
Last metadata expiration check: 0:03:02 ago on Tuesday 16 June 2020 06:01:46 PM IST. /etc/nanorc /usr/bin/nano /usr/bin/rnano /usr/lib/.build-id /usr/lib/.build-id/d3 . . . /usr/share/nano/tcl.nanorc /usr/share/nano/tex.nanorc /usr/share/nano/texinfo.nanorc /usr/share/nano/xml.nanorc
De la même manière, vous pouvez répertorier le contenu d'un fichier non installé. Accédez à l'emplacement où vous avez téléchargé le fichier rpm et affichez son contenu comme ci-dessous :
# repoquery --list nano-2.9.8-1.el8.x86_64.rpm
Lire connexe :
- Comment télécharger un package RPM avec toutes les dépendances dans CentOS
J'espère que cela vous aidera.