Λάδι Βιώσας

http://profile.hatena.ne.jp/kenkitii/

CPANに若者が殺到している件について

あ、タイトルに釣られてココ来ちゃった人すいません、たいした事書いてないです。このエントリーは、突発的に perl をやりたくなり、MacbookCPAN を便利に使えるようにした、単なる作業備忘録です。ホッテントリメーカーを使ってみたかっただけなんです。

以下、個人的な備忘録。

まず、port を使って必要そうなものを入れておく

Users/kenkitii% sudo port install gnupg ncftp wget libxml libxml2

CPAN で 履歴や補完が出来るようにする

cpan> install Bundle::CPAN
cpan> reload CPAN
cpan> o conf (ここでTABを押す)
applypatch    commandnumber_in_prompt  gzip     make_arg            patch               tar_verbosity
auto_commit  commands_quote           help     make_install_arg    prefer_installer    term_is_latin
(・・・以下略)
cpan> ls DAN(ここでTABを押す)
DAN       DANB      DANBOL    DANBORN   DANIELR   DANISH    DANK      DANMOORE  DANN      DANPEDER  DANT
DANAL     DANBERR   DANBOO    DANIEL    DANIELTWC DANJOU    DANKOGAI  DANMQ     DANNY     DANSCH    DANW

CPANモジュールのアップグレード

CPANの対話シェルにて upgrade コマンドで出来ますが、一括でアップグレードする場合、いちいち[Y/n]に答えなくていいように設定しときます。

cpan> o conf prerequisites_policy follow
cpan> o conf commit

CPANモジュールのインストール済み一覧とかアンインストールとか

以下のエイリアスを .zshrc に追加しとくと便利。

alias cpan-installed='find `perl -e "print \"@INC\""` -name "*.pm" -print'
alias cpan-uninstall='sudo perl -MExtUtils::Install -MExtUtils::Installed -e "unshift@ARGV,new ExtUtils::Installed;sub a{\@ARGV};uninstall((eval{a->[0]->packlist(a->[1])}||do{require CPAN;a->[0]->packlist(CPAN::Shell->expandany(a->[1])->distribution->base_id=~m/(.*)-[^-]+$/)})->packlist_file,1,a->[2])"'
使い方とか
Users/kenkitii% cpan-installed | grep LWP
/opt/local/lib/perl5/site_perl/5.8.8/Bundle/LWP.pm
/opt/local/lib/perl5/site_perl/5.8.8/LWP/Authen/Basic.pm
/opt/local/lib/perl5/site_perl/5.8.8/LWP/Authen/Digest.pm
(・・・以下略)
/Users/kenkitii% cpan-uninstall Acme::Hyde
unlink /opt/local/lib/perl5/site_perl/5.8.8/Acme/Hyde.pm
unlink /opt/local/share/man/man3/Acme::Hyde.3
unlink /opt/local/lib/perl5/site_perl/5.8.8/darwin-2level/auto/Acme/Hyde/.packlist

minicpan を入れる

Leopard に minicpan をいれようとすると、

Can't locate File/HomeDir.pm in @INC(以下略)

と言われちゃうので、以下の手順で。

/Users/kenkitii% sudo cpan
cpan> force install Mac::Carbon
cpan> install File::HomeDir
cpan> install CPAN::mini

ミラーを作るのはかなり時間がかかるので、ダウンロード中は風呂にでも入ってきましょう。

/Users/kenkitii% minicpan -r http://ftp.kddlabs.co.jp/CPAN/ -l ~/minicpan
/Users/kenkitii% du -s ~/minicpan 
875M	minicpan

ミラーが終わったら、cpan の urllist を書き換えます。

cpan> o conf urllist unshift file:///Users/kenkitii/minicpan
cpan> o conf commit
cron でミラーを最新に

Leopard で crontab -e すると vi 終了後に

crontab: temp file must be edited in place

と出て、編集内容が反映されません。ググってみると原因は、MacOS には vi が入っておらず、代わりに vim が起動してバックアップファイルを作ってしまうことらしいのですが、vim の設定とかよくわからないので

/Users/kenkitii% EDITOR=emacs crontab -e
0 0 * * * /opt/local/bin/minicpan -r http://ftp.kddlabs.co.jp/CPAN/ -l /Users/kenkitii/minicpan

としました。