2009-12-14 06:49:35 +0000 2009-12-14 06:49:35 +0000
295
295

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?

Odpowiedzi (8)

359
359
359
2009-12-14 15:42:54 +0000

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.

58
58
58
2009-12-14 08:14:19 +0000

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.

23
23
23
2009-12-14 14:34:45 +0000

dpkg --contents pozwoli Ci spojrzeć na odinstalowany pakiet. Jeśli .deb nie jest jeszcze w Twoim systemie, zrób

apt-get --download-only install pkgname

Pakiet zostanie pobrany do /var/cache/apt/archives, ale nie jest zainstalowany.

15
15
15
2013-06-01 13:57:56 +0000

Najlepszym sposobem jest bezpośrednie przeglądanie repozytorium pakietów:

http://packages.debian.org/[distro name]/all/[package name]/filelist

Przykład:

http://packages.debian.org/wheezy/all/transmission-common/filelist

8
8
8
2015-04-21 21:44:25 +0000

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:

  1. lsb_release -si zwraca “Ubuntu” lub “Debian” zamienia to na adres url bazowy https://packages.ubuntu.com lub https://packages.debian.org
  2. lsb\_Release -sc zwraca nazwę kodową (np. “trusty”, “sid”, itp.) użyj tego do zbudowania pełnego adresu URL: https://packages.ubuntu.com/trusty/all/curl/filelist
  3. Przynieś ten adres URL z curl i potokiem html przez trzy komendy sed. Pierwsze przechwytuje tylko listę plików (co znajduje się pomiędzy znacznikami <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.

5
5
5
2017-01-06 03:14:29 +0000

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
2
2
2
2014-06-27 15:28:37 +0000

Spróbuj:

apt-get download packages-name
dpkg --contents *.deb
1
1
1
2015-12-27 13:33:51 +0000

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.