2012-02-20

runit: svlogd failed

runit をビルドして使っていれば一生のうち何回かは出くわすエラー。かくいう私も初見はかなり焦った。「何も変えてないのに何で!?」って。

・・・と思ったけど、検索しても目ぼしいものが見つからないね。これに悩むのはかなりレアらしい。

make[1]: Entering directory `/package/admin/runit-2.1.1/compile'
./check-local chpst runit runit-init runsv runsvchdir runsvdir sv svlogd utmpset

Checking chpst...
Checking runit...
Checking runit-init...
Checking runsv...
Checking runsvchdir...
Checking runsvdir...
Checking sv...
Checking svlogd...
usage: svlogd [-ttv] [-r c] [-R abc] [-l len] [-b buflen] dir ...

111
$Id: 5e55a90e0a1b35ec47fed3021453c50675ea1117 $
usage: svlogd [-ttv] [-r c] [-R abc] [-l len] [-b buflen] dir ...

111
0
foo
0
foo
bar
baz
0
foo
bar
baz
:oo
:ar
:az
0
foo
bar
baz
:oo
:ar
:az
foo
svlogd failed.
make[1]: *** [check] Error 1
make[1]: Leaving directory `/package/admin/runit-2.1.1/compile'

svlogd のテストに失敗している。これを眺めてても訳分からんし、失敗する環境では何度やっても失敗するので、とっとと諦めてソースを読むのが吉。

先の出力と突き合わせると、エラー場所は次の部分。

runit-2.1.1/src/svlogd.check:

echo t2 >"${ctmp}"/config
( echo foo; sleep 3 ) |svlogd "${ctmp}"
echo $?
cat "${ctmp}"/current

これから想像するに、2 秒でローテートする設定にして 3 秒待ったのに、current ログがローテートして(空になって)いない?

ということは時計? クロック? あ、これ VM 環境だ。

もういい加減に学習しろ、と言われても仕方がない感じだが、色んな所にシステムを入れまくっていると忘れることもあるんだよ。VMware も Server とか Player とか ESX とか色々あってバージョンによっても挙動が変わるし、イメージをコピー・移動とかしてたらそりゃあいつか間違うわ。せめてもの予防策は divider=10 を必ず付けておくくらいか。

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。