web-dev-qa-db-ja.com

rpmを使用してLinux(Fedora 16)にSun Java 6とSun Java 7を並べてインストールします。

これは私が達成したいことですが、私は失敗しています(私はLinuxの初心者です)。

Fedora 16ボックス(64ビット)を使用しており、Oracleの複数のバージョンをインストールしたいと思いますJava(現時点ではJava 6およびJava 7)。) Java rpmソフトウェアを使用してインストールしようとしています。両方を/optにインストールしたいと思います。

必要なパッケージをOracleサイトからダウンロードしました。

jdk-6u30-linux-x64-rpm.bin
jdk-7u2-linux-x64.rpm

実行中の.binファイル内からrpmパッケージを抽出しました

./jdk-6u30-linux-x64-rpm.bin -x

次の状況を取得します。

jdk-6u30-linux-AMD64.rpm
jdk-7u2-linux-x64.rpm

次に、jdk-6u30-linux-AMD64.rpmの内部を次のように調べました。

rpm -qpl ~/Downloads/jdk-7u2-linux-x64.rpm

Java 6はファイルを次の場所にインストールします:

/etc                   (some files)
/usr/Java/jdk1.6.0\_30 (the majority of the files)

同様にJava 7は以下にインストールされます:

/etc
/usr/Java/jdk1.7.0\_02

/optにインストールしたいので、rpm relocationを使用してインストールしようとしました。どちらのパッケージも実際にはrpmで再配置可能であるようです。

rpm -qpi ~/Downloads/jdk-6u30-linux-AMD64.rpm | grep -i reloc

結果として与える

Relocations : /usr/Java

そして

rpm -qpi ~/Downloads/jdk-7u2-linux-x64.rpm | grep -i reloc

結果として与える

Relocations : /usr/Java

試行1(Java 6をインストールしてからJava 7をインストール)

Sudo rpm -i --relocate /usr/Java=/opt/Java ~/Downloads/jdk-6u30-linux-AMD64.rpm

これはrpmが言うのでほぼスムーズに実行されます

ln: failed to create symbolic link '/usr/Java/jdk1.6.0\_30': No such file or directory`

rpm -q jdk

言う

jdk-1.6.0\_30-fcs.x86\_64_ ... OK!

その後

Sudo rpm -i --relocate /usr/Java=/opt/Java ~/Downloads/jdk-7u2-linux-x64.rpm

途方もなく言って失敗します:

file /etc/init.d/jexec from install of
jdk-2000:1.7.0\_02-fcs.x86\_64*     conflicts with file from package
jdk-2000:1.6.0\_30-fcs.x86\_64*

試行2(Java 7をインストールしてからJava 6)をインストール)

まだインストール済みJava 6最初に削除します:

Sudo rpm -e jdk*
Sudo rpm -q jdk*

与える:

package jdk is not installed* <- OK, uninstalled!

次に、インストールを試してみましょうJava 7

Sudo rpm -i --relocate /usr/Java=/opt/Java ~/Downloads/jdk-7u2-linux-x64.rpm*

通常のエラーが発生します:

ln: failed to create symbolic link '/usr/Java/jdk1.7.0_02': No such file or directory`*

そして今Java 6

Sudo rpm -i --relocate /usr/Java=/opt/Java ~/Downloads/jdk-6u30-linux-AMD64.rpm*

2つのことを言って失敗します:

package jdk-2000:1.7.0\_02-fcs.x86\_64 (which is newer than jdk-2000:1.6.0\_30-fcs.x86\_64) is already installed*

そして

file /etc/init.d/jexec from install of jdk-2000:1.6.0\_30-fcs.x86\_64
conflicts with file from package jdk-2000:1.7.0\_02-fcs.x86\_64*

私の質問は:

  1. シンボリックリンク作成の問題:それを修正する方法はありますか?インストールプロセスは、パッケージが再配置可能であっても(私が見る限り)、再配置メカニズムを使用しようとしたことを認識していないようです
  2. インストールプロセスで何か不足していますか?同じLinuxマシンでJava 6とJava 7の両方)を使用することは本当に可能ですか?どのようにして何が問題なのですか?
  3. 私の目標を達成する別の方法はありますか?

PS:これが私の最初の質問です。何か問題がある場合は事前に謝罪します(私の英語から書式設定など)PS2:この質問にタグSun-Java7-jdkを追加しようとしましたが、十分な評判がありませんそれ...このタグを作成する必要がありますか?

8
alfo_1205

Oracle JavaとOpenJDKがFedora 16に並んで存在するようにすることで同様の問題がありました。 真でない場合は偽 のガイドに従って、完全に機能しました。

3
bfj7

これは、このエラーが発生した場合のより簡単な方法です。

package jdk.... (which is newer than jdk...) is already installed

使用 --forceフラグを使用して、複数のバージョンをインストールします。

だから例えば:

Sudo rpm -ivh --force jdk-6u35-linux-AMD64.rpm
14
Cojones

jdk-7u2-linux-x64.rpmjdk-6u30-linux-AMD64.rpmよりも新しく、RPMパッケージ管理ツールは新しいリリースで上書きできるほどスマートです。

Sun Java 6とSun Java 7を並べてインストールする最も簡単な方法は、Java tarballsをダウンロードすることです。 Oracleからそれらを/optに抽出します

2
Dejan

RPMの代わりにJava tarballsをインストールすることについて、Dejanは正しいと思います。Java_HOMEおよびPATH正しく使用する場合、ほとんどの場合、RPMインストールで提供される追加の設定は必要ありません(jexecが実際に行うことの詳細については、 このページを参照してください )。

1つの問題は、JDKの一部のバージョンがtarball(*.tar.gz)利用可能ですが、代わりに*-rpm.bin*.bin。この場合、*.binファイルは実際には、自己解凍アーカイブであり、実行すると通常のJava_HOMEディレクトリになります。

1
Kevin Cross

Javaランタイム環境をFedora、Oracle Linux、Red Hat Enterprise Linuxなどにインストールするには、.

# yum install Java-1.7.0-openjdk

Javaを使用してプログラムを開発するためにパッケージをインストールするには.

# yum install Java-1.7.0-openjdk-devel

から http://namhuy.net/1195/how-to-install-Oracle-Java-jdk-7.html

0
Johny