7

升级到 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 使用的目录不在 @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 这样做?

有任何想法吗?

4

7 回答 7

10

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

  • 在开始之前,您必须正确安装和配置 MySQL x86 64 位。
  • 从 App Store 安装 XCode。
  • 在 XCode 中,打开Preferences / Downloads菜单,然后安装Command Line Tools

安装 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/本地

须藤 mkdir 库

光盘库

须藤 ln -s /usr/local/mysql/lib/*.dylib 。

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

cd ~/.cpan/build/DBD*/

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

须藤制作

sudo 进行测试

须藤使安装

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 连接)

于 2013-10-24T12:57:32.733 回答
2

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

sudo cpan
install CPAN
reload cpan
install <module>
于 2013-11-03T21:59:29.720 回答
0

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

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

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

于 2014-01-10T22:56:00.357 回答
0

对我来说,我最终完全卸载了 MySql 并安装了较旧的 32 位版本,如此 stackoverflow 页面中所述: MySQL pidended (cannot start mysql)

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

defaults write com.apple.versioner.perl Prefer-32-Bit -bool yes
于 2014-08-17T13:17:32.947 回答
0

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

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

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

  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 , DBD:mysql 模块使用 cpan install DBI , cpan install DBD::mysql

于 2013-11-26T02:37:18.403 回答
0

当我升级到 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
于 2013-11-14T21:35:46.390 回答
0

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

在 macOS Mojave 下安装 DBD::mysql 时遇到问题

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

于 2020-01-18T23:55:44.017 回答