2009-07-22 19:06:32 +0000 2009-07-22 19:06:32 +0000
310
310

Finden, zu welchem Paket eine Datei in Ubuntu/Debian gehört?

Ich vermisse häufig ein Programm, eine Manpage oder eine andere Datei, wenn ich an meinem Ubuntu 8.04-System arbeite. Gibt es eine einfache Möglichkeit, nachzuschauen, welches Paket eine bestimmte Datei enthält (ob sie bereits installiert ist oder nicht)? Vielleicht eine obskure Option für apt oder dpkg?

Antworten (8)

416
416
416
2009-07-22 19:13:44 +0000

(Debian/Ubuntu) Herausfinden, zu welchem Paket eine Datei gehört :

dpkg -S /usr/bin/ls

‘dpkg -S’ passt nur auf die Zeichenkette, die Sie ihm übergeben, also passt die Verwendung von ‘ls’ als Argument auf jede Datei von jedem Paket, das ‘ls’ irgendwo im Dateinamen hat. Daher ist es normalerweise eine gute Idee, einen absoluten Pfad zu verwenden. Sie können im zweiten Beispiel sehen, dass 12 Tausend Dateien, die dpkg bekannt sind, auf die bloße Zeichenkette “ls” passen.

255
255
255
2009-07-22 19:08:44 +0000
apt-file search filename

oder

apt-file search /path/to/file

Um apt-file zu installieren, verwenden Sie:

sudo apt-get install apt-file

Sie müssen seine Datenbank aktualisieren, bevor Sie es verwenden können:

sudo apt-file update
20
20
20
2009-07-22 20:07:17 +0000

packages.debian.org ist das, was ich immer verwende, um diese Aufgabe zu erledigen. Es ist besser als apt-file, weil es auch Teile von Dateinamen finden kann. Es ist auch mit der Hauptpaketliste verlinkt, die Beschreibungen, Fehler usw. auflistet. Alles in allem eine gute Website. Nicht so nützlich von der Kommandozeile aus, aber immer noch recht nützlich.

Der Schnelligkeit halber habe ich die Url mit einem Lesezeichen versehen:

http://packages.debian.org/search?searchon=contents&keywords=%s&mode=filename&suite=unstable&arch=any

in Firefox, und fügte “debfind” als Schlüsselwort hinzu (klicken Sie auf “mehr” im Lesezeichen-Manager, wenn es hervorgehoben ist), so dass ich einfach “debfind ” eintippen kann und es wird funktionieren. Sie können “suite” von unstable auf stable oder testing ändern, wenn Sie wollen, für andere Versionen der Distribution.

11
11
11
2011-08-08 19:30:27 +0000

Sie können auch dlocate verwenden. Aus der Manpage;

$ dlocate [PATTERN]
List all records where either the package name or the filename matches PATTERN.
4
4
4
2013-01-14 02:40:06 +0000

Ich habe Wajig gefunden…

wajig whichpackage /path/to/file

z.B.

wajig whichpackage /etc/apt/sources.list

Wajig ist ein praktisches Kommandozeilen- oder Konsolen-Tool, das all die apt-get- und dpkg-Gutheiten verpackt, die Sie nie lernen wollten. .

Um wajig zu installieren, verwenden Sie:

apt-get install wajig

Der Befehl ‘whichpackage’ selbst hängt von apt-file ab

Sie müssen noch seine Datenbank aktualisieren, bevor Sie es benutzen können: - Ich weiß noch nicht, ob wajig update whixh ein apt-get update auch den Dateicache aktualisiert, aber ich nehme an, dass es das tut.

sudo wajig update

sudo apt-file update

( und Super Cow, Easter egss ? ! )

2
2
2
2013-10-28 10:40:51 +0000

Ähnlich wie jamuraa’s Antwort für Debian, können Sie auch zu http://packages.ubuntu.com/ für Ubuntu gehen. Sie müssen ein wenig nach unten scrollen, um das Suchfeld “Search the contents of packages” zu finden, wo Sie den Pfad einer Datei eingeben können.

0
0
0
2014-11-24 09:59:47 +0000

Das Paket command-not-found gibt Ihnen Hinweise auf mögliche Befehle und den Namen des Debian-Pakets. Es funktioniert, indem Sie den Befehl in die Bash-Shell eingeben und sich dessen Ausgabe ansehen.

Zum Beispiel, wenn der Befehlsname bekannt ist:

zer@ivy:~ 10:45 $ zsh5
The program 'zsh5' is currently not installed. To run 'zsh5' please ask
your administrator to install the package 'zsh'
zsh5: command not found

und wenn der Befehl nicht bekannt ist, werden einige Vermutungen angestellt:

zer@ivy:~ 09:46 $ zsh
No command 'zsh' found, did you mean:
 Command 'lsh' from package 'lsh-client' (main)
 Command 'osh' from package 'omake' (main)
 Command 'ysh' from package 'libyaml-shell-perl' (main)
 Command 'ssh' from package 'openssh-client' (main)
 Command 'vsh' from package 'crystalspace' (main)
 Command 'dsh' from package 'dsh' (main)
 Command 'ash' from package 'ash' (main)
 Command 'msh' from package 'nmh' (main)
 Command 'zssh' from package 'zssh' (main)
 Command 'qsh' from package 'gridengine-client' (main)
 Command 'sh' from package 'dash' (main)
 Command 'bsh' from package 'bsh' (main)
zsh: command not found
0
0
0
2012-12-20 00:33:23 +0000

Versuchen Sie, nach Dateien zu suchen, indem Sie http://www.kodkast.com/applications/find-which-package-file-belongs-to

Dies ist eine Anwendung, um nach Dateien zu suchen, die in verschiedenen rpms/Linux-Paketen enthalten sind, und ist sehr nützlich, wenn Sie das rpm nicht einmal auf Ihrem Rechner installiert haben.