Ubuntuはどのようなプログラムが存在し、インストールできるかをどのようにして知るのですか?


9

端末で次のように入力しました

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

したがって、Ubuntuは "musique"がプログラムであることを認識していますが、現在マシンにはインストールされていません。ただし、入力すると

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

「ムジケ」と呼ばれるそのようなプログラムがないことを知っています。

私の質問は、Ubuntuはどのようにこれを知っているのですか?Ubuntuにインストールできるアプリケーションに関するこの情報はどこに保存されていますか?

回答:


9

この機能は、コマンドが見つかりません(タイプミスの場合の代替案や修正を提案する機能など)パッケージによって提供されます。Ubuntuはデフォルトでインストールします。

それはどのように機能しますか?

それがcommand_not_found_handle()機能する方法は、bash の関数によるものです。bashは、基本的にコマンドが見つからないときに呼び出される関数であるフックを提供します。


さらに興味がある場合は、/usr/lib/command-not-foundファイルを開いてスクリプトを確認してください。PythonモジュールCommandNotFoundを使用して動作します。

ここに画像の説明を入力してください


4

この機能を動作させるには、2つのパッケージ、command-not-foundおよびcommand-not-found-dataが必要です。

command-not-found単にcommand_not_found_handle()bash関数のハンドラです。によって提供されるコマンドとパッケージ間のマッピングに関するデータを検索しますcommand-not-found-data


私はその前提となりcommand-not-found、すべての時間は、ユーザが実行作られたリポジトリのローカルキャッシュによって、その後のチェックをsudo apt-get update
nerdwaller 2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.