Для работы напрямую с именами пакетов, а не с файлами пакетов, вы можете использовать apt-file. (Вам может понадобиться apt-fileсначала установить пакет.)
sudo apt-file update
apt-file list package_name
Как указано в первом комментарии, apt-файл перечисляет содержимое пакетов в ваших уже настроенных репозиториях Apt. Не имеет значения, установлен ли какой-либо конкретный пакет или нет.
apt-file также должен быть обновлен ( sudo apt-file update) и отображает только содержимое пакетов в ваших уже настроенных репозиториях Apt.
шарлатан Quixote
1
@quackquixote: В Ubuntu 12.04 это происходит автоматически
confiq
1
dpkg -cотлично!
d -_- б
2
Ответ Apt-файла предполагает, что ваш пакет приходит из настроенного хранилища, а не из .debфайла, который вы скачали отдельно. Хотя первоначальный вопрос неоднозначен.
Зоредаче
5
@confiq, не моим тестированием. Я использую 12.04.4, и он по-прежнему говорит: «E: Кэш пуст. Сначала нужно запустить« apt-file update »».
Мэтью Флэшен
58
Используйте --contentsвместо -L:
dpkg --contents PACKAGENAME
При использовании таким образом dpkgдействует как интерфейс dpkg-deb, так что используйте, man dpkg-debчтобы увидеть все варианты.
Вы также можете использовать архив браузера для просмотра содержимого пакета.
Это не работает, если я сначала не установил его, а затем удалил.
Xiè Jìléi
3
он должен работать нормально, если вы дадите ему файл .deb в качестве аргумента (вместо PACKAGENAME укажите его PACKAGE-DEB-FILE).
шарлатан-кихот
3
Этот ответ неверен. Вы должны сначала установить пакет. Если он не установлен, значит, у вас нет файла .deb.
Нейл
Эта команда работает для меня. Например, я скачал google-chrome-stable_current_amd64.deb из Google. Затем dpkg --contents google-chrome-stable_current_amd64.debвыполнил команду: и он перечислил все файлы, которые он установит (в основном, в /opt/google/chrome), ни один из которых в настоящее время не установлен в моей системе, когда я набираю это. (Я использую Xubuntu 11.10, если это имеет значение.)
quux00
10
@ Нейл, ответ не неправильный. То, что у вас есть файл deb, не означает, что он установлен. apt-file нужен весь пакет, необходимый для сборки. OO
d -_- b
21
dpkg --contentsпозволит вам посмотреть на удаленный пакет. Если .deb еще не в вашей системе, сделайте
apt-get --download-only install pkgname
Пакет будет загружен, /var/cache/apt/archivesно не установлен.
Могу ли я просто перечислить содержимое без загрузки? Если у меня очень медленное соединение, и если пакет слишком велик для загрузки. Если у файла .deb есть заголовок файла, куда идет список содержимого, я думаю, что загрузка всего пакета может быть не нужна. Это возможно?
Xiè Jìléi
13
Лучшим способом было бы просмотреть непосредственно хранилище пакетов:
И чтобы не покидать терминал, вы можете использовать, например, lynx -dump -nolist http://packages.debian.org/wheezy/all/transmission-common/filelist | grep ^/(при условии, что вы lynxустановили).
Руслан
8
Я взял 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'; }
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';
}
Разъяснение:
lsb_release -si возвращает "Ubuntu" или "Debian", замените его на базовый URL https://packages.ubuntu.comилиhttps://packages.debian.org
lsb_Release -sc возвращает кодовое имя (например, «trusty», «sid» и т. д.), которое используется для создания полного URL: https://packages.ubuntu.com/trusty/all/curl/filelist
Получите этот URL с помощью curl и передайте HTML через три команды sed. Сначала захватывает только список файлов (что между ними <pre>и </pre>теги); второй удаляет любые HTML-теги; третий удаляет все пустые строки.
Примечание: он не ищет PPA, альтернативные репозитории apt-источников и запрашивает только официальные пакеты, доступные для выпуска Debian / Ubuntu, которую вы используете.
@ Анвар, я изначально использовал Ruby, потому что я был ленив, а многострочные регулярные выражения засасывали sed / awk / grep. Но я переписал его для использования двух команд sed, Ruby не требуется.
Notpeter
Приятно! Это ответ, который я искал
Анвар
4
Для всех тех людей, которые могут по-прежнему гуглить эту проблему в январе 2017 года, вы можете иметь некоторые интересные вещи с последними версиями apt и dpkg в Debian 8.5, не загружая ничего.
Извлеките файл из вышеуказанного пакета deb, без загрузки.
Например, мы хотим прочитать справочную страницу пакета yade, не устанавливая этот пакет и даже не загружая пакет deb.
Имя файла справочной страницы внутри пакета deb в соответствии с рекомендациями dpkg -cis./usr/share/man/man1/yade.1.gz
Ответы:
dpkg -c
(или--contents
) перечисляет содержимое файла пакета .deb (это интерфейс дляdpkg-deb
.)Для работы напрямую с именами пакетов, а не с файлами пакетов, вы можете использовать
apt-file
. (Вам может понадобитьсяapt-file
сначала установить пакет.)Как указано в первом комментарии, apt-файл перечисляет содержимое пакетов в ваших уже настроенных репозиториях Apt. Не имеет значения, установлен ли какой-либо конкретный пакет или нет.
источник
sudo apt-file update
) и отображает только содержимое пакетов в ваших уже настроенных репозиториях Apt.dpkg -c
отлично!.deb
файла, который вы скачали отдельно. Хотя первоначальный вопрос неоднозначен.Используйте
--contents
вместо-L
:При использовании таким образом
dpkg
действует как интерфейсdpkg-deb
, так что используйте,man dpkg-deb
чтобы увидеть все варианты.Вы также можете использовать архив браузера для просмотра содержимого пакета.
источник
dpkg --contents google-chrome-stable_current_amd64.deb
выполнил команду: и он перечислил все файлы, которые он установит (в основном, в/opt/google/chrome
), ни один из которых в настоящее время не установлен в моей системе, когда я набираю это. (Я использую Xubuntu 11.10, если это имеет значение.)dpkg --contents
позволит вам посмотреть на удаленный пакет. Если .deb еще не в вашей системе, сделайтеПакет будет загружен,
/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:Использование:
Та же функция на нескольких строках:
Разъяснение:
https://packages.ubuntu.com
илиhttps://packages.debian.org
https://packages.ubuntu.com/trusty/all/curl/filelist
<pre>
и</pre>
теги); второй удаляет любые HTML-теги; третий удаляет все пустые строки.Примечание: он не ищет PPA, альтернативные репозитории apt-источников и запрашивает только официальные пакеты, доступные для выпуска Debian / Ubuntu, которую вы используете.
источник
Для всех тех людей, которые могут по-прежнему гуглить эту проблему в январе 2017 года, вы можете иметь некоторые интересные вещи с последними версиями apt и dpkg в Debian 8.5, не загружая ничего.
Список содержимого файла Deb без загрузки:
Сначала найдите полный URL-адрес файла deb:
PS: переключатель --print-uris печатает URL пакета deb, но deb не загружается.
Затем отобразите содержимое пакета deb, не загружая его:
PS: тот же результат может быть достигнут с
Извлеките файл из вышеуказанного пакета deb, без загрузки.
Например, мы хотим прочитать справочную страницу пакета yade, не устанавливая этот пакет и даже не загружая пакет deb.
Имя файла справочной страницы внутри пакета deb в соответствии с рекомендациями
dpkg -c
is./usr/share/man/man1/yade.1.gz
Чтобы прочитать справочную страницу на лету:
Страница man отображается правильно с помощью приложения man.
PS: Над трубами не работает команда ar.
источник
Пытаться:
источник
Кажется, это невозможно до первой установки или извлечения списка из
.deb
файла.Попробуйте следующую команду:
Измените
language-pack-en
с вашим именем пакета.Он в основном читает
.deb
извлеченный файлcurl
и запускаетсяdpkg --contents FILE
на нем.Вы также можете проверить содержимое, не загружая файл пакета.
Поэтому, если вы знаете URL
.deb
файла, следующая команда оболочки выведет список всех файлов пакета:Параметры скручивания:
-s
- молчать,-L
- переходить по перемещенным ссылкам.Если вы не знаете URL, получите по:,
apt --print-uris
напримеристочник