Làm thế nào để Ubuntu biết những chương trình tồn tại và có thể được cài đặt?


9

Tôi đã gõ như sau trong một thiết bị đầu cuối

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

Vì vậy, Ubuntu biết rằng "musique" là một chương trình, mặc dù hiện tại nó chưa được cài đặt trên máy. Tuy nhiên, nếu tôi gõ

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

nó biết rằng không có chương trình nào gọi là "musiquez".

Câu hỏi của tôi là, làm thế nào để Ubuntu biết điều này? Thông tin này được lưu trữ ở đâu về những ứng dụng nào có thể được cài đặt trên Ubuntu?

Câu trả lời:


9

Tính năng này được cung cấp bởi gói không tìm thấy (Chức năng của nó là đề xuất các giải pháp thay thế và sửa chữa trong trường hợp nhập sai, v.v.). Ubuntu cài đặt nó theo mặc định.

làm thế nào nó hoạt động?

Cách nó hoạt động là thông qua command_not_found_handle()chức năng trong bash. bash cung cấp một hook về cơ bản là một hàm được gọi khi không tìm thấy lệnh.


Nếu bạn tò mò hơn, hãy mở /usr/lib/command-not-foundtập tin và xem kịch bản. Nó hoạt động bằng cách sử dụng mô-đun python CommandNotFound.

nhập mô tả hình ảnh ở đây


4

Một cặp gói, command-not-foundcommand-not-found-data, là những gì làm cho tính năng này hoạt động.

command-not-foundchỉ đơn giản là một trình xử lý cho command_not_found_handle()hàm bash; nó tìm kiếm thông qua dữ liệu về ánh xạ giữa các lệnh và gói được cung cấp bởi command-not-found-data.


Tôi sẽ giả định rằng command-not-foundsau đó kiểm tra thông qua bộ đệm cục bộ của các kho lưu trữ được thực hiện mỗi khi người dùng chạy sudo apt-get update.
nerdwaller
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.