Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 6 Feb 2003 14:54:18 +0000
From:      Matthew Seaman <m.seaman@infracaninophile.co.uk>
To:        FreeBSD Questions <freebsd-questions@FreeBSD.ORG>
Subject:   Re: More SpamAssassin questions - it won't run.
Message-ID:  <20030206145418.GE53194@happy-idiot-talk.infracaninophi>
In-Reply-To: <20030206133633.GA9663@keyslapper.org>
References:  <20030206041925.GA96790@keyslapper.org> <20030206093900.GC53194@happy-idiot-talk.infracaninophi> <20030206133633.GA9663@keyslapper.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, Feb 06, 2003 at 08:36:34AM -0500, Louis LeBlanc wrote:
> On 02/06/03 09:39 AM, Matthew Seaman sat at the `puter and typed:
> > On Wed, Feb 05, 2003 at 11:19:26PM -0500, Louis LeBlanc wrote:
> >  
> > > Here's what I see in the procmail output:
> > > procmail: Executing "spamassassin,-a,-P"
> > > Can't locate object method "splitpath" via package "File::Spec" at /usr/local/bin/spamassassin line 18.
> > > BEGIN failed--compilation aborted at /usr/local/bin/spamassassin line 38.
> > > procmail: Program failure (2) of "spamassassin"
> > > procmail: Rescue of unfiltered data succeeded
> > > 
> > > I know this is some kind of perl error, but I'm still quite a ways
> > > from guru status where that's concerned.  I've tried a few things, but
> > > I can't get this working.
> > 
> > You're using perl-5.005.03 as bundled with FreeBSD, and consequently
> > an older version of the File::Spec module.  That's something that
> > keeps popping up in various places.
> > 
> > You can tell what version of File::Spec you're using by:
> > 
> >     % perl -MFile::Spec -e 'print "$File::Spec::VERSION\n";'
> 
> This tells me that I'm running 0.6, but pkg_info confirms that I have
> the 0.82 port installed.  The spamassassin port does require the
> p5-File-Spec port, but doesn't seem to use it.
> 
> > I can tell you that spamassassin works without complaint using version
> > 0.82 (as bundled with perl-5.6.1) or version 0.83 (as bundled with
> > perl-5.8.0).
> > 
> > You can install the devel/p5-File-Spec port to get version 0.82 for
> > the bundled perl, which should sort things out for you.
> 
> Somehow I don't think that's quite enough.  I tried Adrian's
> suggestion and modified the use statement as follows:
> use File::Spec 0.82;
> 
> But that didn't really help, now I get this:
> 
> procmail: Executing "spamassassin,-a,-P"
> File::Spec version 0.82 required--this is only version 0.6 at
> /usr/local/bin/spamassassin line 6.
> BEGIN failed--compilation aborted at /usr/local/bin/spamassassin line 6.
> procmail: [10564] Thu Feb  6 08:26:02 2003
> procmail: Program failure (255) of "spamassassin"
> procmail: Rescue of unfiltered data succeeded
> 
> Next, I decided to reinstall the port, and I noticed the following:
> 
> Writing
> /usr/local/lib/perl5/site_perl/5.005/i386-freebsd/auto/File/Spec/.packlist
> ## Differing version of File/Spec.pm found. You might like to
> rm /usr/libdata/perl/5.00503/File/Spec.pm
> ## Differing version of File/Spec/Mac.pm found. You might like to
> rm /usr/libdata/perl/5.00503/File/Spec/Mac.pm
> ## Differing version of File/Spec/OS2.pm found. You might like to
> rm /usr/libdata/perl/5.00503/File/Spec/OS2.pm
> ## Differing version of File/Spec/Unix.pm found. You might like to
> rm /usr/libdata/perl/5.00503/File/Spec/Unix.pm
> ## Differing version of File/Spec/VMS.pm found. You might like to
> rm /usr/libdata/perl/5.00503/File/Spec/VMS.pm
> ## Differing version of File/Spec/Win32.pm found. You might like to
> rm /usr/libdata/perl/5.00503/File/Spec/Win32.pm
> ## Running 'make install UNINST=1' will unlink all those files for you.
> Appending installation info to /usr/local/lib/perllocal.pod
> 
> What's the danger of uninstalling these?  Presumably most of what
> works with 0.6 should work with 0.82, right?  Should UNINST=1 always
> be used?  Never?  If I do remove a perl module that's part of the base
> distribution, and something breaks, how would I go about replacing it?

UNINST=1 will fix the problem only until the next time you do a
{build,install}world, when the bundled File::Spec module will
reappear.  Plus it's not obvious how to get the port system to apply
it when installing a perl module.

The problem is that the location of the updated port is lower down
perl's library search path than the standard libraries.  You can see
the search path by:

    % perl -e 'print join("\n", @INC), "\n";'

You can prepend directories to the search path by setting PERL5LIB or
PERLLIB in the environment. eg. try:

    env PERL5LIB=/usr/local/lib/perl5/site_perl/5.005 spamassassin ...

and see if that lets you find the up to date File::Spec module before
the old one.

You can achieve much the same effect from within perl by inserting:

    BEGIN {
      unshift @INC, "/usr/local/lib/perl5/site_perl/5.005";
    }

at the top of the script, before any of the 'use ...' lines.

About the only other alternative is to install one of perl ports,
which have a sufficiently up to date File::Spec module anyhow.

	Cheers,

	Matthew

-- 
Dr Matthew J Seaman MA, D.Phil.                       26 The Paddocks
                                                      Savill Way
PGP: http://www.infracaninophile.co.uk/pgpkey         Marlow
Tel: +44 1628 476614                                  Bucks., SL7 1TH UK

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-questions" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030206145418.GE53194>