“为什么?”;在@INC";中找不到Debconf/Log.pm;问题我刚刚将/usr/bin/perl修改为我安装的perl

“为什么?”;在@INC";中找不到Debconf/Log.pm;问题我刚刚将/usr/bin/perl修改为我安装的perl,perl,ubuntu,apt-get,Perl,Ubuntu,Apt Get,这个系统是Ubuntu。在/usr/bin/中有一个perl,它的版本是5.18.2。 在这种状态下,我尝试通过“sudo apt get install**”安装许多软件,结果一切正常 但几天前,我在另一个系统中安装了一个新的perl 目录(/share/Software/perl-5.26.0/bin/perl)。我删除了原来的perl,然后将新的perl链接到/use/bin/。这些命令是: sudo mv /usr/bin/perl /usr/bin/old/; (the old/ di

这个系统是Ubuntu。在/usr/bin/中有一个perl,它的版本是5.18.2。 在这种状态下,我尝试通过“sudo apt get install**”安装许多软件,结果一切正常

但几天前,我在另一个系统中安装了一个新的perl 目录(/share/Software/perl-5.26.0/bin/perl)。我删除了原来的perl,然后将新的perl链接到/use/bin/。这些命令是:

sudo mv /usr/bin/perl /usr/bin/old/; (the old/ directory was make before)
sudo ln -s /share/Software/perl-5.26.0/bin/perl /usr/bin/perl
之后,我通过apt get安装系统软件时得到了错误信息。错误如下所示:

1 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] y
debconf: Perl may be unconfigured (Can't locate Debconf/Log.pm in @INC (you may need to install the Debconf::Log module) (@INC contains: /share/Software/perl-5.26.0/lib/site_perl/5.26.0/x86_64-linux /share/Software/perl-5.26.0/lib/site_perl/5.26.0 /share/Software/perl-5.26.0/lib/5.26.0/x86_64-linux /share/Software/perl-5.26.0/lib/5.26.0) at (eval 1) line 4.
BEGIN failed--compilation aborted at (eval 1) line 4.
) -- aborting
Setting up doc-base (0.10.5) ...
Can't locate Debian/DocBase/Common.pm in @INC (you may need to install the Debian::DocBase::Common module) (@INC contains: /share/Software/perl-5.26.0/lib/site_perl/5.26.0/x86_64-linux /share/Software/perl-5.26.0/lib/site_perl/5.26.0 /share/Software/perl-5.26.0/lib/5.26.0/x86_64-linux /share/Software/perl-5.26.0/lib/5.26.0) at /usr/sbin/install-docs line 8.
BEGIN failed--compilation aborted at /usr/sbin/install-docs line 8.
有些软件可以成功安装,但有些无法安装。 如果我把perl放回前面的版本,它又是正常的了。(那一定是!)

模块“Debconf::Log”位于/share/Software/perl-5.26.0/lib/perl5,但我找不到Debian/DocBase/Common.pm。 /share/Software/perl-5.26.0/lib/perl5的路径位于perl的@INC内。为什么找不到呢

我甚至认为这是安装perl时的问题。我在安装perl时遇到以下错误:(“进行测试”)

在op/gv.t第1191行的无效上下文中无用地使用单引用构造函数。
在../../../../perl.h:5644:0中包含的文件中,
从ExtTest.xs:2:
c:在函数“XS_ExtTest_constant”中:
../../../../embed.h:691:40:警告:此函数中可能未初始化就使用了“pv”[-Wmaybe uninitialized]
#定义sv_setpvn(a,b,c)Perl_sv_setpvn(aTHX_ua,b,c)
^
ExtTest.xs:420:14:注意:这里声明了“pv”
常量字符*pv;
^
在../../../../perl.h:5644:0中包含的文件中,
从ExtTest.xs:2:
../../../../embed.h:691:40:警告:此函数中可能未初始化就使用了“iv”[-Wmaybe uninitialized]
#定义sv_setpvn(a,b,c)Perl_sv_setpvn(aTHX_ua,b,c)
^
ExtTest.xs:418:6:注意:这里声明了“iv”
四,;
^
在../../../../perl.h:5644:0中包含的文件中,
从ExtTest.xs:2:
c:在函数“XS_ExtTest_constant”中:
../../../../embed.h:691:40:警告:此函数中可能未初始化就使用了“pv”[-Wmaybe uninitialized]
#定义sv_setpvn(a,b,c)Perl_sv_setpvn(aTHX_ua,b,c)
^
ExtTest.xs:194:14:注意:这里声明了“pv”
常量字符*pv;
^
在../../../../perl.h:5644:0中包含的文件中,
从ExtTest.xs:2:
c:在函数“XS_ExtTest_constant”中:
../../../embed.h:675:42:警告:此函数中可能未初始化就使用了“iv”[-Wmaybe uninitialized]
#定义sv_setiv_mg(a,b)Perl_sv_setiv_mg(aTHX_a,b)
^
ExtTest.xs:166:6:注意:这里声明了“iv”
四,;
^
#测试“cp更新的mtime”失败
#在t/cp.t第26行。
#     '38'
#=80%)的测试成功。
###您可能需要设置动态库搜索路径,
###LD_LIBRARY_路径,指向生成目录:
###setenv LD_LIBRARY_PATH`pwd`:$LD_LIBRARY_PATH;cd t/perl工具
###LD\u LIBRARY\u PATH=`pwd`:$LD\u LIBRARY\u PATH;导出LD_库_路径;cd t/perl工具
###导出LD\u LIBRARY\u PATH=`pwd`:$LD\u LIBRARY\u PATH;cd t/perl工具
###对于csh样式的壳,如tcsh;还是传统/现代
###Bourne样式的shell,分别像bash、ksh和zsh。
make:**[测试]错误1

每个Perl都使用几个
@INC
目录进行编译,它将在这些目录中搜索模块。错误消息解释了搜索的目录:

@INC contains:
/share/Software/perl-5.26.0/lib/site_perl/5.26.0/x86_64-linux
/share/Software/perl-5.26.0/lib/site_perl/5.26.0
/share/Software/perl-5.26.0/lib/5.26.0/x86_64-linux
/share/Software/perl-5.26.0/lib/5.26.0
这不包括APT安装Perl模块的目录,例如在
/usr/lib

但是,添加这些目录不会有帮助。有些模块是为特定的Perl版本编译的。您不能就地升级Perl,但必须重新安装所有模块。由于APT包含预构建的模块,因此不能将通过APT安装的模块与自定义Perl一起使用


因此:离开Perl系统,因为Ubuntu依赖于它的正常运行。同时安装另一个Perl是安全的,例如通过。可以安全地将自定义Perl添加到路径中,例如通过
perlbrew开关
。这还将修复第二个Perl工作所需的两个附加环境变量。

您遵循了哪些Perl更新说明?您删除了系统Perl?哎哟大约一半的Ubuntu核心实用程序使用Perl。其中一些取决于特定的模块版本。永远不要弄乱系统。如果您在生产环境中需要更新的Perl,请编译它并将其放在其他地方,就像您所做的那样,然后通过shebang或environment让应该使用它的程序知道它。如果您在本地需要,请查看plenv或。我想替换Perl,因为有些程序调用/usr/bin/Perl,但它需要系统路径中未安装的Perl模块。我们的系统是一个计算机集群,我不想在每个注释中安装perl模块。工作量太大了。安装模块的工作量太大了,但是编译一个新的Perl并安装模块是可行的吗?这有点令人惊讶(假设集群是通过集中式配置管理来管理的,则更令人惊讶)。您是如何通过APT或手动安装需要/usr/bin/perl和特定模块的软件的?我还没有使用perlbrew。我应该以后再研究。有没有办法让不同的perl使用相同的模块?@Susie如果您将它们安装在一个公共目录中,那么是的。您还可以查看local::lib并将模块与应用程序一起使用。
@INC contains:
/share/Software/perl-5.26.0/lib/site_perl/5.26.0/x86_64-linux
/share/Software/perl-5.26.0/lib/site_perl/5.26.0
/share/Software/perl-5.26.0/lib/5.26.0/x86_64-linux
/share/Software/perl-5.26.0/lib/5.26.0