荻野と申します. 毎朝 portsnap と portupgrade を使って自動更新を行っているのですが 今朝 portuprade が
> [missing key: categories] [Updating the portsdb <format:bdb_btree> > in /usr/ports ... - 16411 port entries found .........1000......... (省略) > 16000.... .....done] > missing key: categories: Cannot read the portsdb! > database file error というエラーを出して止まっておりました. 調べてみたところ /usr/ports/INDEX-6.db の中に categories 情報が 入っていないのが直接の原因ですが,その理由をたどっていくと /usr/local/lib/ruby/site_ruby/1.8/portsdb.rb の 389行目付近 > def subdirs(dir) > %x"fgrep -v bsd.port.subdir.mk #{dir}/Makefile | > make -f - -V SUBDIR 2> /dev/null".split.select { |i| > File.directory?(File.join(dir, i)) > }.sort > end にて make -V SUBDIR によるカテゴリー一覧を取得する部分で /usr/ports $ fgrep -v bsd.port.subdir.mk /usr/ports/Makefile | make -f - -V SUBDIR "(stdin)", line 142: Malformed conditional (${OSVERSION} >= 601101) OSVERSION なんて知らない変数だ!と怒られて止まっております. 誰が変更したのかなと思って CVS で調べると 2007/01/31 14:07:23 に pav 氏によって, > ports/Makefile > [15] Make csup default `make update' method on FreeBSD 6.2 and up の変更の過程で OSVERSION による分岐が追加されております. http://www.freebsd.org/cgi/cvsweb.cgi/ports/Makefile.diff?r1=1.96&r2=1.97&f=h そもそも OSVERSION は /usr/ports/Mk/bsd.port.subdir.mk にて定義される 変数なのですけど,なぜ portsdb.rb では > fgrep -v bsd.port.subdir.mk #{dir}/Makefile | make -f - -V SUBDIR のように .inculde<bsd.port.subdir.mk> を除外してチェックしているの でしょうか? 今のままの /usr/ports/Makefile ですと portsdb による INDEX-6.db の 作成に不具合が出てしまうと思います.どういう風に対処したら よろしいでしょうか.ご教授お願いします. 最後になりましたが,私の環境は現在 $ uname -a FreeBSD 6.1-RELEASE FreeBSD 6.1-RELEASE #0: Sun May 7 04:32:43 UTC 2006 [EMAIL PROTECTED]: /usr/obj/usr/src/sys/GENERIC i386 $ pkg_info db41-4.1.25_4 The Berkeley DB package, revision 4.1 portupgrade-2.2.2_1,2 FreeBSD ports/packages administration and management tools ruby18-bdb-0.5.9_2 Ruby interface to Sleepycat's Berkeley DB revision 2 or lat (関係しそうなもの) となっております.