hns - 日記自動生成システム - Version 2.19.9

先月 2001年09月 来月
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
Namazu for hns による簡易全文検索
詳しくは 詳細指定/ヘルプを参照して下さい
検索式:

2001年09月18日(火) 旧暦 [n年日記]

#1 [Namazu] パイプ破壊

NKF/kakasi/chasen が適切に configure されていない時に、 (例えば) LANGUAGE=ja だと no: パイプ破壊 となってしまうことがある。
これはお知らせが不充分ではないかという見方。
  1. 最終的にこれを表示しているのは pl/util.pl の sub efopen
    sub efopen ($) {
        my ($fname) = @_;
        my $fh = fopen($fname) || cdie("$fname: $!\n");
        return $fh;}
    
  2. 実際に呼んでいるのは例えば pl/codeconv.pl の
    sub toeuc ($) {
    ...
     my $nh = util::efopen("|$conf::NKF $nkf_opt > $nkftmp");
    
  3. $conf::NKF 等の内容が no の時、何とか言った方がいい気がする。 -C で表示する構成内容は次のところ
    sub show_config () {
        print _("Loaded rcfile: ") . "@LoadedRcfiles\n" if @LoadedRcfiles;
        print _("System: ") . "$SYSTEM\n" if $SYSTEM;
        print _("Namazu: ") . "$var::VERSION\n" if $var::VERSION;
        print _("Perl: ") . "$]\n" if $];   # '$]' has a perl version
        print _("NKF: ") . "$conf::NKF\n" if $conf::NKF;
        print _("KAKASI: ") . "$conf::KAKASI\n" if $conf::KAKASI;
        print _("ChaSen: ") . "$conf::CHASEN\n" if $conf::CHASEN;
        print _("Wakati: ") . "$conf::WAKATI\n" if $conf::WAKATI;
    
  4. この例えば $conf::NKF が確定するのは ./configure の時で、 /usr/local/share/namazu/pl/conf.pl に
    $NKF = "module_nkf"; 
    
    などと書いてある。
  5. configure した時と、実行時に LANG が同じである必要はないのだから、 問題は実行時にしか分らない。
  6. configure の時に日本語対応になっていませんよというのもいいが、 作成済の梱包 (compiled package) だとそれを言う機会がない。
  7. nkf は非常に多くの回数呼ばれるので、 余分な手続(overhead) はなるべく 少ない方がいい
  8. とは言うものの no ということは module は使っていないのだから 少しくらい負担が増えてもいい ?
  9. せめて if ( -x $conf::NKF ) としてもいいのではないか。

という訳で修正:

makoto@u ■8:18:16/010918(~/Mail/trash)> mknmz -O /tmp/index .
検索対象譜を調べています...
83編の譜が索引作成の対象として見つかりました
mknmz: Current conf: $conf::NKF (no) is not executable. 
Do configure after nkf installed.

英語の表示に変更があった時には:

  1. xgettext で src から 英語の表示部分を取出して
    xgettext -c -d codeconv.pot  ../pl/codeconv.pl -o codeconv.pot
    
  2. msgmerg ja.po namazu.pot -o ja.po して ja.po を作り直す
  3. 必要なら次のことをしておく
      msgfmt -o namazu.gmo ja.po
    
    必要ならというのは、通常は configure; make でこれは行なわれるので不要
さて autogen.sh との兼ね合いは ?
  • autogen.sh で新しくなるのは po/POTFILES だけ。 po/POTFILES.in に codeconv.pl を加えておく
  • po で make distclean して
  • ../ で ./configure すると POTFILES, Makefiles が更新される
  • bsd make の場合、 make ./namazu.pot とする必要がある。(何故)
  • その後で手で ja.po を直して ( \$conf::NKF が \\$conf::NKF となっているのは $conf::NKF としておく)
  • make ./ja.gmo すれば良い ただし gettext-0.10.39 は何か (LANG=ja の時の表示が) 変なので次のようにする。
     env LANG=C make ./ja.gmo
    
makoto@u ■9:58:52/010918(~/Mail/trash)> mknmz -O /tmp/index .
検索対象のファイルを調べています...
83個のファイルがインデックス作成の対象として見つかりました
mknmz: 現在の $conf::NKF の構成内容 (no) は実行出来ません。
nkf を設置した後に configure をやり直して下さい。
makoto@u ■9:59:40/010918(~/Mail/trash)> 
これでどうだっ :-) ja.po に次のものを加えている。
+#: pl/codeconv.pl:150
+msgid "Current conf: $conf::NKF ("
+msgstr  "現在の $conf::NKF の構成内容 ("
+
+#: pl/codeconv.pl:151
+msgid ""
+") is not executable.\n"
+"Do configure after nkf installed."
+msgstr ""
+") は実行出来ません。\n"
+"nkf を設置した後に configure をやり直して下さい。"
+
古い ja.po を無理矢理直しておいて、./autogen.sh で msgmerge をやれば良いのかな。
でも良く考えたら、ここは日本語だけの処理なので、 変に namazu.pot にあると外国語への翻訳に悩んでしまうから、 gettext は使わないでおいた方がいいという気がして来た。

#2 [NetBSD] /usr/pkgsrc/audio/splay (0.8.2) を入れて見た。

(が正常な音は出ない気がする)

#3 [Namazu] MacOSX

nkf を作ろうとしたら、大文字小文字を区別しないのか NKF という directory と、cc した結果の nkf が区別出来ないように見える。
nkf-1.71
kakasi-2.3.4
Text-Kakasi-1.0.4
chasen-2.2.8
  (cd lib;make install)
Text-Chasen-1.0.3
   まだここまで
   checking for Text::ChaSen perl module... no
   checking for chasen... /usr/local/bin/chasen

zsh: command not found: msgfmt

gettext-0.10.40 を入れようとしたら:

cc -DLOCALEDIR=\"/usr/local/share/locale\" -DHAVE_CONFIG_H 
  -I. -I. -I.. -I../lib -I../intl -I../intl    -g -O2 -c msgcmp.c
msgcmp.c:122: bad macro argument list

make check:

先に書いていた $conf::nkf(no)のように設置されている場合に、 make check すると、/usr/local/share/namazu/conf.pl を先に見てしまって
making check in dup-field
make  check-TESTS
no: not found
mknmz: < idx1/NMZ.nkf.tmp: No such file or directory
となるのは、やはり間違いだと思う。 push の順を変更した方がいい。(と思ったが、該当部分見つけられず)



最近の日記
2024年03月10日
停電 (瞬電)
2024年03月03日
the second try on bare-metal
useradd
2024年02月29日
opendkim and senmail
2024年01月24日
chat/iam 0.0.8
2024年01月21日
uselocale vs setlocale (textproc/R-readxl)
以上、1 日分です。
タイトル一覧
カテゴリ分類
Powered by hns-2.19.9, HyperNikkiSystem Project

Count.cgi (since 2000/02/05)