Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl IO::Socket::INET6::sockaddr\u in6重定义错误_Perl_Cpan - Fatal编程技术网

Perl IO::Socket::INET6::sockaddr\u in6重定义错误

Perl IO::Socket::INET6::sockaddr\u in6重定义错误,perl,cpan,Perl,Cpan,我们在/usr/share中有一个定制的perl安装(5.10.1),我尝试对GeoIP2进行“cpan-I”安装 在这样做之后,它似乎安装了很多我无法跟踪的依赖项,因为我一直收到一个错误 Subroutine IO::Socket::INET6::sockaddr_in6 redefined at /usr/share/perl5/Exporter.pm line 67 我们运行的大多数脚本都使用“use”命令。我一直在努力确定哪一个模块最终会调用它,但还没有成功 经过一些研究,一个建议是注

我们在/usr/share中有一个定制的perl安装(5.10.1),我尝试对GeoIP2进行“cpan-I”安装

在这样做之后,它似乎安装了很多我无法跟踪的依赖项,因为我一直收到一个错误

Subroutine IO::Socket::INET6::sockaddr_in6 redefined at /usr/share/perl5/Exporter.pm line 67
我们运行的大多数脚本都使用“use”命令。我一直在努力确定哪一个模块最终会调用它,但还没有成功

经过一些研究,一个建议是注释掉以下几行

/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中的一个错误,在版本2.69中根据以下内容进行了修复:

子程序main::sockaddr_in6在/usr/share/perl/5.14/Exporter.pm第67行重新定义

应固定在2.69中


您可以使用cpan更新模块,使用shell中的root命令
cpan IO::Socket::INET6

最简单的方法就是停止使用
IO::Socket::INET6
。这是很久以前创建的,但是使用核心
Socket
模块创建了一个更好的解决方案,即
IO::Socket::IP
。此外,后一个模块现在也是新发布的5.20的核心。最好使用
IO::Socket::IP
,因为从现在起,这是实现IPv4/IPv6透明性的新核心推荐方式