Comando não encontrado, sugestão de instalação do programa no terminal da sua Distro Linux


Quem usa Ubuntu e derivados está acostumado com a sugestão para instalar um programa que não está instalado, confira como adicionar o recurso nas demais distros Linux.

 Comando não encontrado, sugestão de instalação do programa no terminal da sua Distro Linux

No Debian, Ubuntu e derivados o pacote responsável por esse recurso é o command-not-found no Fedora e derivados é o PackageKit-command-not-found

No Arch Linux e derivados o pacote que tem esse mesmo recurso é o pkgfile.

O recurso é super útil ao iniciante e ao veterano por indicar o programa que contem o comando no seu repositório e o repositório que ele se encontra.

Veja nos exemplo.


Instalação

Use o método para a sua distribuição ou remasterização ( Distro ) que ela suga os repositórios.

Comando não encontrado para Debian

sudo apt install command-not-found
Atualize a lista de pacotes do apt com os comandos na sequencia para gerar o cache para o "command-not-found".

OBS: Isso vai demorar um pouco, ainda mais se a sua internet for fraca.
sudo apt update
sudo apt-file update
Atualize o cache do "command-not-found".
sudo update-command-not-found
Feche o terminal e abra novamente e teste com programas que vc não tenha instalados.

Comando não encontrado para Fedora

Atualize o cache do dnf.

sudo dnf makecache
Instale
sudo dnf install PackageKit-command-not-found

Comando não encontrado para Arch Linux e Manjaro

Achei o pkgfile padrão muito pobre e dei uma modificada no seu script para obter o resultado abaixo.

Instalação

Para instalar o pkgfile execute o comando abaixo no terminal.

sudo pacman -S pkgfile

Crie o banco de dados do pkgfile com o comando.

sudo pkgfile -u
Habilite o script padrão.

echo "source /usr/share/doc/pkgfile/command-not-found.bash" >> ~/.bashrc

Com ele você ira ter o resultado abaixo.

Se preferir você pode usar o meu script modificado como foi mostrado acima.

Crie o script.

nano ~/.comandnotfound

Cole as linhas abaixo em vermelho no editor de texto nano.

command_not_found_handle () {
  local pkgs cmd=$1
  local FUNCNEST=10

  set +o verbose

  mapfile -t pkgs < <(pkgfile -bv -- "$cmd" 2>/dev/null)

  if (( ${#pkgs[*]} )); then
    local pkg=${pkgs[0]%% *}
    printf '\n'
    printf 'O programa "%s" não está instalado mas é encontrado no pacote:\n\n' "$cmd"
    printf '  %s\n' "${pkgs[@]}"
    printf '\n'
    printf 'O programa pode ser instalado com o comando.\n'
    printf '\n'
    printf '  %s\n' "sudo pacman -S ${pkgs[0]%% *}"
    printf '\n'
    read -r -p "Se preferir posso instalar o programa $pkg agora mesmo!? [Y/n] " response
    [[ -z $response || $response = [Yy] ]] || return 0

    printf '\n'
    sudo pacman -S -- "$pkg"
  else
    printf "bash: %s: command not found\n" "$cmd"
  fi >&2

  return 127
}


Ficando assim.


Salve teclando CTRL + x tecle s e tecle Enter para fechar.

Altere o script no ~/.bashrc

nano ~/.bashrc

Localize a linha adicionada anteriormente.


"source /usr/share/doc/pkgfile/command-not-found.bash"

Altere para.

source ~/.comandnotfound

Ficando assim.

Salve teclando CTRL + x tecle s e tecle Enter para fechar.

Feche o terminal e abra novamente para testar.



Comentários

Você precisa ver isso

Todos os arquivos do blog

Mostrar mais