portversionでエラー
会社のFreeBSD 8.0-RELEASE-p2で動いているファイルサーバでportversion -vを実行したところでエラーが出た。
/usr/local/lib/ruby/site_ruby/1.8/portsdb.rb:119:in `fill': MOVED file format error (PortsDB::MOVEDError) from /usr/local/lib/ruby/site_ruby/1.8/portsdb.rb:113:in `each' from /usr/local/lib/ruby/site_ruby/1.8/portsdb.rb:113:in `fill' from /usr/local/lib/ruby/site_ruby/1.8/portsdb.rb:112:in `open' from /usr/local/lib/ruby/site_ruby/1.8/portsdb.rb:112:in `fill' from /usr/local/lib/ruby/site_ruby/1.8/portsdb.rb:107:in `initialize' from /usr/local/lib/ruby/site_ruby/1.8/portsdb.rb:182:in `new' from /usr/local/lib/ruby/site_ruby/1.8/portsdb.rb:182:in `setup' from /usr/local/lib/ruby/site_ruby/1.8/pkgtools.rb:256:in `init_pkgtools_global' from /usr/local/sbin/portversion:191:in `main' from /usr/local/lib/ruby/1.8/optparse.rb:791:in `initialize' from /usr/local/sbin/portversion:82:in `new' from /usr/local/sbin/portversion:82:in `main' from /usr/local/sbin/portversion:383
どうもMOVEDファイルのフォーマットが違うよという内容らしい、ググってみたらスラドの日記に同じ症状が出ている人がいた。
/usr/ports/MOVEDファイルの各行に「|」が3つあるのが正しいフォーマットらしい。結構な行数があるのでrubyスクリプトを書いて確認してみた。
#!/usr/local/bin/ruby open("/usr/ports/MOVED"){|file| file.each {|lines| puts lines unless lines.scan("|").size == 3 } }
実行するとMOVEDファイルのヘッダ部分と「|」が3個ではない行が1つ発見された。
www/trac-webadmin|2010-03-30|Incorporated to www/trac
早速MOVEDファイルを開いて該当箇所を訂正。
www/trac-webadmin||2010-03-30|Incorporated to www/trac
この後portversion -vを実行したところ無事にバージョンの確認ができた。
portupgrade -aして任務完了。
こういうのはどこに連絡すればいいんだろうね。