CygwinにもperlbrewでPerlを入れてみた

perlbrewを入れてみたメモ - kanonjiの日記を頼りにCygwinにもperlbrewを入れてみました。色々CPANモジュール入れるのも、システムperlだとやり直しもきかないので入れたんですが、Cygwinだとちょっとハマりどころがありました。

$ perlbrew --notest --force install 5.14.2

普通に入れてたら、テストの途中で止まってしまいました。2回試したけど2回ともダメでした。

$ perlbrew --force install perl-5.12.2

したんですが、スレッド関係のテストがいつまで経っても終わらないという自体に遭遇したので、 (これは単に時間がかかりすぎてるだけかもしれないけど)テストをスキップするために、

$ perlberw --notest --force install perl-5.12.2
http://blog.nyarla.net/2010/11/16/1

検索したらやっぱり止まってるってエントリーがあったので、これに倣って--notest --forceで入れました。

$ perlbrew list
  perl-5.14.2
$ perlbrew switch 5.14.2
$ eixt

http://d.hatena.ne.jp/tokuhirom/20100716/perlenvによると、ここで一旦shellを抜けて入り直した方が良いらしいので、改めてターミナルを起動します。

$ curl -L http://cpanmin.us/ | perl - App::cpanminus
$ type cpanm
cpanm is /home/myuser/perl5/perlbrew/perls/perl-5.14.2/bin/cpanm

cpanmがperlbrewで入れたperlの環境下に入ってます。

$ cpanm local::lib
--> Working on local::lib
Fetching http://search.cpan.org/CPAN/authors/id/A/AP/APEIRON/local-lib-1.008004.tar.gz ... OK
Configuring local-lib-1.008004 ... OK
Building and testing local-lib-1.008004 ... OK
Successfully installed local-lib-1.008004
1 distribution installed

$ ls perl5/perlbrew/perls/perl-5.14.2/lib/site_perl/5.14.2/local
lib.pm

local::libは実は使い方をよく分かってないんだけど、最初にいれておくと何かと便利らしいので、とりあえず入れておきました。cpanmコマンドでちゃんとperlbrewの方にインストール出来てます。

$ cpanm Bundle::LWP
$ cpanm Bundle::CPAN
$ cpanm Task::Kensho
Bundle::LWP - install all libwww-perl related modules - metacpan.org
CPANモジュールをダウンロードする通信にLWPがあればそれを使うらしい*1ので、最初にいれておきます。
Bundle::CPAN - Bundle to optimize the behaviour of CPAN.pm - metacpan.org
CPANユーザのためのいろいろなモジュール。らしい。cpanmだと入れても意味のないモジュールとかもあるんだろうか?まぁ気にせず入れておく。
Task::Kensho - A Glimpse at an Enlightened Perl - metacpan.org
2011年頃にTwitterで、モダンなモジュールが揃ってるから次はこれ入れれば良いやみたいな事を言ってる人が居たので、勝手に倣って入れました。

BundleとTaskの違いはよく分からないけど、どちらもCPANモジュールのひとまとめにしたセットです。それなりに大量のモジュールを入れていくけど、Cygwinだとかなり時間がかかります。あと、途中で3回程止まってました。Ctrl+cでInterruptしてやり直したら、最終的にはインストールしきれましたけど。

PERLBREW_ROOT

$ vi .bash_profile

#perlbrew
export PERLBREW_ROOT=~/.perlbrew

perlbrewをインストールする前にPERLBREW_ROOTを設定すると、インストール先を変更できます。pythonbrewに合わせてみるとか。
インストール直前に$ export PERLBREW_ROOT=~/.perlbrewするだけだと、$ perlbrewを実行したときに動作しないので注意。

5.15.9がインストールできない

$ perlbrew install 5.15.9
Fetching perl-5.15.9 as /home/myuser/perl5/perlbrew/dists/perl-5.15.9.tar.gz
Page not retrieved; HTTP error code 400 or above. at /loader/0x200b2a88/App/perlbrew.pm line 147.

Cygwinだからなのかは未確認だけど、5.15.9がインストール出来ませんでした。

CPANモジュールのバージョン確認方法

$ perl -Mlocal::lib -e 'print $local::lib::VERSION'
$ perldoc local::lib

ワンライナーで出すか、perldocで確認する。

環境

Windows Windows7
Cygwin 1.7.11-1
setup.exe*2 version 2.769

*1:cpanmだからじゃなくてcpanコマンドの話。cpanmコマンドがどんな動きをするのかは全く知りません

*2:Cygwinインストーラ