Perlモジュールを任意のディレクトリへインストールする
2019/02/14更新
目次
概要
root権限が無いなどの制限のある環境が理由で、使いたいPerlモジュールをインストールできない場合は、自分のホームディレクトリなどの任意の場所にインストールして使うことができる。
手作業での手順
例えばホームディレクトリ/home/hogefuga/
にインストールする場合、/home/hogefuga/usr/local/
のようなディレクトリを事前に掘っておく。
CPANで目的のモジュールを検索し、ダウンロードして解凍したら、生成されたディレクトリに入って、以下を実行する。
perl Makefile.PL PREFIX=/home/hogefuga/usr/local make make install
これでPREFIX
で指定したディレクトリにモジュールがインストールされる。実際にインストールされた場所を確認すると、/home/hogefuga/usr/local/lib/perl5/site_perl/5.8.9/
などのディレクトリが自動的に掘られてインストールされているはずである。
モジュールがインストールされたディレクトリが確認できたら、モジュールを使いたいスクリプトの先頭に以下を記述する。
use lib '/home/hogefuga/usr/local/lib/perl5/site_perl/5.8.9';
これでモジュールの検索パスが@INC
に追加され、使用可能となる。
usr/local/
のようなディレクトリは必須ではないが、指定した場所には複数のディレクトリが生成されるので、あった方がすっきりまとまる。依存のあるモジュールを複数インストールする場合などで、Makefile.PL自体が依存を認識しないときは、荒技ではあるが、Makefile.PLに直接「
use lib ~
」を書いてしまえばよい。
cpanmを使った手順
上記の手作業での手順は、モジュールが別のモジュールに多数依存していたり、依存関係が複雑であったりする場合などには、非常に手間がかかってしまう。そこで、cpanmというツールが便利である。
cpanmは、単体のPerlスクリプトである。http://xrl.us/cpanmからダウンロードして実行権限をつけるだけで、すぐに使用できる。
-l
オプションでインストールしたいディレクトリを指定して実行する。以下は、DBI::SQLiteモジュールを/home/hogefuga/usr/local
にインストールする場合の例である。
cpanm -l /home/hogefuga/usr/local DBI::SQLite
これで、依存などを自動的に解決して、必要なモジュールを全てインストールしてくれる。先の手順で手動でmake
した場合とは、ディレクトリ構成が異なるようなので注意。
スクリプトから使う際は、前述の通り、インストールされたディレクトリを確認してuse lib ~
を記述する。