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もインストールできました。

めでたし。めでたし。