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

Nagiosのcheck_arpingスクリプトにはこのperlモジュールが必要です。

いくつかの追加情報:

[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 に答える