Test-Memcached-0.00003 - can't run as root without the -u switch
概要
Test-Memcached-0.00003をroot権限でinstallするとRunning make testで失敗するです。
t/002_basic.tがこける
cannot open port: 10001 at /root/.cpan/build/Test-Memcached-0.00003-QRHVb2/blib/lib/Test/Memcached.pm line 184.
原因調べる準備
localに以下のスクリプトを配備。つまりコピペ。
/home/$USER/project/Hoge/lib/Test/Memcached.pm /home/$USER/project/Hoge/t/002_basic.t
一般ユーザーでtestを実行してみる。
% prove -lv t/002_basic.t
結果
1..4 ok 1 ok 2 ok 3 ok 4 ok All tests successful. Files=1, Tests=4, 2 wallclock secs ( 0.10 usr 0.02 sys + 0.25 cusr 0.15 csys = 0.52 CPU) Result: PASS
ということで問題はない。root権限だとどうだろう
% sudo prove -lv t/002_basic.t
t/test_memcached.t .. 1..4 ok 1 cannot open port: 10001 at /home/okamura/project/Pinky/lib/Test/Memcached.pm line 184. # Looks like you planned 4 tests but ran 1. # Looks like your test exited with 111 just after 1. Dubious, test returned 111 (wstat 28416, 0x6f00) Failed 3/4 subtests Test Summary Report ------------------- t/test_memcached.t (Wstat: 28416 Tests: 1 Failed: 0) Non-zero exit status: 111 Parse errors: Bad plan. You planned 4 tests but ran 1. Files=1, Tests=1, 11 wallclock secs ( 0.07 usr 0.09 sys + 0.29 cusr 0.17 csys = 0.62 CPU) Result: FAIL
あらら、失敗してしまいました。
原因を調べましょう
Test-Memcached-0.00003、Test::Memcached.pmの142〜145あたりをコメントアウトします。標準エラー出力をlogファイルに向けないようにするためです。
すると次のようなメッセージが表示されます。
can't run as root without the -u switch
どうもIO::Socket::INET、もしくはそれより以下の階層でroot権限で使うのを拒否しているような感じがしてきました。