Mac LeopardのシステムPerlから5.16へ切り替えてシステムApacheに認識させる

| | トラックバック(0)

MacPortsでApache入れたら、その副作用(依存関係)でPerl 5.16 も入った。

それで、あれ、このPerlをシステムApacheから参照できるんじゃね? と思ってやってみた。

/usr/bin/perl

ここに、システムPerlがあるわけだけど、ちと荒っぽいが、これをリネームして別の名前にする。

cd /usr/bin/perl
sudo mv perl perl_original

そして、そこに後釜(シンボリックリンク)を作成

ln -s /opt/local/bin/perl perl

これで、シンボリックリンクが張られて、 /usr/bin/perl にアクセスすると、 /opt/local/bin/perl へ飛ばされるということに。

うまくいくかどうかCGIのページにアクセスしたら、できてた!これで、シバン行(Perlの最初の行 #!/usr/bin/perl ) を一切いじらずに、別バージョンのPerlを参照させることができた!

しかし、これだと、5.16の方は5.8に入れてあったモジュールが入っていないため、動かないCGIも多々ある。

だから足りないモジュールを入れていけばいいのdが、それを手動でやるとミスのもとなので、モジュールをExtUtils::Installedを使って吐き出させてやる。

perl -MExtUtils::Installed 
-e 'map {print $_."\n"} ExtUtils::Installed->new->modules' > cpanlist.txt

このモジュールの掃き出しは、一度古いPerlに戻る必要がある。ので、.bash_profileにMacPortsが書き加えたパスを適宜コメントアウトなどで処理。

これで、掃き出し、これをcpanmに食わせる。あ、5.18の方にcpanmをインストールしておく必要がある。

cpanm < cpanlist.txt

この処理は、新しいPerlでやる必要があるので、、.bash_profileのコメントアウトをふたたびもとに戻す。

これで、必要はモジュールは全部入った!はず!と思ったが、下記は手動で入れないとだめだった。なぜ?(コアモジュールからはずされた?それともcpanを使わずに入れたとか?)

  • Class::Accessor::Fast
  • URI::Escape
  • LWP::UserAgent
  • Date::Calc
  • DBI
  • DBD::SQLite

これらが入らなかった理由はよくわからないけど、CPANにインストールの履歴が残っていなかったということだと思う。

これだと、旧Perlで使っていたモジュールがすべて入ったかどうかは心もとないが、まあそこはゆくゆく検証していく。

それからいままで入れていなかったけど、

  • JSON::XS

も入れてみたら、入った!

トラックバック(0)

このブログ記事を参照しているブログ一覧: Mac LeopardのシステムPerlから5.16へ切り替えてシステムApacheに認識させる

このブログ記事に対するトラックバックURL: https://nozawashinichi.sakura.ne.jp/MT-4.25/mt-tb.cgi/1196

comments powered by Disqus

このブログ記事について

このページは、Shinichi Nozawaが2014年3月31日 16:20に書いたブログ記事です。

ひとつ前のブログ記事は「Perl インストールされているモジュールを出力するコマンド」です。

次のブログ記事は「システムPerlを無理矢理別バージョンにする」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。