it-swarm.xyz

Найти пакет, к которому принадлежит файл в Ubuntu/Debian?

Я часто скучаю по программе, справочной странице или другому файлу при работе в моей системе Ubuntu 8.04. Есть ли простой способ узнать, какой пакет содержит данный файл (установлен ли он уже или нет)? Может быть, какой-то непонятный вариант для apt или dpkg?

286
Jay Conrod
apt-file search filename

или

apt-file search /path/to/file


Чтобы установить apt-file , используйте:

Sudo apt-get install apt-file

Вам нужно будет обновить его базу данных, прежде чем вы сможете ее использовать:

Sudo apt-file update
235
John T

(Debian/Ubuntu) Узнайте, к какому пакету принадлежит файл :

dpkg -S /usr/bin/ls

'dpkg -S' просто совпадает со строкой, которую вы предоставляете, поэтому просто использование 'ls' в качестве аргумента соответствует любому файлу из любого пакета, который имеет 'ls' в любом месте имени файла. Поэтому обычно хорошей идеей является использование абсолютного пути. Во втором примере вы можете видеть, что 12 тысяч файлов, которые известны как dpkg, соответствуют пустой строке 'ls'.

387
splattne

packages.debian.org - это то, что я всегда использую для выполнения этой задачи. Он превосходит apt-файл, потому что он также может найти части имен файлов. Он также связан с основным списком пакетов, в котором будут перечислены описания, ошибки и т.д. В целом хороший сайт. Не так полезно из командной строки, но все же довольно полезно.

Для скорости я пометил URL:

http://packages.debian.org/search?searchon=contents&keywords=%s&mode=filename&suite=unstable&Arch=any

в Firefox и добавил «debfind» в качестве ключевого слова (нажмите «еще» в менеджере закладок, когда он выделен), так что я могу просто набрать «debfind», и он будет работать. Вы можете изменить 'suite' его с нестабильного на стабильный или тестировать, если хотите, для других версий дистрибутива.

18
jamuraa

Вы также можете использовать dlocate. Со страницы руководства;

$ dlocate [ PATTERN ]
List all records where either the package name or the filename matches PATTERN.
11
jeremiah

Я нашел Ваджиг ...

wajig whichpackage /path/to/file 

например.

wajig whichpackage /etc/apt/sources.list

Wajig - это удобный инструмент для командной строки или консоли, который включает в себя все достоинства apt-get, dpkg, которые вы никогда не хотели изучать. ,.

Для установки Wajig используйте:

apt-get install wajig

Эта команда 'whichpackage' сама зависит от apt-файла

вам все еще нужно обновить базу данных, прежде чем вы сможете ее использовать: - Я пока не знаю, обновляет ли wajig обновление, которое apt-get также обновляет файловый кеш, но я ожидаю, что это возможно.

Sudo wajig update

Sudo apt-file update

(и Супер Корова, Пасха egss?!)

4
pete_m

Послушайте ответ Джамуры на Debian, вы также можете перейти на http://packages.ubuntu.com/ для Ubuntu. Вам придется прокрутить немного вниз, чтобы найти «Поиск содержимого пакетов» searchbox, где вы можете ввести путь к файлу.

2
kiri

Попробуйте поискать файлы, используя http://www.kodkast.com/applications/find-which-package-file-belongs-to

Это приложение для поиска файлов, которые содержатся в разных пакетах rpms/linux, и очень полезно, когда на вашей машине даже не установлен rpm.

0
Ravi Agarwal

Пакет command-not-found дает вам подсказки о потенциальных командах и имени пакета debian. Он работает, набрав команду в командной оболочке bash и посмотрев ее вывод.

Например, если имя команды известно:

zer@ivy:~ 10:45 $ zsh5
The program 'zsh5' is currently not installed.  To run 'zsh5' please ask
your administrator to install the package 'zsh'
zsh5: command not found

и если команда не известна, применяются некоторые предположения:

zer@ivy:~ 09:46 $ zsh
No command 'zsh' found, did you mean:
 Command 'lsh' from package 'lsh-client' (main)
 Command 'osh' from package 'omake' (main)
 Command 'ysh' from package 'libyaml-Shell-Perl' (main)
 Command 'ssh' from package 'openssh-client' (main)
 Command 'vsh' from package 'crystalspace' (main)
 Command 'dsh' from package 'dsh' (main)
 Command 'ash' from package 'ash' (main)
 Command 'msh' from package 'nmh' (main)
 Command 'zssh' from package 'zssh' (main)
 Command 'qsh' from package 'gridengine-client' (main)
 Command 'sh' from package 'dash' (main)
 Command 'bsh' from package 'bsh' (main)
zsh: command not found
0
erwing