Как узнать, из какого пакета Debian поступил файл?
источник
Как узнать, из какого пакета Debian поступил файл?
В Debian есть несколько утилит, которые выполняют эту задачу; проверьте эту страницу для описания. Я упомяну два из них, apt-file
и dlocate
.
apt-file
выполняет поиск в своем внутреннем кэше, что позволяет вам не устанавливать все пакеты, которые вы хотите найти. Ниже вы найдете более подробное руководство.
dlocate
это быстрая альтернатива dpkg -L
(команда, которая выводит содержимое пакета), и поэтому она ищет только установленные пакеты. Поиск осуществляется dlocate -S file.name
.
Также вы можете искать пакеты онлайн, используя сервер packages.debian.org ( раздел Поиск содержимого пакетов ).
apt-file
Это хорошая идея, чтобы обновить в первую очередь:
sudo apt-get update
Посмотрите, что apt-file
для:
apt-cache show apt-file
Установите это:
sudo apt-get install apt-file
Чтение данных из репозиториев (это работает также без, sudo
но создает кэш пользователя; с sudo
кешем для всей системы):
sudo apt-file update
Выполните поиск. В этом примере мы хотим знать, в каком пакете xrandr
находится исполняемый файл:
apt-file search xrandr
В нем перечислены много пакетов с unxrandr
, lxrandr.mo
или source_lxrandr.py
. Не очень полезно в нашем случае. Более умный поиск:
apt-file search -x /xrandr$
( $
обозначает конец строки). Пример вывода:
bash-completion: /usr/share/bash-completion/completions/xrandr
x11-xserver-utils: /usr/bin/xrandr
Первый результат не похож на исполняемый файл, второй выглядит. Мы можем расследовать дальше. Бегать:
apt-cache show x11-xserver-utils
Бинго! Это пакет.
Где bash - это имя пакета.
источник
dpkg-query -S
и он отправляет вас по неправильному пути установки дополнительных пакетов.Другая альтернатива:
На моем Ubuntu, по крайней мере, оба в
dpkg
пакете, так что нет никакого реального преимущества перед любым конкретным ...источник
Установленные файлы не будут найдены
dpkg -S
, как указано на: https://askubuntu.com/a/667227/52975Например,
/bin/nc
появляется при установке пакетаnetcat-openbsd
.Но по факту:
мы получаем
dpkg-query: no path found matching pattern /bin/nc
.Это происходит потому, что
/bin/nc
генерируетсяupdate-alternatives
вызовом в сценарии postinst, который запускается после установки.Это работает так, потому что
/bin/nc
вnetcat-traditional
пакете предусмотрена другая версия .Я не думаю, что есть общий способ поиска таких сгенерированных файлов. В конкретном случае альтернативных символических ссылок мы можем просто перейти по ссылке с
readlink -f
:источник
Не будучи знакомым с Debian, я был озадачен, когда попробовал это:
Немного расследования и я нашел посылку:
источник