Вопрос: Найти, к какому файлу относится файл в Ubuntu / Debian?


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


257
2017-07-22 19:06


Источник


То же самое на Ubuntu: askubuntu.com/questions/481/... - Ciro Santilli 新疆改造中心 六四事件 法轮功
dpkg -S /path/to/fileесли у вас установлен пакет. - Zaz


Ответы:


apt-file search filename

или

apt-file search /path/to/file


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

sudo apt-get install apt-file

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

sudo apt-file update

209
2017-07-22 19:08



FYI: apt-файл, похоже, зависит от содержимого-amd64.gz, предоставленного репозиториями. И не все сторонние репозитории предоставляют этот файл. - Jokester
Это не сработало для меня. Я обновил базу данных, но ничего не возвращает. dpkg -S работает, как описано ниже. - Northys


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

dpkg -S /usr/bin/ls

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


348
2017-07-22 19:13



То есть, только если файлы уже установлены - John T
В отличие от apt-file, это также находит пакет в файл, если он был установлен вручную через dpkg -i! - tanius
Если вы dpkg-query: путь не найден.  попробуй это: dpkg -S "$(readlink -fn "$(which rename)")", - Pablo Bianchi
Странно, это не сработало для меня: dpkg-query: no path found matching pattern /usr/bin/java, хотя есть файл на /usr/bin/java - nnyby


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

Для скорости я добавил в закладки URL:

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

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


15
2017-07-22 20:07



Однако он не работает с пользовательскими репозиториями. - Ctrl-C
Плохой выбор в отношении автоматизации. - Alexander Shcheblikin


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

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

11
2017-08-08 19:30



dlocate также мой любимый метод, очень надежный. - Avio
@Avio dlocate не обнаруживает недавно установленный пакет, если вы не запускаете sudo update-dlocatedb первый. Команда автоматически запускается ежедневно в /etc/cron.daily/dlocate - jarno


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

wajig whichpackage /path/to/file 

например.

wajig whichpackage /etc/apt/sources.list

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

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

apt-get install wajig

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

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

sudo wajig update

sudo apt-file update

(и Super Cow, Easter egss?!)


4
2018-01-14 02:40





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


2
2017-10-28 10:40



Теперь, если только у Raspbian тоже был один :) - XTL


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

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


0
2017-12-20 00:33



Downvote: ссылка сломана, и ссылка, по-видимому, относится к пакетам RPM, в первую очередь. - tripleee


Пакет, не найденный командой, дает вам подсказки о потенциальных командах и имени пакета 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
2017-11-24 09:59



Тем не менее, это не работает для произвольных файлов, как запрошено OP. - Michael Kjörling
Это проблематичный совет, если программа делает вредные вещи и IS установлена. Добавление -h или --help в конце поможет немного. Если добавить -h в конце сделал бы это достаточно безопасным, я бы порекомендовал, но даже в этом случае это не очень хороший способ добиться того, что спрашивает OP. - Dr Beco