274

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

8 ответов8

370

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

dpkg -S /usr/bin/ls

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

224
apt-file search filename

или же

apt-file search /path/to/file


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

sudo apt-get install apt-file

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

sudo apt-file update
17

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

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

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

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

11

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

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

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

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?! )

2

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

0

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

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

0

Пакет 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .