Как узнать, к какому (не установленному) пакету Debian принадлежит файл?

41

В системах Debian (и их производных):

$ dpkg --search /bin/ls
coreutils: /bin/ls

То есть файл /bin/lsпринадлежит пакету Debian с именем coreutils.

Но это работает только если пакет установлен. Что если это не так?

tshepang
источник

Ответы:

58

APT-файл

apt-fileпредоставляет возможность поиска пакета, предоставляющего двоичный файл (например, Debian или Ubuntu ), он устанавливается не по умолчанию, а в репозитории.

apt-file search <path-to-file>

Вы можете обновить один раз, прежде чем искать ...

apt-file update 

Например, давайте найдем не установленный бинарный файл mysqldump:

$ apt-file search /usr/bin/mysqldump

mysql-client-5.1: /usr/bin/mysqldump
mysql-client-5.1: /usr/bin/mysqldumpslow
mysql-cluster-client-5.1: /usr/bin/mysqldump
mysql-cluster-client-5.1: /usr/bin/mysqldumpslow

Также возможно перечислить содержимое (не установленного) пакета:

$ apt-file list mysql-client-5.1

mysql-client-5.1: /usr/bin/innochecksum
mysql-client-5.1: /usr/bin/innotop
mysql-client-5.1: /usr/bin/myisam_ftdump
mysql-client-5.1: /usr/bin/mysql_client_test
...

ням

yumпринимает команду whatprovides(или provides) для поиска установленных или не установленных двоичных файлов:

yum whatprovides <path-to-file>

Опять же не установлено mysqldump:

$ yum whatprovides /usr/bin/mysqldump

mysql-5.1.51-2.fc14.i686 : MySQL client programs and shared libraries
Repo        : fedora
Matched from: 
Filename    : /usr/bin/mysqldump

mysql-5.1.51-1.fc14.i686 : MySQL client programs and shared libraries
Repo        : fedora
Matched from: 
Filename    : /usr/bin/mysqldump

Zypper

zypper«S searchкоманда может проверить списки файлов при использовании с -fопцией.

zypper se -f /bin/mksh
Loading repository data...
Reading installed packages...

S | Name | Summary           | Type   
--+------+-------------------+--------
  | mksh | MirBSD Korn Shell | package

Webpin предоставляет веб-решение, есть даже сценарий для командной строки.

Pkgfile

Доступно как pkgtoolsдля pacmanсистем на базе. Предоставляет похожую функцию поиска, как и другие выше:

$ pkgfile -si /usr/bin/mysqldump

Name      : mysql-clients
Version   : 5.1.54-1
Url       : http://www.mysql.com/
License   : GPL
Depends   : libmysqlclient
...
шутник
источник
apt-file search protocНапример, дает более шести тысяч результатов. Однако результаты заканчиваются в имени файла, так и с Grep вы можете найти имя файла , который вы ищете: apt-file search protoc | grep 'protoc$'. Это работает, потому что он отфильтровывает все, что заканчивается "protoc". Конечно, вы должны заменить «protoc» тем, что вы ищете.
Люк
5

Стандартным инструментом для этого является apt-файл . Запустите, apt-file updateчтобы загрузить индексный файл. Вот вывод:

Downloading complete file ftp://ftp.is.co.za/debian/dists/squeeze/Contents-i386.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 16.6M  100 16.6M    0     0  33191      0  0:08:47  0:08:47 --:--:-- 38951

После этого беги apt-file search search_term.

tshepang
источник