cronにハマる
さくらで、ユーザーローカルにCPANモジュールをいろいろインストールしています。bashrcで環境変数PERL5LIBを設定してライブラリのパスを指定していました(過去形)。
ライブラリパス:PERL5LIB=$HOME/local/lib/perl5
ってな感じで。ターミナルで実行していい感じだったのでcronに設定して自動実行させてみました。これでいちいちGETしにいかなくてもいいので楽ちんです。んで、postmasterに来てるメールで実行結果確認。
Unicode::Japaneseが見つからないってさ。あれぇ?
上記のブツのパスを確認すると、
:$HOME/local/lib/perl5/i386-freebsd-64int
と、何故か更に一階層下に配置されていたので、PERL5LIBにパス追加。
:結果:NG
何せcronでしか再現しないエラーなので、cronの設定を1〜2分刻みでずらして実行させてメール確認しての繰り返しでなんとかエラー回避、以下参照。
:対処:cronの設定画面の環境変数にPERL5LIBを追加。
cronって使ったことがなかったんでいろいろ実験してみたんですが(さくらの中の人ごめんなさい)、ユーザー権限のcronで実行するスクリプトのカレントディレクトリって、ユーザーディレクトリのトップなんですね(スクリプトファイルの存在するディレクトリではない)。これから気をつけよう。