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-file
najpierw 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 -c
miły!
.deb
pliku pobranego osobno. Pierwotne pytanie jest jednak dwuznaczne.
Użyj --contents
zamiast -L
:
dpkg --contents PACKAGENAME
Gdy jest używany w ten sposób, dpkg
działa jako interfejs użytkownika dpkg-deb
, więc użyj, man dpkg-deb
aby 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.deb
i 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 --contents
pozwoli 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/archives
ale 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 lynx
zainstalowałeś).
Wziąłem pomysł http @ baldoz i uogólniłem go dla Ubuntu i Debiana, dodałem trochę sed
i 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.com
lubhttps://packages.debian.org
https://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 -c
is./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 .deb
pliku.
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-en
pomocą nazwy pakietu.
Zasadniczo odczytuje .deb
wyodrębniony plik curl
i uruchamia się dpkg --contents FILE
na nim.
Możesz także sprawdzić zawartość bez pobierania pliku pakietu.
Więc jeśli znasz adres URL .deb
pliku, 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-uris
np
apt --print-uris install avis | grep avis