「プログラム 'x'は現在インストールされていません」の後にプログラムをインストールするように依頼します


18

インストールされていないプログラムを実行しようとすると、メッセージが表示されます

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

プログラムをインストールするように提案する代わりに、実際のコマンドを入力する必要があります。この動作はどのように変更できますか?

回答:


17

この動作を担当するパッケージはcommand-not-foundcommand-not-foundをインストールしますパッケージであり、デフォルトでは無効になっていますが、すでに目的の動作が含まれています。次の行を追加することで有効にできます~/.bashrc

export COMMAND_NOT_FOUND_INSTALL_PROMPT=1

動作が次のように変更されました

The program 'x' is currently not installed. You can install it by typing:
sudo apt-get install x
Do you want to install it? (N/y)

注: pythonのクラッシュ(具体的にはAttributeError: 'str' object has no attribute 'decode')に関するメッセージが表示される場合、これはバグ1073919です。RaringとSaucyの修正プログラムは既に利用可能です。あるいは(上級ユーザーのみ)、ファイルを変更できます/usr/lib/python3/dist-packages/CommandNotFound/CommandNotFound.py。変更する必要がある行については、バグレポートに添付されている差分を参照してください。

編集:修正は現在、Raring(SRU)のバージョン0.3ubuntu7.1およびSaucyの0.3ubuntu8でリリースされています。


1

私のソリューションは、セキュリティと快適性のハイブリッドです。

auto-aptは、その環境内で実行されているプログラムのファイルアクセスをチェックし、プログラムがアンインストールパッケージに属することがわかっているファイルにアクセスしようとすると、auto-aptはapt-getを使用してそのパッケージをインストールします。この機能を使用するには、aptとsudoが必要です。また、要求されたファイルを含むパッケージを検索するための簡単なデータベースも提供します。

それは、auto-aptによって事前に各ファイルアクセスが検証される環境に入り、存在しない場合はデータベース(a la apt-file)で検索し、目的のパッケージをダウンロードしてインストールし、プログラムを続行できるようにするターミナルエミュレーターです。。ルートとして実行する必要があります。

sudo auto-apt

これは、パッケージを構築しているときに、ヘッダーがないなどの各構成エラーを探して画面の前にいる気分ではない場合に役立ちます。

これはapt-get + apt-fileの置換としても使用でき、プログラムをインストールするだけでcommand実行するように指示できます。

システムを見ていないときは、rootユーザーを使用しているかのように開いたままにしないでください。

マニュアルページ:http : //derpi.tuwien.ac.at/cgi-bin/man/man2html?1+auto-apt


0

自動インストールは悪い考えです。入力を保存したい場合は、使用できます

sudo apt-get install !!

where !!は、履歴の最後のコマンドに置き換えられます。おそらくこれをエイリアスにすることもできますが、!!評価せずに追加する方法はわかりません。

@ eliah-kaganと@gertvdijkがコメントで述べているように、いくつかの注意事項があります。一部のプログラムには、実行するバイナリと同じパッケージ名がありません。また、引数をバイナリに渡すと、予期しない結果が生じる可能性があります。


確かに、私の提案は素晴らしい解決策ではないことは知っていますが、ユーザーのニーズに基づいて「十分に」機能する可能性があります。
l3dx

5
コマンド名(システム上のバイナリのファイル名)は、必ずしもパッケージの名前と同じではありません。
gertvdijk

3
l3dx:私にはまだ不安がありますが(パッケージ名とコマンド名がしばしば異なるという@gertvdijkのポイント、および元のコマンドに渡された追加のコマンドライン引数の非常に悪い影響に関する懸念を含む)、あなたは何かに向かっているようです。少しテストした結果、理論的には(実際に)動作するよりも実際に動作するようです。明確化、警告、およびおそらく他のオプションの詳細のために、この回答を拡張することをお勧めします。いずれにせよ、私はこれをダウン票したが、ダウン票を削除した。
エリアカガン

0

推奨パッケージを迅速にインストールする方法はいくつかあります。

  • export COMMAND_NOT_FOUND_INSTALL_PROMPT=1ようなどこかに追加~/.bashrc

    これは「最もクールな」方法ですが、明らかにそれほど安全ではありませんが、おそらく90%の時間は内部の「ありがとう」を引き出します。応答。

    (この方法の個人的な欠点の1つは、答えを覚えたり検索したりするのが難しいと思われることです。そのため、これまであまり使用していませんでした。)

  • デフォルトのターミナルを使用している場合は、行をすばやく選択し、中クリックしてコマンド行に直接貼り付けることができます。(他の端末またはSSHアプリには異なる方法があります。)

    実際には、これを十分に速く、「偶然」行うのが少し難しく、事前のセットアップを必要とせずに、代わりにそれを行う傾向があります。

  • ただし、すぐに入力できるように-すばやく入力できる(または学習したい場合)- sudo apt install packagename直接入力するために、何か言いたいことがあります。

    これは、筋肉の記憶を鍛えるのに役立ちます。また、パッケージ名を読んで入力する必要があることを意味します。これは、今後、より簡単に覚えやすくなることを意味します。また、より新しいUbuntuバージョンでaptは、の代わりに機能するため、少し簡単ですapt-get


1
おそらくの~/.bashrc代わりに~/.bash_rc
edwinksl

おかげで、私はおそらく考えていた.bash_profile
mwfearnley
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.