Sonatype Nexusは、Webアプリケーションとして実装されています。
オープンソース版は、warファイルとServletコンテナをバンドルしたバージョンがありますが、warファイルは、Ubuntu 9.10のaptリポジトリにあるTomcat6では、起動できませんでした。
FAQには、Tomcat6をサポートしているとありましたが、情報も少なくあきらめました。
Ubuntu 9.10のTomcat6パッケージ
Ubuntu 9.10のTomcat6パッケージは、6.0.20-2ubuntu2.1というバージョンです。
そのままでプロイすると下記のようなエラーで起動できません。
Tomcat6に含まれるServlet APIとnexusのWarファイルに含まれるservlet-apiの.jarファイルのバージョンが合わないことが原因のようです。
2010/03/17 23:12:22 org.apache.catalina.startup.HostConfig deployWAR 情報: Webアプリケーションアーカイブ nexus.war を配備します2010/03/17 23:12:22 org.apache.catalina.loader.WebappClassLoader validateJarFile 情報: validateJarFile(/var/lib/tomcat6/webapps/nexus/WEB-INF/lib/servlet-api-2.5 -6.1.12.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending cl ass: javax/servlet/Servlet.class2010/03/17 23:12:24 org.apache.catalina.core.StandardContext start 致命的: Error listenerStart 2010/03/17 23:12:24 org.apache.catalina.core.StandardContext start 致命的: 以前のエラーのためにコンテキストの起動が失敗しました [/nexus]
試しにnexusに含まれるservlet-api-2.5-6.1.12.jarを削除して起動してみまると、
情報: Webアプリケーションアーカイブ nexus.war を配備します 2010/03/18 22:45:40 org.apache.catalina.core.StandardContext start 致命的: Error listenerStart 2010/03/18 22:45:40 org.apache.catalina.core.StandardContext start 致命的: 以前のエラーのためにコンテキストの起動が失敗しました [/nexus]
となり起動に失敗します。
残念ながらTomcat5.5のパッケージは、なかったので試せませんでした。
Apache Tomcatのオリジナル
apache-tomcat-5.5.28とapache-tomcat-6.0.26で、それぞれ試してみました。
Tomcat-5.5.28は、問題なく動作、Tomcat 6.0.26は、同じエラーメッセージで動きませんでした。
NexusのWarに含まれるServlet-api*.jarを削除したところ起動できるようになりました。
原因わからずですが、回避策があるのでまあ良いか…