FreeBSD 6.1 on VMware Player に minicpan を install する

CPAN::Mini で CPAN のミラーをローカルに を参考にしてみました。install とか cpan shell からの使い方は上のページに書いてあるので割愛して、cpanmini の mirror を ports から使う設定をします。/etc/make.conf に

FETCH_CMD?= fetch -l
MASTER_SITE_PERL_CPAN?= \
        file:///home/yourname/minicpan/modules/by-module/${MASTER_SITE_SUBDIR}/

と書く。MASTER_SITE_OVERRIDE も記述してあると、その設定が優先されてしまうので外しておく。うまいこと同居できるといいんだけど、良くわかりませんでした。CPANports は modules/by-module/MASTER_SITE_SUBDIR/tarball を見に行くので、minicpan 内に symlink を貼る必要がある。
minicpan-symlinks というツールを書いた人がいるんだけど、使ってみたけど良くわからなかったので、適当に symlink 作成 script を作成し symlink 作成。minicpan/modules/02packages.details.txt.gz に module名, version, path のリストがあるのでそれ使えば簡単に作れます。ほとんどなにも戻り値をテストしていないやっつけスクリプトなのですが、一応 minicpan_symlinks.pl に置いておきます。

/home/yourname/minicpan/modules/by-module/Data/Data-Lazy-0.6.tar.gz ->
    /home/yourname/minicpan/authors/id/S/SA/SAMV/Data-Lazy-0.6.tar.gz

要はこんな symlink を作ればいい。テストしてみる。

# cd /usr/ports/textproc/p5-Text-Tags
# make fetch
===>  Vulnerability check disabled, database not found
=> Text-Tags-0.04.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
=> Attempting to fetch from file:///home/yourname/minicpan/modules/by-module/Text/.

FETCH_CMD を fetch -l にしているので /usr/ports/distfiles に symlink が作成されるだけです。

% cd /usr/ports/distfiles
% ls -l
lrwxr-xr-x  1 root  wheel  65  9 27 17:53 Text-Tags-0.04.tar.gz -> /home/yourname/minicpan/modules/by-module/Text/Text-Tags-0.04.tar.gz

この後問題なく make install clean も出来ます。うむ、幸せ。