CPANで自分のホームディレクトリ内にモジュールをインストール

CPANで自分のホームディレクトリ内にモジュールをインストールさくらインターネットなレンタルサーバ環境(ていうかここ)に、表題のような環境を作ったメモです。
~/perl/lib 以下にインストールすることとして以下説明。
まずは perl -MCPAN -e shell して、設定を以下のように。(ここでは都合上改行してますが、実際は1行で)

o conf makepl_arg "LIB=~/perl/lib PREFIX=~/perl/lib INSTALLMAN1DIR=~/perl/man/man1
INSTALLMAN3DIR=~/perl/man/man3"

設定したっぽいechoが返ってくるので、 o conf commit で設定ファイルへ書き込み。
これで以後は install *** したとき、そこにモジュールが展開されるようになる。
こうして入れたモジュールを実際に使うときは、PERL5LIB という環境変数にパスを追加すればOK。
.cshrc なりに以下を追加。

setenv PERL5LIB /home/masawo/perl/lib

#使うコードごとに use lib “$ENV{HOME}/myperl/lib”; とかしてもOKだけど、こっちの方が楽。
参考:
The CPAN Frequently Asked Questions
UNIX (非root) でのインストールノート


(2006/07/07追記)
以下でもう少し詳しい説明がされていますので、こちらもぜひご参考あれ。
一般ユーザ環境におけるCPANモジュールの使い方 – iandeth.

Related Posts
  1. crawler.jp::技術

    さくらインターネットのホームディレクトリにCPANのモジュールをインストールする

    いまさらですが、このブログはさくらインターネットのホスティングサービスを利用して…

  2. 私もさくらサーバーを借りているのですが、
    [o conf ?] のあたりは
    うまくいきましたが、
    [setenv PERL5LIB /home/user/plib]を.cshrcの一番下に記述しても、
    [use lib qw(/home/user/plib);]
    を書かなければエラーになってしまいます。
    記述するのは.cshrcのみでOKなのでしょうか。

  3. 私もさくらサーバーを借りているのですが、
    [o conf ?] のあたりは
    うまくいきましたが、
    [setenv PERL5LIB /home/user/plib]を.cshrcの一番下に記述しても、
    [use lib qw(/home/user/plib);]
    を書かなければエラーになってしまいます。
    記述するのは.cshrcのみでOKなのでしょうか。

  4. 私もさくらサーバーを借りているのですが、
    すみませんちょっと接続が
    悪く、3回も入力してしまっております。

    //////////////////////

    [o conf ?] のあたりは
    うまくいきましたが、
    [setenv PERL5LIB /home/user/plib]を.cshrcの一番下に記述しても、
    [use lib qw(/home/user/plib);]
    を書かなければエラーになってしまいます。
    記述するのは.cshrcのみでOKなのでしょうか。

  5. cshを使っている場合に記述するのは.cshrcですが、お使いのシェルが違えば設定ファイルが変わってくるとおもいます。
    “setenv PERL5LIB /home/user/plib” などと設定してみてもだめでしょうか?
    setenvを使わない場合は “export ?” になると思います。
    ちなみに自分の環境(ここ)は「さくらのレンタルサーバ スタンダード」で、確かシェルは初めからcshだったと記憶しています。

  6. ありがとうございます。
    私もさくらサーバースタンダードプランです。
    .cshrcへの記述内容は問題なさそうなのです。
    ですが、直接telnet上で
    setenv PERL5LIB ?を設定し、
    続けてtelnet上でsetenvだけを入力して確認したところ、PERL5LIBが間違いなく設定されており、さらに
    perl -e ‘(print join(“\n”,@INC));’
    をtelnetで確認しても問題なく設定されておりました。

    ところがcgiファイルでprint join(“\n”,@INC);を表示させると、
    /usr/local/lib/perl5/site_perl/5.8.4/mach
    などの初期設定のパスはちゃんと表示されますが、
    任意で設定したPERL5LIBへのパスが表示されないのです。
    それでもtelnetから同コマンドで見るとちゃんと設定されていました。
    .cshrcに記述して書き換えた後に
    もしかして何かperl側の設定を更新したりする必要とかひょっとしてあるのでしょうか。
    たびたびすみませんが、ぜひ教えてください。

  7. う、CGIで動かすのは試していませんでした。
    .htaccess に SetEnv PERL5LIB /home/user/perl/lib とかすればいいのかなと思っていましたが、
    http://www.apache.jp/docs/mod/mod_env.html#setenv
    どうも当レンタルサーバではSetEnvが効かないみたいです。
    なのでやはり面倒ですが、スクリプト内で use lib なりするしかないかも…。
    RubyやPythonでも同様な状況のようです。
    http://www.emptypage.jp/notes/pymods-on-sakura.html
    http://www.machu.jp/diary/20040806.html

  8. やはりuse libになりそうですね。
    ラクダ本等を調べましたところ、必ずしもuse lib以外の方法を推奨していないっぽいですので、
    install用として環境変数に設定し、使用時はuse libで頑張ってみます。
    ありがとうございました!!

  9. MTAws 3.0

    5月8日と9日にアマゾンから、Amazon アソシエイト Web サービスの名称…

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <img localsrc="" alt="">