OSX 10.9 Mavericks 上的 Perl DBI/DBD 问题



升级到OSX Mavericks后,我无法运行DBI/DBD。

Perl 和 MySQL 运行良好(我可以登录到 mysql 并访问我的表),但我的 Perl 脚本不能再使用 DBI,因为更新程序删除了我以前工作的所有 Perl 模块。

我使用 CPAN 重新安装了 DBI 和 DBD::mysql,将它们安装到/opt/local/lib/perl5/site_perl/5.12.4/darwin-multi-2level/中。将模块(DBI,DBD和"auto"中的所有内容)复制到/Library/Perl/5.16/darwin-multi-2level/(因为cpan使用的dir不在@INC中)后,我的脚本返回内部服务器错误(即使使用FatalsToBrowser)。

Apache错误日志说:

dyld: lazy symbol binding failed: Symbol not found: _Perl_Istack_sp_ptr
Referenced from: /opt/local/lib/perl5/site_perl/5.12.4/darwin-multi-2level/auto/DBI/DBI.bundle
Expected in: flat namespace
dyld: Symbol not found: _Perl_Istack_sp_ptr
Referenced from: /opt/local/lib/perl5/site_perl/5.12.4/darwin-multi-2level/auto/DBI/DBI.bundle
Expected in: flat namespace
Premature end of script headers: test.pl

这里有什么问题?也许是因为我复制了文件?也许我应该强制CPAN直接安装到/Library/Perl/5.16/?我怎样才能告诉CPAN这样做?

有什么想法吗?

我还没有升级到Mavericks,因为Apple在升级操作系统时不关心对Apache,PHP或Perl所做的修改 - 他们只是将它们全部删除。 我不知道以下列表是否适合您,但它对狮子和美洲狮有用:

  • 在启动之前,您必须正确安装和配置 MySQL x86 64 位。
  • 从App Store安装XCode。
  • 在XCode中,打开"首选项/下载"菜单,然后安装命令行工具

安装 DBI:

  • 使用以下命令安装 cpanmsudo cpan App::cpanminus
  • 安装 DBI: sudo cpanm DBI .

安装 DBD::mysql:

  • 从CPAN获取必要的文件。打开CPAN终端:sudo perl -MCPAN -e 'shell'
  • 然后,运行以下命令:get DBD::mysqlexit
  • 在编译之前,您必须创建一些别名,因为Mac上的MySQL与Linux上的安装方式不同 - 至少在以前的OS X版本中是这样:

CD/usr/local

Sudo Mkdir lib

光盘库

sudo ln -s/usr/local/mysql/lib/*.dylib .

  • 最后,您必须安装并编译库:

cd ~/.cpan/build/DBD*/

sudo perl Makefile.PL --testuser='yourmysqluser' --testpassword='yourmysqlpassword'

须藤制作

须藤制作测试

须藤制作安装

cd ~/.cpan/build/DBD*/,通过*,我的意思是您应该编写指向刚刚从CPAN下载的文件的实际路径。 目录的名称会根据最新版本而变化,但只需一个简单的ls即可轻松找到它。

希望这对你有用。


编辑

这是我通过几次失败的尝试进行的汇编,但我认为我应该命名我的来源:

http://bixsolutions.net/forum/thread-8.html

http://coolestguyplanettech.com/downtown/install-and-configure-apache-mysql-php-and-phpmyadmin-osx-108-mountain-lion

警告:mysql_connect(): [2002] 中没有此类文件或目录(尝试通过 unix:///tmp/mysql.sock 连接)

5.12 和 5.16 的信息是正确的。要修复,请升级 CPAN 并重新安装模块:

sudo cpan
install CPAN
reload cpan
install <module>

当我升级到OS X 10.9时,我有一个现有的MySQL配置,有一个自定义端口(我使用Boxen)。到目前为止,对我来说最简单的方法,完美无缺的方法是源安装。

# extract the archive, etc.    
perl Makefile.PL --testuser=myuser --testpassword=pass --testport=13306
make
make test
# if all went well with the test
make install

我在Mavericks OS上也遇到了这个问题。对我有用的解决方案是我在网上看到的一些东西的混合:

  1. 安装最新版本的命令行工具(Apple Web 开发人员网站):
    $sudo perl -MCPAN -e shell

  2. 使用 cpan 重新安装 DBI 和 DBD:mysql 模块。我在这里遇到了一个脂肪崩溃的问题。

  3. 使用最新版本的 CommandLineTools lipo:

    $sudo mv /usr/bin/lipo /usr/bin/lipo.orig $sudo ln -s /Library/Developer/CommandLineTools/usr/bin/lipo /usr/bin

  4. 最后重新安装DBI,
  5. DBD:mysql模块使用cpan安装DBI,cpan install DBD::mysql

Mavericks 安装了 Perl 5.16,但它不会删除之前的 5.12 二进制文件。此外,我还安装了其他一些软件,这些软件在/opt/local/bin下保留了Perl 5.12的进一步副本(我认为是MacPorts,我可能用它来安装cpan),并且此目录列在我的bash配置文件中。

这意味着CPAN使用5.12来编译二进制文件,而Apache使用5.16,这就是为什么当Web脚本崩溃时,某些东西在终端中工作的原因。

$PATH中删除/opt/local/bin并手动重新安装DBI和DBD最终解决了该问题。

对我来说,

我最终完全卸载了MySql并安装了较旧的32位版本,如以下stackoverflow页面所述:MySQL pid 已结束(无法启动 mysql)

然后你需要让Perl以32位模式运行,只需在终端中输入以下内容(感谢AskDifferent的Simon):

defaults write com.apple.versioner.perl Prefer-32-Bit -bool yes

我在High Sierra下遇到了几个月的问题,试图让DBI::mysql毫无乐趣地工作。我在此链接中找到了一个解决方案:

在macOS Mojave下安装DBD::mysql时出现问题

什么对我有用:1. brew install openssl mysql-connector-c2. sudo cpan install DBD::mysql

相关内容

  • 没有找到相关文章

最新更新