CartonとcpanmでCPANモジュールをローカルインストールして使う
PerlでCPANモジュールをローカルインストールして使うには、Cartonを使う。
$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 12.04.2 LTS Release: 12.04 Codename: precise
まず、apt等のパッケージマネージャでCPANのパッケージマネージャcpanmをインストールする。 また、XSモジュールを入れる際のコンパイルに必要となるmake等の開発コマンドも事前に入れておく。
$ sudo apt-get install build-essential $ sudo apt-get install cpanminus
次に、cpanmを使って(グローバル環境に)Cartonをインストールする。
$ sudo cpanm Carton
適当なディレクトリに移動し、cpanfile
という名前のファイルにインストールするモジュールを書く。
cpanfileの書式については次を参照する。
$ mkdir test $ cd test $ vi cpanfile $ cat cpanfile requires 'Path::Class', '0.32';
そして、次のコマンドを実行すると、./local/
以下にモジュールがインストールされる。
$ carton install Installing modules using cpanfile Successfully installed Path-Class-0.32 1 distribution installed Complete! Modules were installed into local
Makefile.PL
にオプションを指定しなければならない等の理由によりインストールが失敗する場合は、cpanmの--look
オプションを利用して手動でインストールを行う。
ただし、このとき合わせて-L
オプションでローカルインストール先のディレクトリ(./local/
)を指定する必要がある。
$ cpanm -L local --look Foo::Bar $ perl Makefile.PL --foo=bar $ make $ make test $ make install
あとは、コマンドの先頭にcarton exec --
をつけて実行することでローカルインストールしたモジュールが使用される。
$ carton exec -- perl -MPath::Class -e 'print file("cpanfile")->slurp();' requires 'Path::Class', '0.32';