佐伯と申します。 いつも、FreeBSDで快適なPC-UNIX環境を提供して 下さり、アメリカや日本など、世界中の The FreeBSD Projectの皆様には感謝の念で いっぱいです。
さて、手許の Dell XPS NoteBook L501X FreeBSD/amd64 8.2-RELEASE-p2 ja-skk-9.6_3 ja-skk-jisyo-201102 ja-skkserv-9.6_2 の環境で、skkservが起動しません。 foo@bar~% dmesg -a | lv で、 Starting skkserv. /etc/rc: WARNING: failed to start skkserv となります。 NEC PC-9821 Xa/C10w NEC PC-9821 Xa12/C8 でかつて稼動していた FreeBSD(98) 3.5.1-RELEASE FreeBSD(98) 4.1-RELEASE FreeBSD(98) 4.7-RELEASE FreeBSD(98) 4.9-RELEASE FreeBSD(98) 4.11-RELEASE-p26 では、 skkserv が正しく起動し、emacsで日本語入力も 行なえていました。しかし、今は、いずれの98も ディスク=クラッシュや電源断のため、skkserv などのバージョンは確認できません。 SONY VAIO PCV-LX51/BP で現在も稼働中の FreeBSD/i386 6.4-RELEASE-p11 ja-skk-9.6_2 ja-skk-jisyo-200707 ja-skkserv-9.6 では、 emacs-21.3_12 で今でも快適に日本語入力ができております。 ところが、 Lenovo (旧 IBM) ThinkPad R40e FreeBSD/i386 8.1-RELEASE でも、 8.2-RELEASEと同じ、skkservが起動できない エラーが起っていました。 FreeBSD/i386 8.0-RELEASE のときから、既にこのエラーは出ておりました。 このThinkPad R40eも、現在はディスク=クラッシュ のため、skkservのバージョンは確認できません。 FreeBSD/amd64 でも、 FreeBSD/amd64 8.1-RELEASE-p4 の頃からエラーが出ていました。 話を纏めると、 2000-2009年のskkservは起動できた。 2010-2011年のskkservは起動できない。 ということになります。 foo@bar/usr/ports/japanese/skkserv# make patch foo@bar/usr/ports/japanese/skkserv/work/skk-9.6/skkserv# lv README を読むと、 3. skkserv の起動 ================= skkserv の起動時のオプションで、辞書名の変更、ディバッグ・モードの指定 などができます。 skkserv はスーパーユーザが起動する必要はありません。 skkserv [-d] [-p nnnn] [jisho] -d ディバッグモードです。 -p nnnn 通信用のポート番号として nnnn を使います。 jisho jisho を辞書ファイルとして利用します。 とあるので、 foo@bar~# skkserv -d とすると、 file descriptor for initsock is 4 skkserv: format error; new-style dictionary should have two parts と返って来ます。 foo@bar~# skkserv -d /usr/local/share/skk/SKK-JISYO.L としても、同じメッセージが返って来ます。 ja-rskkserv-2.95.4 ならば、問題なく辞書サーバーが起動できます。辞書ファイルが壊れてい る訳でもないようです。rskksevでサーバーを起動すれば、skkが emacs-23.3_1,2 から問題なく起動できます。このメールの下書きも、emacs+skkで 書いています。 上記のskkserv -dのエラー=メッセージは、 FreeBSD/i386 8.0-RELEASE FreeBSD/i386 8.1-RELEASE でも確認できました。 foo@bar/usr/ports/japanese/skkserv/work/skk-9.6/skkserv# jless -N ./skkserv.c で見てみると、 427 if (target != STRMARK) 428 err("format error; new-style dictionary should have two parts"); 429 while (code >= KANA_START - 1) { 430 *pjtab++ = ftell(jisho) - 2; 431 code --; 432 } 辺りが関係ありそうです。しかし、小生は、C プログラミングは入門書 を一冊、独学した程度なので、自力ではパッチが書けそうもありません。 本来、オープンソースではこういう問題を発見した人が メーリングリストにパッチを投げて貢献するものだと思いますが、 それができないのが腑甲斐ない次第であります。 どなたか、この問題の解決にご助力くださいます方はいらっしゃいません でしょうか。ご協力を平にお願い致します。 小生以外の環境でも、この問題は起っていると思います。 ***************************************************** 佐伯 浩 (Hiroshi Saeki) h-sa...@wmail.plala.or.jp http://rick-deckard.cocolog-nifty.com/ http://joutarou-kujo.spaces.live.com/ Web http://www9.plala.or.jp/rick-deckard/ twitter http://twitter.com/Joutrou_Kujo ******************************************************