无法在macOS Big Sur=>;上安装DBD::Oracle;依赖动态库'@rpath/libclntsh.dylib.19.1';找不到

无法在macOS Big Sur=>;上安装DBD::Oracle;依赖动态库'@rpath/libclntsh.dylib.19.1';找不到,oracle,macos,perl,dbi,dbd,Oracle,Macos,Perl,Dbi,Dbd,我无法在macOS Big Sur 11.2.1上构建和安装。我得到以下错误: Error: Can't load '/Users/x/.cpanm/work/1613898291.17798/DBD-Oracle-1.80/blib/arch/auto/DBD/Oracle/Oracle.bundle' for module DBD::Oracle: dlopen(/Users/x/.cpanm/work/1613898291.17798/DBD-Oracle-1.80/blib/arch/

我无法在macOS Big Sur 11.2.1上构建和安装。我得到以下错误:

Error:  Can't load '/Users/x/.cpanm/work/1613898291.17798/DBD-Oracle-1.80/blib/arch/auto/DBD/Oracle/Oracle.bundle' for module DBD::Oracle: dlopen(/Users/x/.cpanm/work/1613898291.17798/DBD-Oracle-1.80/blib/arch/auto/DBD/Oracle/Oracle.bundle, 0x0002): dependent dylib '@rpath/libclntsh.dylib.19.1' not found for '/Users/x/.cpanm/work/1613898291.17798/DBD-Oracle-1.80/blib/arch/auto/DBD/Oracle/Oracle.bundle'. relative file paths not allowed '@rpath/libclntsh.dylib.19.1' at /System/Library/Perl/5.28/darwin-thread-multi-2level/DynaLoader.pm line 197.
Big Sur似乎没有将
DYLD\u LIBRARY\u PATH
环境变量传递给子shell:

Your DYLD_LIBRARY_PATH env var is set to ''
WARNING: Your DYLD_LIBRARY_PATH env var doesn't include '/opt/instantclient_19_8' but probably needs to.
我试过:

  • 安装在:
    ~/Downloads/instantclient\u 19\u 8
  • 安装在
    ~/lib
    /usr/local/lib
  • 用绝对路径替换符号链接
  • 使用
    install\u name\u tool
    修改id并更改
    @rpath
    但得到
    警告:对文件所做的更改将使代码签名无效
但我似乎不明白。非常感谢你的帮助。重新制作:

  • 安装到
    /opt/instantclient_19_8

  • macOS Big Sur,设置必要的环境变量

  • 这是我的第一个问题<清除代码>动态库路径

  • cpanm
    安装到~/.perl5中
  • 强制安装
    DBI
    ,以避免与内置版本发生任何冲突:
  • 安装DBD::Oracle-总是失败

  • 问题是在运行
    maketest
    时,
    DYLD\u LIBRARY\u PATH
    环境变量没有传播到perl,如前所述。您可以下载模块,而不是运行
    cpanm DBD::Oracle
    ,使用例如
    prove
    手动运行测试。以下内容适用于我(macOS BigSur 11.2.1),perlbrew perl版本5.32.0:

    • 从下载并安装instantclient basic macos.x64-19.8.0.0.0dbru.dmg和instantclient sdk macos.x64-19.8.0.0.0dbru.dmg

    • 安装
      DBD::Oracle
      (不运行
      maketest

    笔记:
    • GitHub问题跟踪器上也报告了该问题

    • 另一种方法可以是


    另请参见感谢@HåkonHægland。我认识到这一点,但我能做些什么呢?尝试直接运行测试(而不是通过
    make test
    间接运行)没有找到解决方案,请尝试手动下载、配置、制作、制作测试、制作安装,以便您可以调整配置和制作文件。谢谢@ulix。我也在努力解决这个问题<代码>进行测试失败。谢谢。这对我仍然不起作用。两个问题:1)您是否使用Big Sur附带的DBI库?2) otool-libclntsh.dylib.19.1的输出是什么?它是
    @rpath/libclntsh.dylib.19.1
    (像我一样)还是
    /Users/hakonheagland/Downloads/instantclient_19_8/libnnz19.dylib
    (像我认为应该的那样)?我从
    otool-L
    得到同样的信息“这对我来说仍然不起作用…”奇怪,运行
    prove-vbt
    和运行
    make test
    时是否会出现相同的错误?“您使用的是Big Sur附带的DBI库吗?”您是指Perl模块
    DBI
    ?谢谢@Håkon。是的,我指的是Big Sur附带的
    DBI
    模块,尽管版本相同,但我得到的
    make:**没有规则使目标“/System/Library/Perl/Extras/5.28/darwin-thread-multi-2level/auto/DBI/driverxst.h”成为“Oracle.xsi”所需要的。停止。
    因此我强制安装
    DBI
    继续。
    % uname -v
    Darwin Kernel Version 20.3.0: Thu Jan 21 00:07:06 PST 2021; root:xnu-7195.81.3~1/RELEASE_X86_64
    
    % echo $DYLD_LIBRARY_PATH
    /opt/instantclient_19_8
    
    % env | grep -E 'PERL|ORACLE|DYLD'
    PERL_LOCAL_LIB_ROOT=/Users/x/.perl5
    PERL_MB_OPT=--install_base /Users/x/.perl5
    PERL_MM_OPT=INSTALL_BASE=/Users/x/.perl5
    PERL5LIB=/Users/x/.perl5/lib/perl5
    ORACLE_HOME=/opt/instantclient_19_8
    
    % curl -fsSL http://cpanmin.us | perl - -l ~/.perl5 App::cpanminus local::lib
    --> Working on App::cpanminus
    Fetching http://www.cpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7044.tar.gz ... OK
    Configuring App-cpanminus-1.7044 ... OK
    Building and testing App-cpanminus-1.7044 ... OK
    Successfully installed App-cpanminus-1.7044
    --> Working on local::lib
    Fetching http://www.cpan.org/authors/id/H/HA/HAARG/local-lib-2.000024.tar.gz ... OK
    Configuring local-lib-2.000024 ... OK
    Building and testing local-lib-2.000024 ... OK
    Successfully installed local-lib-2.000024
    2 distributions installed
    
    % cpanm DBI
    DBI is up to date. (1.643)
    % cpanm DBI --force
    --> Working on DBI
    Fetching http://www.cpan.org/authors/id/T/TI/TIMB/DBI-1.643.tar.gz ... OK
    Configuring DBI-1.643 ... OK
    Building and testing DBI-1.643 ... FAIL
    ! Testing DBI-1.643 failed but installing it anyway.
    Successfully reinstalled DBI-1.643
    1 distribution installed
    
    % cpanm DBD::Oracle
    --> Working on DBD::Oracle
    Fetching http://www.cpan.org/authors/id/M/MJ/MJEVANS/DBD-Oracle-1.80.tar.gz ... OK
    ==> Found dependencies: Test::NoWarnings
    --> Working on Test::NoWarnings
    Fetching http://www.cpan.org/authors/id/A/AD/ADAMK/Test-NoWarnings-1.04.tar.gz ... OK
    Configuring Test-NoWarnings-1.04 ... OK
    Building and testing Test-NoWarnings-1.04 ... OK
    Successfully installed Test-NoWarnings-1.04
    Configuring DBD-Oracle-1.80 ... OK
    Building and testing DBD-Oracle-1.80 ... FAIL
    ! Installing DBD::Oracle failed. See /Users/x/.cpanm/work/1613898291.17798/build.log for details. Retry with --force to force install it.
    1 distribution installed
    
    $ wget https://cpan.metacpan.org/authors/id/M/MJ/MJEVANS/DBD-Oracle-1.80.tar.gz
    $ tar zxvf DBD-Oracle-1.80.tar.gz
    $ cd DBD-Oracle-1.80
    $ export DYLD_LIBRARY_PATH=/Users/hakonhaegland/Downloads/instantclient_19_8
    $ export ORACLE_HOME=/Users/hakonhaegland/Downloads/instantclient_19_8
    $ cpanm --installdeps .
    $ perl Makefile.PL
    $ make
    $ prove -bv t  
    $ make install