Jak wyświetlić listę plików pakietu Debiana bez instalacji
To polecenie może wyświetlić tylko zawartość zainstalowanych pakietów,
dpkg -L PACKAGENAME
ale jak wyświetlić zawartość nie zainstalowanego pakietu, aby wyświetlić podgląd/badanie pakietu?
To polecenie może wyświetlić tylko zawartość zainstalowanych pakietów,
dpkg -L PACKAGENAME
ale jak wyświetlić zawartość nie zainstalowanego pakietu, aby wyświetlić podgląd/badanie pakietu?
dpkg -c
(lub --contents
) wymienia zawartość pliku z pakietem .deb (Jest to front-end do dpkg-deb
.)
dpkg -c package_file.deb
Aby pracować bezpośrednio z nazwami pakietów, a nie z plikami, możesz użyć apt-file
. (Być może będziesz musiał najpierw zainstalować pakiet apt-file
)
sudo apt-file update
apt-file list package_name
Jak podano w pierwszym komentarzu, apt-file wymienia zawartość pakietów w twoich już skonfigurowanych repozytoriach Apt. Nie ma znaczenia czy dany pakiet jest lub nie jest zainstalowany.
Użyj --contents
zamiast -L
:
dpkg --contents PACKAGENAME
Jeśli używasz w ten sposób, dpkg
działa jako front-end do dpkg-deb
, więc użyj man dpkg-deb
, aby zobaczyć wszystkie opcje.
Możesz również użyć przeglądarki archiwalnej, aby zobaczyć zawartość pakietu.
Wziąłem @baldoz’s http idea i uogólniłem go dla Ubuntu i Debiana, dodałem trochę sed
i zawinąłem go w funkcję bash one-liner:
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'; }
Użycie:
$ 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 na 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śnione:
https://packages.ubuntu.com
lub https://packages.debian.org
https://packages.ubuntu.com/trusty/all/curl/filelist
<pre>
i </pre>
); drugie usuwa dowolne znaczniki html; trzecie usuwa dowolne puste linie. Uwaga: Nie przeszukuje PPA, naprzemiennie apt sources repos i zapytuje tylko o oficjalne pakiety dostępne dla wydania debiana/ubuntu, które uruchamiasz.
Dla wszystkich tych, którzy mogą jeszcze googlować ten numer w styczniu 2017, możesz mieć kilka fajnych rzeczy z najnowszymi wersjami apt i dpkg w Debianie 8.5 bez pobierania niczego.
Wyświetl zawartość pliku Deb bez pobierania:
Najpierw znajdź 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: –print-uris switch drukuje adres url pakietu deb, ale deb nie jest pobierany.
Następnie wyświetla zawartość pakietu deb bez pobierania go:
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 rezultat można osiągnąć z
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ę man pakietu yade bez instalowania tego pakietu i nawet bez pobierania pakietu deb.
Nazwa pliku man wewnątrz pakietu deb, jak zaleca dpkg -c
to ./usr/share/man/man1/yade.1.gz
Aby przeczytać stronę man 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ższa rura nie działa przy użyciu polecenia 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
Wygląda na to, że nie jest to możliwe przed pierwszą instalacją lub rozpakowaniem listy z pliku .deb
.
Wypróbuj następującą komendę:
dpkg --contents <(curl -s $(apt-get install --yes --no-download --reinstall --print-uris language-pack-en | tail -n1 | grep -o "http[^']"))
Zmień language-pack-en
z nazwą pakietu.
W zasadzie odczytuje plik .deb
rozpakowany przez curl
i uruchamia na nim dpkg --contents FILE
.
Jeśli znasz adres URL pliku .deb
, następujące polecenie powłoki wyświetli wszystkie pliki pakietu:
dpkg -c <(curl -sL "http://httpredir.debian.org/debian/pool/main/a/avis/avis_1.2.2-4_all.deb")
Curl params: -s
- cichy, -L
- podążaj za linkami przeniesionymi.
Jeśli nie znasz adresu URL, pobierz przez: apt --print-uris
, np.