从 Perl 5.14 升级到 5.28 后,我的 Perl 找不到 local::lib
My Perl can't find local::lib after upgrading from Perl 5.14 to 5.28
我已经 运行使用购买的 Perl 脚本超过 15 年了。我一直在定期升级它,直到大约 5 年前开发人员放弃了它。我有一些非常基础的知识,并且一直在没有开发支持的情况下一瘸一拐地走下去,直到我的虚拟主机强制将服务器升级到 Debian,其中包括从 Perl 5.14 升级到 5.28!呃!
我在抢!看来我最大的问题是过时的模块,我无法再访问 LOCAL::LIB
我知道版本文档列出了所有的变化,但由于我没有写脚本,我只是修改它们,我什至不知道在 50,000 行代码中寻找什么。
有人可以为 Dummies 提供“这是您必须升级的内容”的帮助吗?如果有人能指出我需要做什么的方向,我可以通过 SSH 运行 命令行。 Google 一次都帮不上忙。
这是错误之一
Can't locate local/lib.pm in @INC (you may need to install the
local::lib module)
(@INC contains: /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) at
/home/directory/website.com/cgi-bin/fsfstore.cgi line 52.
BEGIN failed--compilation aborted at
/home/directory/website.com/cgi-bin/fsfstore.cgi line 52.
据推测,local::lib 模块已安装在您的 5.15 树中,但未安装在您的 5.28 树中。有许多机制可以安装 perl 模块。例如:
sudo cpan install local::lib
sudo cpanm install local::lib
sudo apt install liblocal-lib-perl
最终的主要问题是脚本本身。
以防其他人来找我,因为我花了很长时间才弄清楚这个问题。这些站点托管在 Dreamhost 上。 运行 bash 使用 SSH。
我最终不得不按照他们网站上的说明安装 PerlBrew:PerlBrew 我正在 link 以防说明发生变化,如果 link 中断,然后他们就走了。在撰写本文时,使用 curl 对我有用。
一旦我安装了 PerlBrew 和我想要的 perl 版本。我安装了 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 版本。
更新脚本然后打开浏览器 window 并打开您的终端 window。
接下来,使用尝试加载页面时的错误来确定要安装的模块。该错误将显示“无法找到 module/mod.pm”。接受它并在终端中使用 cpanm 通过将 / 替换为 ::
来安装
[server]$ cpanm module::mod
这将 运行 安装缺少的模块,刷新您的页面,然后重复直到一切正常。
警告! 模块区分大小写,因此如果错误提示找不到模块,请确保您是否输入正确。
祝你好运!
我已经 运行使用购买的 Perl 脚本超过 15 年了。我一直在定期升级它,直到大约 5 年前开发人员放弃了它。我有一些非常基础的知识,并且一直在没有开发支持的情况下一瘸一拐地走下去,直到我的虚拟主机强制将服务器升级到 Debian,其中包括从 Perl 5.14 升级到 5.28!呃!
我在抢!看来我最大的问题是过时的模块,我无法再访问 LOCAL::LIB
我知道版本文档列出了所有的变化,但由于我没有写脚本,我只是修改它们,我什至不知道在 50,000 行代码中寻找什么。
有人可以为 Dummies 提供“这是您必须升级的内容”的帮助吗?如果有人能指出我需要做什么的方向,我可以通过 SSH 运行 命令行。 Google 一次都帮不上忙。
这是错误之一
Can't locate local/lib.pm in @INC (you may need to install the local::lib module)
(@INC contains: /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) at /home/directory/website.com/cgi-bin/fsfstore.cgi line 52.
BEGIN failed--compilation aborted at /home/directory/website.com/cgi-bin/fsfstore.cgi line 52.
据推测,local::lib 模块已安装在您的 5.15 树中,但未安装在您的 5.28 树中。有许多机制可以安装 perl 模块。例如:
sudo cpan install local::lib
sudo cpanm install local::lib
sudo apt install liblocal-lib-perl
最终的主要问题是脚本本身。
以防其他人来找我,因为我花了很长时间才弄清楚这个问题。这些站点托管在 Dreamhost 上。 运行 bash 使用 SSH。
我最终不得不按照他们网站上的说明安装 PerlBrew:PerlBrew 我正在 link 以防说明发生变化,如果 link 中断,然后他们就走了。在撰写本文时,使用 curl 对我有用。
一旦我安装了 PerlBrew 和我想要的 perl 版本。我安装了 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 版本。
更新脚本然后打开浏览器 window 并打开您的终端 window。
接下来,使用尝试加载页面时的错误来确定要安装的模块。该错误将显示“无法找到 module/mod.pm”。接受它并在终端中使用 cpanm 通过将 / 替换为 ::
来安装[server]$ cpanm module::mod
这将 运行 安装缺少的模块,刷新您的页面,然后重复直到一切正常。
警告! 模块区分大小写,因此如果错误提示找不到模块,请确保您是否输入正确。
祝你好运!