dpkg -c(oder --contents) listet den Inhalt einer .deb-Paketdatei auf (es handelt sich um ein Front-End für dpkg-deb.)
dpkg -c package_file.deb
Um direkt mit Paketnamen anstatt mit Paketdateien zu arbeiten, können Sie verwenden apt-file. (Möglicherweise müssen Sie das apt-filePaket zuerst 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.
apt-file muss ebenfalls aktualisiert werden ( sudo apt-file update) und listet nur Inhalte für Pakete in Ihren bereits konfigurierten Apt-Repositories auf.
Quack Quijote
1
@quackquixote: In Ubuntu 12.04 ist es automatisch
confiq
1
dpkg -cnett!
d -_- b
2
Bei der Antwort auf die Apt-Datei wird davon ausgegangen, dass Ihr Paket aus einem konfigurierten Repository stammt und nicht aus einer .debDatei, die Sie separat heruntergeladen haben. Die ursprüngliche Frage ist jedoch nicht eindeutig.
Zoredache
5
@confiq, nicht von mir getestet. Ich lasse 12.04.4 laufen und es steht immer noch "E: Der Cache ist leer. Sie müssen zuerst 'apt-file update' ausführen."
Matthew Flaschen
58
Verwenden Sie --contentsanstelle von -L:
dpkg --contents PACKAGENAME
Dient bei Verwendung auf diese Weise dpkgals Front-End für dpkg-deb. Verwenden Sie man dpkg-debdiese Option, um alle Optionen anzuzeigen.
Sie können auch einen Archiv-Browser verwenden, um den Paketinhalt anzuzeigen.
Dies funktioniert nur, wenn ich es zuerst installiert und dann deinstalliert habe.
Xiè Jìléi
3
Es sollte gut funktionieren, wenn Sie ihm eine .deb-Datei als Argument geben (anstelle von PACKAGENAME geben Sie es PACKAGE-DEB-FILE).
Quacksalber 15.
3
Diese Antwort ist falsch. Sie müssen das Paket zuerst installiert haben. Wenn Sie es nicht installiert haben, haben Sie keine .deb-Datei.
Neil
Dieser Befehl funktioniert bei mir. Zum Beispiel habe ich google-chrome-stable_current_amd64.deb von Google heruntergeladen. Dann gab er den Befehl: aus dpkg --contents google-chrome-stable_current_amd64.debund listete alle Dateien auf, die er installieren wird (hauptsächlich für /opt/google/chrome), von denen derzeit keine auf meinem System installiert ist, während ich dies tippe. (Ich verwende Xubuntu 11.10, wenn es darauf ankommt.)
quux00
10
@Neil, die Antwort ist nicht falsch. Nur weil Sie eine Deb-Datei haben, heißt das nicht, dass sie installiert ist. apt-file benötigt das gesamte Build-Essential-Paket. OO
d -_- b
21
dpkg --contentsMit dieser Option 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 heruntergeladen, /var/cache/apt/archivesaber nicht installiert.
Kann ich den Inhalt einfach auflisten, ohne ihn herunterzuladen? Wenn ich eine sehr langsame Verbindung habe und das Paket zum Herunterladen zu groß ist. Wenn die .deb-Datei einen Dateikopf hat, in dem sich die Inhaltsliste befindet, ist das Herunterladen des gesamten Pakets möglicherweise nicht erforderlich. Ist das möglich?
Xiè Jìléi
13
Am besten durchsuchen Sie das Paket-Repository direkt:
Und um das Verlassen des Terminals zu vermeiden, können Sie zB lynx -dump -nolist http://packages.debian.org/wheezy/all/transmission-common/filelist | grep ^/(sofern Sie lynxinstalliert haben) verwenden.
Ruslan
8
Ich nahm die http-Idee von @ baldoz und verallgemeinerte sie für Ubuntu und Debian, fügte ein wenig hinzu sedund wickelte sie in eine Bash-Funktion ein:
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'; }
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';
}
Erklärt:
lsb_release -si gibt "Ubuntu" oder "Debian" zurück und ersetzt dies durch die Basis-URL https://packages.ubuntu.comoderhttps://packages.debian.org
lsb_Release -sc gibt den Codenamen zurück (z. B. "trusty", "sid" usw.) und verwendet diesen, um die vollständige URL zu erstellen: https://packages.ubuntu.com/trusty/all/curl/filelist
Rufen Sie diese URL mit curl ab und leiten Sie den HTML-Code durch drei sed-Befehle. Zuerst wird nur die Dateiliste erfasst (was zwischen <pre>und </pre>Tags ist). 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.
@Anwar, ich hatte ursprünglich Ruby verwendet, weil ich faul war und mehrzeilige reguläre Ausdrücke sed / awk / grep einsaugen. Aber ich habe es umgeschrieben, um zwei sed-Befehle zu verwenden, kein Ruby erforderlich.
Notpeter
Nett! Dies ist die Antwort, die ich gesucht habe
Anwar
4
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.
Auflisten des Inhalts der Deb-Datei ohne Download:
Suchen Sie zuerst die vollständige URL der Deb-Datei:
Extrahieren Sie eine Datei aus dem obigen Deb-Paket, ohne sie herunterzuladen.
Zum Beispiel möchten wir die Manpage des Pakets yade lesen, ohne dieses Paket zu installieren und ohne das deb-Paket herunterzuladen.
Dateiname der Manpage im deb-Paket laut Empfehlung von dpkg -cist./usr/share/man/man1/yade.1.gz
Antworten:
dpkg -c
(oder--contents
) listet den Inhalt einer .deb-Paketdatei auf (es handelt sich um ein Front-End fürdpkg-deb
.)Um direkt mit Paketnamen anstatt mit Paketdateien zu arbeiten, können Sie verwenden
apt-file
. (Möglicherweise müssen Sie dasapt-file
Paket zuerst installieren .)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.
quelle
sudo apt-file update
) und listet nur Inhalte für Pakete in Ihren bereits konfigurierten Apt-Repositories auf.dpkg -c
nett!.deb
Datei, die Sie separat heruntergeladen haben. Die ursprüngliche Frage ist jedoch nicht eindeutig.Verwenden Sie
--contents
anstelle von-L
:Dient bei Verwendung auf diese Weise
dpkg
als Front-End fürdpkg-deb
. Verwenden Sieman dpkg-deb
diese Option, um alle Optionen anzuzeigen.Sie können auch einen Archiv-Browser verwenden, um den Paketinhalt anzuzeigen.
quelle
dpkg --contents google-chrome-stable_current_amd64.deb
und listete alle Dateien auf, die er installieren wird (hauptsächlich für/opt/google/chrome
), von denen derzeit keine auf meinem System installiert ist, während ich dies tippe. (Ich verwende Xubuntu 11.10, wenn es darauf ankommt.)dpkg --contents
Mit dieser Option können Sie das deinstallierte Paket anzeigen. Wenn sich die .deb noch nicht auf Ihrem System befindet, tun Sie diesDas Paket wird heruntergeladen,
/var/cache/apt/archives
aber nicht installiert.quelle
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
quelle
lynx -dump -nolist http://packages.debian.org/wheezy/all/transmission-common/filelist | grep ^/
(sofern Sielynx
installiert haben) verwenden.Ich nahm die http-Idee von @ baldoz und verallgemeinerte sie für Ubuntu und Debian, fügte ein wenig hinzu
sed
und wickelte sie in eine Bash-Funktion ein:Verwendungszweck:
Gleiche Funktion in mehreren Zeilen:
Erklärt:
https://packages.ubuntu.com
oderhttps://packages.debian.org
https://packages.ubuntu.com/trusty/all/curl/filelist
<pre>
und</pre>
Tags ist). 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.
quelle
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.
Auflisten des Inhalts der Deb-Datei ohne Download:
Suchen Sie zuerst die vollständige URL der Deb-Datei:
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:
PS: Gleiches Ergebnis kann mit erzielt werden
Extrahieren Sie eine Datei aus dem obigen Deb-Paket, ohne sie herunterzuladen.
Zum Beispiel möchten wir die Manpage des Pakets yade lesen, ohne dieses Paket zu installieren und ohne das deb-Paket herunterzuladen.
Dateiname der Manpage im deb-Paket laut Empfehlung von
dpkg -c
ist./usr/share/man/man1/yade.1.gz
Manpage on the fly lesen:
Die Manpage wird mit der Man-Anwendung korrekt angezeigt.
PS: Die obigen Pipes funktionieren nicht mit dem Befehl ar.
quelle
Versuchen:
quelle
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:
Ändern Sie
language-pack-en
mit Ihrem Paketnamen.Es liest grundsätzlich
.deb
Dateien, die über extrahiertcurl
und darauf ausgeführt werdendpkg --contents FILE
.Sie können den Inhalt auch überprüfen, ohne die Paketdatei herunterzuladen.
Wenn Sie die URL der
.deb
Datei kennen, listet der folgende Shell-Befehl alle Paketdateien auf:Curl-Parameter:
-s
- lautlos,-L
- bewegten Links folgen.Wenn Sie die URL nicht kennen, rufen Sie sie ab mit:
apt --print-uris
zquelle