ASH | サーバ | セキュリティ | Linux | FreeBSD | DB | Web | CGI | Perl | Java | XML | プログラム | ネットワーク | 標準 | Tips集

Java拡張パッケージのSPECファイル

 Java拡張パッケージのSPECファイルの解説をします。 このパッケージは、J2EE,ANT,JAXP,JSSE,mod_jkをまとめてインストールするようになっています。
 Java拡張パッケージは、JDKとTomcatとApacheをrpmでインストールした後でインストールするパッケージです。

mod_jkのシステム構成

 mod_jkを使ったシステムは、ApacheとTomcatを連携した構成となっています。
 Tomcatは、Apacheのモジュール(mod_jk)と通信することで、要求を受け付けます。

                 +-----------------------------+
+----------+   80|+----------+                 |
| ブラウザ |---->|| apache   |                 |
+----------+     || +--------+ 8007+----------+|
                 || | mod_jk |---->|  tomcat  ||
                 |+-+--------+     +----+-----+|
                 |                      |      |
                 |                 +----+-----+|
                 |                 |  servlet ||
                 |                 +----------+|
                 |             +---------------+
                 |             |     JDK1.3    |
                 +-------------+---------------+

ヘッダ部

name: jdk-extra-packages
Version: 1.0
Release: 0
Copyright: ASH
Group: Utilities
Source0: jakarta-tomcat-3.2.2-src.tar.gz
Source1: j2sdkee-1.3-beta2-linux.tar.gz
Source2: jakarta-ant-1.3-bin.tar.gz
Source3: jaxp-1_1.zip
Source4: jsse-1_0_2-gl.zip
Source5: jakarta-oro-2.0.3.tar.gz
Summary: Java2 SDK extra packages
Packager: Kengo Takayanagi
Requires: jdk >= 1.3.1
Requires: apache >= 1.3.19

BuildRoot: /home/yanagi/rpm/ROOT

%description -l ja
Java2の拡張パッケージです。
このパッケージには J2EE,ANT,JAXP,JSSE,mod_jkが含まれます。

 ヘッダ部分では、パッケージ名やソースファイルなどの情報を記しています。
 %descriptionの部分では、-lオプションで言語をja(日本語)に設定しています。

%prep

%prep
rm -rf ${RPM_BUILD_ROOT}/*
mkdir -p ${RPM_BUILD_ROOT}/usr/libexec/apache
mkdir -p ${RPM_BUILD_ROOT}/usr/java/jdk1.3.1/jre/lib/ext.0

jar -xvf ../SOURCES/jaxp-1_1.zip
jar -xvf ../SOURCES/jsse-1_0_2-gl.zip

 まず、${RPM_BUILD_ROOT}の中をキレイにしてから、必要なディレクトリを作成しています。
 その後にzipファイルの展開をしています。rpmのプログラムはzipファイルの展開はできないようです。
 本来なら%setupのところで展開するのがスジですが、%setupでtarファイルを展開した後に、rpmのプログラム自体がソースを展開したディレクトリにcdしようとするためにこうしています。
(ディレクトリ移動がややこしくなるので)

%setup〜%build

%setup -T -b 0 -b 1 -b 2 -b 5 -n jakarta-tomcat-3.2.2-src/src/native/apache1.3

#%patch

%build
make -f Makefile.linux

 この部分では、tarアーカイブの展開と、mod_jkのコンパイルを行っています。
 %setupに色々オプションがついていますが、これについて説明します。

スイッチ内容
-T ソースの展開を行わないようにします。
-bオプションと組み合わせることで、希望するソースだけ展開する、ということもできます。
-b n(数字) 指定のディレクトリにcdする前に、n番目のソースを展開します。
通常は、一番最初のソースを展開したら、そのディレクトリにcdして次のソースを展開しようとします。 複数のソースを展開する場合はこのオプションを指定するとよいでしょう。
-n ソースを展開した後にcdするディレクトリを指定します。
省略すると、ヘッダ部で指定された値をもとにして

[name]-[Version]-[Release]

というディレクトリにcdしようとします。(この例ではjdk-extra-packages-1.0-0になります)
パッケージ名とソースのアーカイブ名が違う場合には、これを指定しないとエラーになります。

 上記の例では、まず-Tオプションと-bオプションを組み合わせて3番目、4番目のソース(ZIPアーカイブ)を展開しないようにしています。
 そして、-nオプションで、ソース展開後に移動するディレクトリをjakarta-tomcat-3.2.2-src/src/native/apache1.3(mod_jkのソースが含まれているディレクトリ)に指定しています。

 %build部分では、makeを実行しているだけです。(デフォルトで添付されてくるMakefile.linuxがそのまま使えるので、makeの-fオプションでそれを使用しています)

%install〜%clean

%install
cp mod_jk.so ${RPM_BUILD_ROOT}/usr/libexec/apache
cd ../../../../
cp jaxp-1.1/*.jar ${RPM_BUILD_ROOT}/usr/java/jdk1.3.1/jre/lib/ext
cp jsse1.0.2/lib/*.jar ${RPM_BUILD_ROOT}/usr/java/jdk1.3.1/jre/lib/ext
cp -r j2sdkee-1.3 ${RPM_BUILD_ROOT}/usr/java
cp -r jakarta-ant-1.3 ${RPM_BUILD_ROOT}/usr/java
cp jakarta-oro-2.0.3/jakarta-oro-2.0.3.jar ${RPM_BUILD_ROOT}/usr/java/jdk1.3.1/jre/lib/ext


%clean
rm -rf ${RPM_BUILD_ROOT}

 %install部分では、それぞれのファイルを所定の場所にコピーしています。
 カレントディレクトリは%buildから引き継がれるようなので、mod_jkのコピーが終わった後に、cd ../../../../でBUILDディレクトリまで上がって、そこから他のファイルのコピーを行っています。
 %clean部分では、ワークディレクトリの内容をクリアしています。

ファイル格納場所
ファイル格納場所
J2EE/usr/java/j2sdkee-1.3
Ant/usr/java/jakarta-ant-1.3
mod_jk.so/usr/libexec/apache/
各種jarファイル/usr/java/jdk1.3.1/jre/lib/ext/

%files

%files
%attr(-, root, root) /usr/libexec/apache/mod_jk.so
%attr(-, root, root) /usr/java/jdk1.3.1/jre/lib/ext/jsse.jar
%attr(-, root, root) /usr/java/jdk1.3.1/jre/lib/ext/jcert.jar
%attr(-, root, root) /usr/java/jdk1.3.1/jre/lib/ext/jnet.jar
%attr(-, root, root) /usr/java/jdk1.3.1/jre/lib/ext/crimson.jar
%attr(-, root, root) /usr/java/jdk1.3.1/jre/lib/ext/xalan.jar
%attr(-, root, root) /usr/java/jdk1.3.1/jre/lib/ext/jaxp.jar
%attr(-, root, root) /usr/java/jdk1.3.1/jre/lib/ext/jakarta-oro-2.0.3.jar
%attr(-, root, root) /usr/java/j2sdkee-1.3
%attr(-, root, root) /usr/java/jakarta-ant-1.3

 %files部分では、格納されているファイル列記しています。



Copyright (C)1995-2002 ASH multimedia lab.
mail : info@ash.jp