[rrd-users] Unable to specify which version of RRDs perl module to use

Sam Umbach sumbach at gmail.com
Mon Apr 16 03:00:05 CEST 2007


On 4/15/07, David Ball <davidtball at gmail.com> wrote:
> use lib '/usr/local/rrdtool-1.2.19/lib/perl/5.6.1/i386-linux';
> use RRDs;

Try adding the module version number as well:

use RRDs 1.2019;
print "$RRDs::VERSION\n";

That way it shouldn't matter if the old RRDs is found first.  Also,
you'll get a descriptive error message if that version of the module
can't be found.

>    This all seems to work fine if I call my script from the command
> line.  However, when I call it from a web form, it REFUSES to use my
> newer RRDs.pm, and it reverts to the old version instead.  To debug, I
> print @INC immediately after my 'use lib' statement.  Cmd line AND web
> form invocations show that my lib path is being prepended on @INC.
> But when called from a web form, $INC{'RRDs.pm'} is always set to the
> OLD one.  I then added a:
>
> if (-r '/usr/local/rrdtool-1.2.19/lib/perl/5.6.1/i386-linux/RRDs.pm')
>
>   to make sure the web user (apache) can read the file, and it CAN.
> So, I can't figure out for the LIFE of me why my script won't use the
> newer RRDs.pm.

I'm not very familiar with SELinux, but I know it's installed and
enabled on a number of more recent Linux distros.  It is possible that
although the process can read the file, Apache may not have the
appropriate rights to load the file as a dynamic library.  Check
/var/log/messages (and other logs in /var/log) for messages from
SELinux.  If you're running a Redhat-based distro, the configuration
is in /etc/sysconfig/selinux.  You could temporarily turn SELinux to
permissive mode and see if your CGI script works.

-Sam



More information about the rrd-users mailing list