Peça para instalar o programa depois de “O programa 'x' não está atualmente instalado”

18

Se você tentar executar um programa que não esteja instalado, receberá uma mensagem

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

e, em vez de oferecer a você instalar o programa para você, você precisa digitar o comando real. Como esse comportamento pode ser alterado?

    
por Gerhard Burger 17.06.2013 / 12:00

4 respostas

17

O pacote responsável por esse comportamento é o comando não encontrado pacote, e ele já inclui o comportamento desejado, embora esteja desabilitado por padrão. Você pode ativá-lo adicionando a seguinte linha ao seu ~/.bashrc

export COMMAND_NOT_FOUND_INSTALL_PROMPT=1

Agora o comportamento é alterado para

The program 'x' is currently not installed. You can install it by typing:
sudo apt-get install x
Do you want to install it? (N/y)

Nota: Se você receber uma mensagem sobre o travamento do python (especificamente AttributeError: 'str' object has no attribute 'decode' ), isso é o bug 1073919 . Uma correção já está disponível para Raring e Saucy. Alternativamente (somente usuários avançados ), você pode alterar o arquivo /usr/lib/python3/dist-packages/CommandNotFound/CommandNotFound.py , veja o diff anexado ao relatório de bug para as linhas que precisam ser alteradas.

Edit: A correção foi lançada na versão 0.3ubuntu7.1 no Raring (SRU) e no 0.3ubuntu8 no Saucy.

    
por Gerhard Burger 17.06.2013 / 12:00
1

Minha solução é um híbrido entre segurança e conforto:

  

auto-apt verifica o acesso a arquivos de programas em execução dentro de seu    ambientes, e se um programa tentar acessar um arquivo conhecido    pertencem a um pacote desinstalado, o auto-apt instalará esse    pacote usando o apt-get. Este recurso requer que o apt e o sudo funcionem.    Ele também fornece banco de dados simples para pesquisar qual pacote contém    um arquivo solicitado.

É um emulador de terminal onde você entra em um ambiente onde cada acesso de arquivo é verificado antes pelo auto-apt e se ele não existir, pesquise no banco de dados (a apt-file ) e baixe e instale o pacote desejado, então permite que o programa continue. Você deve executá-lo como root:

sudo auto-apt

Isso é útil nos casos em que você está criando um pacote e não está com disposição para estar na frente da tela, procurando por cada erro de configuração para cabeçalhos ausentes, etc.

Isso também pode ser usado como substituição do apt-get + apt-file, onde você pode instalar programas apenas informando o command para executá-lo.

Você deve entender que você não deve deixá-lo aberto quando o seu sistema não for visto, já que é quase como se você estivesse usando o usuário root.

Página do manual: link

    
por Braiam 17.08.2013 / 02:47
0

A instalação automática seria uma má ideia. Se você quiser salvar alguma digitação, você pode usar

sudo apt-get install !!

onde !! será substituído pelo último comando do histórico. Você provavelmente poderia fazer isso como um alias também, mas eu não sei como adicionar !! sem avaliá-lo.

Existem algumas ressalvas, como mencionado por @ eliah-kagan e @gertvdijk nos comentários. Alguns programas não possuem o mesmo nome de pacote que o binário que você executaria. Além disso, ao passar argumentos para o binário, isso pode resultar em alguns resultados inesperados.

    
por l3dx 16.08.2013 / 09:25
0

Existem alguns métodos para instalar rapidamente o pacote sugerido:

  • Adicione export COMMAND_NOT_FOUND_INSTALL_PROMPT=1 a algum lugar como ~/.bashrc

    essa é a maneira mais "legal", embora obviamente não seja tão segura, mas provavelmente 90% do tempo irá provocar um "Obrigado, é exatamente o que eu queria que você fizesse!" resposta.

    (Uma desvantagem pessoal deste método é que eu pareço encontrar a resposta difícil de lembrar / procurar, então eu não uso muito até agora.)

  • Se você estiver usando o Terminal padrão, poderá selecionar rapidamente a linha e clicar com o botão do meio para colá-lo diretamente na linha de comando. (Outros terminais ou aplicativos SSH podem ter métodos diferentes.)

    Na prática, eu costumo achar isso rápido o suficiente, e um pouco mais difícil de fazer "acidentalmente", e sem exigir qualquer configuração prévia, que eu costumo fazer isso em vez disso.

  • Há algo a ser dito - se você pode (ou quer aprender) digitar rapidamente - para digitar sudo apt install packagename diretamente.

    Ele ajuda você a exercitar sua memória muscular e também significa que você precisa ler e digitar o nome do pacote, o que significa que provavelmente se lembrará mais facilmente no futuro. Também é um pouco mais fácil em versões mais recentes do Ubuntu, porque apt funciona no lugar de apt-get .

por mwfearnley 17.08.2016 / 22:36