もう CPANPLUS は使わなくてもいいのかも

今まで CPANPLUS を使っていた理由は

  1. root 以外のユーザが使った場合,インストール時に sudo してくれる
  2. インストール済みのモジュールで cpan にさらにあたらしいものがあるかどうか調べることができる
  3. モジュールのアンインストールできる
  4. モジュールの古いバージョンを検索してインストールしたりできる

だったんですが,最近の CPAN.pm って 1, 2 あたりはできるようになってるんですね(がんばれば 3 もできます⇒cpan で古いバージョンのモジュールをインストールする方法 - daily dayflower)。あと force だけじゃなくて fforce や notest とかコマンド指定できるようになってます。

なので,

  1. root で最新の CPAN(Bundle::CPAN じゃなくて)をインストール
  2. 一般ユーザでインストール時に sudo を使うように設定
  3. 一般ユーザで install Bundle::CPAN
  4. 一般ユーザで r / upgrade コマンド等駆使しながら必要なものをインストール

でいいのではないかと思いました。CPANPLUS のインストールめんどうだし。

$ cpan

CPAN: File::HomeDir loaded ok (v0.65)
Exiting subroutine via last at /usr/lib/perl5/5.8.8/CPAN.pm line 1337.

Your configuration suggests "/root/.cpan" as your
CPAN.pm working directory. I could not create this directory due
to this error: mkdir /root/.cpan: Permission denied at /usr/lib/perl5/5.8.8/CPAN
.pm line 951


Please make sure the directory exists and is writable.
You don't seem to have a user configuration (MyConfig.pm) yet.
Do you want to create a user configuration now? (Y/n) [yes] 

個人設定ファイルを作っていいかい,と聞いてくるので(デフォルトのとおり)yesで。

... snip ...

If you prefer to enter a dialog instead, you can answer 'no' to this
question and I'll let you configure in small steps one thing after the
other. (Note: you can revisit this dialog anytime later by typing 'o
conf init' at the cpan prompt.)

Would you like me to configure as much as possible automatically? [yes] no

設定パラメータを自動設定するか聞かれるので no とします。ちなみにこのウィザード形式の設定をあとからやろうと思ったら,上記にも書いてあるとおり,cpan のプロンプトで「o conf init」とすればできます。

... snip ...

Do you want to use a different make command for 'make install'?
Cautious people will probably prefer:

    su root -c make
or
    sudo make
or
    /path1/to/sudo -u admin_account /path2/to/make

or some such. Your choice:  [/usr/bin/make] sudo /usr/bin/make

ExtUtils::MakeMaker 系で作られた Makefile.PL でインストールするときのコマンドラインとして,sudo を付加することができます。また例示されているとおり sudo じゃなくて su コマンドを使用することもできます。なので,安易に sudo 版を指定しました。

すでに設定がなされている場合等,初期ウィザードで聞かれないことがあるようです。ので「o conf init」であらためて設定したほうがよいかも。

Parameters for the 'make install' command?
Typical frequently used setting:

    UNINST=1         # to always uninstall potentially conflicting files

Your choice:  [] UNINST=1

make install の引数の指定です。例示されているのは,インストール時に衝突しうるファイルを自動的にアンインストールしてくれる設定です。最近こいつを指定するようにしてます。適用されたシーンにでくわしたことはないんですけど。

... snip ...

Do you want to use a different command for './Build install'?
Sudo users will probably prefer:

    su root -c ./Build
or
    sudo ./Build
or
    /path1/to/sudo -u admin_account ./Build

or some such. Your choice:  [./Build] sudo ./Build

こんどは Module::Build 系のインストール時のコマンドライン指定です。sudo を付加。

Parameters for the './Build install' command?
Typical frequently used setting:

    --uninst 1                           # uninstall conflicting files

Your choice:  [] --uninst 1 

インストール時の引数です。先ほどと同様なので省略。

... snip ...

Your terminal expects ISO-8859-1 (yes/no)? no

最近のターミナルは UTF-8 を受けるんで,とりあえず no にしといてます。

... snip ...

When you have Term::ANSIColor installed, you can turn on colorized
output to have some visual differences between normal CPAN.pm output,
warnings, debugging output, and the output of the modules being
installed. Set your favorite colors after some experimenting with the
Term::ANSIColor module. Do you want to turn on colored output? [no] yes

なぜか o conf init で再設定したときしか出なかったんですが,cpan コマンドの出力等に色をつけることができます。結構センスがわるくなるのでデフォルトのまま no でも構いません。

以上のような設定をすることでインストール時には sudo でやってくれるようになります。


で,各モジュールの最新バージョンの取得ですが,これは r コマンドです。

$ cpan

CPAN: File::HomeDir loaded ok (v0.65)
CPAN: Term::ANSIColor loaded ok (v1.12)

cpan shell -- CPAN exploration and modules installation (v1.9102)
ReadLine support enabled

cpan[1]> r
CPAN: Storable loaded ok (v2.15)
Going to read /home/dayflower/.cpan/Metadata
  Database was generated on Tue, 14 Aug 2007 06:36:47 GMT
CPAN: YAML loaded ok (v0.65)
Going to read /home/dayflower/.cpan/build/
............................................................................DONE
Found 28 old builds, restored the state of 28

Package namespace         installed    latest  in CPAN file
AutoLoader                     5.60      5.63  SMUELLER/AutoLoader-5.63.tar.gz
B::Lint                        1.03      1.09  JJORE/B-Lint-1.09.tar.gz
CGI                            3.15      3.29  LDS/CGI.pm-3.29.tar.gz

... snip ...

bigint                         0.07      0.22  TELS/math/bignum-0.22.tar.gz
threads                        1.07      1.63  JDHEDDEN/threads-1.63.tar.gz
threads::shared                0.94      1.12  JDHEDDEN/threads-shared-1.12.tar.gz
103 installed modules have no parseable version number

cpan[2]> install Bundle::CPAN

CPANPLUS の出力より情報量おおいかも*1。でもこれすごく遅いんですね(正規表現でモジュールを絞り込むとそこまで遅くはないです)。CPAN::SQLite を使うと早くなるのかもしれないですが「It should be considered at an alpha stage of development.」とのことなので,まだ試してないです。

2007/08/16 追記

2007年08月15日 tokuhirom [cpan] [perl] CPANPLUS は標準添付になるんだお ><

livedoor クリップ

ずいぶん前に↑の噂をどこかで読んだんですけど,今の CPANPLUS って依存モジュールがやけに多いし,上で挙げたように CPAN.pm も機能が充実してきたし,なのでどうなんですかね……って devel (Perl-5.9.5) みたら入っとるやん!5.10 だと標準添付すか。cpanp 嫌いじゃないんで歓迎といえば歓迎なんですがうーん。

*1:そのかわり数字指定でインストールできないですが