cpan installでuntarって出て困る
cpanで入れたモジュール、入れた時は元気だったのに、いざスクリプトをwwwのcronで叩いたら動かないじゃない。
使いたかったモジュール、こんなところにいたの。
# perldoc -l IPC/Run3
/root/perl5/lib/perl5/IPC/Run3.pm
rootでcpan installすると/root/perl5/lib/perl5/以下にmoduleが入ってしまうんだって
wwwユーザーで実行したかったら/usr/local/share/perl5/に入れないとアクセスできないよね。
まずはrootで入れたmoduleを削除しようかなと思ったらcpanはuninstallコマンドが存在しないのね。
こちらを参考にするわよ
CPANモジュールのアンインストール(改良版) – ヒルズで働く@robarioの技ログ
alias cpan-uninstall='\perl -MExtUtils::Install -MExtUtils::Installed -e "unshift@ARGV,new ExtUtils::Installed;sub a{\@ARGV};uninstall((eval{a->[0]->packlist(a->[1])}||do{require CPAN;a->[0]->packlist(CPAN::Shell->expandany(a->[1])->distribution->base_id=~m/(.*)-[^-]+$/)})->packlist_file,1,a->[2])"'
こうして完成したcpan-uninstallでIPC::Run3を削除。
$ perldoc -l IPC/Run3
No documentation found for "IPC/Run3".
いなくなった
sudoのできるユーザーに戻って気を取り直してcpan installのやり直しよ。
$ sudo perl -MCPAN -e shell
cpan[1]> install IPC::Run3
Reading '/root/.cpan/Metadata'
(中略)
Uncompressed /root/.cpan/sources/authors/id/R/RJ/RJBS/IPC-Run3-0.048.tar.gz successfully
Using Tar:/bin/tar xf "IPC-Run3-0.048.tar":
Couldn't untar IPC-Run3-0.048.tar
Package seems to come without Makefile.PL.
(The test -f "/root/.cpan/build/RJBS-TJhW8C/Makefile.PL" returned false.)
Writing one on our own (setting NAME to IPCRun3)
Had problems unarchiving. Please build manually
Running make test
Make had some problems, won't test
Running make install
Make had some problems, won't install
Failed during this command:
RJBS/IPC-Run3-0.048.tar.gz : unwrapped NO -- untar failed
Couldn’t untar IPC-Run3-0.048.tarといわれたのでwhere tar
してtarの場所を取得。
その場所をcpanのconfigに反映する。
cpan[1]> o conf tar '/bin/tar'
tar [/bin/tar]
Please use 'o conf commit' to make the config permanent!
cpan[2]> o conf commit
しかし結果は変わらず
ググってみると以下の通り
What solved it for me was simply rebooting the system.
CPAN Perl modules installer not finding tar file – Stack Overflow
また
えっ、インスタンス再起動したらuntarできるようになった・・
kentaro yanagidaさんのツイート: “えっ、インスタンス再起動したらuntarできるようになった・・”
OK, Let’s reboot.
結論
再起動は正義