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?
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?
Antworten:
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-file
Paket 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.
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
:
dpkg --contents PACKAGENAME
Dient bei Verwendung auf diese Weise dpkg
als Front-End für dpkg-deb
. Verwenden Sie man dpkg-deb
diese Option, um alle Optionen anzuzeigen.
Sie können auch einen Archiv-Browser verwenden, um den Paketinhalt anzuzeigen.
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 dies
apt-get --download-only install pkgname
Das Paket wird heruntergeladen, /var/cache/apt/archives
aber nicht installiert.
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
lynx -dump -nolist http://packages.debian.org/wheezy/all/transmission-common/filelist | grep ^/
(sofern Sie lynx
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:
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'; }
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 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:
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.
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:
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 druckt die URL des deb-Pakets, aber deb wird nicht heruntergeladen.
Zeigen Sie dann den Inhalt des deb-Pakets an, 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: Gleiches Ergebnis kann mit erzielt werden
root@debian: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 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:
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
Die Manpage wird mit der Man-Anwendung korrekt angezeigt.
PS: Die obigen Pipes funktionieren nicht mit dem Befehl 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
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.
Es liest grundsätzlich .deb
Dateien, die über extrahiert curl
und darauf ausgeführt werden dpkg --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:
dpkg -c <(curl -sL "http://httpredir.debian.org/debian/pool/main/a/avis/avis_1.2.2-4_all.deb")
Curl-Parameter: -s
- lautlos, -L
- bewegten Links folgen.
Wenn Sie die URL nicht kennen, rufen Sie sie ab mit: apt --print-uris
z
apt --print-uris install avis | grep avis