【发布时间】:2022-01-23 21:04:02
【问题描述】:
我正在使用安装了 perl v5.26.0 的 RHEL 8 服务器。在我的项目中,有很多使用 Mysql.pm 的遗留 perl 模块,如下所示。
require 5.004;
require Exporter;
use Mysql;
在编译这些模块时,我遇到了类似的错误,
Can't locate Mysql.pm in @INC (you may need to install the Mysql module) (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5)
我已经安装了 DBD::mysql 和 mysql-devel。
yum install mysql-devel
DBD::mysql through cpan.
如果我将导入从 Mysql 更改为 DBI,编译器不会报错。因此,从测试的角度来看,现在更改所有遗留模块既费时又冒险。
有什么办法可以将 perl 版本降级到 v5.16 或以下?非常感谢其他建议。
【问题讨论】:
-
"有没有办法将 perl 版本降级到 v5.16 或以下" 你应该可以使用
perlbrew安装旧版本,如 5.12,请参阅例如this答案 -
DBD::mysql不是Mysql。我不知道Mysql是什么,但它不在 CPAN 上,也不属于 Perl。它是与脚本安装在同一目录中的模块吗?如果是这样,则此问题与this one 重复 -
通过 perlbrew 时,它会在 root 中打开一个新的 shell。但是我的 perl 脚本将由 apache httpd 通过 CGI 执行。
-
@PrashantaKumarPal 我认为 apache 使用 shebang 行来选择它将使用的 perl,请参阅 this 参考。可以尝试修改shebang为perlbrew安装perl的绝对路径吗?
标签: perl mysql-connector dbd