Wie finde ich heraus, zu welchem ​​(nicht installierten) Debian-Paket eine Datei gehört?

41

Auf Debian-Systemen (und Derivaten):

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

Das heißt, die Datei /bin/lsgehört zum genannten Debian-Paket coreutils.

Dies funktioniert jedoch nur, wenn das Paket installiert ist. Was ist, wenn es nicht ist?

Tshepang
quelle

Antworten:

58

Apt-Datei

apt-filebietet die Möglichkeit, nach Paketen zu suchen, die eine Binärdatei enthalten (wie Debian oder Ubuntu ). Sie wird nicht standardmäßig installiert, sondern in den Repositorys.

apt-file search <path-to-file>

Möglicherweise möchten Sie vor der Suche ein Update durchführen ...

apt-file update 

Suchen wir zum Beispiel nach der nicht installierten Binärdatei 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

Es ist auch möglich, den Inhalt eines (nicht installierten) Pakets aufzulisten:

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

lecker

yumakzeptiert den Befehl whatprovides(oder provides), um nach installierten oder nicht installierten Binärdateien zu suchen:

yum whatprovides <path-to-file>

Auch hier ist das nicht installiert 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

zypperDer searchBefehl von kann Dateilisten prüfen, wenn er mit der -fOption verwendet wird.

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

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

Webpin bietet eine webbasierte Lösung, es gibt sogar ein Skript für die Kommandozeile.

pkgfile

Verfügbar wie pkgtoolsfür pacmanbasierte Systeme. Bietet eine ähnliche Suchfunktion wie die oben genannten:

$ pkgfile -si /usr/bin/mysqldump

Name      : mysql-clients
Version   : 5.1.54-1
Url       : http://www.mysql.com/
License   : GPL
Depends   : libmysqlclient
...
wedeln
quelle
apt-file search protocBeispielsweise liefert es mehr als sechstausend Ergebnisse. Allerdings enden die Ergebnisse in den Dateinamen, so mit grep Sie die Dateinamen tatsächlich finden Sie suchen: apt-file search protoc | grep 'protoc$'. Es funktioniert, weil es alles herausfiltert, was mit "protoc" endet . Natürlich sollten Sie "protoc" durch das ersetzen, wonach Sie suchen.
Luc
5

Das Standardwerkzeug dafür ist apt-file . Führen Sie aus apt-file update, um die Indexdatei herunterzuladen. Hier ist die Ausgabe:

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

Danach laufen apt-file search search_term.

Tshepang
quelle
3

Wenn Sie keinen Zugriff auf die Maschine haben oder die in den vorherigen Antworten angegebenen Befehle nicht verwenden können, können Sie dies auch über die webbasierte Debian-Paketsuchmaschine herausfinden (das zweite Formular, " Den Inhalt von Paketen durchsuchen "). ).

Bruno
quelle