SnipSnap: 1.0b1 on J2SE5 に移行する

手元の 0.5.1a 環境では、エクスポートしようとするとエラーになってしまうので、0.5.2a への移行を見送っていた。が、いま調べてみたら 1.0b1 ってのが出てたので、再挑戦してみた。
環境は、Win2000 SP4 + J2SE5.0 + SnipSnap 1.0b で、標準の Jetty と File System Storage を使用。

入手

ftp://snipsnap.org/snipsnap から snipsnap-1.0b1-uttoxeter-20040914.tgz をダウンロードし、好きな場所に展開する。

起動

Windows 版 J2SE5 では、JDK/JRE のデフォルトでのインストール場所が変更され、パスに空白が含まれるようになってしまった。このままだと動かないので、run.bat を書き換えて、java.exe と tools.jar が正しく認識されるようにする。

@echo off
rem $Id: run.bat,v 1.12 2004/05/17 10:56:16 leo Exp $
"%JAVA_HOME%\bin\java" "-Xbootclasspath/a:%JAVA_HOME%\tools.jar" -Xmx128m -server -jar lib\snipsnap.jar
pause

で、run.bat を起動する。

初期設定

コマンドプロンプトに、初回接続用の URL が表示されるので、ブラウザからアクセスする。ユーザの追加など必要な設定を適宜行い、start スニップがちゃんと表示されるのを確認する。
この時点で、user.home 直下に applications というディレクトリができている (今回の環境では、C:\Documents and Settings\<ユーザ名>\applications\)。これは、0.5.1a では SnipSnap 自体と同じ場所に作られていたが、変更されたようだ。applications 内の構造は、0.5.1a でも 1.0b1 でも同じみたいだ。スニップのデータは以下の場所に保存されている。

applications\_8668_\webapp\WEB-INF\files\<application ID>\snips

ちなみに、<SnipSnap を置いた場所>/conf/snipsnap.xml に、applications の場所が記載されているが、これを手修正して SnipSnap を再起動しても、反映はされなかった……。

データの移行

ここで一旦 SnipSnap を終了させて、スニップを移行する。
スニップのデータは上記のディレクトリ内にあり、そのうち blog エントリのスニップは snips/start 内に保存されている。スニップとディレクトリが 1 対 1 に対応しているので、その中から必要なスニップのみ、0.5.1a の環境から 1.0b1 の環境にコピーした。デフォルトで存在するスニップ ("SnipSnap" とか、"snipsnap-help" とか) は、バージョンアップの対象になっているかもしれないので、コピーしなかった。
で、SnipSnap を再度起動。
実は、これだけだと SnipSnap がちゃんと認識してくれない。試しにインデックスの再構築 (設定→Search Engine→Reset Index) をやってみたが、コピーしたスニップは「一覧には載るけど、リンクをたどっても notfound になってしまう」という状況。
が、データベースのエクスポート (設定→Export Database→Export Database) をやってみると (保存場所は SnipSnap Directory を選択)、コピーした分のスニップも出力されていたので、これをそのままインポートすることにした。
ただし、application 要素に、上記のパスに含まれる application ID (←ほんとはなんていうのか知らない) が記載されている。新旧の環境でこの値は違うので、テキストエディタの置換コマンドで、新しいものに置き換えた。データベースのインポート (設定→Import Database→Import Database Now) で置換後のものを指定すると、数分かかったけど、無事に全スニップがインポートできた。

マクロの移行

0.5.1a のインストール後に追加したマクロは、jar ファイルの形で以下のディレクトリに置いてある。SnipSnap 自体の jar ファイルも一緒に入っているが、その中から、自分が追加したマクロの jar ファイルだけを、新環境の同じ場所にコピーすれば OK だ。

applications\_8668_\webapp\WEB-INF\lib\

その他の設定の移行

上記でスニップをコピーした時、デフォルトで存在するスニップについてはコピーの対象外とした。そのため、スタイルシートやサイドバーに手を入れていた場合は、新環境に移行してやる必要がある。
diff/patch とかを使ってもいいのかもしれないが、僕の場合は、数が少ないので SnipSnap 上で手反映することにした。つまり、旧環境のスニップ本文データ (各ディレクトリにある content.txt というファイル) をテキストエディタで開き、新環境の SnipSnap 上で対応するスニップを編集する。