Odpowiedzi:
dpkg -c(lub --contents) wyświetla zawartość pliku pakietu .deb (jest to interfejs użytkownika dpkg-deb.)
dpkg -c package_file.deb
Aby pracować bezpośrednio z nazwami pakietów, a nie z plikami pakietów, możesz użyć apt-file. (Może być konieczne apt-filenajpierw zainstalowanie pakietu.)
sudo apt-file update
apt-file list package_name
Jak stwierdzono w pierwszym komentarzu, apt-file wyświetla zawartość pakietów w już skonfigurowanych repozytoriach Apt. Nie ma znaczenia, czy dany pakiet jest zainstalowany, czy nie.
sudo apt-file update) i wyświetla tylko zawartość pakietów w już skonfigurowanych repozytoriach Apt.
dpkg -cmiły!
.debpliku pobranego osobno. Pierwotne pytanie jest jednak dwuznaczne.
Użyj --contentszamiast -L:
dpkg --contents PACKAGENAME
Gdy jest używany w ten sposób, dpkgdziała jako interfejs użytkownika dpkg-deb, więc użyj, man dpkg-debaby zobaczyć wszystkie opcje.
Możesz także użyć przeglądarki archiwów, aby wyświetlić zawartość pakietu.
dpkg --contents google-chrome-stable_current_amd64.debi wylistował wszystkie pliki, które zainstaluje (głównie do /opt/google/chrome), z których żaden nie jest aktualnie zainstalowany w moim systemie podczas pisania. (Jeśli to ma znaczenie, korzystam z Xubuntu 11.10.)
dpkg --contentspozwoli spojrzeć na odinstalowany pakiet. Jeśli .deb nie jest jeszcze w twoim systemie, zrób
apt-get --download-only install pkgname
Pakiet zostanie pobrany, /var/cache/apt/archivesale nie zainstalowany.
Najlepszym sposobem byłoby przeglądanie bezpośrednio repozytorium pakietów:
http://packages.debian.org/[distro name]/all/[package name]/filelist
Przykład:
http://packages.debian.org/wheezy/all/transmission-common/filelist
lynx -dump -nolist http://packages.debian.org/wheezy/all/transmission-common/filelist | grep ^/(Pod warunkiem, że lynxzainstalowałeś).
Wziąłem pomysł http @ baldoz i uogólniłem go dla Ubuntu i Debiana, dodałem trochę sedi zapakowałem w jedno-liniową funkcję bash:
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'; }
Stosowanie:
$ 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
Ta sama funkcja w wielu liniach:
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';
}
Wyjaśniono:
https://packages.ubuntu.comlubhttps://packages.debian.orghttps://packages.ubuntu.com/trusty/all/curl/filelist<pre>i </pre>); drugi usuwa wszystkie znaczniki HTML; trzeci usuwa wszelkie puste linie.Uwaga: Nie wyszukuje plików PPA, alternatywnych repozytoriów apt apt i tylko odpytuje oficjalne pakiety dostępne dla wersji debian / ubuntu, którą uruchamiasz.
Dla tych wszystkich osób, które mogą nadal przeglądać ten problem w styczniu 2017 roku, możesz mieć fajne rzeczy z najnowszymi wersjami apt i dpkg w Debian 8.5 bez pobierania czegokolwiek.
Wyświetl zawartość pliku Deb bez pobierania:
Najpierw zlokalizuj pełny adres URL pliku 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: Przełącznik --print-uris drukuje adres URL pakietu deb, ale deb nie jest pobierany.
Następnie wyświetl zawartość pakietu deb bez pobierania:
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: Taki sam wynik można osiągnąć za pomocą
root@debian:dpkg -c <(curl -sL -o- "http://httpredir.debian.org/debian/pool/main/y/yade/yade_2016.06a-7_amd64.deb")
Wyodrębnij plik z powyższego pakietu deb, bez pobierania.
Na przykład chcemy przeczytać stronę podręcznika pakietu yade bez instalowania tego pakietu i nawet bez pobierania pakietu deb.
Nazwa pliku strony man wewnątrz pakietu deb, zgodnie z zaleceniami dpkg -cis./usr/share/man/man1/yade.1.gz
Aby przeczytać stronę podręcznika w locie:
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
strona man jest wyświetlana poprawnie przy użyciu aplikacji man.
PS: Powyższe potoki nie działają z poleceniem 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
Wydaje się, że nie jest to możliwe przed instalacją lub wypakowaniem listy z .debpliku.
Spróbuj wykonać następujące polecenie:
dpkg --contents <(curl -s $(apt-get install --yes --no-download --reinstall --print-uris language-pack-en | tail -n1 | grep -o "http[^']\+"))
Zmień za language-pack-enpomocą nazwy pakietu.
Zasadniczo odczytuje .debwyodrębniony plik curli uruchamia się dpkg --contents FILEna nim.
Możesz także sprawdzić zawartość bez pobierania pliku pakietu.
Więc jeśli znasz adres URL .debpliku, następujące polecenie powłoki wyświetli wszystkie pliki pakietów:
dpkg -c <(curl -sL "http://httpredir.debian.org/debian/pool/main/a/avis/avis_1.2.2-4_all.deb")
Zwijaj parametry: -s- cichy, -L- podążaj za przeniesionymi linkami.
Jeśli nie znasz adresu URL, pobierz:: apt --print-urisnp
apt --print-uris install avis | grep avis