在脚本中让 CPAN 与 MiniCPAN 存储库一起工作时遇到问题(目标是一个代码部署系统,用于构建本地模块和来自 CPAN 的模块,安装到本地库,然后同步到服务器)
$HOME/.cpan/CPAN/MyConfig.pm
存在,urllist 设置为['file:///home/user/minicpan/']
(非 CPAN)模块分发已成功注入到 minicpan 存储库中,并且文件存在:例如/home/user/minicpan/authors/U/US/USER/My-Module-0.01.tar.gz
.
作者在.../01mailrc.txt.gz
,模块在.../modules/02packages.details.txt.gz
该模块是通过 cpan shell 找到并安装的。
通过以下代码失败:
CPAN::HandleConfig->load;
CPAN::Shell::setup_output;
CPAN::Index->reload;
# dumping config here shows urllist set correctly,
# and config exactly the same as through shell
use Data::Dumper;
$Data::Dumper::Sortkeys = 1;
print Dumper($CPAN::Config);
CPAN::Shell->install("My::Module");
未找到模块 ( "Cannot install My::Module, don't know what it is."
) 或声明是最新的 ( My::Module is up to date (0.01)
)
模块未安装在 local-lib 中(也未安装在机器上的任何其他位置,例如在 /usr/... 中) Local-lib 环境变量是通过
eval $(perl -I$HOME/foo/lib/perl5 -Mlocal::lib=$HOME/locallib)
在 bash 配置文件中设置的
在收到任一错误(包括“模块是最新的”)后,shell 中的正常“安装”无需强制即可工作perl -MCPAN -e "install My::Module"
,所以我认为这是配置设置不正确,但 CPAN.pm 文档很难跟随...
(CPAN.pm 是 v1.9402)