Відповіді:
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.org
https://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