Perl Module :: Build测试运行找不到动态加载的模块

时间:2015-06-23 17:54:51

标签: perl unit-testing module-build

我正在使用Module::Build构建一个Perl模块。 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不出错?

UPDATE :问题在于Module :: Build。 do_tests模块中有一个例程Module::Build::Base 强制环境变量PERL_DL_NONLAZY为1.如果我更改该行以将PERL_DL_NONLAZY设置为0,然后测试全部通过。模块Module::Build::Base没有提供不设置PERL_DL_NONLAZY的选项,因此我提交了一个错误报告,要求他们添加这样的选项。与此同时,我将不得不跳过./Build test

0 个答案:

没有答案