Broken slib & slib-guile2006年05月31日 07時25分03秒

前々から、gnucash を試してみようかと思っていた。確か、一年程前に一度インストールしたと思う。そのときは、まだ、Pentium III の 300MHz ぐらいの遅いもの使っていた。残念ながら、あまりの起動の遅さに諦めざるを得なかった。

今では、母艦のクロック数は当時の十倍にもなる。FreeBSD 6.1-RELEASE の前に、ports を入れ直していた。その時に、slib-guile が壊れているのに気がついた。試しに gnucash を起動してみるも


ERROR: Unbound variable: with-load-pathname

と出てしまい起動しない。これが今年の二月ぐらいだった。その頃は、6.1-RELEASE が間近に迫っていたので、もしかしたら、6.1-RELEASE と共に直るかも知れないと淡い期待を抱いていた。

6.1 のリリースは延びに延びた。やっとリリースされた後、試してみるも slib-guile は未だに broken のまま。取り合えず、原因を追求してみる。

まずは、lang/slib-guile/Makefile を開き、


BROKEN=         Does not install

の部分をコメントアウトする。# を先頭につければいい。make install をすると、途中で失敗し、make が止まる。そこで、make -dA をやり、詳しい make の操作を見る。

Examining do-install...non-existent...non-existent and no sources...out-of-date.
do-install:? =
do-install:? =
do-install:> =
do-install:> =
/bin/ln -shf /usr/local/share/slib /usr/local/share/guile/slib
/usr/local/bin/guile -c  "(use-modules (ice-9 slib)) (require 'new-catalog)"
ERROR: Unbound variable: with-load-pathname
*** Error code 2

guile -c の部分で止まっている。ここでは、二つの式を評価している。guile をコマンドラインから、起動しuse-modules を実行すると、何も問題がない。require を実行すると、make で止まったときと同じエラーが出る。問題はこの部分だ。

この後、少し slib と slib-guile のコードを見たのだが、lisp は詳しくないのでほとんどわからなかった。

諦めて、古いバージョンを試すことに。gnucash のサイト調べてみると、slib のバージョンはある程度古くても大丈夫そうだ。そこで cvsweb から、slib-guile の Makefile を覗いたところ、最終更新は約三ヵ月前だ。

今回、portdowngrade を試してみようと思ったが、man を見ると手間がかかりそうなのが良くわかった。以前にも紹介したが、ports は、GEOM_UZIP でports-ccyymmdd.uzip の形にして使っている。そこで、uzip を使うことにした。mount_md -P -F /usr/ports-20060221.uzip md.uzip /usr/ports であっと言う間に、指定日に逆戻り。

三ヵ月前の ports に戻ったところ、slib のアーカイブが見つからなくて、make fetch が止まってしまう。仕方がないので、2005 年の年末まで戻したら、slib と slib-guile 共に問題なくインストールできた。gnucash も問題なく起動する。