パスワードを忘れた? アカウント作成
11514550 journal
日記

taka2の日記: portupgradeが動かない 1

日記 by taka2

FreeBSDを使ってるんですが、昨日あたりから、

% sudo portversion -OvL=
/usr/local/lib/ruby/site_ruby/1.9/pkgtools/portsdb.rb:118:in `block (2 levels) in fill': MOVED file format error (PortsDB::MOVEDError)
        from /usr/local/lib/ruby/site_ruby/1.9/pkgtools/portsdb.rb:112:in `each'
…(以下略)

といったエラーが出て、portupgrade が動かなくなってる。

ちょっとググったところ、/usr/ports/MOVED が壊れてる(セパレータ | で区切られた項目数が狂ってる)と、このエラーが出るらしい。

% grep -v ^# /usr/ports/MOVED | sed -e 's/[^|]//g' | uniq -c
6415 |||
   1 ||
% tail -2 /usr/ports/MOVED
news/husky-smapi||2014-08-19|Temporary, husky-smapi-devel will move here
news/husky-sqpack|2014-08-19|Obsolete due to husky-*-devel => husky-* migration

最後の一行を

news/husky-sqpack||2014-08-19|Obsolete due to husky-*-devel => husky-* migration

のように「|を二つ」に修正したら、portupgradeは無事動くようになりました。

FreeBSD機はどれも同じ症状なので、portsnap 元のサーバ側の問題でしょう。
そのうち修正されると思いますが、次回また同じ問題が起きた時のタメに備忘録がてら日記に書いておきます。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by taka2 (14791) on 2014年08月22日 10時24分 (#2661769) ホームページ 日記

    /usr/ports/MOVEDが壊れているという問題は、日本時間で8/20 03:21には修正済み [freebsd.org]だったっぽい。うちではcronで03:00に定期更新しているので、20日の更新には間に合わず21日の更新で反映されるはずで
    実際、20日にはportupgradeが動かなくなっていた他のPCは、21日に再確認したら問題無く動きました。

    どうやら、確認したマシンでだけ port tree の更新に失敗してた(1日古かった)もよう。
    どちらかというとこっちの方が気になるので調べて見る。

    port treeの更新は、cronで

    0 3 * * * /usr/sbin/portsnap cron
    0 4 * * * /usr/sbin/portsnap update

    とやってたました。
    portsnap fetch(cron)が確実に終わってからupdateするように1時間の時間差を付けてたんですが、portsnap cron は、負荷分散のため1~3600秒の間のランダム時間sleepしてからfetchするので、運悪く3600秒近くsleepすると、04:00のupdate実行時点ではまだfetchが完了していないという事態になったみたい。
    portsnapはコマンドを複数指定可能で、その場合は順次実行するようなので、cronの記述を複数に分ける必要ななく、

    0 3 * * * /usr/sbin/portsnap cron update

    としておけば「ランダムsleep→fetch→update」という処理になってくれる。

    というわけで、これでportsnapが更新されない問題は解決されたはず…

typodupeerror

※ただしPHPを除く -- あるAdmin

読み込み中...