もう CPANPLUS は使わなくてもいいのかも
今まで CPANPLUS を使っていた理由は
- root 以外のユーザが使った場合,インストール時に sudo してくれる
- インストール済みのモジュールで cpan にさらにあたらしいものがあるかどうか調べることができる
- モジュールのアンインストールできる
- モジュールの古いバージョンを検索してインストールしたりできる
だったんですが,最近の CPAN.pm って 1, 2 あたりはできるようになってるんですね(がんばれば 3 もできます⇒cpan で古いバージョンのモジュールをインストールする方法 - daily dayflower)。あと force だけじゃなくて fforce や notest とかコマンド指定できるようになってます。
なので,
- root で最新の CPAN(Bundle::CPAN じゃなくて)をインストール
- 一般ユーザでインストール時に sudo を使うように設定
- 一般ユーザで install Bundle::CPAN
- 一般ユーザで 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:そのかわり数字指定でインストールできないですが