Sep 21, 2010

Perl 5.12.2 をインストールしてみた

ふと気がつくと、ついこないだ安定版のバージョンが 12 になったばかりの気がしていた Perl 5 がもうサブバージョンも 2 になっていました。今までぽちは debian lenny のパッケージに含まれる Perl 5.10.0 を普段使いの Perl にしていて、必要な Perlモジュールは可能な限り lenny でパッケージ化されている物を使い、それでも足りない物を CPAN からのインストールで補って来ました。そんなぽちも、ふと気がついたのがキッカケで、最新安定版の Perl で最新のモジュールを使える環境を整えてみようかな?なんて思って、システムが使う Perl とぽちが普段使う Perl をキッチリ別々にする事にしました。

方針としては、

  • システムで使う Perl 5.10.0 では apt-get や aptitude での パッケージ管理に任せ、CPAN経由でのモジュールのインストールは行わない。
  • ぽちが普段使いする Perl 5.12.2 では、モジュールは CPAN で管理し、常に最新の状態を維持する。
  • Perl 5.10.0 での動作検証の為に debパッケージ化されていない Perlモジュールが必要なら、dh-make-perl を使って debパッケージ化して、ローカルの aptリポジトリから apt-get や aptitude でインストールする。

という感じです。

まずは、CPANモジュールのアンインストール - holidays-l開発ブログを参考に、5.10.0 に CPAN経由で入れたモジュールの数々をアンインストールしてスッキリさせ、ついでに今まで使っていた ~/.cpan以下も削除してしまいましょう。そして、お待ちかね 5.12.2 のビルド&インストール。インストール先は /usr/local/以下にします。

$ tar xvzf perl-5.12.2.tar.gz
$ cd perl-5.12.2
$ ./Configure -Dprefix=/usr/local -Dinstallusrbinperl=N -de
$ make
$ make test
$ sudo make install

これで素の Perl 5.12.2 のインストールが完了しました。

5.12.2 で CPAN からモジュールをインストールする時には、間違って 5.10.0 へインストールしないように、

$ /usr/local/bin/cpan

と、必ずフルパスで CPANシェルを起動さるようにします。

同じように perldoc も

$ /usr/local/bin/perldoc foobar

とフルパスで実行します。

さて、ぽちたての今後の動作検証用に 5.10.0 の方にも Lingua::JA::Fold が欲しいのですけども lenny には debパッケージがありません。仕方がないので dh-make-perl で野良debパッケージを作りました。

$ tar zxvf Lingua-JA-Fold-0.08.tar.gz
$ dh-make-perl ./Lingua-JA-Fold-0.08 --build --desc 'To fold a Japanese text.' --version 0.08-0+0pochi1

これで liblingua-ja-fold-perl_0.08-0+0pochi1_all.deb の出来上がり。あとはローカルの aptリポジトリに放り込んで環境を整えsudo aptitude install liblingua-ja-fold-perl するだけです。

早速 5.10.0 との違いを見てみようと /usr/local/bin/perldoc perldelta してみると

If you are upgrading from an earlier major version, such as 5.10.1,
first read perl5120delta, which describes differences between 5.10.1
and 5.12.0, as well as perl5121delta, which describes earlier changes
in the 5.12 stable release series.

なんて書いてあります。言われた通りに perl5120delta を読んでみると…。

The "..." operator
    A new operator, "...", nicknamed the Yada Yada operator, has been
    added. It is intended to mark placeholder code that is not yet
    implemented. See "Yada Yada Operator" in perlop.

やだやだ演算子!?

とんでもないニックネームに惹かれながら perlop の Yada Yada Operator部分を読んでしまいました。

Yada Yada Operator
    The yada yada operator (noted "...") is a placeholder for code. Perl
    parses it without error, but when you try to execute a yada yada, it
    throws an exception with the text "Unimplemented":

とりあえず未実装の部分に書いておくと、文法の解釈でエラーにしないで、実行時に"Unimplemented"(実行されませんでしたよ)のテキストと例外を投げてくれる演算子みたいです。なんだか範囲演算子とごっちゃになってややこしくなりそうな予感がします。いろいろ perldoc で読むつもりだったのにやだやだ演算子のネーミングが強烈過ぎて今日はここまで。

Posted at 19:07 in perl | Comments/Trackbacks ()
Comments/Trackbacks
TrackBack ping me at
http://pochi.usamimi.info/blog/perl/Perl5122.
Post a comment

writeback message: