在 macOS Sonoma 上安装 CPAN 模块 DBD::mysql 失败,并显示“未找到符号”。

问题描述 投票:0回答:1

我有一个工具,expandfile,用 Perl 编写,可以迭代 SQL 查询中的行。

升级到 Sonoma 后,expandfile 仍然可以使用 Perl 5.30。 我将 MySQL 数据库转储到文本文件中。

然后我傻乎乎地输入“brew update ImageMagick”,很多程序都升级了, 包括 Perl 和 MySQL。我在获取 Expandfile 来访问 SQL 时遇到问题。

我更新了环境变量以更改 PERL5LIB 以引用新版本的 Perl 5.38.2。 (我检查了一下,来自 Ventura 的 $ARCHFLAGS 在这台 M2 Air 上仍然是“-arch arm64”。)

Homebrew 安装了 MySQL Server 版本 8.3.0,因此我配置了 MySQL,重新加载了我的转储,并设置了“.my.cnf”。 数据返回正常,正如预期的那样...从命令行工具检查。

然后我输入“expandfile”并得到 Perl 模块 LWP 丢失的错误(所有其他 CPAN 模块也是如此)。 这正是我所期望的:在重大 macOS 升级后,我总是必须重新安装 CPAN 模块。 (我执行了“sudo -H cpan”并收到一条消息,要求我执行“o conf init Pushy_https”,所以我执行了“o conf commit”。) 然后我执行了一长串“sudo -H cpanm install xxx”来重新安装大约 40 个 CPAN 模块。 (一些 CPAN 模块由于缺少先决条件而出现安装错误,已修复。)

我总是最后做DBI和DBD::mysql,因为需要额外的配置,有时还会出现问题。 当我执行“sudo -H cpanm install DBD::mysql”时,我收到消息:

installing DBD::mysql failed installing DBD::mysql
DVEEDEN/DBD-mysql-5.004.tar.gz : writemakefile NO '/opt/homebrew/Cellar/perl/5.38.2_1/bin/perl Makefile.PL --testuser=root --testpass=xxx' returned status 512

我查看了 .cpanm/work/number.number 并找到了 DBD::mysql 的构建日志。 它达到了 {:Running Makefile.PL:} 并失败了 “无法链接/包含 C 库‘zstd’、‘ssl’、‘crypto’,正在中止。” 以前从未见过这个。

我尝试设置一些配置参数: sudo cpanm --configure-args="--libs='-L/opt/homebrew/Cellar/openssl@3/3.2.1/lib -L/opt/homebrew/Cellar/zstd/1.5.5/lib'"安装 DBD::mysql

更进一步,但仍然失败。日志有 269 个关于宏的警告,最后说“编译失败,调用了救助”

Failed test 'use DBD::mysql;'
at t/00base.t line 15.
Tried to use 'DBD::mysql'.
Error:  Can't load '...mysql.bundle' for module DBD::mysql: dlopen(../blib/arch/auto/DBD/mysql/mysql.bundle, 0x0002):
symbol not found in flat namespace '_mysql_affected_rows' at /opt/homebrew/opt/perl/lib/perl5/5.38/darwin-thread-multi-2level/DynaLoader.pm line 210. at t/00base.t line 15.

我一定在某个地方错过了一个步骤..但我想我做了上次有效的相同步骤。 我还需要在configure-args中添加其他内容吗?

perl homebrew dbd-mysql
1个回答
0
投票

感谢哈康 我重新启动,然后执行

sudo cpanm --configure-args="--libs='-L/opt/homebrew/Cellar/openssl@3/3.2.1/lib -L/opt/homebrew/Cellar/zstd/1.5.5/lib - L/opt/homebrew/Cellar/mysql/8.3.0_1/lib -lmysqlclient -L/opt/homebrew/Cellar/zstd/1.5.5/lib -lssl -lcrypto -lz -lzstd -lresolv'" 安装 DBD::mysql

成功了。一千个感谢。THVV 1 分钟前 编辑

© www.soinside.com 2019 - 2024. All rights reserved.