Comment savoir dans quel package Ubuntu se trouve un outil

23

À titre d'exemple concret, je veux pouvoir prendre un outil particulier qui n'est pas installé (par exemple nslookup) et être en mesure de dire quel package je dois installer lorsque ce qui suit échoue:

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

Évidemment, je peux sur Google pour trouver la réponse pour un package spécifique (dnsutils) mais je veux savoir comment le trouver moi-même.

ErebusBat
la source
c'est une recherche d'apt-cache rapide et sale nslookup
The Unix Janitor
apt-cache recherche uniquement les descriptions. Je cherchais un fichier spécifique, ErikA a souligné: recherche de fichiers apt FOO
ErebusBat

Réponses:

23

Je connais deux façons de procéder:

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

et...

host ~ # apt-cache search nslookup
host - utility for querying DNS servers
dnsutils - Clients provided with BIND
EEAA
la source
1
apt-cacherecherche uniquement les packages que vous avez déjà installés, tandis que apt-filerecherche tous les packages dans votre sources.list, y compris les packages qui ne sont pas installés. Donc, dans ce cas, apt-filec'est celui à utiliser.
Steven lundi
1
@Steven, je vais devoir être en désaccord avec cela. Je viens de faire un test de recherche de "vlc" sur mon VPS ubuntu en utilisant apt-cache, et il a montré tous les packages liés à vlc, dont aucun que j'ai installé.
EEAA
@Steven Monai, ce n'est pas vrai. apt-cacheexamine les descriptions de paquets (recherches /var/lib/apt/lists/*_Packages). Faire installer quelque chose n'a pas d'importance. Les descriptions de package n'incluent pas une liste des fichiers. Je suis d'accord que apt-filec'est probablement l'outil à utiliser, si l'ouverture d'un navigateur Web n'est pas une option.
Zoredache
Il y a aussi auto-apt, comme alternative à apt-file. Je n'ai pas de préférence marquée. auto-apt peut écouter les appels exec échoués, ce qui peut être utile lors de l'exécution d'un script de configuration qui détecte les fonctionnalités.
Tobu
1
@EricA, Zoredache: Je suis corrigé. Permettez-moi de reformuler: si vous avez besoin de savoir quel paquet désinstallé contient un fichier particulier (par exemple /usr/bin/nslookup), alors utilisez apt-file. Si vous souhaitez uniquement rechercher les noms et descriptions des packages, cela apt-cachefonctionne très bien.
Steven lundi
3

Avez-vous command-not-foundinstallé?

Tapez simplement la commande dans bash ou zsh et elle vous dira quel paquet l'a, et si vous devez activer les dépôts non principaux ou réparer votre PATH. Ou appelez command-not-found $command_name.

Ou vous pouvez aller sur http://packages.ubuntu.com/file:bin/nslookup , mais cela par défaut est des packages karmiques.

Tobu
la source
0

Le navigateur de référentiel en ligne d'Ubuntu dispose de la fonction "Rechercher le contenu des packages". AFAIK, il n'est pas implémenté dans apt-get / aptitude, mais dans la plupart des cas, vous serez satisfait de "apt-get search" lors de la recherche d'un paquet contenant un programme de même nom.

Lux In Tenebris
la source