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


21

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検索を使用して正規表現検索を実行できることを知っています。しかし、プログラムの名前をすぐに入力することで、より簡単な提案を望んでいました。

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

回答:


22

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

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


1
私はまた、実行する必要がありましたapt-get update実行する前に、update-command-not-found新しいbashのセッションを開くかのいずれか、その後source /etc/bash.bash.rc
ヨルダンバトッカー

私がやったapt updateの前にapt install command-not-found、その後update-command-not-found、その後、新しいシェルを開始しましたが、私は別のものを必要見つけapt update、多分update-command-not-foundそれは作業を開始する前に。
デイブX

9

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

debian command-not-foundパッケージは、ubuntuパッケージに基づいています。その点で、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機能が動作するはずです。


1
READMEは間違っています。Debianはそのファイルを使用しません。ハンドラは/etc/bash.bashrc(少なくともDebian 9)に含まれており、起動時にBashインタラクティブシェルによって自動的に実行されます。
hackerb9

command-not-foundパッケージ(debian.orgのバージョン0.2.38-4)をMX Linux(Debian 9 Stretch base)にインストールしても/etc/bash.bashrcは変更されず、この回答に行を追加するまで機能しませんでした。
Xen2050
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.