从 Perl 5.14 升级到 5.28 后,我的 Perl 找不到 local::lib

Posted

技术标签:

【中文标题】从 Perl 5.14 升级到 5.28 后,我的 Perl 找不到 local::lib【英文标题】:My Perl can't find local::lib after upgrading from Perl 5.14 to 5.28 【发布时间】:2021-07-05 12:09:36 【问题描述】:

我已经运行购买的 Perl 脚本超过 15 年了。我一直在定期升级它,直到大约 5 年前开发人员放弃了它。我有一些非常基本的知识,并且在没有开发人员支持的情况下一直一瘸一拐,直到我的虚拟主机强制服务器升级到 Debian,其中包括从 Perl 5.14 升级到 5.28!啊!

我在这里争吵!看来我最大的问题是过时的模块,我无法再访问 LOCAL::LIB

我知道版本文档列出了所有更改,但由于我没有编写脚本,我只是修改它们,我什至不知道在 50,000 行代码中寻找什么。

有人可以为 Dummies 提供“这是您必须升级的内容”的帮助吗?如果有人能指出我需要做什么的方向,我可以通过 SSH 运行命令行。 Google 一次都没有提供帮助。

这是错误之一

在 @INC 中找不到 local/lib.pm(您可能需要安装 local::lib 模块)

(@INC 包含:/home/directory/website.com/../cgi-bin/perlmodules

/home/directory/website.com/cgi-bin/perlmodules

../../cgi-bin/perlmodules

../cgi-bin/perlmodules

./perlmodules

/etc/perl

/usr/local/lib/x86_64-linux-gnu/perl/5.28.1

/usr/local/share/perl/5.28.1

/usr/lib/x86_64-linux-gnu/perl5/5.28

/usr/share/perl5

/usr/lib/x86_64-linux-gnu/perl/5.28

/usr/share/perl/5.28

/usr/local/lib/site_perl

/usr/lib/x86_64-linux-gnu/perl-base) 在 /home/directory/website.com/cgi-bin/fsfstore.cgi 第 52 行。

BEGIN 失败——编译在 /home/directory/website.com/cgi-bin/fsfstore.cgi 第 52 行。

【问题讨论】:

看看这个答案***.com/a/16703172/6124824对你有没有帮助。 您需要在安装旧版本 Perl 的 local 目录(因此为 local/lib.pm)或系统上的其他目录中找到 lib.pm 文件。然后你需要研究如何在新位置安装它。您可能需要转到升级前的最后一次备份才能找到它。不将本地库放在系统控制的目录中是有好处的,例如“这些库不会因升级而被清除”。 我的所有目录似乎仍然存在,但由于某种原因它没有指向它们 我已尝试删除并完全重新安装 CPAN,但没有任何效果。 【参考方案1】:

大概 local::lib 模块安装在您的 5.15 树中,但未安装在您的 5.28 树中。有许多机制可以安装 perl 模块。例如:

 sudo cpan install local::lib
 sudo cpanm install local::lib
 sudo apt install liblocal-lib-perl

【讨论】:

那将是最简单的,但是我的主机服务器上没有 sudo 权限。【参考方案2】:

主要问题最终是脚本本身。

以防其他人来找我,因为我花了很长时间才把这件事理顺。这些网站托管在 Dreamhost 上。使用 SSH 运行 bash。

我最终不得不按照他们网站上的说明安装 PerlBrew:PerlBrew 我正在链接以防说明发生变化,如果链接中断,那么无论如何它们都消失了。在撰写本文时,使用 curl 对我有用。

一旦我用我想要的 perl 版本安装了 PerlBrew。我安装了 cpanm 以便于模块安装

[server]$ perlbrew install-cpanm

我的脚本的问题在于它在第一行使用了 shebang #!/perlpath。

我不得不将脚本第一行的 shebang 更改为:

#!/home/user/perl5/perl5/perlbrew/perls/perl-X.X.X/bin/perl

将“user”替换为用户名,将“perl-X.X.X”替换为您要使用的 perl 版本。

更新脚本,然后打开浏览器窗口和终端窗口。

接下来,在您尝试加载页面时使用错误来确定要安装哪些模块。错误将显示“找不到 module/mod.pm”。拿它并在终端中使用 cpanm 通过将 / 替换为 ::

来安装
[server]$ cpanm module::mod

这将为缺少的模块运行安装,刷新您的页面,然后重复,直到一切正常。

警告!模块是区分大小写的,所以如果出错是找不到模块,请确保输入正确。

祝你好运!

【讨论】:

以上是关于从 Perl 5.14 升级到 5.28 后,我的 Perl 找不到 local::lib的主要内容,如果未能解决你的问题,请参考以下文章

XCode 4.3 - 从 XCode 4.2 升级后 perl 找不到 C 编译器

与 MySQL 合作多年的 Perl 脚本在升级到 MariaDB 后不再有效

Perl:将当前目录包含到@INC吗?

将 Perl 从 5.6 升级到 5.24

禾匠榜店商城小程序V4.5.14全开源独立版 用户授权升级+安全版源码安装使用教程

CAD(镜像对象)(镜像后的微调)5.14