`update-alternatives`は正確に何をしますか?


99

update-alternatives使用するコマンドは何ですか?

次の例をご覧ください。

sudo update-alternatives --install /usr/bin/java java /usr/local/java/jre1.7.0_09/bin/java 1

それは何をするためのものか?jdkをパスに追加することとどのように違いますか?

コマンドを実行したとしましょう。元の状態に戻すにはどうすればよいですか?


2
およびを使用sudo update-alternatives --config javaしてjavacjavawsインストール済みバージョンを選択することもできます。
Shayan

回答:


73

/etc/alternativesこの目的でプログラムを指すようにリンクを更新します。以下のような例がたくさん、ありますx-www-browsereditorお好みのブラウザやエディタにリンクされます、など。一部のスクリプトまたはシステムツールでは、ファイルを手動で編集する必要があり(たとえば、構成の競合dpkg)、選択のエディターを提供するために代替手段を調べます。の場合java、これはJavaランタイム環境です-Oracle、OpenJREなど。

のリンク/etc/alternativesは単なるシンボリックリンクです。あなたは例えばを使用してそれらを見ることができます

ls -l /etc/alternatives

さらに、通常の/usr/binバイナリもシンボリックリンクです。例えば:

ls -l /usr/bin/java
  lrwxrwxrwx 1 root root 22 Aug 14 10:33 /usr/bin/java -> /etc/alternatives/java
ls -l /etc/alternatives/java
  lrwxrwxrwx 1 root root 46 Aug 14 10:33 /etc/alternatives/java -> /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java

したがって、PATH変更する必要はありません。シンボリックリンクを使用するだけです。


つまり、1つのコマンドを入力すると、選択を促すプロンプトが表示されます。これは、パスを正しく設定することに対する唯一の追加の利点です。また、Javaの異なるベンダーもインストールしているとしましょう。2つの異なるベンダーの両方を指すようにjavaを更新するにはどうすればよいですか?
開発者Android

説明したように両方を指すことはできません。それの全体的な目的は、与えられた例のようにエントリの実装への単一のポインタを持つことです。質問なし。そして、候補者のいずれかが動作するはずです-それは単に管理者の好みでなければなりません。そしてまた:PATHs とは何の関係もありません。
gertvdijk

1
はい。それは物事をクリアします。私はパスに戻っていることを知っていますが、それらの違いを理解したいだけです。パスの場合は、場所を明示的に指定する必要がありますが、この場合は単にsymリンクするため、javaを入力すると最初に/ etc / alternativesが検索されます。それとも、この仮定をするのは間違っていますか?
開発者Android
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.