FreeBSD 5.3以降(と4.11以降)のportsでインストールしたsj3のsj3servは動作しません(原因はそのうちに説明します)。そのため、次のバージョンのsj3はアンインストールしましょう。

  • ja-sj3-2.0.1.20_2
  • ja-sj3-2.0.1.20_3

FreeBSDで最後に動いたsj3のports

FreeBSD 4.10でリリースされたsj3のportsはここから取得できます。amd64とia64ではビルドできないようですが、少なくてもi386では動作しています。

一応4.10-RELEASEのパッケージja-sj3-2.0.1.20_1.tgzコピーをおいておきます。

FreeBSD 6.2でビルドしたsj3

ここのところFreeBSD 4.11を6.2に更新することが多く、その度にパッチをあててビルドするのも面倒なので、6.2でsj3のパッケージをビルドしました。portsのmake packageで作ったja-sj3-2.0.1.20_99.tbzと、そのportsのsj3.tar.gzです。

Linuxでsj3をビルド

次のファイルをダウンロードしておきます。

最後のパッチsj3-2.0.1.20_1-linux-1.patchは以下の内容を変更します。

  • sj3servの所有者と所有グループをFreeBSDと同じくbinに変更
  • sj3servのポート番号をFreeBSDと同じく3086に変更
  • portsのパッチがstrlcpy(3)を使うように変更するが、Linuxにはstrlcpyがないので追加

つぎのようにビルドします。

% tar zxf anywhere/sj3.tar.gz
% tar zxf anywhere/sj3-2.0.1.20.tar.gz
% cd sj3-2.0.1.20/
% cat ../sj3/files/patch-* | patch -s -p0
% cat anywhere/sj3-2.0.1.20_1-linux-1.patch | patch -s -p1
% xmkmf
% make Makefiles
% make
% su
# make install
# exit

サーバを走らせます。

% su
# /usr/local/bin/sj3serv
Kana-Kanji Conversion Server Version 2.08C
Copyright (c) 1990-1995 Sony Corporation
Created at Mon Mar 23 16:42:59 JST 1998
Can't open "/dev/console"
終了しました
# exit

デモで動作を確認します。

% cd anywhere/sj3-2.0.1.20/demo
% ./sample -H localhost
        *--------------------------------------------*
        * Sample Program for                         *
        * New Japanese Convert Library               *
        * SJ3LIB                                     *
        *                                            *
        *    Terminator of Input : Newline-code      *
        *                                            *
        *    If you want to end this process,        *
        *    input Newline-code or Control-D.        *
        *--------------------------------------------*
[Input Alphabet] hoge
[Output Yomi ]:[ほげ]
[Output Kanji]:[帆下]
[Input Alphabet]

FreeBSDの最新のportsでsj3servが動かない原因

正確には、sj3servは走りますが、クライアントは漢字に変換できません。

原因とその修正方法もわかってますが、そのうちにまとめます。

それよりもコミッタがちゃんと動作確認してないことに疑問に感じます。sj3ではなくapacheだったら、ビルド後にapachectl startでプロセスが走るだけで動作確認を済ませますか? そのあとウェブブラウザで接続して、テストページが表示されるかを調べませんか? sj3は誰も使ってないから、クライアントから変換できるか試す必要がない、と思われているかもしれませんが。