私の自動ビルドサーバーは Apache Ant に依存するジョブを実行します。スクリプトはapt-get install ant
を呼び出します。 Antは、openjdk-6-jre-headless
を実行するupdate-alternatives
に依存します。これは、それ自体をデフォルトのJDKにします(プロセス内のシンボリックリンクを書き換えます)。すでにOracle JDKを(手動で)インストールしており、update-alternatives
を実行したくない。これが発生するたびに手動でupdate-alternatives
を復元することはできません。
誰かが昨年これを修正しようとしましたが、撃shotされました: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=678195
openjdk-6-jre-headless
がupdate-alternatives
を呼び出さないようにするにはどうすればよいですか、さらに悪いケースのシナリオでは、インストールプロセスの前に値を検索し、事後に復元する方法を教えてください。
UPDATE:新しいバグレポートを提出しました here 。よろしくお願いします。
自分の質問に答える:
https://askubuntu.com/a/55960/23678 を使用してOracle JDKをインストールしました。ご覧のとおり、これらの命令はupdate-alternatives
を1の優先度で呼び出します。openjdk-6-jre-headless
をインストールすると、1061の優先度が設定されます(高い優先度が低い優先度に置き換わります)。
この問題を解決するために、単純にOracle JDKに1061より高い優先度を与えました。openjdk-6-jre-headless
がインストールされると、Oracle JDKをデフォルトとして上書きしなくなりました。
UPDATE:OpenJDKの優先順位を更新するには、単に再実行しました:
Sudo update-alternatives --install "/usr/bin/Java" "Java" "/usr/lib/jvm/jdk1.7.0/bin/Java" 2000
Sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/jdk1.7.0/bin/javac" 2000
Sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/lib/jvm/jdk1.7.0/bin/javaws" 2000
優先順位は1ではなく2000です(優先順位は最後のコマンドライン引数です)。