<?xml version="1.0" encoding="windows-1252"?>
<node id="699169" title="Need help compiling Net::Pcap on Ubuntu 8.04" created="2008-07-21 18:10:02" updated="2008-07-21 14:10:02">
<type id="115">
perlquestion</type>
<author id="699157">
bpa</author>
<data>
<field name="doctext">
Hello Monks,&lt;br&gt;
&lt;br&gt;
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:&lt;br&gt;
&lt;br&gt;
&lt;readmore&gt;
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.&lt;br&gt;
&lt;br&gt;
libnet1&lt;br&gt;
libnet1-dev&lt;br&gt;
libpcap0.7&lt;br&gt;
libpcap0.8&lt;br&gt;
libpcap0.8-dev&lt;br&gt;
libnet-pcap-perl&lt;br&gt;
&lt;br&gt;
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":  &lt;br&gt;
&lt;br&gt;
UPDATE: The new output with the libpcap0.8-dev package installed is:&lt;br&gt;
&lt;br&gt;
&lt;p&gt;
&lt;readmore&gt;
&lt;code&gt;
cc -c   -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN -fno-strict-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 -DHAVE_PCAP_BREAKLOOP -DHAVE_PCAP_COMPILE_NOPCAP -DHAVE_PCAP_DATALINK_NAME_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_PCAP_FOPEN_OFFLINE -DHAVE_PCAP_FREEALLDEVS -DHAVE_PCAP_GETNONBLOCK -DHAVE_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_SETNONBLOCK -DHAVE_PCAP_SET_DATALINK Pcap.c
In file included from Pcap.xs:43:
stubs.inc:322:2: warning: #warning "the function pcap_createsrcstr() is 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 available"
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() is 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_destroy() 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_transmit() is not available"
stubs.inc:499:2: warning: #warning "the function pcap_event() is not available"
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 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.so 	\
	   -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-&gt;fixin(shift)" blib/script/pcapinfo
Manifying blib/man1/pcapinfo.1p
Manifying blib/man3/Net::Pcap.3pm

&lt;/code&gt;
&lt;/readmore&gt;
&lt;/p&gt;&lt;br&gt;
&lt;br&gt;

Old output with libpcap0.7 installed:&lt;br&gt;
&lt;br&gt;
&lt;p&gt;
&lt;readmore&gt;
&lt;code&gt;
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 &gt; Pcap.xsc &amp;&amp; mv Pcap.xsc Pcap.c
cc -c   -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN -fno-strict-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_GETNONBLOCK -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 not available"
stubs.inc:157:2: warning: #warning "the function pcap_dump_file() is not 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() is 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_fd() 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() is 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 available"
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() is 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_destroy() 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_transmit() is not available"
stubs.inc:499:2: warning: #warning "the function pcap_event() is not available"
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.so 	\
	   -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-&gt;fixin(shift)" blib/script/pcapinfo
Manifying blib/man1/pcapinfo.1p
Manifying blib/man3/Net::Pcap.3pm
&lt;/code&gt;
&lt;/readmore&gt;
&lt;/p&gt;

UPDATE:&lt;br&gt;
&lt;br&gt;
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:&lt;br&gt;
&lt;br&gt;
http://perlmonks.org/index.pl?node_id=689429&lt;br&gt;
&lt;br&gt;

The only dependencies I have left before I can install Net-Packet-3.26 are:&lt;br&gt;
&lt;br&gt;
&lt;code&gt;
Warning: prerequisite Net::Pcap 0.12 not found. We have 0.04.
Warning: prerequisite Net::Write 1.00 not found.
&lt;/code&gt;&lt;br&gt;
&lt;br&gt;
Note that Net::Write-1.03 also depends on Net::Pcap0.12 or higher.
&lt;br&gt;&lt;br&gt;
&lt;b&gt;
UPDATE:&lt;/b&gt; 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: &lt;br&gt;&lt;br&gt;
&lt;code&gt;
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(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      
&lt;/code&gt;&lt;br&gt;
&lt;br&gt;
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. 
&lt;/readmore&gt;</field>
</data>
</node>
