Как узнать, какой пакет принадлежит файлу?

Как узнать, из какого пакета 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 

Бинго! Это пакет.

 [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]:~$ 
  • Экспорт Synology NFSv4 с отображением идентификатора
  • Evolution на Debian 7 не будет восстанавливать резервный файл Evolution от Fedora 18
  • Как записывать трафик, который находится внутри VPN?
  • Debian / ubuntu - инвертировать все цвета в сеансе рабочего стола (цвета)
  • Как я могу отобразить список всех пакетов, установленных в моей системе Debian?
  • CUDA несовместим с моей версией gcc
  • Переместить Grub на другой диск
  • Как обновить virtualbox 4.2 до 4.3 на debian wheezy с apt-get?
  • Как узнать, взломан ли / Debian?
  • Где хранить скрипты bash, которые все пользователи могут выполнять на Debian?
  • Разрешение sudo запрещено
  • Давайте будем гением компьютера.