Mail::SPFをroot権限がない状態で、cpanmでインストールしたい。
目的
Mail::SPFをインストールするためには、/usr/sbinへの書き込み権限が必要である。つまり大抵の場合、root権限が必要となる。
だが、plenvを使っている環境などではsudo cpanm Mail::SPF
とした場合、正しくインストールできない。
そのため、root権限なしでインストールしたい。
対処
root権限がない場合のインストール方法は、Mail::SPFのドキュメントに記載されている。
You can, however, work around this limitation by using the "--install_path"
option during installation:./Build install --install_path sbin=/desired/sbin/path
http://cpansearch.perl.org/src/JMEHNLE/Mail-SPF-v2.9.0/INSTALL
また、cpanmで./Build
にオプションを与えるには、cpanm --look ...
とした上で手動で実行する。
$ cpanm --look Mail::SPF $ perl Build.PL $ ./Build install --install_path sbin=/desired/sbin/path
ただしこの場合、make install
するわけではないため、依存モジュールなどはインストールされない。
perl Makefile.PL
やmake install
で./Buildに--install_path
を渡す方法は不明。
成功
Build.PLを書き換えることで対処するしかない。
install_path => { 'sbin' => '/usr/sbin' },
のようになっている部分の、/usr/sbin
部分を書き込み可能なパスに書き換えればよい。
別の方法
最近のcpanmでは、まだ実験的にだが、--configure-args
--build-args
--test-args
--install-args
といったオプションが用意されているのでそちらを使うことでもっと簡単にインストール可能。
$ cpanm --look --configure-args="--install_path sbin=/desired/sbin/path" Mail::SPF
しかし./Build
に与えるオプションなのだから--build-args
を使うものかと思ってしばらくはまった。CPANモジュールのインストールの流れはいまいちよくわからない。