Como o Ubuntu sabe quais programas existem e podem ser instalados?

9

Eu digitei o seguinte em um terminal

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

O Ubuntu sabe que o "musique" é um programa, embora atualmente não esteja instalado na máquina. No entanto, se eu digitar

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

sabe que não existe tal programa chamado "musiquez".

Minha pergunta é: como o Ubuntu sabe disso? Onde esta informação é armazenada sobre quais aplicativos podem ser instalados no Ubuntu?

    
por CodeBlue 11.07.2013 / 21:12

2 respostas

9

Este recurso é fornecido pelo comando não encontrado (Sua função é sugerir alternativas e correções em caso de erro de digitação etc.) pacote. O Ubuntu instala por padrão.

como funciona?

A maneira como funciona é através da função command_not_found_handle() no bash. o bash fornece um gancho que é basicamente uma função que é invocada quando um comando não é encontrado.

Se você está mais curioso, abra o arquivo /usr/lib/command-not-found e dê uma olhada no script. Ele funciona usando o módulo python CommandNotFound.

    
por 11.07.2013 / 21:29
4

Um par de pacotes, command-not-found e command-not-found-data , é o que faz esse recurso funcionar.

command-not-found é simplesmente um manipulador para a função command_not_found_handle() bash; ele pesquisa os dados sobre o mapeamento entre comandos e pacotes fornecidos por command-not-found-data .

    
por 11.07.2013 / 21:28