2017-09-29 1 views
0

Das System ist Ubuntu. Es gibt ein Perl in/usr/bin/und die Version ist 5.18.2. In diesem Zustand habe ich versucht, viele Software von "sudo apt-get install **" zu installieren und es war OK.Warum kann "Debconf/Log.pm in @INC" nicht gefunden werden? Ich habe gerade/usr/bin/perl in das Perl geändert, das ich installiert habe

Aber ein paar Tage zuvor installierte ich eine neue Perl in einem anderen Verzeichnis (/share/Software/perl-5.26.0/bin/perl). Und ich entferne das ursprüngliche Perl und verknüpfe dann das neue Perl mit/use/bin /. Die folgenden Befehle sind:

Danach habe ich die Fehlerinformationen erhalten, wenn ich Systemsoftware von apt-get installiere. Der Fehler mag unten:

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. 

Einige Software kann erfolgreich installiert werden, aber einige können nicht sein. Wenn ich Perl zum vorherigen zurücksetze, ist es wieder normal. (Das muss sein!)

Modul "Debconf :: Log" befindet sich unter /share/Software/perl-5.26.0/lib/perl5, aber ich kann Debian/DocBase/Common.pm nicht finden. Pfad von /share/Software/perl-5.26.0/lib/perl5 ist in @INC von Perl. Warum kann es es nicht finden?

Ich denke sogar, dass es das Problem ist, wenn Perl installiert ist. Ich erhalte unten Fehlermeldung, wenn Perl installiert ist: („make test“)

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

Welche Anweisungen für Perl Update sind Sie gefolgt? –

+3

Sie _removed_ Ihr System Perl? Autsch. Ungefähr die Hälfte der Kerndienstprogramme von Ubuntu verwenden diesen Perl. Einige davon hängen von bestimmten Modulversionen ab. ** Verwechseln Sie niemals das System Perl **. Wenn Sie in einer Produktionsumgebung ein neueres Perl benötigen, kompilieren Sie es und legen Sie es woanders hin, wie Sie es getan haben, und machen Sie dann das Programm, das es verwenden sollte, entweder über Shebang oder Umgebung. Wenn Sie es lokal benötigen, schauen Sie in _plenv_ oder [_perlbrew_] (https://perlbrew.pl) nach. Aber verpiss dich nie mit dem System Perl. – simbabque

+0

Ich möchte die Perl ersetzen, weil einige Programm aufrufen/usr/bin/perl, aber es braucht Perl-Modul, das nicht im Systempfad installiert ist. Und unser System ist ein Computer-Cluster, ich möchte kein Perl-Modul in jeder Notiz installieren. Die Arbeitsbelastung ist zu groß. – Susie

Antwort

1

Jedes Perl mit einigen @INC Verzeichnisse erstellt wird, wo es für die Module suchen. Die Fehlermeldung erläutert, welche Verzeichnisse durchsucht werden:

@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 

Dies beinhaltet nicht die Verzeichnisse, in denen APT Module für Perl installiert hat, z. unter /usr/lib.

Allerdings wird das Hinzufügen dieser Verzeichnisse nicht helfen. Einige Module sind für eine bestimmte Perl-Version kompiliert. Sie können Perl nicht direkt aktualisieren, sondern müssen alle Module neu installieren. Da APT vordefinierte Module enthält, können Sie Module, die über APT installiert sind, nicht mit einem benutzerdefinierten Perl verwenden.

Deshalb: verlassen Sie das System Perl, weil Ubuntu von seiner ordnungsgemäßen Funktion abhängt. Es ist sicher, ein anderes Perl neben, z. über perlbrew. Es ist sicher, Ihrem PATH ein benutzerdefiniertes Perl hinzuzufügen, z. über perlbrew switch. Dies wird auch ein paar zusätzliche Umgebungsvariablen beheben, die für ein zweites Perl benötigt werden.

+0

Ich habe Perlbrew noch nicht benutzt. Ich sollte es später studieren. Gibt es eine Möglichkeit, verschiedene Perls das gleiche Modul zu verwenden? – Susie

+0

@Susie, wenn Sie sie in einem gemeinsamen Verzeichnis installieren, dann ja. Sie können auch auf local :: lib schauen und das Modul mit Ihrer Anwendung bringen. – simbabque

Verwandte Themen