0

我曾尝试使用 cpan 安装 Net::Arping 包,但由于错误而无法执行此操作...

CPAN.pm: Going to build R/RI/RIIKI/Net-Arping-0.02.tar.gz

Checking if your kit is complete...
Looks good
Writing Makefile for Net::Arping
cp Arping.pm blib/lib/Net/Arping.pm
/usr/bin/perl /usr/lib/perl5/5.8.8/ExtUtils/xsubpp  -typemap             /usr/lib/perl5/5.8.8/ExtUtils/typemap  Arping.xs > Arping.xsc && mv Arping.xsc Arping.c
Please specify prototyping behavior for Arping.xs (see perlxs manual)
gcc -c   -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -Wdeclaration-after-    statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -    I/usr/include/gdbm -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-    protector --param=ssp-buffer-size=4 -m64 -mtune=generic   -DVERSION=\"0.02\" -    DXS_VERSION=\"0.02\" -fPIC "-I/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE"  -    D_BSD_SOURCE -D__BSD_SOURCE -D__FAVOR_BSD -DHAVE_NET_ETHERNET_H Arping.c
Arping.xs: In function ‘XS_Net__Arping_send_arp’:
Arping.xs:116: warning: implicit declaration of function ‘libnet_name_resolve’
Arping.xs:124: warning: passing argument 1 of ‘libnet_select_device’ from incompatible     pointer type
Arping.xs:124: error: too many arguments to function ‘libnet_select_device’
Arping.xs:130: warning: implicit declaration of function ‘libnet_open_link_interface’
Arping.xs:130: warning: assignment makes pointer from integer without a cast
Arping.xs:135: warning: implicit declaration of function ‘libnet_get_ipaddr’
Arping.xs:140: error: ‘LIBNET_IP_H’ undeclared (first use in this function)
Arping.xs:140: error: (Each undeclared identifier is reported only once
Arping.xs:140: error: for each function it appears in.)
Arping.xs:143: warning: implicit declaration of function ‘libnet_init_packet’
Arping.xs:148: warning: passing argument 1 of ‘libnet_get_hwaddr’ from incompatible pointer type
Arping.xs:148: error: too many arguments to function ‘libnet_get_hwaddr’
Arping.xs:148: warning: assignment from incompatible pointer type
Arping.xs:156: warning: passing argument 6 of ‘libnet_build_ethernet’ from incompatible pointer type
Arping.xs:156: error: too few arguments to function ‘libnet_build_ethernet’
Arping.xs:161: warning: passing argument 12 of ‘libnet_build_arp’ from incompatible pointer type
Arping.xs:161: error: too few arguments to function ‘libnet_build_arp’
Arping.xs:166: warning: pointer targets in passing argument 1 of ‘pcap_open_live’ differ in signedness
Arping.xs:185: warning: implicit declaration of function ‘libnet_write_link_layer’
Arping.xs:196: warning: implicit declaration of function ‘libnet_close_link_interface’
Arping.xs:197: warning: implicit declaration of function ‘libnet_destroy_packet’
make: *** [Arping.o] Error 1
  /usr/bin/make  -- NOT OK
Running make test
  Can't test without successful make
Running make install
  make had returned bad status, install seems impossible

我需要这个 perl 模块用于 Nagios 的 check_arping 脚本。

一些附加信息:

[root@atlantis build]# uname -a
Linux atlantis 2.6.18-238.9.1.el5xen #1 SMP Tue Apr 12 18:53:56 EDT 2011 x86_64 x86_64 x86_64 GNU/Linux
[root@atlantis build]# rpm -qa | grep libnet
libnet-1.1.2.1-2.rf
[root@atlantis build]# rpm -qa | grep libpcap
libpcap-devel-0.9.4-15.el5
libpcap-0.9.4-15.el5
libpcap-0.9.4-15.el5
libpcap-devel-0.9.4-15.el5
[root@atlantis build]#

如您所见,我已经安装了 libnet、libpcap 并且仍然存在问题……有人知道如何解决此问题吗?

4

1 回答 1

3

您已经安装了 libpcap-devel,但没有安装 libnet-devel。RPM 的 *-devel 版本包括构建基于 XS 的模块时经常需要的 C 头文件。

在尝试sudo yum install libnet-devel再次构建模块之前尝试。

更新:上面的建议是正确的,但还不够。我刚刚在安装 Centos 5.6 时对此进行了测试,但它失败并出现完全相同的错误。

查看CPAN 测试人员的结果,很明显 Net::Arping 的 0.02 版已经很长时间没有为任何人成功构建。该发行版于 2002 年上传到 CPAN,它的 XS 代码似乎与现代版本的 libnet 不兼容。

然而,在 CPAN 上有一个0.03 版的 Net::Arping。这在我的 Centos 5.6 上成功构建。我建议你改用它。我还没有弄清楚为什么cpan不识别 0.03 版本。我看到它是由不同的作者撰写的,因此可能是权限问题。您应该考虑将此问题报告给 modules@cpan.org。

于 2011-10-23T11:43:20.320 回答