Как автоматизировать установку модуля из локального хранилища MiniCPAN?
Возникают проблемы с получением CPAN для работы с репозиторием MiniCPAN из скрипта (цель - это система развертывания кода для сборки локальных модулей вместе с модулями из CPAN, установки в локальную библиотеку и последующей синхронизации с серверами)
$HOME/.cpan/CPAN/MyConfig.pm
существует с URL-адресом, установленным на ['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.
Сбой через следующий код:
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)
)
Модуль не устанавливается в локальной библиотеке (и нигде больше на машине, например, в /usr/...). Переменные среды локальной библиотеки устанавливаются черезeval $(perl -I$HOME/foo/lib/perl5 -Mlocal::lib=$HOME/locallib)
в профиле bash
После получения любой ошибки (включая "Модуль обновлен") обычная "установка" в оболочке работает без принуждения, как и perl -MCPAN -e "install My::Module"
, так что я предполагаю, что конфигурация настроена неправильно, но документы CPAN.pm довольно сложны для понимания...
(CPAN.pm v1.9402)