El Capitan perl DBD不安全使用相对路径

时间:2015-10-22 07:35:50

标签: perl dbi osx-elcapitan

在尝试运行升级到El Capitan后使用DBI的perl脚本时遇到以下错误(典型!):

install_driver(mysql) failed: Can't load '/Library/Perl/5.18/darwin-thread-multi-2level/auto/DBD/mysql/mysql.bundle' for module DBD::mysql: dlopen(/Library/Perl/5.18/darwin-thread-multi-2level/auto/DBD/mysql/mysql.bundle, 1): Library not loaded: libmysqlclient.18.dylib
Referenced from: /Library/Perl/5.18/darwin-thread-multi-2level/auto/DBD/mysql/mysql.bundle
Reason: unsafe use of relative rpath libmysqlclient.18.dylib in /Library/Perl/5.18/darwin-thread-multi-2level/auto/DBD/mysql/mysql.bundle with restricted binary at /System/Library/Perl/5.18/darwin-thread-multi-2level/DynaLoader.pm line 194.

在python here中看到针对类似问题发布的解决方案之后,我已经为Perl发布了相同的解决方案。

2 个答案:

答案 0 :(得分:4)

El Capitan的系统完整性保护可防止受保护位置(在本例中为/ usr)中的程序调用使用对另一个共享库的相对引用的共享库。以下为我解决了这个问题。注意,我的mysql是通过brew安装的。

sudo install_name_tool -change libmysqlclient.18.dylib /usr/local/Cellar/mysql/5.6.26/lib/libmysqlclient.18.dylib /Library/Perl/5.18/darwin-thread-multi-2level/auto/DBD/mysql/mysql.bundle

答案 1 :(得分:0)

您还可以使用" brew"安装mysql或其开源替代mariadb。工具。这避免了在El Capitan上提出上述问题

$ brew install mariadb

{{1}}

您可以在http://brew.sh/

找到brew