Chiedi di installare il programma dopo "Il programma 'x' non è attualmente installato"

18

Se provi a eseguire un programma che non è installato, riceverai un messaggio

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

e invece di offrirti di installare il programma per te, devi digitare il comando attuale. Come può essere cambiato questo comportamento?

    
posta Gerhard Burger 17.06.2013 - 12:00

4 risposte

17

Il pacchetto responsabile di questo comportamento è ​​command-not-found pacchetto, e include già il comportamento desiderato sebbene sia disabilitato per impostazione predefinita. Puoi abilitarlo aggiungendo la seguente riga al tuo ~/.bashrc

export COMMAND_NOT_FOUND_INSTALL_PROMPT=1

Ora il comportamento è cambiato in

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 ricevi un messaggio sull'arresto anomalo di python (in particolare AttributeError: 'str' object has no attribute 'decode' ) questo è bug 1073919 . Una correzione è già disponibile per Raring and Saucy. In alternativa ( solo utenti avanzati ), puoi modificare il file /usr/lib/python3/dist-packages/CommandNotFound/CommandNotFound.py , consultare il diff allegato al rapporto sui bug per le righe che devono essere modificate.

Modifica: la correzione è ora disponibile nella versione 0.3ubuntu7.1 in Raring (SRU) e per 0.3ubuntu8 in Saucy.

    
risposta data Gerhard Burger 17.06.2013 - 12:00
1

La mia soluzione è un ibrido tra sicurezza e comodità:

  

auto-apt controlla l'accesso ai file dei programmi in esecuzione al suo interno    ambienti e se un programma tenta di accedere a un file noto a    appartenere a un pacchetto disinstallato, auto-apt lo installerà    pacchetto usando apt-get. Questa funzione richiede che apt e sudo funzionino.    Fornisce anche un semplice database per cercare quale pacchetto contiene    un file richiesto.

È un emulatore di terminale in cui si immette un ambiente in cui ogni accesso ai file viene verificato in anticipo da auto-apt e, se non esiste, cerca nel database (a la apt-file ) e scarica e installa il pacchetto desiderato, quindi consente al programma di continuare. Dovresti eseguirlo come root:

sudo auto-apt

Questo è utile nei casi in cui stai creando un pacchetto e non hai voglia di stare davanti allo schermo alla ricerca di ogni errore di configurazione per intestazioni mancanti, ecc.

Questo può anche essere usato come apt-get + apt-file replacement dove puoi installare programmi solo dicendo al command di eseguirlo.

Devi capire che non devi lasciarlo aperto quando il tuo sistema non è guardato, dal momento che è quasi come se stessimo usando l'utente root.

Pagina man: link

    
risposta data Braiam 17.08.2013 - 02:47
0

L'installazione automatica sarebbe una cattiva idea. Se vuoi salvare un po 'di digitazione puoi usare

sudo apt-get install !!

dove !! sarà sostituito dall'ultimo comando dalla cronologia. Probabilmente potresti fare di questo un alias, ma non so come aggiungere !! senza valutarlo.

Tuttavia ci sono alcuni avvertimenti, come menzionato da @ eliah-kagan e @gertvdijk nei commenti. Alcuni programmi non hanno lo stesso nome del pacchetto del file binario che verrebbe eseguito. Inoltre, quando si passano gli argomenti al binario, ciò potrebbe causare alcuni risultati imprevisti.

    
risposta data l3dx 16.08.2013 - 09:25
0

Ci sono alcuni metodi per installare rapidamente il pacchetto suggerito:

  • Aggiungi export COMMAND_NOT_FOUND_INSTALL_PROMPT=1 a qualcosa come ~/.bashrc

    questo è il modo più "cool", anche se ovviamente non è altrettanto sicuro, ma probabilmente il 90% delle volte susciterà un "Grazie, è esattamente quello che volevo che tu facessi!" risposta.

    (Uno svantaggio personale di questo metodo è che mi sembra di trovare la risposta difficile da ricordare / cercare, quindi tendo a non usarlo molto finora.)

  • Se si utilizza il terminale predefinito, è possibile selezionare rapidamente la linea e fare clic con il tasto centrale per incollarlo direttamente nella riga di comando. (Altri terminali o app SSH possono avere metodi diversi.)

    In pratica, tendo a trovarlo abbastanza veloce, e leggermente più difficile da fare "accidentalmente", e senza richiedere alcuna configurazione precedente, che invece tendo a farlo.

  • C'è qualcosa da dire, però - se puoi (o vuoi imparare) digitare velocemente - per digitare sudo apt install packagename direttamente.

    Ti aiuta a esercitare la tua memoria muscolare, e significa anche che devi leggere e digitare il nome del pacchetto, il che significa che probabilmente lo ricorderai più facilmente in futuro. È anche leggermente più semplice nelle versioni più recenti di Ubuntu, perché apt funziona al posto di apt-get .

risposta data mwfearnley 17.08.2016 - 22:36

Leggi altre domande sui tag