Perl Module:: Тестовый прогон сборки не может найти динамически загруженный модуль

Я строю модуль Perl, используя Module::Build, Build.PL файл ниже:

use strict ;
use warnings ;

use Module::Build;
my $build = Module::Build->new
(
    module_name => 'Company::LDAP::SyncAttr',
    license     => 'perl',
    installdirs  => 'vendor',
    install_path => {
                      'bin'    => '/usr/bin',
                      'script' => '/usr/bin'
                    },
) ;

$build->create_build_script ;

Сам модуль находится здесь:

# SyncAttr.pm
package Company::LDAP::SyncAttr;
use Authen::Krb5;
1;

У меня есть тестовый файл в t/test.t это выглядит так:

# test.t
use Company::LDAP::SyncAttr;

Когда я бегу ./Build test Я получаю эту ошибку:

t/test.t .. Can't load '/usr/lib/x86_64-linux-gnu/perl5/5.20/auto/Authen/Krb5/Krb5.so' for module Authen::Krb5: /usr/lib/x86_64-linux-gnu/perl5/5.20/auto/Authen/Krb5/Krb5.so: 
undefined symbol: krb5_free_krbhst at /usr/lib/x86_64-linux-gnu/perl/5.20/DynaLoader.pm line 187.
 at /tmp/gg/blib/lib/Company/LDAP/SyncAttr.pm line 3.
Compilation failed in require at /tmp/gg/blib/lib/Company/LDAP/SyncAttr.pm line 3.

Если я запускаю файл test.t напрямую, я не получаю такую ​​ошибку:

perl -Ilib/ t/test.t

Что мне нужно сделать, чтобы получить ./Build test чтобы не ошибка?

ОБНОВЛЕНИЕ: Проблема заключается в Module::Build. Есть рутина do_tests в Module::Build::Base модуль, который вызывает переменную среды PERL_DL_NONLAZY 1. Если я изменю эту строку, чтобы установить PERL_DL_NONLAZY до 0, тогда все тесты пройдены. Модуль Module::Build::Base не предоставляет возможность не устанавливать PERL_DL_NONLAZY Поэтому я отправил отчет об ошибке с просьбой добавить такую ​​опцию. А пока мне просто придется пропустить бег ./Build test,

0 ответов

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