web-dev-qa-db-ja.com

openjdk-6-jre-headlessがOracle JDKインストールを破壊しないようにする方法

私の自動ビルドサーバーは 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-headlessupdate-alternativesを呼び出さないようにするにはどうすればよいですか、さらに悪いケースのシナリオでは、インストールプロセスの前に値を検索し、事後に復元する方法を教えてください。

UPDATE:新しいバグレポートを提出しました here 。よろしくお願いします。

7
Gili

自分の質問に答える:

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です(優先順位は最後のコマンドライン引数です)。

10
Gili