役立たずのプログラマーブログ

自分の得た知識や経験をブログに書くことで整理し、考えをまとめることが目標

Fedora9にSunのJDKを入れた

2008-11-02 04:19:48 | Linux
久しぶりにtopcoderをやろうと思った。
標準のfedoraに、javawsはすでに入っていたのでそのままで動くことを期待しつつ
alenaをクリックするも動かず。
ローカルでforceオプションだか何だかをつけてやれば、取り合えず立ち上がった。
$javaws --force(うろ覚え) ContestAppletProd.jnlp

このままでも動きそうな気がしたが、OpenJDKはjavawsについてすべてサポートしているわけでは
ないらしいので、人のサーバーということもあり、念のためSunのJDKを入れることにした。

JPackageの最新が、Update6までの対応だったので、最新のUpdate10ではなく、Updaate6のJDKを入手して、
インストール

$chmod +x jdk-6u6-linux-i586-rpm.bin
$su
#./jdk-6u6-linux-i586-rpm.bin


んで、JPackageのサイト
ftp://jpackage.hmdc.harvard.edu/JPackage/1.7/generic/RPMS.non-free/
からrpmを持ってきてインストール。

#rpm -ivh java-1.6.0-sun-compat-1.6.0.06-1jpp.i586.rpm
リンク /usr/bin/javaws はスレーブ javaws(/usr/share/javaws javaws)に不適切です。

なんかjavawsでエラーがでた。嫌な予感がする。

# alternatives --config java
としても、Sunのjavaが居ないので、JPackageがうまくインストールできていない模様。

めんどくせぇーと思いつつ、ネットを探索。
いくつか似たようなものが引っかかるが、直接コレというものには当たらず。
ま、どこかには記事があるんだろうけど・・・。

しょうがないので、SRPMをダウンロードしてきたあと、インストールしてソースをみる。
多分スクリプトだろうことは、似たような記事から類推した。
#rpm -ivh ./java-1.6.0-sun-compat-1.6.0.06-1jpp.src.rpm
#vi /usr/src/redhat/SPECS/java-1.6.0-sun-compat.spec
で中身を覗く。
よくわからないものの、
$cat /usr/lib/rpm/i586-linux/macrosの定義を見比べたりしていると、
シンボリックリンクの位置が、/usr/share/javawsになっていたのを発見。
ちょうどエラーで出てるし、怪しいので、/usr/binになるように変更した。

--slave %{_datadir}/javaws javaws %{_jvmdir}/%{jrelnk}/javaws

--slave %{_bindir}/javaws javaws %{_jvmdir}/%{jrelnk}/javaws

んで、rpmを作り、インストール。
#rpmbuild --bb /usr/src/redhat/SPECS/java-1.6.0-sun-compat.spec
#rpm -ivh /usr/src/redhat/RPMS/i586/java-1.6.0-sun-compat-1.6.0.06-1jpp.i586.rpm

ちゃんとSunのJDKが選択可能になっていた。
#alternateves --config --java
3 プログラムがあり 'java' を提供します。

選択 コマンド
-----------------------------------------------
1 /usr/lib/jvm/jre-1.5.0-gcj/bin/java
* 2 /usr/lib/jvm/jre-1.6.0-openjdk/bin/java
+ 3 /usr/lib/jvm/jre-1.6.0-sun/bin/java

どうやらおそらく変更できている模様。
# java -version
java version "1.6.0_06"
Java(TM) SE Runtime Environment (build 1.6.0_06-b02)
Java HotSpot(TM) Client VM (build 10.0-b22, mixed mode, sharing)

あとは、firefox側の設定。
編集->設定から、プログラム->jnlpファイルで、パスを/usr/bin/javaws/javawsを
指定してやれば完了。

うーん、めんどくさかった。
途中で、OpenJDKを消したり、色々と試行錯誤したが、結局はJPackageだった。
ちなみにtopcoderへログインできたことしか確認してません。

最新の画像もっと見る