Wednesday, December 16, 2015

linux - problem after upgrading perl



I've upgraded perl which is install in /usr/local/lib/perl5/...... Previously old version of perl was installed in /usr/lib/perl5/




Now when i installed spamassasin its locating for the old location and show the following error.



Starting spamd: Can't locate Mail/SpamAssassin.pm in @INC (@INC contains: /usr/lib/perl5/vendor_perl/5.8.8 /usr/local/lib/perl5/site_perl/5.12.3/i686-linux-thread-multi /usr/local/lib/perl5/site_perl/5.12.3 /usr/local/lib/perl5/5.12.3/i686-linux-thread-multi /usr/local/lib/perl5/5.12.3) at /usr/bin/spamd line 84.
BEGIN failed--compilation aborted at /usr/bin/spamd line 84.



I've tried changing shebang from /usr/bin/perl to /usr/local/bin/perl but it did not work.



"perl -V" output.




Summary of my perl5 (revision 5 version 12 subversion 3) configuration:



Platform:
osname=linux, osvers=2.6.18-238.9.1.el5, archname=i686-linux-thread-multi
uname='linux nexfilter 2.6.18-238.9.1.el5 #1 smp tue apr 12 18:10:56 edt 2011 i686 i686 i386 gnulinux '
config_args='-Dusethreads -es'
hint=recommended, useposix=true, d_sigaction=define
useithreads=define, usemultiplicity=define
useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
use64bitint=undef, use64bitall=undef, uselongdouble=undef

usemymalloc=n, bincompat5005=undef
Compiler:
cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
optimize='-O2',
cppflags='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include'
ccversion='', gccversion='4.1.2 20080704 (Red Hat 4.1.2-50)', gccosandvers=''
intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
alignbytes=4, prototype=define

Linker and Libraries:
ld='cc', ldflags =' -fstack-protector -L/usr/local/lib'
libpth=/usr/local/lib /lib /usr/lib
libs=-lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lpthread -lc
perllibs=-lnsl -ldl -lm -lcrypt -lutil -lpthread -lc
libc=/lib/libc-2.5.so, so=so, useshrplib=false, libperl=libperl.a
gnulibc_version='2.5'
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
cccdlflags='-fPIC', lddlflags='-shared -O2 -L/usr/local/lib -fstack-protector'




Characteristics of this binary (from libperl):
Compile-time options: MULTIPLICITY PERL_DONT_CREATE_GVSV
PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP USE_ITHREADS
USE_LARGE_FILES USE_PERLIO USE_PERL_ATOF
USE_REENTRANT_API
Built under linux
Compiled at May 13 2011 03:43:35
@INC:
/usr/local/lib/perl5/site_perl/5.12.3/i686-linux-thread-multi

/usr/local/lib/perl5/site_perl/5.12.3
/usr/local/lib/perl5/5.12.3/i686-linux-thread-multi
/usr/local/lib/perl5/5.12.3
.


Answer



A quick solution: make a symlink from the old directory to the new one. This will allow you to have possibly several versions of perl symlinked from /usr/local/whatever to /usr/lib/perl5.



Another solution: looks like you've recompiled perl and it chose the default prefix of /usr/local. You may try to recompile it once again, but with --prefix="/usr" given to configure script. This will put your perl into the place the rest of the system expects to find it.


No comments:

Post a Comment

linux - How to SSH to ec2 instance in VPC private subnet via NAT server

I have created a VPC in aws with a public subnet and a private subnet. The private subnet does not have direct access to external network. S...