升级到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:
- 使用以下命令安装 cpanm:
sudo cpan App::cpanminus
。 - 安装 DBI:
sudo cpanm DBI
.
安装 DBD::mysql:
- 从CPAN获取必要的文件。打开CPAN终端:
sudo perl -MCPAN -e 'shell'
。 - 然后,运行以下命令:
get DBD::mysql
和exit
。 - 在编译之前,您必须创建一些别名,因为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上也遇到了这个问题。对我有用的解决方案是我在网上看到的一些东西的混合:
-
安装最新版本的命令行工具(Apple Web 开发人员网站):
$sudo perl -MCPAN -e shell
-
使用 cpan 重新安装 DBI 和 DBD:mysql 模块。我在这里遇到了一个脂肪崩溃的问题。
-
使用最新版本的 CommandLineTools lipo:
$sudo mv /usr/bin/lipo /usr/bin/lipo.orig
$sudo ln -s /Library/Developer/CommandLineTools/usr/bin/lipo /usr/bin
最后重新安装DBI, 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