我们在/usr/share 中有一个自定义的 perl 安装 (5.10.1),我尝试执行 GeoIP2 的“cpan -i”安装 here
这样做之后,它似乎安装了很多我无法跟踪的依赖项,而且因为我一直在出错
Subroutine IO::Socket::INET6::sockaddr_in6 redefined at /usr/share/perl5/Exporter.pm line 67
在我们运行的大多数脚本中都使用“使用”命令。我一直在努力确定哪个模块最终会调用它,但目前还没有成功。
经过一些研究,一个建议是注释掉以下几行
/usr/share/perl5/IO/Socket/INET6.pm # (version 2.56, think latest is 2.72)
###commented out the following
###use Socket6 (
### qw(AI_PASSIVE inet_ntop inet_pton getaddrinfo
### sockaddr_in6 unpack_sockaddr_in6_all pack_sockaddr_in6_all)
###);
这已阻止错误出现在各种脚本中。有谁知道这样做是否安全(即以后会引起更多问题),还有更好的方法(即是否可以只更新该模块,我猜这会导致问题并破坏其他东西?)。正确更新模块的最佳方法是什么?
最佳答案
这是 IO::Socket::INET6 中的一个错误,已根据此 bug report 在版本 2.69 中修复。 :
Subroutine main::sockaddr_in6 redefined at /usr/share/perl/5.14/Exporter.pm line 67.
...
Should be fixed in 2.69.
您可以使用 cpan 以 root 身份从 shell 中使用命令 cpan IO::Socket::INET6
更新模块。
关于Perl IO::Socket::INET6::sockaddr_in6 重新定义错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23909848/