web-dev-qa-db-ja.com

Debianにパッケージインストールの提案を実装する方法は?

Ubuntuで次のように入力すると、

mc

インストールされていない場合、以下のメッセージが表示されます。

The program 'mc' is currently not installed. You can install it by typing: Sudo apt-get install mc

ただし、Debianでは利用できません。 「-bash:/ usr/bin/mc:No such file or directory」というメッセージが表示されるだけです。 Debianのbashコマンドラインに同じ機能を実装するにはどうすればよいですか?はい、必要なパッケージの提案であれば、apt-cache searchを使用して正規表現検索を実行できることを知っています。しかし、私はプログラムの名前を入力する際の簡単な提案をすぐに期待していました。

説明に従って、機能はパッケージcommand-not-foundによって提供されます。ただし、それをインストールし、bash-completionパッケージもインストールした後でも、これはDebian bashシェルでは使用できません。

23
Joel G Mathew

command-not-foundのインストールが、インストールされていないパッケージの提案を開始しなかった理由は、インストールの一部としてdpkgからの小さな通知を見逃していたためです。

update-command-not-foundを実行した直後にコマンドapt-get install command-not-foundを実行することになっています。実際、dpkgはこのコマンドの実行を要求します。

23
Joel G Mathew

Debianパッケージは不完全なようです。 READMEは、/etc/bash_command_not_found.bashrcをソースする必要があることを示しています。奇妙なことに、そのファイルはパッケージに含まれていません。

Debian command-not-foundパッケージbuntuパッケージ に基づいています。その点で、ubuntuパッケージはより完全なようです。

bash_command_not_found のubuntuバージョンのコンテンツ:

command_not_found_handle() {
  if  [ -x /usr/lib/command-not-found ]; then
     /usr/lib/command-not-found -- "$1" 
     return $?
  else
     return 127
  fi        
}

これらの行を~/.bashrc(または/etc/bash.bashrc)に追加すると、command-not-found機能が動作するはずです。

9
lesmana

私はこの問題を次のように解決します:

最初にインストールされたコマンドが見つかりません

Sudo apt update
Sudo apt install command-not-found

その後

Sudo update-command-not-found
Sudo apt update
0