2015/05/06 水

ComicCafe C/Sを FreeBSDで動かす。

ComicCafe - C/S Comic ViewerをFreeBSDにて動かしてみたいと思う。
このソフトの良さは、検索すればいくらでも出てくるのでここでは触れない。
http://seesaawiki.jp/comiccafe/
作者さんも熱心な方で、とても好感が持てる。
作りっぱなしのほったらかしになってないソフトなので、オススメできる。
サーバは、Windows, MaxOS, Linuxが対応しているが、FreeBSDは非対応。
FreeBSDである必要があるか?といわれれば、私的にはFreeBSDで動くと嬉しい。
Nas4Freeや、FreeNASなどでNASを作っている人、多いのではないかな?
NASでコミックサーバが動いたら、便利ではないかな。
自炊コミックは、NASに置くだろうし。
NASがLinux x86,amd64な人は困らないだろうけど。。。
というわけで、FreeBSDで動かす事にチャレンジ。
なにしたか忘れちゃうから記事にしておく。
#注意!
#そもそも、動作サポートされていないプラットフォームで動作させる話なので、
#作者さんに問い合わせるなどの迷惑をかけないように。

以下手順
FreeBSDに、 openjdk8をインストール

# pkg install openjdk8

いわれるがまま、依存関係も入れること。

よし、動かすぞ。
#/usr/local/bin/java -Xms1024M -Xmx2048M -jar comic-cafe-server.jar &

よし動いた。ラッキー。
てなわけには行かなかった。
管理コンソールからインポートを実行
あれれ、pdfしかインポートされないよ。。。
ログを見ると、
net.sf.sevenzipjbinding.SevenZipNativeInitializationException: Error loading SevenZipJBinding native library into JVM: Can't find suited platform for os.arch=amd64, os.name=FreeBSD... Available list of platforms: Linux-amd64, Linux-i386, Mac-i386, Mac-x86_64, Windows-amd64, Windows-x86 [You may also try different SevenZipJBinding initialization methods 'net.sf.sevenzipjbinding.SevenZip.init*()' in order to solve this problem]
まじか!
Sevenzipは、FreeBSD未対応。。。泣けるわ。

sevenzipをビルドして、comic-cafe-server.jarに含めよう。
ここに詳しく書いてある。
https://www.filebot.net/forums/viewtopic.php?f=8&t=1872

SeverZipJBindを作ったあと、
sevenzipjbinding-platforms.properties
を以下の内容で作成
# Information about available platforms
platform.1=Linux-amd64
platform.2=Linux-i386
platform.3=Mac-i386
platform.4=Mac-x86_64
platform.5=Windows-amd64
platform.6=Windows-x86
platform.7=FreeBSD-amd64

# ccというフォルダを作成
cc/sevenzipjbinding-platforms.properties
cc/FreeBSD-amd64

とする。
これで準備完了。
ようするに、これらのファイル、フォルダをcomic-cafe-server.jarに入れればOK

# cd cc
# jar -u ../comic-cafe-sever.jar .
これで、comic-cafe-serverが、,FreeBSDのSevenZipJBind入りになった。
当然のことながら、ComicCafeサーバのバージョンをアップするたびにやる。
といっても、2行手打ちの簡単なお仕事だけどね。

ビルドがめんどくさい人は以下にビルドずみ置いておくけども、
問題があるようなら消す。
自分でビルドするのが理想。

sevenzip

これで動く人はこれでOK
ライブラリが足りない人は、以下を入ってるか確認。
libc++.so
libc++.so.1
libcxxrt.so.1
なければ、以下から落とす。
これも問題あれば消す。
libs
/usr/local/lib あたりにいれる。

これでFreeBSDで動くはずだが、完全かはわからない。

さて、NAS4Freeで動かしてみよう。
先の手順と同じなのだが、embeddedでインストールしていると、パッケージいれても消されちゃう。
よって、以下のようにunionfsを使って回避する。

ここに詳しく書いてあるが、
http://forums.nas4free.org/viewtopic.php?t=210
/varは、/var/dbのみにする。
/var/tmpはtmpfsだし、unionするのはやめよう。

あとは、libだけ/usr/local/libにコピーすれば動作可能。
1/1