🤔

gettext はとにかくトラブルが多い

2025/02/27に公開

gettext がビルドできない事例の多さ

ICU/gettext/curl あたりで更新があると常にトラブルになります・・・
人生そういうもんだと諦めています。
最近は ICUは落ち着いたし、 curl はまあ諦めてます。 でもgettext キミはだめですよ・・・

gettext について

  • GNUのものです。
  • github にありません。
  • https://savannah.gnu.org/git/?group=gettext
  • 「国際化」と言う名の闇^H^H 難所。(ICUもそれ)
  • GNUのもの由来で FreeBSDと相性が悪いというか・・・
  • いつまで 0.xx 品質で依存を広めるのか・・・頑張って。

p5-gettext がよく引っかかる。

  • 記憶するだけで 10回以上更新時に p5-gettextが作れないことがあります。
  • autotoolの関係が多かったので GNUtoolsと FreeBSDを共存させるのはつらい。
  • 依存関係がとにかくひどい:gettext->p5-gettext なのに、p5-gettextを構築し直してから更新できることも多い。ビルド時に使うツールの関係・・・

0.24 が来てるらしいけど 0.23がコンパイルできません・・・

===>  Installing for libtextstyle-0.23.1
===>   Registering installation for libtextstyle-0.23.1 as automatic
*** Error code 1
===>   gettext-tools-0.23.1 depends on shared library: libtextstyle.sofile: could not find any valid magic files! (No
 such file or directory)
 - not found

gettext-runtime がクセモノ。

  • 0.23 がだめなら 0.24 にしちゃえ。
    バージョン番号が書かれている、Makefile.common をいじくって、 make makesum すれば勝手版 portsが出来るはず・・・ですが、 devel/gettext-runtime というところでじったいをつくるひつようがありました・・なんてこった。
  • libintl が見つからない・・・
libtool: warning: '../intl/libintl.la' has not been installed in '/usr/local/lib'
libtool: install: /bin/sh /usr/ports/devel/gettext-runtime/work/gettext-0.24/build-aux/install-sh -c -s .libs/gettext
 /usr/ports/devel/gettext-runtime/work/stage/usr/local/bin/gettext
libtool: warning: '../intl/libintl.la' has not been installed in '/usr/local/lib'
libtool: install: /bin/sh /usr/ports/devel/gettext-runtime/work/gettext-0.24/build-aux/install-sh -c -s .libs/ngettex
t /usr/ports/devel/gettext-runtime/work/stage/usr/local/bin/ngettext
libtool: warning: '../intl/libintl.la' has not been installed in '/usr/local/lib'

・・・ 結局、インストールが失敗します・・・

root@mysql:/usr/ports/devel/gettext-runtime # make install
===>  Installing for gettext-runtime-0.24
===>   Registering installation for gettext-runtime-0.24
pkg-static: Unable to access file /usr/ports/devel/gettext-runtime/work/stage/usr/local/lib/libintl.so.8.4.2:No such 
file or directory
*** Error code 1
  • これの原因分かりました・・・
root@mysql:/usr/ports/devel/gettext-runtime/work/stage/usr/local/lib # ls -la
total 232
drwxr-xr-x   4 root wheel     12 Feb 27 17:32 .
drwxr-xr-x  12 root wheel     12 Feb 27 17:32 ..
drwxr-xr-x   3 root wheel      3 Feb 27 17:32 X11
drwxr-xr-x   2 root wheel      2 Feb 27 17:32 debug
-rw-r--r--   1 root wheel  41066 Feb 27 17:32 libasprintf.a
lrwxr-xr-x   1 root wheel     20 Feb 27 17:32 libasprintf.so -> libasprintf.so.0.0.0
lrwxr-xr-x   1 root wheel     20 Feb 27 17:32 libasprintf.so.0 -> libasprintf.so.0.0.0
-rwxr-xr-x   1 root wheel  21304 Feb 27 17:32 libasprintf.so.0.0.0
-rw-r--r--   1 root wheel 263762 Feb 27 17:32 libintl.a
lrwxr-xr-x   1 root wheel     16 Feb 27 17:32 libintl.so -> libintl.so.8.4.3
lrwxr-xr-x   1 root wheel     16 Feb 27 17:32 libintl.so.8 -> libintl.so.8.4.3
-rw-r--r--   1 root wheel 136504 Feb 27 17:32 libintl.so.8.4.3
root@mysql:/usr/ports/devel/gettext-runtime/work/stage/usr/local/lib # 
  • 8.4.2 を探していましたが 8.4.3 になっていました・・・
root@mysql:/usr/ports/devel/gettext-runtime # ls pkg*
pkg-descr  pkg-plist 
root@mysql:/usr/ports/devel/gettext-runtime # grep intl pkg-plist 
include/libintl.h
lib/libintl.a
lib/libintl.so
lib/libintl.so.8
lib/libintl.so.8.4.2
root@mysql:/usr/ports/devel/gettext-runtime # 

  • pkg-plist 書き換えて make install しても 失敗するので、コンパイル・・
( コンパイル終了間際 )
...
/bin/mkdir -p '/usr/ports/devel/gettext-runtime/work/stage/usr/local/share/gettext'
 install  -m 0644 ABOUT-NLS '/usr/ports/devel/gettext-runtime/work/stage/usr/local/share/gettext'
/bin/rmdir /usr/ports/devel/gettext-runtime/work/stage/usr/local/lib/gettext
====> Compressing man pages (compress-man)
root@mysql:/usr/ports/devel/gettext-runtime # make install
===>  Installing for gettext-runtime-0.24
===>   Registering installation for gettext-runtime-0.24
[mysql] Installing gettext-runtime-0.24...
root@mysql:/usr/ports/devel/gettext-runtime # 

libtextstyle ってなんなの

    [mysql] Installing libtextstyle-0.24...
===>   gettext-tools-0.24 depends on shared library: libtextstyle.sofile: could not find any valid magic files! (No such file or directory)
 - not found

  • devel/libtextstyle/pkg-plist も編集しましょう・・・
  • 取り敢えずmake makesum を掛けて、make clean all reinstall ...
libtool: warning: remember to run 'libtool --finish /usr/local/lib'

  • 結局エラーになってしまいます。本日時点で gettextをコンパイルするのはパッチ待ちというところになりました。

結論:gettext 登場から10何年経っても安定しない。

未だに 0.xx というバージョン番号は 正直なんというか、伊達ではないです。
この数年、0.2x台で度々更新していますがメジャーバージョン番号が変わったくらいの変更が加えられているのは間違いなく、メンテナンスするのは容易ではないというか、出来る人を選んでいる可能性すらありますがこれに依存してしまうのが正直つらい。 pkg で行けばいいじゃんという話もあるんですが・・・全部が全部 pkg にある? ということも。

Discussion