2009/09/07

Recent entries from same category

  1. PerlでWindowsと親和性の高いreadlineが欲しい → あった「Caroline」
  2. Perl をゆるふわと語ろう
  3. cpanfile とは何か、なぜそれを使いたいのか
  4. plackup の --path 引数
  5. Github Notification API が出たので通知を Growl するの書いた。

この文章はperl.jonallen.info に掲載されていた記事の和訳です。意訳が含まれている可能性があります。間違いがあればご連絡下さい。
by Jon Allen (JJ) - posted on Wednesday, 26 August 2009

ここ2、3年にわたって、Perlでの開発はCatalystやDBIx::Class、Moose等のエキサイティングな新技術により変わってました。

しかしながら、これらや他のツールに共通して言える事が1つあります - それらはこれらがPerl本体の配布物ではなくCPANの一部という事です。共有ホスティングサーバなど信頼されている環境においては、ユーザはルート権限なしでCPANモジュールをシステムにインストールする事が難しいでしょう。 ただ幸い、単純解があります - それが local::lib です。


local::lib の紹介

local::lib は CPAN ディストリビューションをホームディレクトリににインストールできる様にあらゆる設定を行うPerlモジュールです。これはルート権限が必要ない事を意味していて、システムのPerlや他のユーザに干渉せずに確実にインストール出来る事を意味しています。

もちろん、local::lib それ自信も root 権限なしにインストール出来る為、システム管理者を苦しめる必要性は全くありません。


インストールウォークスルー

クリーンインストールされた Ubuntu 9.04 で local::lib 使用するデモンストレーションを行います。

まず最初にhttp://search.cpan.org/dist/local-libで最新版をダウンロードしデスクトップへ .tar.gz を保存します。

search.cpan.org   Downloading local::lib

次に、Terminalセッションを開いて、以下のコマンドを入力してアーカイブを解凍します:

cd Desktop
tar -zxf local-lib-1.004004.tar.gz
cd local-lib-1.004004

"bootstrap"にする事を local::lib に教えてあげる必要があります。これでホームディレクトリにperl5というフォルダが作成され local::lib をそこにインストールする様 toolchain に命令します。

perl Makefile.PL --bootstrap
Bootstrapping local::lib

インストールが自動的に構成される様に一度か二度尋ねられます。デフォルト値('yes')で良いのでただ単にEnterキーを叩きましょう。

Automatic CPAN configuration   CPAN config complete

設定が終了したら以下のコマンドを入力し local::lib をビルド、テスト、インストールして下さい:

make
make test
make install

Installing local::lib

もうちょっとです。残りは1工程です。インストールされたモジュールがどこに保存されるかを Perl に教えてあげる為に幾つかの環境変数を設定します。

echo 'eval $(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib)' >>~/.bashrc

Setting environment variables

全て完了です。実行していたターミナルウィンドウを全て閉じて、新しい設定が反映される様に、新しいTerminalセッションを開きましょう。


local::lib のテスト

ちゃんと動くか簡単なモジュールをインストールしてみましょう。新しいターミナルウィンドウを開き、CPAN シェルを起動します:

perl -MCPAN -eshell

CPAN プロンプトが開き、以下を入力します

install Acme::Time::Baby
Installing Acme::Time::Baby

モジュールをダウンロードしてビルド、テスト、インストールします - マニュアルを見ることもないでしょう。exit をタイプして CPAN シェルから抜けたら簡単なワンライナーでインストールされたモジュールをテスト出来ます:

perl -MAcme::Time::Baby -E 'say babytime'

Acme::Time::Baby installed!

CPAN を恐れるな

さて動作確認です。Catalyst をインストールしましょう。

Catalyst は多くのモジュールに依存した巨大なモジュールですが CPAN.pm でセットアップするので問題はありません。しかしながら初期状態では、CPAN シェルが依存を見付ける度にインストールすべきかどうか尋ねて来て、とても退屈になります。最初ですから自動的に依存に従う様 CPAN.pm に教えてあげます。

perl -MCPAN -eshell
o conf prerequisites_policy follow
o conf build_requires_install_policy yes
o conf commit

Setting CPAN.pm preferences

注意 それでも時折、モジュールがそれら自身の構成に依存した質問をして来るので何が起きるか目を光らせておくべきでしょう。

インストールを開始する準備が整いました。

install Catalyst::Devel

CPAN.pm が全ての Catalyst 依存モジュールをビルドしてくれます。少々時間が経って、以下のメッセージが出ていればインストール成功です:

FLORA/Catalyst-Devel-1.19.tar.gz
/usr/bin/make install -- OK

Catalyst installed!

ちゃんと動作しているかを検証するので CPAN シェルを終了して新しい Catalyst アプリケーションを作成しましょう。

~/perl5/bin/catalyst.pl MyApp
cd MyApp
perl Makefile.PL

Starting a new Catalyst application   Starting a new Catalyst application

注意 catalyst.pl スクリプトは ~/perl5/bin ディレクトリにあります - ここが local::lib の標準的なスクリプトインストール先です。

Catalystアプリケーションはスタンドアロンの開発用サーバを含んでいるので、簡単にアプリケーションを実行できます:

script/myapp_server.pl -r -d

Running the Catalyst development server   Catalyst server running

これで http://localhost:3000をブラウズすれば、光り輝くCatalystのテストページが表示されます!

The Catalyst test page!

Notes

  • いくつかの Perl モジュールは速度を向上やC言語のライブラリ関数と強調する為にC言語で書かれています。CPANの全てを使用するにはCコンパイラをマシンにインストールする必要があります。Linuxや他のUNIXシステムで大概Cコンパイラが既にインストールされていますが(which ccをタイプしてみましょう)、そうでない場合でもベンダは GCC パッケージを提供しているはずです。Macでは Xcode developer tools (OS XをDVDからインストール)をインストールすると必要な物は全て揃うでしょう。

  • 私がテストで使用しているシステム Ubuntu 9.04 は Perl 5 version 10.0 を含んでいます。以下のコマンドで Perl がどのバージョンかをチェックできます。

    perl -v

    Checking your Perl version

    もし Perl 5 のリリースよりも古い物、すなわち v5.8.9 以前のバージョンをお使いであれば、システム管理者かOSベンダーにアップグレードを求めるべきしょう。 Perl5 version 10.0 では smart matching、named regex captures、a switch statement や state variables といった多くの新機能が導入されています - http://perldoc.perl.org/perl5100delta.html を参照してと全ての新機能を確認して下さい。

  • インストール済みのモジュールを全て削除してやり直すのであれば、ローカルの ~/.cpan と ~/perl5 ディレクトリを削除するだけです:

    rm -rf ~/.cpan
    rm -rf ~/perl5

    そして ~/.bashrc を編集し以下の行を削除します:

    eval $(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib)

    以上に示した手順で local::lib がインストール出来ます。

Posted at by