Как установить модуль CPAN для всего сайта, когда присутствует local :: lib? - PullRequest
5 голосов
/ 22 октября 2010

Я недавно установил новую систему и хотел установить Padre, чтобы проверить это. В инструкции по установке Padre специально сказано, чтобы установить local :: lib, поэтому я так и сделал (хотя раньше мне это никогда не требовалось). Затем я продолжил установку нескольких других модулей, запустив CPAN из моей обычной учетной записи пользователя с sudo для обработки необходимых для установки корневых частей.

Затем пришло время протестировать одно из веб-приложений, для поддержки которых эти модули были необходимы, и вот, apache не смог их найти. Они нормально загружались из командной строки, и быстрый просмотр в ~/perl5 подтвердил мое подозрение, что local :: lib захватил мои сеансы CPAN и установил эти модули там, а не в общесайтовом месте, несмотря на мою конфигурацию CPAN, включающую

makepl_arg         [INSTALLDIRS=site]
mbuildpl_arg       [--installdirs site]

Что мне нужно сделать с моей конфигурацией CPAN, чтобы модули устанавливались по всему сайту, даже если установлен local :: lib? Или Падре будет работать без него, и я смогу полностью удалить local :: lib?

не хочу никаких модулей, установленных под ~/perl5, если Падре не настаивает на их наличии. Мой разрабатываемый код имеет свои собственные каталоги, специфичные для проекта, и все остальное должно быть на всем сайте. Мне не нужно частное общедоступное местоположение.)

Ответы [ 3 ]

8 голосов
/ 22 октября 2010

Понял. В соответствии с инструкциями на странице CPAN *1001* local :: lib, я установил export PERL_MM_OPT='INSTALL_BASE=~me/perl', который переопределял настройку в моей конфигурации CPAN. Быстрый export PERL_MM_OPT= вернул меня в правильное место установки.

С одной стороны, это то, что я получаю за слепое следование инструкциям. С другой стороны, я ожидал бы, что o conf покажет фактические параметры конфигурации, которые используются, а не те, которые находятся в сохраненной конфигурации CPAN (даже если переменная среды их переопределяет).

2 голосов
/ 25 мая 2015

Быстрый экспорт PERL_MM_OPT = вернул меня в правильное место установки.

Это не помогло мне, когда я попытался установить Starman по всему миру. Мне пришлось отредактировать /root/.bashrc, чтобы прокомментировать (или удалить) следующие строки:

  1. export PERL_LOCAL_LIB_ROOT = "$ PERL_LOCAL_LIB_ROOT: / root / perl5";
  2. export PERL_MB_OPT = "- install_base / root / perl5";
  3. export PERL_MM_OPT = "INSTALL_BASE = / root / perl5";
  4. export PERL5LIB = "/ root / perl5 / lib / perl5: $ PERL5LIB";
  5. export PATH = "/ root / perl5 / bin: $ PATH";
0 голосов
/ 22 октября 2010

Исходя из этого комментария , создается впечатление, что local::lib устанавливает свою собственную версию CPAN.pm.В этом случае вам может понадобиться найти оригинальный файл CPAN.pm и убедиться, что он загружен при запуске оболочки CPAN.Что-то вроде:

perl -I /usr/lib/perl5 -MCPAN -e shell

может сделать это.Вы также можете найти perl -V полезным, чтобы узнать, какой путь включает компилятор Perl для своих модулей.

...