Wie kann man feststellen, in welchem ​​Ubuntu-Paket sich ein Tool befindet?

23

Als konkretes Beispiel möchte ich in der Lage sein, ein bestimmtes Tool zu verwenden, das nicht installiert ist (z. B. nslookup) und zu bestimmen, welches Paket installiert werden muss, wenn Folgendes fehlschlägt:

apt-get install nslookup
E: Unable to locate package nslookup

Natürlich kann ich googeln, um die Antwort für ein bestimmtes Paket (dnsutils) zu finden, aber ich möchte wissen, wie ich es selbst finden kann.

ErebusBat
quelle
Dies ist schnell und schmutzig Apt-Cache-Suche nslookup
The Unix Janitor
apt-cache durchsucht nur die Beschreibungen. ErikA wies darauf hin, dass ich nach einer bestimmten Datei gesucht habe: apt-file search FOO
ErebusBat

Antworten:

23

Ich kenne zwei Möglichkeiten, um dies zu tun:

host ~ # apt-file update
host ~ # apt-file search nslookup
dnsutils: /usr/bin/nslookup
dnsutils: /usr/share/man/man1/nslookup.1.gz
gajim: /usr/share/gajim/src/common/nslookup.py
kaptain: /usr/share/kaptain/nslookup.kaptn
kvirc2-data: /usr/share/kvirc2/help/en/nslookup.kvihelp
libgnet2.0-0: /usr/share/doc/libgnet2.0-0/examples/dnslookup.c.gz
manpages-ja: /usr/share/man/ja/man8/nslookup.8.gz
procmail-lib: /usr/share/procmail-lib/pm-janslookup.rc
rbot: /usr/share/rbot/plugins/nslookup.rb
scrollz: /usr/share/scrollz/help/nslookup
zsh: /usr/share/zsh/4.3.4/functions/Completion/Unix/_nslookup
zsh: /usr/share/zsh/4.3.4/functions/Misc/nslookup
zsh-beta: /usr/share/zsh-beta/functions/Completion/Unix/_nslookup
zsh-beta: /usr/share/zsh-beta/functions/Misc/nslookup

und...

host ~ # apt-cache search nslookup
host - utility for querying DNS servers
dnsutils - Clients provided with BIND
EEAA
quelle
1
apt-cacheDurchsucht nur die Pakete, die Sie bereits installiert haben, während apt-fileALLE Pakete in Ihrem System durchsucht werden sources.list, einschließlich der Pakete, die nicht installiert sind. Also in diesem Fall apt-fileist derjenige zu verwenden.
Steven Montag
1
@Steven, damit muss ich nicht einverstanden sein. Ich habe gerade eine Testsuche nach "vlc" auf meinem Ubuntu-VPS mit apt-cache durchgeführt und es wurden alle vlc-bezogenen Pakete angezeigt, von denen keines von mir installiert wurde.
EEAA
@Steven Monai, das stimmt nicht. apt-cacheschaut auf Paketbeschreibungen (Suchen /var/lib/apt/lists/*_Packages). Etwas installiert zu haben, spielt keine Rolle. Die Paketbeschreibungen enthalten keine Liste der Dateien. Ich bin damit einverstanden, dass dies apt-filewahrscheinlich das zu verwendende Tool ist, wenn das Öffnen eines Webbrowsers keine Option ist.
Zoredache 18.11.10
Es gibt auch auto-apt als Alternative zu apt-file. Ich habe keine starke Präferenz. auto-apt kann fehlgeschlagene exec-Aufrufe überwachen, was nützlich sein kann, wenn ein Konfigurationsskript ausgeführt wird, das die Feature-Erkennung ausführt.
Tobu
1
@EricA, Zoredache: Ich stehe korrigiert da. Lassen Sie mich noch einmal wiederholen: Wenn Sie wissen möchten, welches deinstallierte Paket eine bestimmte Datei enthält (z. B. /usr/bin/nslookup), verwenden Sie apt-file. Wenn Sie nur die Paketnamen und -beschreibungen durchsuchen möchten, apt-cachefunktioniert dies einwandfrei.
Steven Montag
3

Hast du command-not-foundinstalliert?

Geben Sie einfach den Befehl in bash oder zsh ein und Sie erfahren, über welches Paket es verfügt und ob Sie Nicht-Haupt-Repos aktivieren oder Ihren PATH reparieren müssen. Oder anrufen command-not-found $command_name.

Oder Sie gehen auf http://packages.ubuntu.com/file:bin/nslookup , aber das sind standardmäßig karmische Pakete.

Tobu
quelle
0

Ubuntus Online-Repository-Browser verfügt über die Funktion "Inhalte von Paketen durchsuchen". AFAIK, es ist nicht in apt-get / aptitude implementiert, aber in den meisten Fällen werden Sie mit "apt-get search" zufrieden sein, wenn Sie nach einem Paket suchen, das ein ähnlich benanntes Programm enthält.

Lux In Tenebris
quelle