cpanコマンドで古いバージョンのモジュールを楽にインストールする方法
CPANにあがってるApp::Daemonというのを試してみたくて、cpanコマンドでインストールしようとしたらエラーが出てしまいました。Proc::ProcessTableという依存モジュールの関連でこけてるようです。
エラーログをチェックしてみたら「undefined symbol: pthread_once」とか言ってるよ。。。だるいな〜、あきらめよっかな〜、と思ったんですがググッたらすぐ答えが見つかりました。
https://www.webgui.org/bugs/tracker/10021
Solution Summary
Downgraded Proc-ProcessTable from 0.45 to 0.44 due to bug in perl module.
最新版である0.45を0.44にダウングレードすればいいらしい。
ふーん。じゃ古いやつをインストールすっか、ということで、ようやくここから本エントリで書きたかったことです。
任意のバージョンのモジュールをcpanコマンドでインストールしてみる
cpanシェルに入って「mコマンド」もしくは「iコマンド」を使います。そうするとそのモジュールに関する色々な情報が表示されます。
cpan[1]> m Proc::ProcessTable Module id = Proc::ProcessTable DESCRIPTION Unix process table information CPAN_USERID DURIST (Dan Urist <durist@frii.com>) CPAN_VERSION 0.45 CPAN_FILE D/DU/DURIST/Proc-ProcessTable-0.45.tar.gz UPLOAD_DATE 2008-09-08 DSLIP_STATUS bdcO? (beta,developer,C,object-oriented,) MANPAGE Proc::ProcessTable - Perl extension to access the unix process table INST_FILE (not installed)
「CPAN_FILE」として作者の頭文字から始まっている行がありますね。
実はこれが大事です。ここの行を指定してcpanコマンドでインストールができます。
なんで、これのバージョン0.44をインストールするにはこうします。
cpan[2]> install D/DU/DURIST/Proc-ProcessTable-0.44.tar.gz
この作者の頭文字部分はsearch.cpan.orgに行かないと調べられないものと思っていましたが、わざわざそんなことしなくても良かったんですね。いやー、おじさん知らなかったよ。。。
ちなみにcpan -Dでも同じようなことを調べられるそうです。
なお、ここらへんの情報は以下のブログに詳しく書いてありました。
・cpan で古いバージョンのモジュールをインストールする方法
http://d.hatena.ne.jp/dayflower/20070815/1187224651・バージョンを指定してCPANモジュールをインストールする
http://d.hatena.ne.jp/holidays-l/20070817/p1
これで無事にProc::ProcessTableが入ったので、もともとの目的だったApp::Daemonもインストールできました。
めでたし。めでたし。