CentOS 5下安装perl module以支持IPV6

CentOS 5下安装perl module以支持IPV6

在大家的产品中用到了LWP::UserAgent,用于在perl代码中打开http诉求,测量试验开采在纯V6情况下会回来下边包车型客车谬误:

Can’t connect to [2001:db8:0:1:10:208:135:232]:8002 (Bad hostname
‘[2001:db8:0:1:10:208:135:232]’)

核准了后头开采存些perl应用信赖于IO::Socket::INET,由于这一个模块本身不扶植IPV6,所以在纯V6景况下也许必要做一些办事能力work。寻找CPAN,模块Net::INET6Glue::INET_is_INET6提供了对那么些题指标缓慢解决方案,在选择代码中只需求引用一下就足以。

[plain]view
plaincopy图片 1图片 2

  1. useNet::INET6Glue::INET_is_INET6;

唯独CentOS
5最新版本的perl是5.8.8,暗中认可并不曾那一个模块,下边包车型大巴难点就是怎么样设置呢?

借使有网络意况,比方在付出机上,最简易的不二等秘书诀就是从CPAN直接设置,shell中命令如下:

[plain]view
plaincopy图片 3图片 4

  1. cpanApp::cpanminus
  2. cpanmNet::INET6Glue::INET_is_INET6

先是个命令会推行相比较长日子,须要恒心等待一下,中间还有大概会问你y/n,全部默许。

其次个指令实践后,会突显出同一时间设置的依赖模块:

[plain]view
plaincopy图片 5图片 6

  1. Fetching
  2. ConfiguringNet-INET6Glue-0.603…OK
  3. ==>Founddependencies:IO::Socket::IP
  4. –>WorkingonIO::Socket::IP
  5. Fetching
  6. ConfiguringIO-Socket-IP-0.37…OK
  7. ==>Founddependencies:Socket
  8. –>WorkingonSocket
  9. Fetching
  10. ==>Founddependencies:ExtUtils::Constant
  11. –>WorkingonExtUtils::Constant
  12. Fetching
  13. ConfiguringExtUtils-Constant-0.16…OK
  14. BuildingandtestingExtUtils-Constant-0.23…OK
  15. SuccessfullyinstalledExtUtils-Constant-0.23(upgradedfrom0.17)
  16. ConfiguringSocket-2.018…OK
  17. BuildingandtestingSocket-2.018…OK
  18. SuccessfullyinstalledSocket-2.018(upgradedfrom1.78)
  19. BuildingandtestingIO-Socket-IP-0.37…OK
  20. SuccessfullyinstalledIO-Socket-IP-0.37
  21. BuildingandtestingNet-INET6Glue-0.603…OK
  22. SuccessfullyinstalledNet-INET6Glue-0.603
  23. 4distributionsinstalled

在付加物中,须求将perl模块做成rpm来安装,搜索了生机勃勃晃找到三个相比较便于的工具:cpan2rpm,在CPAN中能够下载。

下来的是tgz包,通过make安装,命令会报这样多个错:

Can’t locate object method “interpolate” via package “Pod::Text” at
./cpan2rpm line 519.

案由是Pod::Text中interpolate这几个法子已经搬迁到Pod::Parser模块中,要求将代码中的Pod::Text替换为Pod::Parser,然后make、make
install就OK了。

cpan2rpm安装好之后,就能够将Net::INET6Glue::INET_is_INET6模块以至它的信赖性做成rpm了,步骤如下:

1.下载tgz(包含依赖),从地点通过CPAN安装的历程可以看出共有3个依赖,分别是:ExtUtils-Constant、Socket和IO-Socket-IP。以ExtUtils-Constant比方:

[plain]view
plaincopy图片 7图片 8

  1. wget

2.执行cpan2rpm[plain]view
plaincopy图片 9图片 10

  1. cpan2rpm–no-sign./ExtUtils-Constant-0.23.tar.gz

结果展现如下:[plain]view
plaincopy图片 11图片 12

  1. –cpan2rpm-Ver:2.028–
  2. Upgradecheck
  3. Fetch:HTTP
    1. –module:./ExtUtils-Constant-0.23.tar.gz–
  4. Metadataretrieval
  5. +umask022
  6. +cd/usr/src/redhat/BUILD
  7. +rm-rfExtUtils-Constant-0.23
  8. +exit0
  9. RPM:/usr/src/redhat/RPMS/noarch/perl-ExtUtils-Constant-0.23-1.noarch.rpm
  10. SRPM:/usr/src/redhat/SRPMS/perl-ExtUtils-Constant-0.23-1.src.rpm
  11. –Done–

可以看看变化出所急需的rpm和source rpm。

Done!

事实上使用cpan2rpm不必先下载tgz包,只要将下边的文书名更替为模块名就能够。

除此以外,预计cpan2rpm可能曾经相当久没人爱抚了,在编写翻译不一样rpm时还遇上过下边包车型大巴难点,意气风发并将补丁发出来。

错误1:

[plain]view plaincopy

  1. get_meta():Notadirectoryat/usr/bin/cpan2rpmline396.

补丁:

[plain]view plaincopy

  1. diff-rucpan2rpm-2.028/cpan2rpmcpan2rpm-new/cpan2rpm
  2. —cpan2rpm-2.028/cpan2rpm2005-06-1722:06:54.000000000-0700
  3. +++cpan2rpm-new/cpan2rpm2005-06-3009:35:49.000000000-0700
  4. @@-26,6+26,[email protected]@
    1. usestrict;
  5. usewarnings;
  6. +useFile::Basename;
  7. useGetopt::Long;
  8. useSys::Hostname;
  9. usePod::Text;
  10. @@-387,6+388,[email protected]@
  11. $info->{buildarch}=”noarch”if$xs==0;
  12. }
    1. +if(not-d$info->{evaldir}){
  13. +$info->{evaldir}=dirname($info->{evaldir});
  14. +}
  15. chdir$info->{evaldir}||die”get_CentOS 5下安装perl module以支持IPV6。meta():$!”;
    1. $_=”$info->{evaldir}/Build.PL”;

错误2:

[plain]view plaincopy

  1. /usr/lib/rpm/brp-compress:line8:cd:/var/tmp/perl-Crypt-Random-Source-0.10-root:Nosuchfileordirectory

补丁:

801行在destdir前面加上“–”

[plain]view plaincopy

  1. $info->{“make-install”}=”–destdir=%{buildroot}”

5下安装perl module以支撑IPV6
在大家的成品中用到了LWP::UserAgent,用于在perl代码中展开http要求,测验发今后纯V6情形下会回到上边包车型地铁错误…

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图