Bagaimana Ubuntu tahu program apa yang ada dan dapat diinstal?


9

Saya mengetik berikut ini di terminal

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

Jadi Ubuntu tahu bahwa "musique" adalah sebuah program, meskipun saat ini tidak diinstal pada mesin. Namun, jika saya mengetik

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

ia tahu bahwa tidak ada program yang disebut "musiquez".

Pertanyaan saya adalah, bagaimana Ubuntu mengetahui hal ini? Di mana informasi ini disimpan tentang aplikasi apa yang dapat diinstal di Ubuntu?

Jawaban:


9

Fitur ini disediakan oleh paket command-not-found (Fungsinya untuk menyarankan alternatif dan koreksi jika terjadi kesalahan ketik dll). Ubuntu menginstalnya secara default.

bagaimana cara kerjanya?

Cara kerjanya adalah melalui command_not_found_handle()fungsi di bash. bash menyediakan sebuah hook yang pada dasarnya adalah sebuah fungsi yang dipanggil ketika sebuah perintah tidak ditemukan.


Jika Anda lebih ingin tahu, buka /usr/lib/command-not-foundfile dan lihat skripnya. Ia bekerja menggunakan modul python CommandNotFound.

masukkan deskripsi gambar di sini


4

Sepasang paket, command-not-founddan command-not-found-data, adalah yang membuat fitur ini berfungsi.

command-not-foundhanyalah sebuah handler untuk command_not_found_handle()fungsi bash; itu mencari melalui data tentang pemetaan antara perintah dan paket yang disediakan oleh command-not-found-data.


Saya akan berasumsi bahwa command-not-foundkemudian memeriksa melalui cache lokal dari repositori yang dibuat setiap kali pengguna berjalan sudo apt-get update.
nerdwaller
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.