QuickVPS上のDebian EtchにJDK5.0をいれる
色々はまりまくったんですが、インストールする方法はみっけれたので備忘録までにメモ。
気をつけないといけないのは2つ。
んで、QuickVPS上のDebian Etchだと上記2つのせいで apt-get でのインストールが一筋縄ではいきません。
というわけで激しく力技で回避します。
回避方法としては
- Server VM を Client VM に置き換えちゃう
- 起動時間のロスを甘んじて受け入れる = 起動最適化をすっ飛ばす
です。
まずは下準備をします。
JavaDoc周りをインストールしたい場合、インストールの途中で Sun からzipファイル落としてきて /tmp に入れろや!と言われる為、先に /tmp に置いちゃった方が楽です。
実際に言われる内容は
This package is an installer package, it does not actually contain the J2SDK documentation. You will need to go download one of the archives: jdk-1_5_0-doc.zip jdk-1_5_0-doc-ja.zip (choose the non-update version if this is the first installation). Please visit http://java.sun.com/j2se/1.5.0/download.html now and download. The file should be owned by root.root and be copied to /tmp.
なのでこれに従う感じですね。
ここまで準備が出来たら apt-get で一式入れます。
# apt-get install sun-java5-jdk sun-java5-demo sun-java5-source sun-java5-doc sun-java5-plugin sun-java5-fonts
すると
・・・ sun-java5-bin (1.5.0-10-3) を設定しています ... Could not create the Java virtual machine. dpkg: sun-java5-bin の処理中にエラーが発生しました (--configure): ・・・
という感じで怒られてインストールが失敗します。
そしたら力業の出番です。
まずは Server VM を Client VM に置き換えます。
# cd /usr/lib/jvm/java-1.5.0-sun/jre/lib/i386 # mv server server.original # ln -s client server
これで Server VM が起動しようとしても実際に動くのは Client VM になります。
次に、apt-get のインストールで呼ばれる postinst ファイルを書き換えます。
vi /var/lib/dpkg/info/sun-java5-bin.postinst
して
# activate class data sharing case i386 in i386|sparc) rm -f $basedir/jre/lib/i386/client/classes.jsa $basedir/bin/java -client -Xshare:dump > /dev/null esac
という箇所があるので、それを
# activate class data sharing case i386 in i386|sparc) rm -f $basedir/jre/lib/i386/client/classes.jsa #$basedir/bin/java -client -Xshare:dump > /dev/null (ここをコメントアウト esac
に書き換えます。
そしたら後はインストールが途中で止まってる apt-get を再度動かしてやるだけです。
# apt-get upgrade パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています... 完了 アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。 7 個のパッケージが完全にインストールまたは削除されていません。 0B のアーカイブを取得する必要があります。 展開後に追加で 0B のディスク容量が消費されます。 続行しますか [Y/n]? y sun-java5-jre (1.5.0-10-3) を設定しています ... sun-java5-bin (1.5.0-10-3) を設定しています ... sun-java5-jdk (1.5.0-10-3) を設定しています ... sun-java5-demo (1.5.0-10-3) を設定しています ... sun-java5-fonts (1.5.0-10-3) を設定しています ... sun-java5-plugin (1.5.0-10-3) を設定しています ... sun-java5-source (1.5.0-10-3) を設定しています ...
きたー! (`・ω・´)
この状態で java を実行すると
# java -version java version "1.5.0_10" Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_10-b03) Java HotSpot(TM) Client VM (build 1.5.0_10-b03, mixed mode)
となります、やっと動いたー!