モダンな Perl 環境構築方法をご紹介したいと思います。
perlbrew は、ホームディレクトリに複数の Perl をインストールして切り替えをしてくれるツールです。
perlbrew のインストール
以下のようなコマンドを実行すると、prebrew をインストールできます。
1$ curl -kL http://install.perlbrew.pl | bash
perlbrew のインストール方法はいくつかあります。
他の方法は以下のサイトを参照して下さい。
perlbrew コマンドを使うためにインストールされたコマンドにパスを通す設定が必要です。
bash なら bashrc に以下のような設定を書くと良いでしょう。
1source ~/perl5/perlbrew/etc/bashrc
perlbrew で Perl をインストール
以下のコマンドで、利用できる Perl のバージョンを確認できます。
1perlbrew available
現時点では以下の様なリストが表示されました。
1perl-5.17.6
2perl-5.16.2
3perl-5.14.3
4perl-5.12.5
5perl-5.10.1
6perl-5.8.9
7perl-5.6.2
8perl5.005_04
9perl5.004_05
10perl5.003_07
最新版をインストールするとよいでしょう。
注意点としては、
5.xxのxxの部分が奇数のバージョンは開発版であり、また5.xx.0はバグがある可能性が高いので、正式に使うのであれば、これらのバージョンを避けたほうがよいでしょう。
今回は、5.16.2をインストールします。
インストールは次のコマンドでできます。
1$ perlbrew install 5.16.2
インストールは少し時間がかかります。
テストを省略しても支障がない場合は、次のコマンドでインストールすると、少し早く完了します。
1$ perlbrew install --notest 5.16.2
perlbrew で Perl を切り替え
次のコマンドで、インストールした Perl を確認することができます。
1$ perlbrew list
2perl-5.16.2
Perl を切り替える場合は、次のコマンドで行えます。
1$ perlbrew switch 5.16.2
もう一度perlbrew listで確認してみましょう。
1$ perlbrew list
2*perl5.16.2
行の最初に米印がついているバージョンが、現在選択しているPerlです。
whichコマンドでperlコマンドのフルパスを確認してみましょう。
1$ which perl
2/home/uchiyama/perl5/perlbrew/perls/perl-5.16.2/bin/perl
ホームディレクトリにインストールしたPerlが使われるようになっていると思います。
cpanm をインストール
ついでに CPAN モジュールをインストールするコマンドである cpanm もインストールしましょう。
perlbrew のコマンドでインストールできます。
1$ perlbrew install-cpanm
これでcpanmコマンドが使えるようになります。
ホームディレクトリにモジュールがインストールされるようになっているので、root権限はいりません。
また、好きなモジュールを入れても全体に影響を及ぼすことはありません。
cron での使い方
perlbrew で入れた Perl を cron で実行するとき、いくつか設定する必要があります。
まず、次のようなシェルスクリプトを用意します。
1env.sh
2#!/bin/sh
3export HOME=/home/uchiyama
4source ~/perl5/perlbrew/etc/bashrc
5perlbrew use perl-5.16.2
6exec "$@"
そして、crontab の設定で次のような感じで記述します。
1/home/uchiyama/env.sh perl /home/uchiyama/hoge.pl > /tmp/hoge 2>&1
以上のようにに設定することで、perlbrewでインストールされたPerlが使われるようになります。
普通に実行してしまうと、システムに標準で入っているPerlの方で実行されてしまうので注意して下さい。
参考
https://blog.riywo.com/2012/05/26/005232/まとめ
perlbrew で perl 環境を作る方法をご紹介しました。
共有環境の場合、ホームディレクトリに perl がインストールされていると安心感があります。
Perl を使うときはぜひこの方法で環境構築してみてください。