2017-09-29 3 views
0

시스템은 우분투입니다./usr/bin /에 perl이 있고 버전은 5.18.2입니다. 이 상태에서 "sudo apt-get install **"으로 많은 소프트웨어를 설치하려고했지만 괜찮습니다."@INC에서 Debconf/Log.pm을 찾을 수 없습니다"라는 이유는 무엇입니까? 방금 설치 한 펄에/usr/bin/perl을 수정했습니다.

며칠 전에 다른 디렉토리 (/share/Software/perl-5.26.0/bin/perl)에 새로운 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에 있지만 데비안/DocBase/Common.pm을 찾을 수 없습니다. /share/Software/perl-5.26.0/lib/perl5의 경로는 perl의 @INC 안에 있습니다. 왜 그것을 찾을 수 없습니까?

펄 설치시 문제라고 생각합니다. 펄 설치할 때 나는 오류가 아래 얻을 : 각각의 펄이이 모듈을 검색합니다 몇 @INC 디렉토리로 컴파일

Useless use of single ref constructor in void context at op/gv.t line 1191. 
In file included from ../../../../perl.h:5644:0, 
       from ExtTest.xs:2: 
ExtTest.c: In function ‘XS_ExtTest_constant’: 
../../../../embed.h:691:40: warning: ‘pv’ may be used uninitialized in this function [-Wmaybe-uninitialized] 
#define sv_setpvn(a,b,c) Perl_sv_setpvn(aTHX_ a,b,c) 
             ^
ExtTest.xs:420:14: note: ‘pv’ was declared here 
    const char *pv; 
      ^
In file included from ../../../../perl.h:5644:0, 
       from ExtTest.xs:2: 
../../../../embed.h:691:40: warning: ‘iv’ may be used uninitialized in this function [-Wmaybe-uninitialized] 
#define sv_setpvn(a,b,c) Perl_sv_setpvn(aTHX_ a,b,c) 
             ^
ExtTest.xs:418:6: note: ‘iv’ was declared here 
    IV iv; 
    ^
In file included from ../../../../perl.h:5644:0, 
       from ExtTest.xs:2: 
ExtTest.c: In function ‘XS_ExtTest_constant’: 
../../../../embed.h:691:40: warning: ‘pv’ may be used uninitialized in this function [-Wmaybe-uninitialized] 
#define sv_setpvn(a,b,c) Perl_sv_setpvn(aTHX_ a,b,c) 
             ^
ExtTest.xs:194:14: note: ‘pv’ was declared here 
    const char *pv; 
      ^
In file included from ../../../../perl.h:5644:0, 
       from ExtTest.xs:2: 
ExtTest.c: In function ‘XS_ExtTest_constant’: 
../../../../embed.h:675:42: warning: ‘iv’ may be used uninitialized in this function [-Wmaybe-uninitialized] 
#define sv_setiv_mg(a,b) Perl_sv_setiv_mg(aTHX_ a,b) 
             ^
ExtTest.xs:166:6: note: ‘iv’ was declared here 
    IV iv; 
    ^
# Failed test 'cp updated mtime' 
# at t/cp.t line 26. 
#  '38' 
#   <= 
#  '1' 
# Looks like you failed 1 test of 1. 
Request to remove file /share/Software/perl-5.26.0-src/cpan/File-Temp/suffixOEXZVr.dat could not be completed since it is not there! 
at t/mktemp.t line 75. 
# parser guessed wrong encoding expected 'CP1252' got 'UTF-8' 

# Failed test 'File 1 atime set correctly' 
# at t/utime.t line 113. 
#  '37.684463262558' 
#   < 
#  '0.1' 
# Failed test 'File 1 mtime set correctly' 
# at t/utime.t line 114. 
#  '37.684463262558' 
#   < 
#  '0.1' 
# Failed test 'File 2 atime set correctly' 
# at t/utime.t line 118. 
#  '37.684463262558' 
#   < 
#  '0.1' 
# Failed test 'File 2 mtime set correctly' 
# at t/utime.t line 119. 
#  '37.684463262558' 
#   < 
#  '0.1' 
# Looks like you failed 4 tests of 18. 
Can't open copy1-87150: Permission denied at ../lib/File/Copy.t line 326. 
# Looks like your test exited with 13 just after 366. 
Failed 3 tests out of 2449, 99.88% okay. 
### Since not all tests were successful, you may want to run some of 
### them individually and examine any diagnostic messages they produce. 
### See the INSTALL document's section on "make test". 
### You have a good chance to get more information by running 
### ./perl harness 
### in the 't' directory since most (>=80%) of the tests succeeded. 
### You may have to set your dynamic library search path, 
### LD_LIBRARY_PATH, to point to the build directory: 
### setenv LD_LIBRARY_PATH `pwd`:$LD_LIBRARY_PATH; cd t; ./perl harness 
### LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; cd t; ./perl harness 
### export LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH; cd t; ./perl harness 
### for csh-style shells, like tcsh; or for traditional/modern 
### Bourne-style shells, like bash, ksh, and zsh, respectively. 
make: *** [test] Error 1 
+1

당신이 따라 다니는 펄 업데이트 지침은 무엇입니까? –

+3

시스템이 Perl에서 제거 되었습니까? 아야. 우분투의 핵심 유틸리티의 절반 정도가 Perl을 사용합니다. 그 중 일부는 특정 모듈 버전에 따라 다릅니다. ** Perl ** 시스템을 사용하지 마십시오. 프로덕션 환경에서 최신 Perl이 필요하면 컴파일 한 다음 다른 곳으로 옮긴 다음,이를 사용하도록 프로그램을 만들어야합니다 (예 : shebang 또는 환경). 로컬로 필요하면 _plenv_ 또는 [_perlbrew_] (https://perlbrew.pl)을보십시오. 하지만 Perl 시스템을 절대로 혼란시키지 마십시오. – simbabque

+0

일부 프로그램은/usr/bin/perl을 호출하기 때문에 perl을 바꾸고 싶지만 시스템 경로에 설치되어 있지 않은 perl 모듈이 필요합니다. 그리고 우리 시스템은 컴퓨터 클러스터입니다. 각 노트에 perl 모듈을 설치하고 싶지는 않습니다. 작업량이 너무 큽니다. – Susie

답변

1

를 ("시험을"). 오류 메시지는 디렉토리가 검색되는 설명 :

@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 디렉토리, 예를 들어,이 포함되어 있지 않습니다 /usr/lib.

그러나 이러한 디렉토리를 추가해도 도움이되지 않습니다. 일부 모듈은 특정 Perl 버전 용으로 컴파일됩니다. Perl을 현재 위치에서 업그레이드 할 수는 없지만 모든 모듈을 다시 설치해야합니다. APT에는 사전 빌드 된 모듈이 들어 있으므로 사용자 정의 Perl로 APT를 통해 설치된 모듈을 사용할 수 없습니다.

따라서 우분투는 적절한 기능에 의존하기 때문에 Perl 시스템을 그대로 두십시오. 다른 Perl을 함께 설치하는 것이 안전합니다. perlbrew을 통해 PATH에 맞춤 Perl을 추가하는 것이 안전합니다 (예 : perlbrew switch을 통해 이것은 또한 두 번째 Perl이 작동하는 데 필요한 몇 가지 추가 환경 변수를 수정합니다.

+0

아직 펄블류를 사용하지 않았습니다. 나는 나중에 그것을 공부해야한다. 서로 다른 perl이 동일한 모듈을 사용하도록하는 방법이 있습니까? – Susie

+0

@Susie 공용 디렉토리에 설치 한 경우 예. local :: lib를보고 응용 프로그램과 함께 모듈을 가져올 수도 있습니다. – simbabque