yum/rpmでJava環境 on Fedora
yum(rpm)でJava環境(実行環境、開発環境)を管理したい。
目標
yum(rpm)でJava環境(実行環境、開発環境)を管理したい。
主な環境
Fedora Core3
J2SE5(Java1.5)
tomcat5
背景
どんなUnixでも自分流に管理したい時代もありましたが、今は、OS(ディストリビューション)の流儀で管理するのが一番面倒が少ないという、進化したのか退化したのか良く分からない結論に達しました。
会社のFedora Core3にJava環境を構築しました。Fedoraではaptも使えますが、aptは家のDebianで良く知っていて面白みが無いので、yum(rpm)を使ってパッケージ管理をしています。
パッケージ管理は最初は大変でも、いったんその世界に入ってしまえば、後は楽なはずです(apt/debの経験。yum/rpmでは裏切られるかもしれません)。
step0:
この辺の設定は終わってyumが普通に使えている前提です。
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/672errymfc3.html
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/676setyumsv.html
step1:
Java関係のrpmでは、(おそらく)定番らしいJPackage Projectを利用します。
http://www.jpackage.org/
参考にしたサイト:
http://www.mksearch.mkdoc.org/howto/jpackage-sun-fc3/
step2.
実は行きつ戻りつしたのですが、ここでは一直線に書きます。
jdbc関連のパッケージがodbcパッケージに依存するので、先にインストールしておきます(脚注[エラーB]参照)。
せっかくなのでyumのグループインストール機能を利用して、MySQLをインストールします。
# yum groupinstall "MySQL Database"
odbc関連のパッケージをインストールします。
# yum install unixODBC-devel MyODBC MyODBC-debuginfo
step3.
ここからJPackageに身を捧げます。
次のように公開鍵を取り込みます。
# wget http://www.jpackage.org/jpackage.asc
# rpm --import jpackage.asc
yumのリポジトリにJPackageを追加します。ファイルを/etc/yum.repos.d/ディレクトリに配置するだけです。
# cd /etc/yum.repos.d
# wget http://www.jpackage.org/jpackage.repo
# yum check-update (一応)
step4.
最初、http://java.sun.com/のJ2SE5
JDKのrpmをインストールしていました。tomcat5パッケージのインストールで[エラーA](脚注)が出ました。jta以外(jaas,jce,
jsse)はJ2SE5に標準で統合済みです。tomcat5のrpmパッケージとSunが配布するrpmパッケージにずれがあります。パッケージ管理の
一番の障害(いわゆる「混ぜるな危険」)です。
こういう場合はおとなしく、片方に従う方が楽です。JPackageに身を任せた以上、JPackageのrpmパッケージを使うことにします(JPackageのrpmはspecファイルだけがあり、インストールするファイルの実体はSun配布のJDKです)。
http://mirrors.sunsite.dk/jpackage/1.6/generic/non-free/SRPMS/java-1.5.0-sun-1.5.0.05-1jpp.nosrc.rpm
をダウンロードします。
# rpm -ihv java-1.5.0-sun-1.5.0.05-1jpp.nosrc.rpm
を実行すると、次のファイルができます。
=> /usr/src/redhat/SPECS/java-1.5.0-sun.spec
http://java.sun.com/j2se/1.5.0/download.jsp
からJDKの非rpm版をダウンロードして、次のパスに配置します。
=> /usr/src/redhat/SOURCES/jdk-1_5_0_05-linux-i586.bin
次の実行をします。
# cd /usr/src/redhat/SPECS
# rpmbuild -ba java-1.5.0-sun.spec
次のパスにrpmファイルができるので、rpmコマンドでインストールします。
# cd /usr/src/redhat/RPMS/i586
# rpm -ihv java-1.5.0-sun-*.rpm
step5.
本当はエラーがでてからjta(Java Transaction API)の必要性を知ったのですが、ここでは先にインストールします。
http://rpm.pbone.net/
の「Search for rpms by name」でjtaを検索してダウンロードします。
# rpm -ihv jta-1.0.1-0.b.3jpp.nosrc.rpm
の実行をすると次のファイルができます。
=> /usr/src/redhat/SPECS/jta.spec
http://java.sun.com/products/jta/
から次のふたつのファイルをダウンロードして、次のパスに配置します(docはたぶんどうでもいい)。
=> /usr/src/redhat/SOURCES/jta-1_0_1B-classes.zip
=> /usr/src/redhat/SOURCES/jta-1_0_1B-doc.zip
次のようにjtaのrpmパッケージをインストールします。
# cd /usr/src/redhat/SPECS/
# rpmbuild -ba jta.spec
# cd /usr/src/redhat/RPMS/noarch
# rpm -ihv jta-1.0.1-0.b.3jpp.noarch.rpm
# rpm -ihv jta-javadoc-1.0.1-0.b.3jpp.noarch.rpm
step6.
後はyumが面倒を見てくれます。依存するパッケージがたくさんあっても自動でインストールしてくれます。apt-get(aptitude)なら当たり前の世界ですが、yumもやればできる子です。
# yum install ant
# yum install tomcat5
# yum install junit
脚注
[エラーA]
Sun配布のJ2SE5のrpmパッケージの場合、次のようなエラーがでました。
# yum install tomcat5
possible errors;
Error: missing dep: jta for pkg tomcat5
Error: missing dep: jaas for pkg tomcat5
Error: missing dep: jce for pkg classpathx-mail
Error: missing dep: jsse for pkg mx4j
Error: missing dep: jsse for pkg ldapjdk
Error: missing dep: jce for pkg mx4j
Error: missing dep: jaas for pkg ldapjdk
[エラーB]
odbcパッケージが無いと、java-1.5.0-sun-jdbc-1.5.0.05-1jpp.i586.rpmのインストールで次のようなエラーがでます。
/usr/lib/libodbc.so is needed by java-1.5.0-sun-jdbc-1.5.0.05-1jpp.i586
/usr/lib/libodbcinst.so is needed by java-1.5.0-sun-jdbc-1.5.0.05-1jpp.i586