как вывести список файлов пакета debian без установки

<p>эта команда может только перечислить содержимое установленных пакетов,</p><pre><code>dpkg -l packagename </code></pre><p>но как составить список содержимого неустановленного пакета, чтобы просмотреть/просмотреть пакет?</p>

<p><code>dpkg -c</code> (или <code>--contents</code>) перечисляет содержимое файла пакета .deb (это интерфейс <code>dpkg-deb</code>.)</p><pre><code>dpkg -c package\_file.deb </code></pre><p>чтобы работать напрямую с именами пакетов, а не с файлами пакетов, вы можете использовать <code>apt-file</code>. (вам может понадобиться сначала установить пакет <code>apt-file</code>.)</p><pre><code>sudo apt-file update apt-file list package\_name </code></pre><p>как указано в первом комментарии, apt-файл перечисляет содержимое пакетов в ваших уже настроенных репозиториях apt. не имеет значения, установлен ли какой-либо конкретный пакет или нет.</p>

<p>используйте <code>--contents</code> вместо <code>-l</code>:</p><pre><code>dpkg --contents packagename </code></pre><p>при использовании таким образом <code>dpkg</code> выступает в качестве внешнего интерфейса для <code>dpkg-deb</code>, поэтому используйте <code>man dpkg-deb</code> для просмотра всех параметров.</p><p>вы также можете использовать архив браузера для просмотра содержимого пакета.</p>

<p><code>dpkg --contents</code> позволит вам посмотреть на удаленный пакет. если .deb еще не в вашей системе, сделайте</p><pre><code>apt-get --download-only install pkgname </code></pre><p>пакет будет загружен в <code>/var/cache/apt/archives</code>, но не установлен.</p>

<p>лучшим способом было бы просмотреть непосредственно хранилище пакетов:</p><p><code>http://packages.debian.org/[distro name]/all/[package name]/filelist</code></p><p>пример:</p><p><code>http://packages.debian.org/wheezy/all/transmission-common/filelist</code></p>

<p>я взял <a href="https://superuser.com/questions/82923/how-to-list-files-of-a-debian-package-without-install#602527">идею @ baldoz http</a> и обобщил ее для ubuntu и debian, добавил немного <code>sed</code> и обернул ее в однострочную функцию bash:</p><pre><code>function deb\_list () { curl -s $(lsb_release -si | sed -e 's ubuntu http://packages.ubuntu.com/ ' -e 's debian https://packages.debian.org/ ')/$(lsb\_release -sc)/all/$1/filelist | sed -n -e '//,//p' | sed -e 's/<[^>]+>//g' -e '/^$/d'; } </code></pre><p>использование:</p><pre><code>$ 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 та же функция на нескольких строках:function deb_list () { curl -s $(lsb\_release -si \ | sed -e 's ubuntu http://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'; } разъяснение: lsb_release -si возвращает «ubuntu» или «debian», замените его на базовый url http://packages.ubuntu.com или https://packages.debian.org lsb_release -sc возвращает кодовое имя (например, "trusty", "sid" и т. д.), которое используется для создания полного url: http://packages.ubuntu.com/trusty/all/curl/filelist получите этот url с помощью curl и передайте html через три команды sed. сначала захватывает только список файлов (что находится между тегами  и ); второй удаляет любые html-теги; третий удаляет все пустые строки. примечание: он не ищет ppa, альтернативные репозитории apt-источников и запрашивает только официальные пакеты, доступные для выпуска debian/ubuntu, которую вы используете.

пытаться:apt-get download packages-name dpkg --contents .deb 

для всех тех людей, которые могут по-прежнему гуглить эту проблему в январе 2017 года, вы можете иметь некоторые интересные вещи с последними версиями apt и dpkg в debian 8.5, не загружая ничего.<strong> список содержимого файла deb без загрузки: </strong>сначала найдите полный url-адрес файла 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 печатает url пакета deb, но deb не загружается.затем отобразите содержимое пакета deb, не загружая его: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: тот же результат может быть достигнут сroot@debian:dpkg -c <(curl -sl -o- "http://httpredir.debian.org/debian/pool/main/y/yade/yade_2016.06a-7_amd64.deb") <strong> извлечь файл из вышеуказанного пакета deb, без загрузки. </strong> например, мы хотим прочитать справочную страницу пакета yade, не устанавливая этот пакет и даже не загружая пакет deb.имя файла справочной страницы внутри пакета deb в соответствии с рекомендациями dpkg -c: ./usr/share/man/man1/yade.1.gzчтобы прочитать справочную страницу на лету: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 страница man отображается правильно с помощью приложения man.ps: над трубами не работает команда 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 

кажется, это невозможно до первой установки или извлечения списка из файла .deb.попробуйте следующую команду:dpkg --contents <(curl -s $(apt-get install --yes --no-download --reinstall --print-uris language-pack-en | tail -n1 | grep -o "http[^']\+")) </code></pre><p>измените <code>language-pack-en</code> на имя вашего пакета.</p><p>он в основном читает файл <code>.deb</code>, извлеченный с помощью <code>curl</code>, и запускает на нем <code>dpkg --contents file</code>.</p><hr><p>вы также можете проверить содержимое, не загружая файл пакета.</p><p>поэтому, если вы знаете url-адрес файла <code>.deb</code>, следующая команда shell выведет список всех файлов пакета:</p><pre><code>dpkg -c <(curl -sl "http://httpredir.debian.org/debian/pool/main/a/avis/avis\_1.2.2-4\_all.deb") </code></pre><p><sup>параметры скручивания: <code>-s</code> - без звука, <code>-l</code> - переход по перемещенным ссылкам.</sup></p><p>если вы не знаете url, получите по: <code>apt --print-uris</code>, например,.</p><pre><code>apt --print-uris install avis | grep avis </code></pre>