Відповіді:
dpkg -c(або --contents) перераховує вміст файлу пакету .deb (це передній край dpkg-deb.)
dpkg -c package_file.deb
Для роботи безпосередньо з іменами пакунків, а не з пакетами файлів, ви можете використовувати apt-file. (Можливо, вам потрібно спочатку встановити apt-fileпакет.)
sudo apt-file update
apt-file list package_name
Як зазначено в першому коментарі, apt-файл перераховує вміст пакунків у ваших уже налаштованих сховищах Apt. Неважливо, встановлений чи не встановлений якийсь пакет.
sudo apt-file update), і він містить лише вміст пакетів у ваших уже налаштованих сховищах Apt.
dpkg -cприємно!
.debфайлу, який ви завантажили окремо. Первісне питання, однак, неоднозначне.
Використовуйте --contentsзамість -L:
dpkg --contents PACKAGENAME
Якщо використовується таким чином, він dpkgвиступає як передній dpkg-deb, тому використовуйте man dpkg-debдля перегляду всіх варіантів.
Ви також можете використовувати архівний браузер для перегляду вмісту пакета.
dpkg --contents google-chrome-stable_current_amd64.debі в ній перераховані всі файли, які вона буде встановлена (здебільшого /opt/google/chrome), жоден з яких наразі не встановлений у моїй системі під час введення цього тексту. (Я запускаю Xubuntu 11.10, якщо це має значення.)
dpkg --contentsдозволить вам переглянути видалений пакет. Якщо .deb ще немає у вашій системі, зробіть це
apt-get --download-only install pkgname
Пакет буде завантажено, /var/cache/apt/archivesале не встановлено.
Найкращим способом було б безпосередньо переглядати сховище пакунків:
http://packages.debian.org/[distro name]/all/[package name]/filelist
Приклад:
http://packages.debian.org/wheezy/all/transmission-common/filelist
lynx -dump -nolist http://packages.debian.org/wheezy/all/transmission-common/filelist | grep ^/(За умови lynxвстановлення).
Я взяв http-ідею @ baldoz і узагальнив її для Ubuntu та Debian, додав трохи sedі загорнув її в однофаймову функцію 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'; }
Використання:
$ 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 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';
}
Пояснили:
https://packages.ubuntu.comабоhttps://packages.debian.orghttps://packages.ubuntu.com/trusty/all/curl/filelist<pre>та </pre>тегами); другий знімає будь-які теги HTML; третя видаляє будь-які порожні рядки.Примітка. Він не здійснює пошук PPA, альтернативні репостні джерела репостів та запитує лише офіційні пакети, доступні для випуску debian / ubuntu, який ви запускаєте.
Для всіх тих, хто може все-таки гуглювати цю проблему на січень 2017 року, ви можете отримати цікаві матеріали з останніми версіями apt та dpkg в Debian 8.5, не завантажуючи нічого.
Список вмісту файлу Deb без завантаження:
Спочатку знайдіть повну 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 не завантажується.
Потім виведіть вміст деб-пакету, не завантажуючи його:
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")
Витягніть файл із вищевказаного пакету деб, без завантаження.
Наприклад, ми хочемо прочитати man-сторінку сторінки 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[^']\+"))
Змініть language-pack-enназву пакета.
Він в основному зчитує .debфайл, вилучений через curlі запускається dpkg --contents FILEна ньому.
Ви також можете перевірити вміст, не завантажуючи файл пакету.
Отже, якщо ви знаєте URL-адресу .debфайлу, наступна команда оболонки перелічить усі файли пакету:
dpkg -c <(curl -sL "http://httpredir.debian.org/debian/pool/main/a/avis/avis_1.2.2-4_all.deb")
Curl params: -s- мовчати, -L- переходити за перехідними посиланнями.
Якщо ви не знаєте URL-адреси, отримайте:, apt --print-urisнапр
apt --print-uris install avis | grep avis