Pide instalar el programa después de "El programa 'x' no está instalado actualmente"

18

Si intentas ejecutar un programa que no está instalado, recibirás un mensaje

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

y en lugar de ofrecerle la instalación del programa, debe escribir el comando real. ¿Cómo se puede cambiar este comportamiento?

    
pregunta Gerhard Burger 17.06.2013 - 10:00

4 respuestas

17

El paquete que es responsable de este comportamiento es el ​​comando-no encontrado , y ya incluye el comportamiento deseado, aunque está deshabilitado de manera predeterminada. Puede habilitarlo agregando la siguiente línea a su ~/.bashrc

export COMMAND_NOT_FOUND_INSTALL_PROMPT=1

Ahora el comportamiento se cambia a

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: Si recibes un mensaje sobre el bloqueo de python (específicamente AttributeError: 'str' object has no attribute 'decode' ), este es error 1073919 . Una solución ya está disponible para Raring y Saucy. Alternativamente ( usuarios avanzados solamente ), puede cambiar el archivo /usr/lib/python3/dist-packages/CommandNotFound/CommandNotFound.py , consulte la diferencia adjunta al informe de error para las líneas que deben modificarse.

Editar: la solución ahora se lanzó en la versión 0.3ubuntu7.1 en Raring (SRU) y para 0.3ubuntu8 en Saucy.

    
respondido por el Gerhard Burger 17.06.2013 - 10:00
1

Mi solución es un híbrido entre seguridad y comodidad:

  

auto-apt comprueba el acceso a archivos de los programas que se ejecutan dentro de su    entornos, y si un programa intenta acceder a un archivo conocido    pertenecer a un paquete desinstalado, auto-apt instalará    paquete usando apt-get. Esta función requiere apt y sudo para funcionar.    También proporciona una base de datos simple para buscar qué paquete contiene    un archivo solicitado.

Es un emulador de terminal donde ingresas a un entorno donde cada acceso de archivo se verifica manualmente por auto-apt y, si no existe, busca en la base de datos (a la apt-file ) y descarga e instala el paquete deseado. luego permite que el programa continúe. Debes ejecutarlo como root:

sudo auto-apt

Esto es útil en casos en los que está creando un paquete y no está de humor para estar frente a la pantalla buscando cada error de configuración para los encabezados que faltan, etc.

Esto también se puede usar como reemplazo de apt-get + apt-file donde puedes instalar programas simplemente diciendo al command para ejecutarlo.

Debe comprender que no debe dejarlo abierto cuando no se mira su sistema, ya que es casi como si estuviera usando el usuario raíz.

Página de manual: enlace

    
respondido por el Braiam 17.08.2013 - 00:47
0

La instalación automática sería una mala idea. Si quiere guardar algo de mecanografía, puede usar

sudo apt-get install !!

donde !! será reemplazado por el último comando del historial. Probablemente también puedas hacer que este sea un alias, pero no sé cómo agregar !! sin evaluarlo.

Sin embargo, hay algunas advertencias, como lo mencionan @ eliah-kagan y @gertvdijk en los comentarios. Algunos programas no tienen el mismo nombre de paquete que el binario que ejecutaría. Además, al pasar argumentos al binario, esto podría generar algunos resultados inesperados.

    
respondido por el l3dx 16.08.2013 - 07:25
0

Hay algunos métodos para instalar rápidamente el paquete sugerido:

  • Agregue export COMMAND_NOT_FOUND_INSTALL_PROMPT=1 a algún lugar como ~/.bashrc

    esta es la forma "más genial", aunque obviamente no es tan segura, pero probablemente el 90% del tiempo generará un "¡Gracias, eso es exactamente lo que quería que hicieras!" respuesta.

    (Una desventaja personal de este método es que parece que la respuesta es difícil de recordar / buscar, por lo que tiendo a no haberla usado mucho hasta el momento).

  • Si está utilizando el terminal predeterminado, puede seleccionar rápidamente la línea y hacer clic con el botón central para pegarlo directamente en la línea de comando. (Otros terminales o aplicaciones SSH pueden tener diferentes métodos).

    En la práctica, tiendo a encontrar esto lo suficientemente rápido, y un poco más difícil de hacer "accidentalmente", y sin requerir ninguna configuración previa, que tiendo a hacer eso en su lugar.

  • Sin embargo, hay algo que decir, si puedes (o quieres aprender) escribir rápidamente, para escribir sudo apt install packagename directamente.

    Te ayuda a ejercitar tu memoria muscular, y también significa que debes leer y escribir el nombre del paquete, lo que significa que probablemente lo recuerdes más fácilmente en el futuro. También es un poco más fácil en versiones de Ubuntu más recientes, porque apt funciona en lugar de apt-get .

respondido por el mwfearnley 17.08.2016 - 20:36

Lea otras preguntas en las etiquetas