我已经升级了安装在 /usr/local/lib/perl5/ 中的 perl......以前旧版本的 perl 安装在 /usr/lib/perl5/ 中
现在,当我安装 spamassasin 时,它会定位旧位置并显示以下错误。
启动 spamd:无法在 @INC 中找到 Mail/SpamAssassin.pm(@INC 包含:/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)位于 /usr/bin/spamd 第 84 行。BEGIN 失败 - 编译在 /usr/bin/spamd 第 84 行中止。
我尝试将 shebang 从 /usr/bin/perl 更改为 /usr/local/bin/perl,但没有成功。
“perl -V” 输出。
我的 perl5 (修订版 5 版本 12 颠覆版 3) 配置摘要:
平台: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 编译器: 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 链接器和库: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' 动态链接:dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E' cccdlflags='-fPIC',lddlflags='-shared -O2 -L /usr/local/lib -fstack-protector'
此二进制文件的特征(来自 libperl): 编译时选项: MULTIPLICITY PERL_DONT_CREATE_GVSV PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP USE_ITHREADS USE_LARGE_FILES USE_PERLIO USE_PERL_ATOF USE_REENTRANT_API 在 Linux 下构建 于 2011 年 5 月 13 日 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 。
答案1
一个快速解决方案:从旧目录创建到新目录的符号链接。这将允许您将多个版本的 perl 符号链接从 /usr/local/whatever 链接到 /usr/lib/perl5。
另一个解决方案:看起来您已经重新编译了 perl,并且它选择了默认前缀 /usr/local。您可以尝试再次重新编译它,但要为 configure 脚本指定 --prefix="/usr"。这会将您的 perl 放入系统其余部分希望找到它的位置。