Как узнать, какой пакет принадлежит файлу?
Как узнать, из какого пакета Debian появился файл?
- Как удалить GRUB из двойной загрузки (Debian и Windows XP)
- Как пройти через это двойственное застопорившееся соединение?
- Как заставить sshfs работать в Debian? (Я получаю / dev / fuse: разрешение отклонено)
- Настройка IPv6 на Debian - глобальный временный адрес
- Мой жесткий диск умирает?
- Запуск кэширующего DNS-сервера в локальной сети
- Обновление Debian grub2 удалено.
- Ошибки возникали при обработке плавкого предохранителя
В 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
Бинго! Это пакет.
[email protected]:~$ dpkg-query -S /bin/bash bash: /bin/bash
Где bash – имя пакета.
Другая альтернатива:
$ dpkg -S /bin/bash bash: /bin/bash
На мой Ubuntu, по крайней мере, оба, похоже, находятся в пакете dpkg
, поэтому никакого реального преимущества для какого-либо конкретного …
Установленные сгенерированные файлы не будут найдены dpkg -S
, как указано на странице https://askubuntu.com/a/667227/52975
Например, /bin/nc
появляется, когда вы устанавливаете пакет netcat-openbsd
.
Но на:
dpkg -S /bin/nc
Мы получаем dpkg-query: no path found matching pattern /bin/nc
.
Это происходит потому, что /bin/nc
генерируется вызовом update-alternatives
в postinst-скрипте, который запускается после установки.
Он работает так, потому что другая версия /bin/nc
предоставляется netcat-traditional
пакетом netcat-traditional
.
Я не думаю, что существует общий способ поиска таких сгенерированных файлов. В конкретном случае альтернативных символических ссылок мы можем просто следовать ссылке с readlink -f
:
dpkg -S "$(readlink -f /bin/nc)"
Не знакомый с Debian, я был озадачен, когда я пробовал это:
[email protected]:~$ dpkg -S /usr/bin/vncviewer dpkg-query: no path found matching pattern /usr/bin/vncviewer [email protected]:~$
Немного расследования, и я нашел пакет:
[email protected]:~$ ls -l /usr/bin/vncviewer lrwxrwxrwx 1 root root 27 May 28 15:49 /usr/bin/vncviewer -> /etc/alternatives/vncviewer [email protected]:~$ ls -l /etc/alternatives/vncviewer lrwxrwxrwx 1 root root 20 May 28 15:49 /etc/alternatives/vncviewer -> /usr/bin/xvnc4viewer [email protected]:~$ dpkg -S /usr/bin/xvnc4viewer xvnc4viewer: /usr/bin/xvnc4viewer [email protected]:~$