Comment implémenter la suggestion d'installation de paquet sur Debian?

21

J'ai remarqué que lorsque je suis sur Ubuntu, si je tape ce qui suit:

mc

et il n'est pas installé, je reçois le message ci-dessous:

The program 'mc' is currently not installed. You can install it by typing: sudo apt-get install mc

Cependant, dans Debian, ce n'est pas disponible. Il donne juste un message "-bash: / usr / bin / mc: Aucun fichier ou répertoire". Comment puis-je implémenter la même fonctionnalité en ligne de commande bash sur Debian? Oui, je sais que si c'est une suggestion de package que je veux, je peux simplement faire une recherche regex en utilisant la recherche apt-cache . Cependant, j'espérais une suggestion plus simple immédiatement en tapant le nom du programme.

Selon les discussions, la fonctionnalité est fournie par le package command-not-found . Cependant, même après l'avoir installé, et également installé le paquet bash-complétion, ce n'est pas disponible sur le shell bash Debian.

Joel G Mathew
la source

Réponses:

22

La raison pour laquelle l'installation command-not-foundn'a pas commencé à fournir des suggestions pour les packages non installés est que j'avais manqué une petite notification de dpkg dans le cadre de l'installation.

On est censé exécuter la commande update-command-not-foundimmédiatement après l'exécution apt-get install command-not-found. En fait, dpkg vous invite à exécuter cette commande.

Joel G Mathew
la source
1
J'ai également dû exécuter apt-get updateavant d'exécuter update-command-not-foundpuis ouvrir une nouvelle session bash ou source /etc/bash.bash.rc.
jordanbtucker
J'ai fait un apt updateavant apt install command-not-foundpuis un update-command-not-found, puis j'ai commencé un nouveau shell, mais j'ai trouvé que j'avais besoin d'un autre apt updateet peut-être update-command-not-foundavant qu'il ne commence à fonctionner.
Dave X
9

Le paquet debian semble incomplet. Le README dit que vous devez vous approvisionner /etc/bash_command_not_founddans votre .bashrc. Étrangement, ce fichier n'est pas inclus dans le package.

Le command-not-foundpaquet debian est basé sur le paquet ubuntu . Le paquet ubuntu semble être plus complet à cet égard.

Contenu de la version ubuntu de bash_command_not_found :

command_not_found_handle() {
  if  [ -x /usr/lib/command-not-found ]; then
     /usr/lib/command-not-found -- "$1" 
     return $?
  else
     return 127
  fi        
}

Ajoutez ces lignes à votre ~/.bashrc(ou /etc/bash.bashrc) et la command-not-foundfonctionnalité devrait fonctionner.

lesmana
la source
1
Le fichier README est incorrect, Debian n'utilise pas ce fichier. Le gestionnaire est inclus dans /etc/bash.bashrc (au moins dans Debian 9) qui est exécuté automatiquement par les shells interactifs Bash au démarrage.
hackerb9
L'installation du command-not-foundpaquet (version 0.2.38-4 de debian.org) sur MX Linux (base Debian 9 Stretch) n'a pas modifié /etc/bash.bashrc et n'a par la suite pas fonctionné jusqu'à l'ajout des lignes dans cette réponse.
Xen2050