Come fa Ubuntu a sapere quali programmi esistono e possono essere installati?


9

Ho digitato quanto segue in un terminale

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

Quindi Ubuntu sa che "musique" è un programma, sebbene al momento non sia installato sulla macchina. Tuttavia, se scrivo

$ musiquez
No command 'musiquez' found, did you mean:
 Command 'musique' from package 'musique' (universe)

sa che non esiste un programma simile chiamato "musiquez".

La mia domanda è: come fa Ubuntu a saperlo? Dove sono archiviate queste informazioni su quali applicazioni possono essere installate su Ubuntu?

Risposte:


9

Questa funzione è fornita dal pacchetto comando non trovato (la sua funzione è quella di suggerire alternative e correzioni in caso di errori di digitazione ecc.). Ubuntu lo installa di default.

Come funziona?

Il modo in cui funziona è attraverso la command_not_found_handle()funzione in bash. bash fornisce un hook che è fondamentalmente una funzione che viene invocata quando non viene trovato un comando.


Se sei più curioso, apri il /usr/lib/command-not-foundfile e dai un'occhiata allo script. Funziona usando il modulo python CommandNotFound.

inserisci qui la descrizione dell'immagine


4

Una coppia di pacchetti command-not-founde command-not-found-data, sono ciò che fa funzionare questa funzione.

command-not-foundè semplicemente un gestore per la command_not_found_handle()funzione bash; cerca tra i dati sulla mappatura tra comandi e pacchetti forniti da command-not-found-data.


Suppongo che command-not-foundquindi controlli attraverso la cache locale dei repository che viene effettuata ogni volta che un utente esegue sudo apt-get update.
nerdwaller,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.