Como implementar a sugestão de instalação de pacotes no Debian?

21

Percebi que, enquanto no Ubuntu, se eu digitar o seguinte:

mc

e não está instalado, recebo a mensagem abaixo:

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

No entanto, no Debian, isso não está disponível. Ele apenas fornece uma mensagem "-bash: / usr / bin / mc: sem esse arquivo ou diretório". Como posso implementar a mesma funcionalidade na linha de comando bash no Debian? Sim, eu sei que, se é uma sugestão de pacote que eu quero, eu posso simplesmente fazer uma pesquisa regex usando a pesquisa apt-cache . No entanto, eu estava esperando a sugestão mais simples imediatamente ao digitar o nome do programa.

De acordo com as discussões, a funcionalidade é fornecida pelo comando package -not-found . No entanto, mesmo depois de instalá-lo e também instalar o pacote bash-complete, ele não está disponível no shell bash do Debian.

Joel G Mathew
fonte

Respostas:

22

A razão pela qual a instalação command-not-foundnão começou a fornecer sugestões para pacotes não instalados foi que eu havia perdido uma pequena notificação do dpkg como parte da instalação.

Um deles deve executar o comando update-command-not-foundimediatamente após a execução apt-get install command-not-found. De fato, o dpkg solicita a execução deste comando.

Joel G Mathew
fonte
1
Eu também tive que executar apt-get updateantes de executar update-command-not-founde abrir uma nova sessão do bash ou source /etc/bash.bash.rc.
jordanbtucker 20/02
Eu fiz um apt updateantes apt install command-not-founddisso update-command-not-founde iniciei um novo shell, mas descobri que precisava de outro apt updatee talvez update-command-not-foundantes de começar a funcionar.
Dave X
9

O pacote debian parece estar incompleto. O LEIA-ME diz que você deve procurar /etc/bash_command_not_foundna sua .bashrc. Estranhamente, esse arquivo não está incluído no pacote.

O command-not-foundpacote debian é baseado no pacote ubuntu . O pacote ubuntu parece ser mais completo nesse sentido.

Conteúdo da versão 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        
}

Adicione essas linhas ao seu ~/.bashrc(ou /etc/bash.bashrc) e o command-not-foundrecurso deve funcionar.

lesmana
fonte
1
O README está incorreto, o Debian não usa esse arquivo. O manipulador está incluído no /etc/bash.bashrc (pelo menos no Debian 9), que é executado automaticamente pelos shells interativos do Bash quando eles iniciam.
precisa saber é o seguinte
A instalação do command-not-foundpacote (versão 0.2.38-4 do debian.org) no MX Linux (base Debian 9 Stretch) não modificou o /etc/bash.bashrc e, posteriormente, não funcionou até a adição das linhas nesta resposta.
Xen2050 20/09/2018