我正在使用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
有一个例程强制环境变量为 1。如果我将该行更改为设置为 0,则测试全部通过。该模块不提供 not set 选项,因此我提交了一份错误报告,要求他们添加这样的选项。与此同时,我只需要跳过跑步。Module::Build::Base
PERL_DL_NONLAZY
PERL_DL_NONLAZY
Module::Build::Base
PERL_DL_NONLAZY
./Build test