http://www.perlmonks.org?node_id=699169

bpa has asked for the wisdom of the Perl Monks concerning the following question:

Hello Monks,

I have been trying to install the Net::Packet module on Ubuntu 8.04 Hardy Heron with the intent of being able to use this module to create, view, and disect both IPv4 and IPv6 packets. I ran into one small snag with using the module in slackware in that it didn't play nicely with sending an IPv6 packet (maybe because it is BSD based?), so I decided to try Ubuntu. Anyway, I have gone through a recursive series of dependency installs, and I am currently on the module Net::Pcap. I have perl version 5.8.8 and I have the following Ubuntu packages installed:

UPDATE: I now have libpcap0.8-dev installed instead of libpcap0.7-dev. The below pacakages are correct as far as what I have installed now on Ubuntu.

libnet1
libnet1-dev
libpcap0.7
libpcap0.8
libpcap0.8-dev
libnet-pcap-perl

I cannot get past the make stage of installing Net::Pcap0.14, or Net::Pcap0.16 however. Any help will be greatly appreciated. The following is the output from version 0.14 when running "sudo make":

UPDATE: The new output with the libpcap0.8-dev package installed is:

cc -c -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN -fno-s +trict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE +_OFFSET_BITS=64 -O2 -DVERSION=\"0.14\" -DXS_VERSION=\"0.14\" -fPIC +"-I/usr/lib/perl/5.8/CORE" -DHAVE_BLANK -DHAVE_PCAP_LIB_VERSION -DHA +VE_PCAP_BREAKLOOP -DHAVE_PCAP_COMPILE_NOPCAP -DHAVE_PCAP_DATALINK_NAM +E_TO_VAL -DHAVE_PCAP_DATALINK_VAL_TO_DESCRIPTION -DHAVE_PCAP_DATALINK +_VAL_TO_NAME -DHAVE_PCAP_DUMP_FILE -DHAVE_PCAP_DUMP_FLUSH -DHAVE_PCAP +_DUMP_FOPEN -DHAVE_PCAP_DUMP_FTELL -DHAVE_PCAP_FINDALLDEVS -DHAVE_PCA +P_FOPEN_OFFLINE -DHAVE_PCAP_FREEALLDEVS -DHAVE_PCAP_GETNONBLOCK -DHAV +E_PCAP_GET_SELECTABLE_FD -DHAVE_PCAP_INJECT -DHAVE_PCAP_LIB_VERSION - +DHAVE_PCAP_LIST_DATALINKS -DHAVE_PCAP_NEXT_EX -DHAVE_PCAP_OPEN_DEAD - +DHAVE_PCAP_SENDPACKET -DHAVE_PCAP_SETDIRECTION -DHAVE_PCAP_SETNONBLOC +K -DHAVE_PCAP_SET_DATALINK Pcap.c In file included from Pcap.xs:43: stubs.inc:322:2: warning: #warning "the function pcap_createsrcstr() i +s not available" stubs.inc:337:2: warning: #warning "the function pcap_parsesrcstr() is + not available" stubs.inc:352:2: warning: #warning "the function pcap_open() is not av +ailable" stubs.inc:373:2: warning: #warning "the function pcap_setbuff() is not + available" stubs.inc:388:2: warning: #warning "the function pcap_setuserbuffer() +is not available" stubs.inc:403:2: warning: #warning "the function pcap_setmode() is not + available" stubs.inc:418:2: warning: #warning "the function pcap_setmintocopy() i +s not available" stubs.inc:433:2: warning: #warning "the function pcap_sendqueue_alloc( +) is not available" stubs.inc:455:2: warning: #warning "the function pcap_sendqueue_destro +y() is not available" stubs.inc:469:2: warning: #warning "the function pcap_sendqueue_queue( +) is not available" stubs.inc:484:2: warning: #warning "the function pcap_sendqueue_transm +it() is not available" stubs.inc:499:2: warning: #warning "the function pcap_event() is not a +vailable" stubs.inc:514:2: warning: #warning "the function pcap_setsampling() is + not available" Pcap.c: In function ‘XS_Net__Pcap_strerror’: Pcap.c:1386: warning: assignment discards qualifiers from pointer targ +et type Running Mkbootstrap for Net::Pcap () chmod 644 Pcap.bs rm -f blib/arch/auto/Net/Pcap/Pcap.so cc -shared -L/usr/local/lib Pcap.o -o blib/arch/auto/Net/Pcap/Pcap.s +o \ -lpcap \ chmod 755 blib/arch/auto/Net/Pcap/Pcap.so cp Pcap.bs blib/arch/auto/Net/Pcap/Pcap.bs chmod 644 blib/arch/auto/Net/Pcap/Pcap.bs cp bin/pcapinfo blib/script/pcapinfo /usr/bin/perl "-MExtUtils::MY" -e "MY->fixin(shift)" blib/script/pcapi +nfo Manifying blib/man1/pcapinfo.1p Manifying blib/man3/Net::Pcap.3pm



Old output with libpcap0.7 installed:

Net-Pcap-0.14$ sudo make cp Pcap.pm blib/lib/Net/Pcap.pm AutoSplitting blib/lib/Net/Pcap.pm (blib/lib/auto/Net/Pcap) /usr/bin/perl /usr/share/perl/5.8/ExtUtils/xsubpp -typemap /usr/share +/perl/5.8/ExtUtils/typemap -typemap typemap Pcap.xs > Pcap.xsc && mv + Pcap.xsc Pcap.c cc -c -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN -fno-s +trict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE +_OFFSET_BITS=64 -O2 -DVERSION=\"0.14\" -DXS_VERSION=\"0.14\" -fPIC +"-I/usr/lib/perl/5.8/CORE" -DHAVE_BLANK -DHAVE_PCAP_COMPILE_NOPCAP - +DHAVE_PCAP_FINDALLDEVS -DHAVE_PCAP_FREEALLDEVS -DHAVE_PCAP_GETNONBLOC +K -DHAVE_PCAP_OPEN_DEAD -DHAVE_PCAP_SETNONBLOCK Pcap.c In file included from Pcap.xs:43: stubs.inc:71:2: warning: #warning "the function pcap_lib_version() is +not available, but will be emulated" stubs.inc:113:2: warning: #warning "the function pcap_breakloop() is n +ot available" stubs.inc:157:2: warning: #warning "the function pcap_dump_file() is n +ot available" stubs.inc:172:2: warning: #warning "the function pcap_dump_flush() is +not available" stubs.inc:187:2: warning: #warning "the function pcap_list_datalinks() + is not available" stubs.inc:202:2: warning: #warning "the function pcap_set_datalink() i +s not available" stubs.inc:217:2: warning: #warning "the function pcap_datalink_name_to +_val() is not available" stubs.inc:232:2: warning: #warning "the function pcap_datalink_val_to_ +name() is not available" stubs.inc:247:2: warning: #warning "the function pcap_datalink_val_to_ +description() is not available" stubs.inc:277:2: warning: #warning "the function pcap_get_selectable_f +d() is not available" stubs.inc:292:2: warning: #warning "the function pcap_next_ex() is not + available" stubs.inc:307:2: warning: #warning "the function pcap_sendpacket() is +not available" stubs.inc:322:2: warning: #warning "the function pcap_createsrcstr() i +s not available" stubs.inc:337:2: warning: #warning "the function pcap_parsesrcstr() is + not available" stubs.inc:352:2: warning: #warning "the function pcap_open() is not av +ailable" stubs.inc:373:2: warning: #warning "the function pcap_setbuff() is not + available" stubs.inc:388:2: warning: #warning "the function pcap_setuserbuffer() +is not available" stubs.inc:403:2: warning: #warning "the function pcap_setmode() is not + available" stubs.inc:418:2: warning: #warning "the function pcap_setmintocopy() i +s not available" stubs.inc:433:2: warning: #warning "the function pcap_sendqueue_alloc( +) is not available" stubs.inc:455:2: warning: #warning "the function pcap_sendqueue_destro +y() is not available" stubs.inc:469:2: warning: #warning "the function pcap_sendqueue_queue( +) is not available" stubs.inc:484:2: warning: #warning "the function pcap_sendqueue_transm +it() is not available" stubs.inc:499:2: warning: #warning "the function pcap_event() is not a +vailable" stubs.inc:514:2: warning: #warning "the function pcap_setsampling() is + not available" Pcap.xs: In function ‘XS_Net__Pcap_lookupnet’: Pcap.xs:143: warning: passing argument 1 of ‘pcap_lookupnet’ discards +qualifiers from pointer target type Pcap.xs: In function ‘XS_Net__Pcap_open_live’: Pcap.xs:256: warning: passing argument 1 of ‘pcap_open_live’ discards +qualifiers from pointer target type Running Mkbootstrap for Net::Pcap () chmod 644 Pcap.bs rm -f blib/arch/auto/Net/Pcap/Pcap.so cc -shared -L/usr/local/lib Pcap.o -o blib/arch/auto/Net/Pcap/Pcap.s +o \ -lpcap \ chmod 755 blib/arch/auto/Net/Pcap/Pcap.so cp Pcap.bs blib/arch/auto/Net/Pcap/Pcap.bs chmod 644 blib/arch/auto/Net/Pcap/Pcap.bs cp bin/pcapinfo blib/script/pcapinfo /usr/bin/perl "-MExtUtils::MY" -e "MY->fixin(shift)" blib/script/pcapi +nfo Manifying blib/man1/pcapinfo.1p Manifying blib/man3/Net::Pcap.3pm

UPDATE:

To fix the problem with compiling Net-Libdnet-0.01 on Ubuntu, I followed this thread as pointed out by pc88mxer below and it reduced one of the dependencies for Net-Packet-3.26:

http://perlmonks.org/index.pl?node_id=689429

The only dependencies I have left before I can install Net-Packet-3.26 are:

Warning: prerequisite Net::Pcap 0.12 not found. We have 0.04. Warning: prerequisite Net::Write 1.00 not found.


Note that Net::Write-1.03 also depends on Net::Pcap0.12 or higher.

UPDATE: This issue has been resolved. I ignored the warnings on the updated output above (after installing the libpcap0.8 package on advice from alexm), and then got the following when trying to run "make test" for Net-Pcap-0.14:

PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_h +arness(0, 'blib/lib', 'blib/arch')" t/*.t t/00-load...........# Testing Net::Pcap 0.14 under Perl 5.008008 t/00-load...........ok + t/01-api............ok + t/02-lookup.........ok + t/03-openlive.......ok 1/14 + # Failed test ' - $err must be set: SIOCGIFHWADDR: No such device' # at t/03-openlive.t line 70. # 'SIOCGIFHWADDR: No such device' # doesn't match '/^(?:bind|ioctl): (?:No such device)/' t/03-openlive.......NOK 13# Looks like you failed 1 test of 14. + t/03-openlive.......dubious + Test returned status 1 (wstat 256, 0x100) DIED. FAILED test 13 Failed 1/14 tests, 92.86% okay t/04-loop...........ok 1/195


There are several other forums on this topic that say to ignore the error and do a "force install" but I just ignored it and did a normal "sudo make install". As you can see, the regular expression above isn't looking for 'SIOCGIFHWADDR' at the begining of the string. It is only looking for either 'bind' or 'ioctl', so that is the cause of the failure. After installing the Net-Pcap-0.14, this satisfied the dependencies for Net-Write-1.03 and these two modules together (Net-Write-1.03 and Net-Pcap-0.14) satisfied the final dependencies for Net-Packet-3.26. I was able to successfully run my test packet sniffing script after installing Net-Packet-3.26. I hope this helps someone in the future; I really appreciate all the help I got from pc88mxer and alexm. The information may be somewhat scattered throughout this thread, but I'd be glad to assist anyone in the future who needs some help putting it all together.