2009-12-14 06:49:35 +0000 2009-12-14 06:49:35 +0000
295
295

Comment lister les fichiers d'un paquet Debian sans install

Cette commande ne peut lister que le contenu des paquets installés,

dpkg -L PACKAGENAME

mais comment lister le contenu d'un paquet non installé, pour prévisualiser/examiner le paquet ?

Odpowiedzi (8)

359
359
359
2009-12-14 15:42:54 +0000

dpkg -c (ou --contents) liste le contenu d'un fichier paquet .deb (c'est un frontal à dpkg-deb.)

dpkg -c package_file.deb

Pour travailler directement avec des noms de paquets plutôt que des fichiers paquets, vous pouvez utiliser apt-file. (Vous devrez peut-être d'abord installer le paquet apt-file.)

sudo apt-file update        
apt-file list package_name

Comme indiqué dans le premier commentaire, le fichier apt-file liste le contenu des paquets dans vos dépôts Apt déjà configurés. Il n'est pas important qu'un paquet particulier soit ou non installé.

58
58
58
2009-12-14 08:14:19 +0000

Utilisez --contents au lieu de -L :

dpkg --contents PACKAGENAME

Lorsqu'il est utilisé de cette manière, dpkg agit comme un frontal à dpkg-deb, utilisez donc man dpkg-deb pour voir toutes les options.

Vous pouvez également utiliser un navigateur d'archives pour voir le contenu du paquet.

23
23
23
2009-12-14 14:34:45 +0000

dpkg --contents vous permettra de voir le paquet désinstallé. Si le .deb n'est pas encore sur votre système, faites

apt-get --download-only install pkgname

Le paquet sera téléchargé sur /var/cache/apt/archives mais pas installé.

15
15
15
2013-06-01 13:57:56 +0000

Le meilleur moyen serait de parcourir directement le dépôt de paquets :

http://packages.debian.org/[distro name]/all/[package name]/filelist

Exemple :

http://packages.debian.org/wheezy/all/transmission-common/filelist

8
8
8
2015-04-21 21:44:25 +0000

J'ai pris @baldoz’s http idea et l'ai généralisé pour Ubuntu et Debian, j'ai ajouté un peu de sed et l'ai enveloppé dans une fonction bash sur une ligne :

function deb_list () { curl -s $(lsb_release -si | sed -e 's Ubuntu https://packages.ubuntu.com ' -e 's Debian https://packages.debian.org ')/$(lsb_release -sc)/all/$1/filelist | sed -n -e '/<pre>/,/<\/pre>/p' | sed -e 's/<[^>]>//g' -e '/^$/d'; }

Usage :

$ deb_list curl
/usr/bin/curl
/usr/share/doc/curl/changelog.Debian.gz
/usr/share/doc/curl/copyright
/usr/share/doc/curl/NEWS.Debian.gz
/usr/share/man/man1/curl.1.gz

Même fonction sur plusieurs lignes :

function deb_list () {
    curl -s $(lsb_release -si \
                | sed -e 's Ubuntu https://packages.ubuntu.com ' \
                      -e 's Debian https://packages.debian.org '
              )/$(lsb_release -sc)/all/$1/filelist \
      | sed -n -e '/<pre>/,/<\/pre>/p' \
      | sed -e 's/<[^>]>//g' -e '/^$/d';
}

Expliqué :

  1. lsb_release -si renvoie “Ubuntu” ou “Debian” et remplace cela par l'url de base https://packages.ubuntu.com ou https://packages.debian.org
  2. lsb_release -sc renvoie le nom de code (par exemple “trusty”, “sid”, etc.) et l'utilise pour construire l'URL complète : https://packages.ubuntu.com/trusty/all/curl/filelist
  3. Récupérez cette URL avec curl et passez le html par trois commandes sed. La première capture uniquement la liste des fichiers (ce qui se trouve entre les balises <pre> et </pre>) ; la deuxième supprime toutes les balises html ; la troisième supprime toutes les lignes vierges.

Note : Il ne recherche pas les PPA, les dépôts alternatifs de sources apt et ne recherche que les paquets officiels disponibles pour la version de debian/ubuntu que vous exécutez.

5
5
5
2017-01-06 03:14:29 +0000

Pour tous ceux qui pourraient encore googler ce numéro en janvier 2017, vous pouvez avoir des trucs sympas avec les versions récentes d'apt et de dpkg dans Debian 8.5 sans rien télécharger.

Liste du contenu du fichier Deb sans téléchargement:

Localisez d'abord l'url complète du fichier deb :

root@debian:apt-get --print-uris download yade
'http://httpredir.debian.org/debian/pool/main/y/yade/yade_2016.06a-7_amd64.deb' yade_2016.06a-7_amd64.deb 1621148 SHA256:26c0d84484a92ae9c2828edaa63243eb764378d79191149970926aa3ec40cdd4

PS : –print-uris switch imprime l'url du paquet deb mais deb n'est pas téléchargé.

Ensuite, affichez le contenu du paquet deb sans le télécharger :

root@debian:curl -sL -o- "http://httpredir.debian.org/debian/pool/main/y/yade/yade_2016.06a-7_amd64.deb" |dpkg-deb -c /dev/stdin
drwxr-xr-x root/root 0 2016-12-10 22:18 ./
drwxr-xr-x root/root 0 2016-12-10 22:18 ./usr/
drwxr-xr-x root/root 0 2016-12-10 22:18 ./usr/bin/
-rwxr-xr-x root/root 13184 2016-12-10 22:18 ./usr/bin/yade
.........................more files listed bellow ......................

PS : Le même résultat peut être obtenu avec

root@debian:dpkg -c <(curl -sL -o- "http://httpredir.debian.org/debian/pool/main/y/yade/yade_2016.06a-7_amd64.deb")

*Extrayez un fichier du paquet deb ci-dessus, sans le télécharger. * Par exemple, nous voulons lire la page de manuel du paquet yade sans installer ce paquet et sans même télécharger le paquet deb. Le nom de fichier de la page de manuel à l'intérieur du paquet deb tel que conseillé par dpkg -c est ./usr/share/man/man1/yade.1.gz

Pour lire la page de manuel à la volée :

root@debian:curl -sL -o- "http://httpredir.debian.org/debian/pool/main/y/yade/yade_2016.06a-7_amd64.deb" |dpkg-deb --fsys-tarfile /dev/stdin |tar -xO ./usr/share/man/man1/yade.1.gz |man /dev/stdin

la page de manuel est affichée correctement en utilisant l'application man.

PS : Les tuyaux ci-dessus ne fonctionnent pas avec la commande ar.

root@debian:apt --version --> apt 1.4~beta2 (amd64)
root@debian:dpkg --version --> Debian 'dpkg' package management program version 1.18.18 (amd64).
root@debian:man --version --> man 2.7.6.1
root@debian:tar --version --> tar (GNU tar) 1.29
2
2
2
2014-06-27 15:28:37 +0000

Essayez :

apt-get download packages-name
dpkg --contents *.deb
1
1
1
2015-12-27 13:33:51 +0000

Il semble que ce ne soit pas possible avant de l'installer ou d'extraire la liste du fichier .deb.

Essayez la commande suivante :

dpkg --contents <(curl -s $(apt-get install --yes --no-download --reinstall --print-uris language-pack-en | tail -n1 | grep -o "http[^']"))

Changez language-pack-en avec le nom de votre paquet.

Il lit essentiellement le fichier .deb extrait via curl et exécute dpkg --contents FILE dessus. Vous pouvez également vérifier le contenu sans télécharger le fichier du paquet.

Donc si vous connaissez l'URL du fichier .deb, la commande shell suivante listera tous les fichiers du paquet :

dpkg -c <(curl -sL "http://httpredir.debian.org/debian/pool/main/a/avis/avis_1.2.2-4_all.deb")

Paramètres de boucle : -s - silencieux, -L - suit les liens déplacés.

Si vous ne connaissez pas l'URL, récupérez par : apt --print-uris, par exemple

apt --print-uris install avis | grep avis