Frage Finde heraus, zu welchem ​​Paket eine Datei in Ubuntu / Debian gehört?


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


258
2017-07-22 19:06


Ursprung


Gleiches unter Ubuntu: askubuntu.com/questions/481/ ... - Ciro Santilli 新疆改造中心 六四事件 法轮功
dpkg -S /path/to/filewenn Sie das Paket installiert haben. - Zaz


Antworten:


apt-file search filename

oder

apt-file search /path/to/file


Installieren apt-file, benutzen:

sudo apt-get install apt-file

Sie müssen die Datenbank aktualisieren, bevor Sie sie verwenden können:

sudo apt-file update

210
2017-07-22 19:08



Zu Ihrer Information: apt-file scheint von den von Repositories bereitgestellten Contents-amd64.gz abhängig zu sein. Und nicht alle 3rd-Party-Repos stellen diese Datei zur Verfügung. - Jokester
Es hat nicht für mich funktioniert. Ich habe die Datenbank aktualisiert, aber es gibt nichts zurück. dpkg -S funktioniert wie unten beschrieben. - Northys


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

dpkg -S /usr/bin/ls

'dpkg -S' stimmt nur mit der Zeichenfolge überein, die Sie haben   versorge es, benutze einfach 'ls' als   Das Argument stimmt mit jeder Datei überein   Paket, das 'ls' irgendwo in der   Dateiname. Also normalerweise ist es eine gute Idee   einen absoluten Pfad verwenden. Du kannst sehen   im zweiten Beispiel diese zwölftausend   Dateien, die dpkg bekannt sind, stimmen mit dem überein   nackte Schnur 'ls'.


350
2017-07-22 19:13



Das ist nur, wenn die Dateien bereits installiert sind - John T
Im Kontrast zu apt-file, findet auch das Paket zu einer Datei, wenn es manuell über installiert wurde dpkg -i! - tanius
Wenn du bekommst dpkg-query: Kein Pfad gefunden, der zu einem Muster passt  Versuche dies: dpkg -S "$(readlink -fn "$(which rename)")". - Pablo Bianchi
Seltsam, das hat nicht für mich funktioniert: dpkg-query: no path found matching pattern /usr/bin/javaobwohl es eine Datei gibt /usr/bin/java - nnyby


packages.debian.de ist das, was ich immer benutze, um diese Aufgabe zu erfüllen. Es ist besser als apt-Datei, weil es auch Teile von Dateinamen finden kann. Es ist auch mit der Liste der Hauptpakete verbunden, die Beschreibungen, Fehler usw. auflisten. Alles in allem eine gute Webseite. Nicht so nützlich von der Kommandozeile, aber immer noch ziemlich nützlich.

Für Geschwindigkeit habe ich die URL vorgemerkt:

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

in Firefox, und fügte "debfind" als ein Schlüsselwort hinzu (klicken Sie auf "mehr" im Bookmarkmanager mit es illighted), also kann ich gerade "debfind" eingeben und es funktioniert. Sie können 'Suite' von instabil zu stabil ändern oder testen, wenn Sie möchten, für andere Versionen der Distribution.


16
2017-07-22 20:07



Es funktioniert jedoch nicht mit benutzerdefinierten Repos. - Ctrl-C
Schlechte Wahl in Bezug auf die Automatisierung. - Alexander Shcheblikin


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

$ dlocate [ PATTERN ]
List all records where either the package name or the filename matches PATTERN.

11
2017-08-08 19:30



dlocate ist auch meine Lieblingsmethode, sehr zuverlässig. - Avio
@Avio dlocate findet ein kürzlich installiertes Paket nicht, es sei denn Sie laufen sudo update-dlocatedb zuerst. Der Befehl wird automatisch täglich in /etc/cron.daily/dlocate ausgeführt - jarno


Ich habe Wajig gefunden ...

wajig whichpackage /path/to/file 

z.B.

wajig whichpackage /etc/apt/sources.list

Wajig ist ein praktisches Kommandozeilen- oder Konsolenwerkzeug, das all die apt-get-, dpkg-Fähigkeiten umschließt, die Sie nie lernen wollten. .

So installieren Sie wajig:

apt-get install wajig

Dieser Befehl 'whichpackage' selbst hängt von der apt-Datei ab

Sie müssen immer noch die Datenbank aktualisieren, bevor Sie sie verwenden können: - Ich weiß noch nicht, ob ein Update von apt-get auch den Datei-Cache aktualisiert, aber ich erwarte es.

sudo wajig update

sudo apt-file update

(und Super Cow, Ostern Egss?!)


4
2018-01-14 02:40





Ähnlich wie bei jamuraas Antwort auf Debian kannst du auch zu http://packages.ubuntu.com/ für Ubuntu. Sie müssen ein wenig nach unten scrollen, um das zu finden "Suche den Inhalt von Paketen" Suchfeld, in dem Sie den Pfad einer Datei eingeben können.


2
2017-10-28 10:40



Nun, wenn nur Raspbian auch einen hätte :) - XTL


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

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


0
2017-12-20 00:33



Downvote: Der Link ist kaputt und der Link scheint in erster Linie für RPM-Pakete zu sein. - tripleee


Das Paket command-not-found gibt Hinweise zu möglichen Befehlen und dem Namen des debian-Pakets. Es funktioniert, indem Sie den Befehl in der Bash-Shell eingeben und auf seine Ausgabe schauen.

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 angewendet:

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
2017-11-24 09:59



Dies funktioniert jedoch nicht für beliebige Dateien, wie das angeforderte OP. - Michael Kjörling
Dies ist ein problematischer Tipp, wenn das Programm schädliche Dinge und IS installiert. Hinzufügen -h oder --help Am Ende würde das ein bisschen helfen. Wenn Sie hinzufügen -h Am Ende würde das sicher genug machen, würde ich empfehlen, aber trotzdem ist es kein guter Weg, um das zu erreichen, was das OP verlangt. - Dr Beco