2009年02月13日 16:00 [Edit]

perl - Mac OS X - perlをDIYする

camel

気がつかなかった。

bulknews.typepad.com: Mac OS X Security Update 2009-001 might break your Perl (CPAN)
A couple of my friends on IRC have told me this, and since I'm using 10.4.11 I couldn't verify, but the latest Mac OS X Security Update 2009-001 apparently breaks your Perl, if you
  • are using Mac OS X 10.5 (Leopard)
  • and are using Perl that comes with Mac OS X
  • and have upgraded several core modules with CPAN in the past

気がつかなくてもいいよう手配しているので。


なぜか、というと、Perlは/usr/bin/perlではなく/usr/local/bin/perlを自分で作って使用しているから。OS X に限らず、/usr以下(もちろん/usr/localは除く)、というか「システムが使う」ソフトウェアはなるべくいじりたくない、ということもあるし、さらに以前 404 Blog Not Found:perl - LWPあれこれ で書いたように、OS X の場合、LWPのHEADコマンドが/usr/bin/HEADを上書きするリスクがあるということもある。

で、自前で perl をインストールする方法だけど、実に簡単。Xcodeをインストールしておいてから、Terminalから以下のようにすればいい。

curl -O http://www.cpan.org/src/perl-5.10.0.tar.gz
tar zxvf perl-5.10.0.tar.gz
cd perl-5.10.0
sh Configure -DDEBUGGING -Doptimize='-g -pipe -Os' -Dusethreads -Dusemultiplicity -des
make
sudo make install

ちなみに現時点における Leopard の /usr/bin/perl

sh Configure -ds -e -Dprefix=/usr -Dccflags='-g -pipe' -Dldflags=-Dman3ext=3pm -Duseithreads -Duseshrplib

としてコンパイルされているが、これだとコマンドラインの-Dスイッチが効かないし、Perl本体を shared library にする(OS X用語だと dynamic library) -Duseshrplib は、指定しない方が perl の起動が高速になる。

あとは環境変数PATH/usr/local/binが入っているのを確認の上、今までどおり使えばいい。そうそう。csh系のshellを使っている人は、rehashをお忘れなく。

これで、/usr/local/bin/perl が my perl になる。cpanがインストールする諸々も、当然/usr/localがprefixになるので、システムが使うファイルを間違って上書きする心配もほぼなくなる。

一時的にプリインストール版を使う時には、perlではなく/usr/bin/perlを明示的に指定すればいい。例えば私は Encode のテストをする時には必ず

perl Makefile.PL

だけではなく

/usr/bin/perl Makefile.PL

もやっている。それでも下位互換性をチェックしきれないこともあるけど。

MacPortsを使うという手もある。が、perl は CPAN という自前のパッケージ管理システムを持っているので、 perl の事はなるべく perl にまかせたいということもあって、私は/usr/local/bin/perlをデフォルトの perl にしている。

Dan the (Perl Monger|Mac OS X User)

追記:

今迷っているのは、ruby 1.9.1 をどこにインストールするか。/usr/localにインストールしちゃっていいのかなぁ。ここまで勇気ないし


この記事へのトラックバックURL

この記事へのトラックバック
今更ながら.......
Perl5.10.0をインストールした(OSX)【Potential Energy】at 2009年05月02日 11:00
この記事へのコメント
全ユーザ・全システムに影響を与えるものを日々更新なんて管理者のすることじゃないだろw
Posted by 775 at 2009年02月19日 13:31
管理者でない開発者なんて「小作農」にも劣る。
Posted by Kei at 2009年02月18日 17:51
開発者だったら一般ユーザ権限で入れられるところ($HOME以下)に入れて日々上書きインストールでしょう。

すぐ/usr/localに入れることしか考えないのはどこでも管理者な人の悪い癖。
Posted by 774 at 2009年02月18日 17:04
google から site 内検索してみては?
google web検索の入力項に、
perl site://blog.livedoor.jp/dankogai/
と入力する
Posted by tr2 at 2009年02月14日 09:16

ライブドアブログの標準プラグインの「ブログ内検索」は、前々から使えないと評判です。
Posted by 通りすがり at 2009年02月14日 04:43
perlを勉強しようと思いたち、
まずこのblog内のperlに関しての記事を読もうと思ったんですよ。
そこで右のカラムにあるBlog内検索ってので「perl」を検索したんですが
うまく機能していないのか
「あなたがお探しのキーワードに一致する情報は見つかりませんでした。」
となってしまいます。
googleでサイト検索をして目的とする記事は見つかりましたがちょっと不便ですね。
Posted by oti at 2009年02月13日 23:30