it-swarm.com.de

So listen Sie Dateien eines Debian-Pakets ohne Installation auf

Dieser Befehl kann nur den Inhalt installierter Pakete auflisten.

dpkg -L PACKAGENAME

aber wie kann man den Inhalt eines nicht installierten Pakets auflisten, um eine Vorschau des Pakets zu erhalten oder es zu untersuchen?

272
Xiè Jìléi

dpkg -c (oder --contents) listet den Inhalt einer .deb-Paketdatei auf (Dies ist ein Front-End für dpkg-deb.)

dpkg -c package_file.deb

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

Sudo apt-file update        
apt-file list package_name

Wie im ersten Kommentar angegeben, listet apt-file den Inhalt für Pakete in Ihren bereits konfigurierten Apt-Repositorys auf. Es ist unerheblich, ob ein bestimmtes Paket installiert ist oder nicht.

326
alfplayer

Verwenden Sie --contents anstelle von -L:

dpkg --contents PACKAGENAME

Bei dieser Verwendung fungiert dpkg als Front-End für dpkg-deb. Verwenden Sie daher man dpkg-deb, um alle Optionen anzuzeigen.

Sie können auch einen Archiv-Browser verwenden, um den Paketinhalt anzuzeigen.

56
quack quixote

Mit dpkg --contents können Sie das deinstallierte Paket anzeigen. Wenn sich die .deb noch nicht auf Ihrem System befindet, tun Sie dies

apt-get --download-only install pkgname

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

20
Rudedog

Am besten durchsuchen Sie das Paket-Repository direkt:

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

Beispiel:

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

12
baldoz

Ich nahm @ baldozs http-Idee und verallgemeinerte sie für Ubuntu und Debian, fügte eine kleine sed hinzu und wickelte sie in eine einzeilige Bash-Funktion:

function deb_list () { curl -s $(lsb_release -si | sed -e 's Ubuntu http://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'; }

Verwendungszweck:

$ 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

Gleiche Funktion in mehreren Zeilen:

function deb_list () {
    curl -s $(lsb_release -si \
                | sed -e 's Ubuntu http://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';
}

Erklärt:

  1. lsb_release -si gibt "Ubuntu" oder "Debian" zurück und ersetzt diese durch die Basis-URL http://packages.ubuntu.com oder https://packages.debian.org
  2. lsb_Release -sc gibt den Codenamen zurück (z. B. "vertrauenswürdig", "sid" usw.). Verwenden Sie diesen zum Erstellen der vollständigen URL: http://packages.ubuntu.com/trusty/all/curl/filelist
  3. Rufen Sie diese URL mit curl ab und leiten Sie den HTML-Code durch drei sed-Befehle. Zuerst wird nur die Dateiliste erfasst (was ist zwischen den Tags <pre> und </pre>). Zweitens werden alle HTML-Tags entfernt. Drittel entfernt alle Leerzeilen.

Hinweis: Es werden keine PPAs, alternativen Apt-Quellen-Repos und nur die offiziellen Pakete abgefragt, die für die Veröffentlichung von Debian/Ubuntu, das Sie ausführen, verfügbar sind.

8
notpeter

Versuchen:

apt-get download packages-name
dpkg --contents *.deb
2
readanon

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

Liste Inhalt der Deb-Datei ohne Download:

Suchen Sie zuerst die vollständige URL der Deb-Datei:

[email protected]: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 druckt die URL des deb-Pakets, aber deb wird nicht heruntergeladen.

Zeigen Sie dann den Inhalt des deb-Pakets an, ohne es herunterzuladen:

[email protected]: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: Gleiches Ergebnis kann mit erzielt werden

[email protected]:dpkg -c <(curl -sL -o- "http://httpredir.debian.org/debian/pool/main/y/yade/yade_2016.06a-7_AMD64.deb")

Extrahieren Sie eine Datei aus dem obigen Deb-Paket, ohne Download.
Zum Beispiel möchten wir die Manpage des Pakets yade lesen, ohne dieses Paket zu installieren und ohne das deb-Paket herunterzuladen.

Der von dpkg -c empfohlene Dateiname der Manpage im deb-Paket lautet ./usr/share/man/man1/yade.1.gz

So lesen Sie Manpage on the fly:

[email protected]: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

die Manpage wird mit der Man-Anwendung korrekt angezeigt.

PS: Die obigen Pipes funktionieren nicht mit dem Befehl ar.

[email protected]:apt --version --> apt 1.4~beta2 (AMD64)
[email protected]:dpkg --version --> Debian 'dpkg' package management program version 1.18.18 (AMD64).
[email protected]:man --version --> man 2.7.6.1
[email protected]:tar --version --> tar (GNU tar) 1.29
2
George Vasiliou

Es scheint nicht möglich zu sein, bevor Sie es zuerst installiert oder die Liste aus der .deb-Datei extrahiert haben.

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.

Grundsätzlich liest es .deb-Dateien, die mit curl extrahiert wurden, und führt dpkg --contents FILE darauf aus.


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

Wenn Sie also die URL der .deb-Datei 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-Parameter: -s - stumm, -L - bewegten Links folgen.

Wenn Sie die URL nicht kennen, rufen Sie sie mit folgendem Befehl ab: apt --print-uris, z.

apt --print-uris install avis | grep avis
1
kenorb