Java拡張パッケージのSPECファイルの解説をします。
このパッケージは、J2EE,ANT,JAXP,JSSE,mod_jkをまとめてインストールするようになっています。
Java拡張パッケージは、JDKとTomcatとApacheをrpmでインストールした後でインストールするパッケージです。
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 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 -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 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 %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部分では、格納されているファイル列記しています。