http://qs321.pair.com?node_id=302406

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

I have a Perl program running on RedHat Linux that runs just find from the command-line as root, but throws an error from the commaind-line as a user, like so:
[gblackburn]$ perl program.pl DBI object version 1.32 does not match $DBI::VERSION 1.37 at /usr/lib/ +perl5/5.8.0/i386-linux-thread-multi/DynaLoader.pm line 249. BEGIN failed--compilation aborted at /usr/lib/perl5/site_perl/5.8.0/i3 +86-linux-thread-multi/DBI.pm line 255. Compilation failed in require at program.pl line 5. BEGIN failed--compilation aborted at program.pl line 5.
So it looks like it's trying to use the Perl 5.6.1 DBI binary instead of the Perl 5.8.0 binary. But like I said it runs fine as root, so I checked which perl and both the user and root respond with /usr/bin/perl. Then I checked @INC for both, and they are identical.

The PATH variables for root and user are somewhat different (of course) but if the path-to-perl is the same, and the @INC is the same, shouldn't the same modules be called in both cases? I'm clearly missing something dumb. Thanks!

Gary Blackburn
Trained Killer

Replies are listed 'Best First'.
Re: Module loads ok for root, not ok for user
by Abigail-II (Bishop) on Oct 27, 2003 at 15:44 UTC
    Did you by any chance install DBI as root, while having a umask of 077? In that case, one or more directories may have permission drwx------, making the files in them accessable to root, but not to any other user.

    I've been bitten by this many, many times, and it always bugs me that 'make install' isn't very DWIMish, and doesn't make files/directories readable by world by default.

    Abigail

      That's what it was. How annoying... I've upgraded/installed a number of modules on several different boxes (always as root) and this is the first time it's bitten me. Ouch.

      It's fixed now. Thanks a lot! :-)

      Gary Blackburn
      Trained Killer