StrawberryPerlとcpanmの設定

Windows 8 上にPerl環境を作成したときのメモ。

Perlのインストール

Windows用のPerlとしては、ActivePerlとStrawberryPerlがある。
今回は、gcc等のコンパイラを含み、CPANのインストールが楽だというStrawberryPerlを利用する。

http://strawberryperl.com/

インストーラの実行については割愛。

インストーラがStrawberryPerlのPATHも追加するが、SourceTreeが先にインストールされていた場合、うまくStrawberryPerlが呼び出せないことがある。
環境変数PATHを手動で変更して、C:\strawberry\c\bin;C:\strawberry\perl\site\bin;C:\strawberry\perl\bin を先頭にすることで解決できる(はず……SourceTreeがPerlを呼ぶときに、混乱が起こるかもしれない)。

cpanmをローカルで使う

StrawberryPerlにはすでにcpanmとlocal::libが組み込まれている。
そこで、local::libを使ってモジュールをユーザーローカルの環境にインストールするように設定する。

>cpanm local::lib
local::lib is up to date. (2.000004)

perl -Mlocal::lib を実行すると、Windowsに設定するべき環境変数のリストを見られる。

>perl -Mlocal::lib
@if not "%PATH%"=="" set PATH=C:\Users\thegoodbadugly\perl5\bin;%PATH%
@if "%PATH%"=="" @set PATH=C:\Users\thegoodbadugly\perl5\bin
@if not "%PERL5LIB%"=="" set PERL5LIB=C:\Users\thegoodbadugly\perl5\lib\perl5;%PERL5LIB%
@if "%PERL5LIB%"=="" @set PERL5LIB=C:\Users\thegoodbadugly\perl5\lib\perl5
@if not "%PERL_LOCAL_LIB_ROOT%"=="" set PERL_LOCAL_LIB_ROOT=C:\Users\thegoodbadugly\perl5;%PERL_LOCAL_LIB_ROOT%
@if "%PERL_LOCAL_LIB_ROOT%"=="" @set PERL_LOCAL_LIB_ROOT=C:\Users\thegoodbadugly\perl5
@set PERL_MB_OPT=--install_base ^"C:\\Users\\thegoodbadugly\\perl5^"
@set PERL_MM_OPT=INSTALL_BASE=C:\\\\Users\\\\thegoodbadugly\\\\perl5

(注意!)thegoodbaduglyの部分はユーザー名になるので、ここからコピペしてはいけない。

これをリダイレクトすればバッチファイルとして使えそうだが、Windowsではコントロールパネルのシステムの詳細からひとつひとつ設定することになる。

変数=値とすると、以下の四つの環境変数の設定が必要になる。

PERL5LIB=C:\Users\thegoodbadugly\perl5\lib\perl5
PERL_LOCAL_LIB_ROOT=C:\Users\thegoodbadugly\perl5
PERL_MB_OPT=--install_base "C:\\Users\\thegoodbadugly\\perl5"
PERL_MM_OPT=INSTALL_BASE=C:\\\\Users\\\\thegoodbadugly\\\\perl5

(もう一度注意!)thegoodbaduglyの部分はユーザー名になるので、ここからコピペしてはいけない。
(もう一つ注意!)PERL_MB_OPTのダブルクオーテーションの前の^記号は、取り除かなくてはいけない。

この設定を行ったら、新しいコマンドプロンプトを立ち上げて、以降の設定はそこで行う。

cpanmを使ったインストール

cpanmで、例えばConfig::Pitをインストールする場合、コマンドは「
cpanm Config::Pit」となるが、Windowsの場合、いくつかの依存モジュールのインストールに失敗するため、--forceオプションを付加する。

>cpanm Config::Pit --force

同様に、Googleスプレッドシートのモジュールが必要ならば、 Net::Google::Spreadsheets をインストールすればよい。
インストールプロセスの詳細を見る場合には、--verboseオプションを利用できる。