Могу ли я подавить ошибку "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
который должен использовать это.