Не удается найти в @INC во время установки зависимостей CPAN, выполняемой не как пользователь root - PullRequest
3 голосов
/ 13 апреля 2010

При попытке сделать:

perl -I'/v1/data/site_perl' -MCPAN -e 'install Log::Dispatch';

Я продолжаю получать сообщение «Не могу найти Params / Validate.pm в @INC». При просмотре вывода / v1 / data / site_perl НЕ отображается в @INC, хотя я использовал -I.

Я не root, поэтому я изменил свою конфигурацию CPAN, чтобы:

'makepl_arg' => q[LIB=/v1/data/site_perl INSTALLSITEMAN1DIR=/v1/data/site_perl/man/man1 INSTALLSITEMAN3DIR=/v1/data/site_perl/man/man3 INSTALLMAN1DIR=/v1/data/site_perl/man/man1 INSTALLMAN3DIR=/v1/data/site_perl/man/man3]

Таким образом, даже LIB установлен.

В базовом сценарии у меня есть:

use lib '/v1/data/site_perl';
use Params::Validate;

Без проблем.

Как заставить Log :: Dispatch использовать lib / v1 / data / site_perl без принудительной установки? Чего мне не хватает?

Ответы [ 2 ]

3 голосов
/ 13 апреля 2010

Я считаю, что CPAN.pm любит вызывать много подпроцессов для различных задач, и в итоге они запускают новые perl s, которые не наследуют ваш флаг -I. Вместо этого попробуйте установить переменную окружения PERL5LIB, например,

PERL5LIB='/v1/data/site_perl' perl -MCPAN -e 'install Log::Dispatch'

Другая стратегия, которую следует рассмотреть, - это просто собрать полную установку Perl в локальном каталоге, а затем использовать утилиты CPAN perl. У них уже будут все ваши собственные встроенные пути. Вот как я это делаю.

2 голосов
/ 13 апреля 2010

Нельзя установить в другой каталог CPAN с помощью простого флага -I. Вы можете использовать пакет local :: lib для установки локального набора библиотек или просмотреть этот вопрос и этот вопрос .

...