plenv および carton の基本的な使用方法
[履歴] (2015/04/04 11:20:52)
プログラミング/IoT の関連商品 (Amazonのアソシエイトとして、当メディアは適格販売により収入を得ています。)
最近の投稿
注目の記事

概要

rbenv および bundler の基本的な使用方法」の perl 版です。

plenv の基本

インストール

GitHub からダウンロードしてインストールします。

$ git clone https://github.com/tokuhirom/plenv.git ~/.plenv
$ git clone https://github.com/tokuhirom/Perl-Build.git ~/.plenv/plugins/perl-build/

~/.bashrc

export PATH=$HOME/.plenv/bin:$PATH
eval "$(plenv init -)"

必要なソフトウェアのインストール

例えば以下のようなものが必要になります。状況に応じて追加で適宜インストールしてください。

$ sudo yum install gcc
$ sudo yum install openssl-devel
$ sudo yum install patch
$ sudo yum install readline-devel

plenv を用いた perl のインストール

インストール

$ plenv install -l
$ plenv install 5.20.0
$ plenv rehash
$ plenv versions

バージョンの切替

$ plenv global 5.20.0
$ plenv local 5.20.0
$ cat .perl-version
5.20.0

cpanm のインストール

cpanm は ruby の gem コマンドに相当します。現在有効な perl に対してのみインストールされることに注意してください。

$ plenv install-cpanm
$ plenv which cpanm

carton の基本

インストール

carton は ruby の bundler に相当します。cpanm でインストールします。

$ plenv exec cpanm Carton
$ plenv rehash

carton の利用例

carton を用いて Plack および Starman のインストールする手順を carton の利用例として紹介します。

設定ファイルの作成

$ cat cpanfile
requires 'Plack', '0.9980';
requires 'Starman', '0.2000';

インストール

cpanfile.snapshot および local/ が生成されます。

$ plenv exec carton install

Perl モジュールをローカルに保存

vendor/cache/ が生成されます。rbenv exec bundle package のようなものです。

$ plenv exec carton bundle

バージョン管理システム

Git などを利用している場合は以下のように考えます。

  • local/ → レポジトリに含めない
  • cpanfile.snapshot → 後述の --deployment を利用する際に必要なためレポジトリに含める
  • vendor/cache/ → 後述の --cached を利用する場合はレポジトリに含める
  • .perl-version → plenv の使用を前提としたプロジェクトであればレポジトリに含める

別の PC でインストールする際の手順

Git clone した後に別の PC でインストールする手順は数種類あります。開発環境のように cpanfile のバージョン情報を満たせばよいという場合は以下のようにします。

$ plenv exec carton install

ローカルに保存したキャッシュがレポジトリに含まれている場合はそれを利用できます。

$ plenv exec carton install --cached

cpanfile.snapshot の依存関係に完全にしたがってインストールするためには以下のようにします。

$ plenv exec carton install --deployment

ローカルに保存したキャッシュがレポジトリに含まれている場合はそれを利用できます。

$ plenv exec carton install --deployment --cached

動作検証

myapp.psgi

my $body ="hello plack!";
my $app = sub {[
        200,
        [ "Content-Type" => "text/html", "Content-Length" => length $body ],
        [ $body ],
    ];
};
$app;

コマンド例

$ plenv exec carton exec starman -p 8080 myapp.psgi
関連ページ
    概要 pyenv は こちらで紹介した rbenv および こちらで紹介した plenv の python 版です。ただし pyenv には rbenv/plenv の bundler/carton が存在しません。代わりに pyenv には virtualenv が存在します。bundler/carton は、あるバージョンの ruby/perl に gem/cpanm でモジュールを直接イン
    概要 SmokePing はネットワーク遅延を可視化する Web ツールです。インストール手順と基本設定をまとめます。特に CentOS 6 を使用する場合について記述していますが、基本的な流れや考え方は他の OS でも同じです。 インストール手順 plenv 関連のインストール こちらで紹介した plenv を利用すると perl およびモジュールのバージョンをプロジェクト内で固定できま