1. ホーム
  2. スクリプト・コラム
  3. パール

PODのPerlのパーミッションの問題

2022-01-30 17:47:46

当初、perldocを使ってApache2::Requestモジュールを見ようと思ったのですが、実行時に以下のエラーが発生しました。

コピーコード コードは以下の通りです。

Error in tempfile() using /tmp/XXXXXXXXXXXX:parent directory (. /) is
not writable at /usr/lib/perl5/5.8.8/Pod/Perldoc.pm line 1483.

コマンドを/tmp/に変更しても、やはりエラーになりました。PWDとは関係なく、/tmp自体のパーミッションのようです~~~(/tmpはよく実験するので、意図せずパーミッションを変えてしまったのかもしれません)。

chmod 777 /tmp

もう一度コマンドを実行し、OK ~~。

Apache2::Request のドキュメントを見た後、ヘッダー関連の設定が見当たらなかったので、その apache pm を直接見ることにしたのですが、以前 CPAN wow をインストールできただけで、どこにインストールされているか気にしたことがありませんでした・・・・・・・。

/usr/ は perl ディレクトリでいっぱいなので、それらを見つけるのは簡単な作業ではありません (以前のテストで、perl スクリプトが実行されるたびに、モジュールがどこにあるかを見つけるために何百ものミリ秒があることを思い出してください ......)。

怠けてBaiduに行ったら、CPANのFAQがセットになっていて、ちょうどこの解決策があったのが嬉しかった。


コピーコード コードは以下の通りです。

perl -MFile::Find=find -MFile::Spec::Functions -Tlwe 'find { wanted => sub { print canonpath $_ if /.pmz/ }, no_chdir => 1 }, @INC'

このパスの下の /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/Apache2 にすべてインストールされていることが確認できます。中に入って、grep '$r->header' * するとすぐに、それが RequestRec.pm にあることがわかります。