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

Wie listet man Dateien eines Debian-Pakets ohne Installation auf

Dieser Befehl kann nur den Inhalt von installierten Paketen auflisten,

dpkg -L PACKAGENAME

aber wie listet man den Inhalt eines nicht installierten Pakets auf, um das Paket anzuschauen/zu untersuchen?

Antworten (8)

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

dpkg -c (oder --contents) listet den Inhalt einer .deb-Paketdatei auf (Es ist ein Frontend zu dpkg-deb.)

dpkg -c package_file.deb

Um direkt mit Paketnamen statt Paketdateien zu arbeiten, können Sie apt-file verwenden. (Möglicherweise müssen Sie zuerst das Paket apt-file installieren.)

sudo apt-file update        
apt-file list package_name

Wie im ersten Kommentar erwähnt, listet apt-file den Inhalt von Paketen in Ihren bereits konfigurierten Apt-Repositorys auf. Dabei ist es unerheblich, ob ein bestimmtes Paket installiert ist oder nicht.

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

Verwenden Sie --contents anstelle von -L:

dpkg --contents PACKAGENAME

Bei dieser Verwendung fungiert dpkg als Front-End zu dpkg-deb, also verwenden Sie man dpkg-deb, um alle Optionen zu sehen.

Sie können auch einen Archivbrowser verwenden, um den Paketinhalt anzuzeigen.

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

dpkg --contents lässt Sie einen Blick auf das deinstallierte Paket werfen. Wenn sich die .deb noch nicht auf Ihrem System befindet, tun Sie

apt-get --download-only install pkgname

Das Paket wird nach /var/cache/apt/archives heruntergeladen, aber nicht installiert.

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

Am besten wäre es, direkt das Paket-Repository zu durchsuchen:

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

Beispiel:

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

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

Ich nahm @baldoz’ http-Idee und verallgemeinerte sie für Ubuntu und Debian, fügte ein wenig sed hinzu und verpackte sie in eine Bash-Funktion mit einer Zeile:

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'; }

Verwendung:

Dieselbe Funktion auf mehreren Zeilen:

$ 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

Erklärt:

  1. lsb_release -si gibt “Ubuntu” oder “Debian” zurück, ersetzen Sie dies durch die Basis-URL https://packages.ubuntu.com oder https://packages.debian.org
  2. lsb_release -sc gibt den Codenamen zurück (z.B. “trusty”, “sid”, usw.) verwenden Sie dies, um die vollständige URL zu erzeugen: https://packages.ubuntu.com/trusty/all/curl/filelist
  3. Holen Sie diese URL mit curl und leiten Sie die html durch drei sed-Befehle weiter. Der erste Befehl erfasst nur die Dateiliste (was zwischen den Tags <pre> und </pre> liegt); der zweite Befehl entfernt alle html-Tags; der dritte Befehl entfernt alle leeren Zeilen.

Anmerkung: Er durchsucht nicht die PPAs, alternative apt-Quellen-Repositorien und fragt nur offizielle Pakete ab, die für die Veröffentlichung von debian/ubuntu, die Sie ausführen, verfügbar sind.

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

F�r all die Leute, die diese Ausgabe im Januar 2017 noch googeln könnten, können Sie einige coole Sachen mit neueren Versionen von apt und dpkg in Debian 8.5 haben, ohne etwas herunterzuladen.

Inhalt der Deb-Datei ohne Herunterladen auflisten:

Suchen Sie zuerst die vollstÃ?ndige URL der deb-Datei :

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-Schalter gibt die URL des deb-Pakets aus, aber deb wird nicht heruntergeladen.

Dann den Inhalt des deb-Pakets anzeigen, ohne es herunterzuladen:

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: Das gleiche Ergebnis kann mit

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

erzielt werden *Extrahieren Sie eine Datei aus dem obigen deb-Paket , ohne es herunterzuladen. * Wir wollen z.B. die man page des Paketes yade lesen, ohne dieses Paket zu installieren und ohne das deb-Paket herunterzuladen.

Der Dateiname der man page innerhalb des deb-Paketes, wie von dpkg -c empfohlen, ist ./usr/share/man/man1/yade.1.gz

Um die man page on the fly zu lesen:

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

man page wird korrekt mit der man-Anwendung angezeigt.

PS: Die obigen pipes funktionieren nicht mit dem ar-Befehl.

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

Versuchen Sie:

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

Scheint nicht möglich zu sein, bevor es nicht zuerst installiert oder die Liste aus der Datei .deb extrahiert wurde.

Versuchen Sie den folgenden Befehl:

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

Ändern Sie language-pack-en mit Ihrem Paketnamen

Im Grunde liest es die Datei .deb, die über curl extrahiert wurde, und führen Sie dpkg --contents FILE darauf aus.


Sie können den Inhalt auch überprüfen, ohne die Paketdatei herunterzuladen.

Wenn Sie also die URL der Datei .deb kennen, listet der folgende Shell-Befehl alle Paketdateien auf:

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

Curl params: -s - silent, -L - follow moved links.

Wenn Sie die URL nicht kennen, holen Sie sich: apt --print-uris, z.B.

apt --print-uris install avis | grep avis