inside Alan's cluttered head
Archive for May 6, 2013
mrtg on Wheezy
0
12 years
by alan
in free software on 2013-05-06
I just upgraded my home server (a “Fit PC 1.0“) to Debian 7.0 “Wheezy”. Most of it went smoothly, but there were a few small snags.
I use a package called “mrtg” to create nice graphs of my network usage. See the pretty picture below.
However, after the upgrade from Debian 6.0 “Squeeze” to 7.0 “Wheezy”, mrtg was reporting errors:
Subroutine SNMP_Session::pack_sockaddr_in6 redefined at /usr/share/perl/5.14/Exporter.pm line 67. at /usr/share/perl5/SNMP_Session.pm line 149 Subroutine SNMP_Session::unpack_sockaddr_in6 redefined at /usr/share/perl/5.14/Exporter.pm line 67. at /usr/share/perl5/SNMP_Session.pm line 149 Subroutine SNMP_Session::sockaddr_in6 redefined at /usr/share/perl/5.14/Exporter.pm line 67. at /usr/share/perl5/SNMP_Session.pm line 149 Subroutine SNMPv1_Session::pack_sockaddr_in6 redefined at /usr/share/perl/5.14/Exporter.pm line 67. at /usr/share/perl5/SNMP_Session.pm line 608 Subroutine SNMPv1_Session::unpack_sockaddr_in6 redefined at /usr/share/perl/5.14/Exporter.pm line 67. at /usr/share/perl5/SNMP_Session.pm line 608 Subroutine SNMPv1_Session::sockaddr_in6 redefined at /usr/share/perl/5.14/Exporter.pm line 67. at /usr/share/perl5/SNMP_Session.pm line 608 Subroutine SNMP_Session::pack_sockaddr_in6 redefined at /usr/share/perl/5.14/Exporter.pm line 67.
I am not sure what caused this problem, but I found a solution on a Raspberry Pi discussion board.
Simply patch this one SNMP_Session.pm file like this:
--- SNMP_Session.pm.orig 2011-06-01 15:48:06.000000000 +0200 +++ SNMP_Session.pm 2011-06-01 15:56:19.000000000 +0200 @@ -146,7 +146,7 @@ if (eval {local $SIG{__DIE__};require Socket6;} && eval {local $SIG{__DIE__};require IO::Socket::INET6; IO::Socket::INET6->VERSION("1.26");}) { - import Socket6; + Socket6->import(qw(inet_pton getaddrinfo)); $ipv6_addr_len = length(pack_sockaddr_in6(161, inet_pton(AF_INET6(), "::1"))); $SNMP_Session::ipv6available = 1; } @@ -605,7 +605,7 @@ BEGIN { if($SNMP_Session::ipv6available) { import IO::Socket::INET6; - import Socket6; + Socket6->import(qw(inet_pton getaddrinfo)); } }
This quick fix worked for me. Let’s hope it gets included in the upstream package, libsnmp-session-perl.