2002-07-03 (Wed)

_ DebianのJavaパッケージ管理は芸が細かい

Javaパッケージ管理の話題の続きです。まず、ここに記録する意味で再録です。

Debianでは、Javaのパッケージを置くべき場所が決められています。例えば、/usr/share/javaに.jarが溜められるという具合です。そして、リンクでもって各Javaアプリケーションが使うようになっています。さらに芸が細かいのが、例えば、/usr/share/java/servlet-2.3.jarがオリジナルで、/usr/share/java/servlet.jarというリンクが作られ、バージョン情報が消えるところまで自動化されています。

そして、こういったやり方をLinux distributions間で標準化しようという動きがあるそうです。RPMでもそうなると幸せですね。

Javaの配置を守ることもさることながら、さらにDebianの芸が細かいのがリンクを用いたディレクトリ配置ポリシーです。例えば、Tomcat 3.3をaptでinstallすると、次のような構成になります。

$ ls -l /usr/share/tomcat
drwxr-xr-x    2 root     root          104  6月 26 11:23 bin
lrwxrwxrwx    1 root     root           11  6月 26 11:23 conf -> /etc/tomcat
lrwxrwxrwx    1 root     root           13  6月 26 11:23 doc -> ../doc/tomcat
drwxr-xr-x    2 root     root           48  4月 24 20:08 examples
drwxr-xr-x    5 root     root          192  6月 26 11:23 lib
lrwxrwxrwx    1 root     root           15  6月 26 11:23 logs -> /var/log/tomcat
drwxr-xr-x    2 root     root           48  4月 24 20:08 modules
lrwxrwxrwx    1 www-data www-data       23  6月 26 11:23 webapps -> /var/lib/tomcat/webapps
lrwxrwxrwx    1 root     root           17  6月 26 11:23 work -> /var/cache/tomcat

_ こういったリンクの使い方は、当たり前といえば当たり前ですが、最初驚きでした(例えば、文書ファイルを月ごとに仕分けて保存している場合、currentというリンクを作るなど)。また、Debianだと自動でここまでやってくれるのが嬉しいです(ひょっとしたらTomcat最新のrpmでは既にこんな具合になっているのかも知れませんが、4.0.2では、etc以外、/var/tomcat4にそのまま展開されていました)。

とここまで書いて、改めてKondaraマシンをよく見たら、regexpやxerces・servletapiのrpmは、既に、/usr/share/javaに展開されていて、バージョンを除いたリンクも作られていました。Javaの配置ポリシーは、RPM陣営でもかなり普及しているのかもしれません。

_ web-app_2_3.dtdやweb-jsptaglibrary_1_1.dtd not found?

Debianで、# /etc/init.d/tomcat4 start して、Strutsで作った自作Webアプリを動かすと、なぜか上記エラーが出ます。servlet-2.3.jarでなくservlet-2.2.jarが、参照されているか上書きされているかのどちらかが原因だと思うのですが、その様子はなし。で、# $CATALINA_HOME/bin/catalina.sh start すると、正常に動作します。その後、# /etc/init.d/tomcat4 start すれば正常に動きます。

コンパイル・キャッシュが利いて動作するようになったと思うのですが、詳細は不明です。catalina.shと/etc/init.d/tomcat4で、なんか設定が違うのでしょうが、ちょっと見たけど、原因は不明です。とりあえず動くようになりましたが、気持ち悪いです。うーん。

[]