Могу ли я подавить ошибку "Perl API версии%s из%s не соответствует%s"

Я скопировал модуль Perl (DBD::Pg) из одной системы в другую, чтобы выполнить несколько быстрых проверок проекта Mojolicious. На новой системе все работает нормально, когда я запускаю его под morbo (Mojolicious тестовый веб-демон). Но когда я пытаюсь запустить тесты (через Module::Build установщик), я получаю ошибку:

Версия Perl API v5.16.0 DBD::Pg не соответствует v5.20.0 в строке /usr/local/lib/perl/DynaLoader.pm 216.

Я исследовал, почему я получаю это, и прочитал объяснение в perldoc. Но так как проект работает под morboМне кажется, что в этом случае несоответствие версий может быть тривиальным. Похоже, что PerlXS делает некоторые поправки для отключения VERSIONCHECK, но я не вижу, как это можно применить при запуске сценария Perl.

1 ответ

Вы не можете копировать неочищенные модули Perl из одной системы в другую (или в одну группу каталогов perl lib в другую perl). Обычно код в этих модулях компилируется для конкретного двоичного файла perl. Этот бинарный файл мог связываться с разными библиотеками, изменять его работу, использовать другой компилятор и многое другое. Это может даже не работать, если perl версии одинаковы.

Вместо этого установите DBD::Pg для каждого perl который должен использовать это.

Другие вопросы по тегам