CPAN установить во временный каталог?

Я пытаюсь установить довольно много модулей из CPAN во временный каталог.

Это сделано исключительно для того, чтобы поместить довольно много из них в каталог, из которого я могу затем создать собственный RPM. Затем rpm будет использоваться при новых установках в качестве загрузчика поверх пользовательской установки perl. Они не будут запускаться из этого временного расположения.

В CPAN я пробовал

o conf mbuildpl_arg "--install_base /tmp/perl"
o conf makepl_arg "PREFIX=/tmp/perl"

Но это, похоже, устанавливает их в /root/.cpan/build/somename/tmp/perl (где «somename» каждый раз меняется) или в обычное место. Я надеялся захватить их все во временную папку типа buildroot, чтобы позже я мог загрузить их в правильную папку.

Есть ли способ сделать это, или я делаю что-то не очень хорошей идеей?

Я изучил fpm и cpan2rpm, но не нашел способа объединить множество модулей Perl в один RPM, поэтому рад любым мыслям о том, как перейти от множества модулей к одному пользовательскому RPM.


person Ian    schedule 20.05.2015    source источник
comment
Я использую perlbrew, чтобы получить собственную копию Perl. Когда я переключаюсь на его Perl, cpan автоматически переключается, поэтому все, что я загружаю, будет только локальным. См. perlbrew.pl.   -  person shawnhcorey    schedule 20.05.2015
comment
Спасибо, я стараюсь полностью избегать cpan (кроме первого раза, каждый раз после этого будет через rpm)   -  person Ian    schedule 20.05.2015


Ответы (1)


Нет, это установит их в /tmp/perl (если только вы не переопределите аргументы из cpan переменными среды). Они не установлены в ~/.cpan/build. Именно здесь модули собираются (make или Build) до их установки (make install или Build install). Вы можете стереть этот каталог, когда захотите.


Кстати, вы говорите ExtUtils::MakeMaker и Module::Build использовать два разных соглашения. Плохо.

o conf mbuildpl_arg "--install_base /tmp/perl"
o conf makepl_arg "PREFIX=/tmp/perl"

должно быть

o conf mbuildpl_arg "--install_base /tmp/perl"
o conf makepl_arg "INSTALL_BASE=/tmp/perl"

or

o conf mbuildpl_arg "--prefix /tmp/perl"
o conf makepl_arg "PREFIX=/tmp/perl"

Лично, когда я использовал локальные модули до того, как начал использовать локальные сборки Perl, я использовал

o conf mbuildpl_arg "--prefix /tmp/perl --lib /tmp/perl/lib/perl5"
o conf makepl_arg "PREFIX=/tmp/perl LIB=/tmp/perl/lib/perl5"

Мне не нравится INSTALL_BASE, так как это затрудняет плавное обновление вашего perl.

person ikegami    schedule 20.05.2015
comment
Да, я хочу, чтобы они были установлены в /tmp/perl, это то, что я хочу, но в настоящее время этого не происходит. Мне просто нужен каталог для недавно установленных модулей и любых зависимостей. Я попробую ваше предложение, спасибо. - person Ian; 20.05.2015
comment
Либо вы ничего не просили установить, установка не удалась, либо вы переопределяете параметры, переданные cpan, используя env vars PERL_MM_OPT и/или PERL_MB_OPT - person ikegami; 20.05.2015
comment
Спасибо, я думаю, может быть, некоторые установки не работают. Например, при установке ExtUtils::XSBuilder::ParseSource говорится, что GRICHTER/ExtUtils-XSBuilder-0.28.tar.gz : make_test НЕТ 2 зависимостей (Tie::IxHash,Parse::RecDescent). Но при установке Tie::IxHash говорит, что он уже установлен. Противоречат ли эти методы как-то тому, как они ищут существующие зависимости? - person Ian; 21.05.2015
comment
Вы указали Perl, где искать модули, установив env var PERL5LIB? - person ikegami; 21.05.2015
comment
Спасибо за настойчивость, я пытался экспортировать PERL5LIB=/tmp/perl/lib/5.14.2/:/tmp/perl/lib/site_perl/:/opt/perl/lib/5.14.2/:/opt/perl/lib /site_perl/, но я получаю эту ошибку зависимости или «уже создан, но результат выглядит подозрительно». Пропуск очередной попытки сборки» (не для всех модулей, некоторые из них устанавливаются нормально, но большая их часть) - person Ian; 21.05.2015
comment
Я принимаю этот ответ, так как у меня все еще есть некоторые проблемы, но я думаю, что они, вероятно, не связаны с исходным вопросом. Спасибо икегами - person Ian; 21.05.2015
comment
(Возможно, должно быть export PERL5LIB=/tmp/perl/lib) Я никогда не видел этого сообщения. Убедитесь, что build_dir_reuse по-прежнему ложно (0)? - person ikegami; 21.05.2015