気がつかなかった。
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
にインストールしちゃっていいのかなぁ。ここまで勇気ないし。
このブログにコメントするにはログインが必要です。
さんログアウト
この記事には許可ユーザしかコメントができません。