2015-03-05 3 views
0

на сервере, на котором я работаю на Perl. Я ничего не могу изменить в этой установке, поэтому я установил cpanm для создания собственного репозитория модулей cpan. Я определил там установочный каталог и установленные модули.Принудительно использовать модуль-версию, если установлено больше

Проблема в том, что некоторые модули уже установлены на сервере-perl в другой версии. Таким образом, я получаю следующее сообщение об ошибке (это, например, я получаю это для других модулей с другими PL-скриптов, тоже)

Digest::MD5 object version 2.39 does not match bootstrap parameter 2.53 at /usr/lib64/perl5/DynaLoader.pm line 223. 

в/USR/lib64/perl5 сервер жемчужно modues установлены. Мои находятся в другом каталоге.

Как я могу заставить perl использовать мои модули, если он найдет больше версий? И это даже корень проблемы?

Спасибо!

ответ

1

Порядок путей в @INC вопросов. Поместите свои каталоги до значений по умолчанию. Вы можете установить переменную окружения PERL5LIB, чтобы указать на ваш каталог, чтобы достичь этого.

+0

Я читал об этом, но я забыл упомянуть, что как только PERL5LIB установлен, возникает ошибка. Есть ли возможность установить мой каталог в голову @INC без установки PER5LIB? – Maik

+0

Подождите, DynaLoader? Кажется, есть две разные версии Perl. – choroba

+0

@choroba, No, Digest :: MD5 - это модуль, который находится в '@ INC', который не должен быть – ikegami

0

Версия может быть определена только путем выполнения (загрузки) модуля, поэтому продолжить поиск других версий проблематично.

Модули с двоичным компонентом устанавливаются в дуговых архивах (например, .../x86_64-linux-gnu-thread-multi/...). Установка во внешнем каталоге с использованием INSTALL_BASE (используется локальным :: lib) также создает библиотеки, специфичные для архитектуры. Вам не нужно, чтобы одна установка Perl включала в себя дуговую копию другой сборки Perl. Отмените все, что вы сделали, чтобы добавить его. Может быть, неуместно PERL5LIB?

+0

Я установил local :: lib и установил каталог' ~/lib/perl/cpan/locallib'. Я также установил 'PERL5LIB' и думал, что должен установить его в' ~/lib/perl/cpan/locallib/lib/perl5'. Я делаю так, он автоматически добавляет '~/lib/perl/cpan/locallib/lib/perl5' AND' ~/lib/perl/cpan/locallib/lib/perl5/x86_64-linux-thread-multi' в @INC , Что является правильным значением для 'PERL5LIB'? Только локальный каталог :: lib? – Maik

+0

Re "Что является правильным значением для PERL5LIB?" '~/lib/perl/cpan/locallib', если вы использовали только встроенную сборку perl' для установки модулей в этот каталог. Не '~/lib/perl/cpan/locallib' (например, пустой) в противном случае – ikegami

Смежные вопросы