Jak dowiedzieć się, do którego (niezainstalowanego) pakietu Debian należy plik?

41

W systemach Debian (i pochodnych):

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

Oznacza to, że plik /bin/lsnależy do pakietu Debian o nazwie coreutils.

Ale działa to tylko wtedy, gdy pakiet jest zainstalowany. Co jeśli nie?

tshepang
źródło

Odpowiedzi:

58

apt-file

apt-fileudostępnia funkcję wyszukiwania pakietu udostępniającego plik binarny (taki jak Debian lub Ubuntu ), domyślnie nie jest instalowany, ale w repozytoriach.

apt-file search <path-to-file>

Możesz raz zaktualizować przed przeszukaniem ...

apt-file update 

Na przykład wyszukajmy niezainstalowany plik binarny 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

Można również wyświetlić zawartość pakietu (niezainstalowanego):

$ 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
...

mniam

yumakceptuje polecenie whatprovides(lub provides), aby wyszukać zainstalowane lub niezainstalowane pliki binarne:

yum whatprovides <path-to-file>

Ponownie niezainstalowany 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 searchkomenda może sprawdzić listy plików w przypadku korzystania z -fopcji.

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

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

Webpin zapewnia rozwiązanie internetowe, istnieje nawet skrypt dla wiersza poleceń.

pkgfile

Dostępne jak pkgtoolsdla pacmansystemów opartych. Zapewnia podobną funkcję wyszukiwania, jak pozostałe powyżej:

$ pkgfile -si /usr/bin/mysqldump

Name      : mysql-clients
Version   : 5.1.54-1
Url       : http://www.mysql.com/
License   : GPL
Depends   : libmysqlclient
...
machać
źródło
apt-file search protoc, na przykład daje ponad sześć tysięcy wyników. Jednak wyniki zakończyć w nazwie pliku, więc z grep rzeczywiście można znaleźć nazwę pliku, którego szukasz: apt-file search protoc | grep 'protoc$'. Działa, ponieważ odfiltrowuje wszystko, co kończy się na „protoc”. Oczywiście powinieneś zastąpić „protoc” tym, czego szukasz.
Luc
5

Standardowym narzędziem do tego jest apt-file . Uruchom, apt-file updateaby pobrać plik indeksu. Oto wynik:

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

Następnie biegnij apt-file search search_term.

tshepang
źródło
3

Jeśli nie masz dostępu do komputera lub nie możesz użyć poleceń podanych w poprzednich odpowiedziach, możesz to również sprawdzić za pomocą wyszukiwarki internetowej pakietu Debian (drugi formularz „ Przeszukaj zawartość pakietów ” ).

Bruno
źródło