Come implementare i suggerimenti per l'installazione dei pacchetti su Debian?


21

Ho notato che mentre su Ubuntu, se digito quanto segue:

mc

e non è installato, ricevo il messaggio seguente:

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

Comunque in Debian, questo non è disponibile. Dà solo un messaggio "-bash: / usr / bin / mc: nessun file o directory". Come posso implementare la stessa funzionalità nella riga di comando bash su Debian? Sì, so che se voglio un suggerimento sul pacchetto, posso semplicemente fare una ricerca regex usando la ricerca apt-cache . Tuttavia, speravo immediatamente nel suggerimento più semplice di digitare il nome del programma.

Come da discussioni, la funzionalità è fornita dal pacchetto comando non trovato . Tuttavia, anche dopo averlo installato e installato anche il pacchetto bash-completamento, questo non è disponibile sulla shell bash Debian.

Risposte:


22

Il motivo per cui l'installazione command-not-foundnon ha iniziato a fornire suggerimenti per i pacchetti non installati è stata la mancanza di una piccola notifica da parte di dpkg durante l'installazione.

Uno dovrebbe eseguire il comando update-command-not-foundimmediatamente dopo l'esecuzione apt-get install command-not-found. In effetti dpkg richiede di eseguire questo comando.


1
Ho anche dovuto correre apt-get updateprima di correre, update-command-not-foundquindi aprire una nuova sessione di bash o source /etc/bash.bash.rc.
jordanbtucker,

Ho fatto apt updateprima un, apt install command-not-foundpoi ho update-command-not-foundiniziato una nuova shell, ma ho scoperto che ne avevo bisogno un'altra apt updatee forse update-command-not-foundprima che iniziasse a funzionare.
Dave X,

9

Il pacchetto debian sembra essere incompleto. Il README dice che dovresti procurarti il /etc/bash_command_not_foundtuo .bashrc. Stranamente quel file non è incluso nel pacchetto.

Il command-not-foundpacchetto debian si basa sul pacchetto ubuntu . Il pacchetto Ubuntu sembra essere più completo in questo senso.

Contenuto della versione ubuntu di 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        
}

Aggiungi quelle righe al tuo ~/.bashrc(o /etc/bash.bashrc) e la command-not-foundfunzione dovrebbe funzionare.


1
Il file README non è corretto, Debian non usa quel file. Il gestore è incluso in /etc/bash.bashrc (almeno in Debian 9) che viene eseguito automaticamente dalle shell interattive di Bash all'avvio.
hackerb9,

L'installazione del command-not-foundpacchetto (versione 0.2.38-4 da debian.org) su MX Linux (Debian 9 Stretch base) non ha modificato /etc/bash.bashrc e successivamente non ha funzionato fino all'aggiunta delle righe in questa risposta.
Xen2050,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.