Schrift
[thread]13018[/thread]

Cannot do `initialize' in Term::ReadLine::Gnu

Leser: 2


<< |< 1 2 >| >> 14 Einträge, 2 Seiten
leo11
 2009-01-17 18:39
#118128 #118128
User since
2008-08-14
250 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich möchte die CPAN-Shell benutzen um Module zu installieren. Beim Aufruf gab es folgenden Fehler.

Code: (dl )
1
2
$ perl -MCPAN -e 'shell'
Cannot do `initialize' in Term::ReadLine::Gnu at /usr/lib/perl5/5.8.8/CPAN.pm line 105


Die bisher ergoogelten Seiten haben nicht so recht weitergeholfen... .
Die Datei /usr/lib/perl5/5.8.8/CPAN.pm ist da. In Zeile 105 steht:
$term = Term::ReadLine->new('CPAN Monitor');

/usr/lib/perl5/5.8.8/Term/ReadLine.pm ist auch da.

Habt ihr einen Tipp?

Viele Grüße,
leo11
GwenDragon
 2009-01-17 18:44
#118129 #118129
User since
2005-01-17
14748 Artikel
Admin1
[Homepage]
user image
leo11
 2009-01-17 20:08
#118131 #118131
User since
2008-08-14
250 Artikel
BenutzerIn
[default_avatar]
GNU Readline 5.1-beta1

Falls das auch relevant ist:
perl -MTerm::ReadLine -e 'print Term::ReadLine->VERSION'
1.02
leo11
 2009-01-18 10:17
#118134 #118134
User since
2008-08-14
250 Artikel
BenutzerIn
[default_avatar]
Da ich gelesen habe, dass der Debugger auch das Readline-Modul benutzt, habe ich ihn auch probiert:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$ perl -d test.pl

Loading DB routines from perl5db.pl version 1.28
Editor support available.

Enter h or `h h' for help, or `man perldebug' for more help.

main::(test.pl:7): print qq(hello\n);
Cannot do `initialize' in Term::ReadLine::Gnu at /usr/lib/perl5/5.8.8/perl5db.pl line 6029
at /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/Term/ReadLine/Gnu.pm line 693
Term::ReadLine::Gnu::AU::AUTOLOAD('Term::ReadLine=HASH(0x8d3e60c)') called at /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/Term/ReadLine/Gnu.pm line 226
Term::ReadLine::Gnu::new('Term::ReadLine', 'perldb', 'GLOB(0x8b57990)', 'GLOB(0x8aa8fd4)') called at /usr/lib/perl5/5.8.8/perl5db.pl line 6029
DB::setterm called at /usr/lib/perl5/5.8.8/perl5db.pl line 2203
DB::DB called at test.pl line 7
Cannot do `initialize' in Term::ReadLine::Gnu at /usr/lib/perl5/5.8.8/perl5db.pl line 6029
END failed--call queue aborted at test.pl line 269.
at test.pl line 269
Config::DESTROY(/usr/lib/perl5/5.8.8/i386-linux-thread-multi/Config.pm:63):
63: sub DESTROY { }
IO::Handle::DESTROY(/usr/lib/perl5/5.8.8/i386-linux-thread-multi/IO/Handle.pm:328):
328: sub DESTROY {}


Was bedeutet die Meldung? Für Tipps wär ich sehr dankbar.

VG
leo11
murphy
 2009-01-18 23:19
#118148 #118148
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
@leo11: Die Meldung bedeutet wohl, dass die Subroutine Term::ReadLine::Gnu::initialize nicht existiert und auch ein AUTOLOAD Handler nicht in der Lage war sie zu synthetisieren. Woran das im Endeffekt liegt, weiss ich auch nicht. Es klingt ein wenig nach XS-Problemen, aber da kann ich auch falsch liegen.

Ich wuerde versuchen das Modul Term::ReadLine::Gnu neu zu installieren. Wenn das nicht funktioniert gibt es auch noch Alternativen, zum Beispiel Term::ReadLine::Perl. Wenn alles nix hilft, oder als schnelle Notloesung, kannst Du die Umgebungsvariable PERL_RL auf einen leeren String setzen, bevor Du die Anwendung, die Term::ReadLine verwendet, startest, dann sollte das Modul eine minimale, in purem Perl geschriebene, Version der Readlinefunktionen laden.
When C++ is your hammer, every problem looks like your thumb.
leo11
 2009-01-19 01:49
#118150 #118150
User since
2008-08-14
250 Artikel
BenutzerIn
[default_avatar]
@murphy
Ich habe versucht Term::ReadLine::Gnu per Makefile.. zu installieren, was auf Fehler lief. Dann habe ich versucht die CPAN-Shell wieder nutzen zu können und export PERL_RL="" gesetzt. Die ursprüngliche Fehlermeldung blieb.

Dann habe ich
export "PERL_RL=Perl o=0"
gesetzt und ich konnte plötzlich wieder mit der CPAN-Shell arbeiten. (-: Was bedeutet eigentlich PERL_RL=Perl o=0?. Ich hab das aus der CPAN Doku für Term::ReadLine. (-:

Als nächstes:
cpan[9]> install Term::ReadLine::Gnu
Term::ReadLine::Gnu is up to date (1.17).

D.h. es wurde nichts neu installiert. perl -d skriptname.pl oder perl -MCPAN -e shell zeigt in einer shell ohne export "PERL_RL=Perl o=0" nach wie vor die Fehlermeldung.

Dann habe ich das Modul CPAN mal neu installiert, danach auch das BUNDLE::CPAN, dass auch Term::ReadLine::Perl enthält (Term::ReadLine::Perl is up to date (1.0302)), trotzdem kommt nach wie vor die Meldung.. .

Für weitere Tipps wär ich sehr dankbar. Für mich ist das alles neu, arbeite mich aber gern ein.
murphy
 2009-01-19 02:54
#118151 #118151
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
@leo11: PERL_RL=Perl o=0 bedeutet, dass das Term::ReadLine Modul das Backend Term::ReadLine::Perl verwenden soll und dass das Backend keine Ornamente bei der Anzeige der Prompts verwenden soll, was auch immer das bedeuten mag -- vermutlich heisst es, dass weniger ausgefallene ANSI-Escapesequenzen verwendet werden.

Ansonsten habe ich keine Ahnung, was genau bei Deiner Installation nicht funktioniert und kann Dir im Moment nicht weiterhelfen. Vielleicht wuerde es uns naeher an die Loesung bringen, wenn Du die Ausgabe des fehlgeschlagenen manuellen Kompilationsversuches posten wuerdest.
When C++ is your hammer, every problem looks like your thumb.
leo11
 2009-01-19 08:35
#118152 #118152
User since
2008-08-14
250 Artikel
BenutzerIn
[default_avatar]
@murphy
Hier die einzelnen Schritte des manuellen Installationsversuchs samt Ausgabe:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
$perl Makefile.PL
Found `/usr/lib/libtermcap.a'.
gcc -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -DHAVE_STRING_H rlver.c -o rlver -L/usr/local/lib -lreadline -ltermcap
It seems that you have the GNU Readline Library version 5.1.
Checking if your kit is complete...
Warning: the following files are missing in your kit:
INSTALL
MANIFEST
README
t/comptest/README
Please inform the author.
Writing Makefile for Term::ReadLine::Gnu

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$ make
cp Gnu.pm blib/lib/Term/ReadLine/Gnu.pm
cp Gnu/XS.pm blib/lib/Term/ReadLine/Gnu/XS.pm
AutoSplitting blib/lib/Term/ReadLine/Gnu/XS.pm (blib/lib/auto/Term/ReadLine/Gnu/XS)
/usr/bin/perl /usr/lib/perl5/5.8.8/ExtUtils/xsubpp -typemap /usr/lib/perl5/5.8.8/ExtUtils/typemap -typemap typemap Gnu.xs > Gnu.xsc && mv Gnu.xsc Gnu.c
gcc -c -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -DVERSION=\"1.17\" -DXS_VERSION=\"1.17\" -fPIC "-I/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE" -DHAVE_STRING_H Gnu.c
In file included from Gnu.xs:19:
ppport.h:43:38: warning: "/*" within comment
Running Mkbootstrap for Term::ReadLine::Gnu ()
chmod 644 Gnu.bs
rm -f blib/arch/auto/Term/ReadLine/Gnu/Gnu.so
LD_RUN_PATH="/usr/lib:/lib" gcc -shared -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -L/usr/local/lib Gnu.o -o blib/arch/auto/Term/ReadLine/Gnu/Gnu.so \
-lreadline -ltermcap \

chmod 755 blib/arch/auto/Term/ReadLine/Gnu/Gnu.so
cp Gnu.bs blib/arch/auto/Term/ReadLine/Gnu/Gnu.bs
chmod 644 blib/arch/auto/Term/ReadLine/Gnu/Gnu.bs
Manifying blib/man3/Term::ReadLine::Gnu.3pm
Can't open blib/man3/Term::ReadLine::Gnu.3pm for writing: Invalid argument
at /usr/lib/perl5/5.8.8/ExtUtils/Command/MM.pm line 132
make: *** [manifypods] Error 22
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ make test
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/callback....ok
t/history.....ok
t/readline.... Failed 3/104 subtests

Test Summary Report
-------------------
t/readline (Wstat: 0 Tests: 104 Failed: 3)
Failed tests: 85-86, 93
Files=3, Tests=193, 0 wallclock secs ( 0.07 usr 0.01 sys + 0.16 cusr 0.03 csys = 0.27 CPU)
Result: FAIL
Failed 1/3 test programs. 3/193 subtests failed.
make: *** [test_dynamic] Error 255
Code: (dl )
1
2
3
4
5
# make install
Manifying blib/man3/Term::ReadLine::Gnu.3pm
Can't open blib/man3/Term::ReadLine::Gnu.3pm for writing: Invalid argument
at /usr/lib/perl5/5.8.8/ExtUtils/Command/MM.pm line 132
make: *** [manifypods] Error 22

Ich nehme an, dass die Files die in der Ausgabe von perl Makefile.pl als vermisst angezeigt werden sind die, die nach dem Enpacken des CPAN-Moduls in dem Ordner liegen. Dort liegt aber ein install, readme.. . Zwar klein geschrieben, aber alle 4 Dateien sind da. Ich hab sie zuvor auch mal umbenannt, sprich groß geschrieben, aber die Fehlerausgabe ist die gleiche.
murphy
 2009-01-19 20:40
#118163 #118163
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
@leo11: Das sieht eigentlich so aus, als ob die Kompilation im Grossen und Ganzen funktionieren wuerde. Das Fehlen irgendwelcher README-Dateien und Manpages sollte nicht kritisch fuer die korrekte Funktion des Moduls sein.

Dass die Tests nicht fehlerfrei durchlaufen ist schon weniger guenstig -- aber es sind immerhin "nur" drei fehlgeschlagene Tests von einer ganzen Menge mehr, also ist das Testprogramm wohl zumindest in der Lage die Bibliothek zu laden.

Ich vermute ja mal, das Hauptproblem ist dass make install einfach zu frueh abbricht, weil es die Manpage, die es installieren will, nicht findet und nicht erzeugen kann. Hinterher liegt dann wahrscheinlich im Perlbibliotheksverzeichnis eine halbe Installation herum, die nicht ordentlich funktioniert.

Vielleicht hilft's ja, wenn Du einfach mal mit touch die fehlende Datei erzeugst und dann wieder make install ausfuehrst.
When C++ is your hammer, every problem looks like your thumb.
leo11
 2009-01-19 22:59
#118164 #118164
User since
2008-08-14
250 Artikel
BenutzerIn
[default_avatar]
@murphy
Nochmals danke für deine Tipps!
---
In dem Ordner in dem ich das tgz entpackt habe, habe ich folgendes gemacht:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
cd  blib/man3/ 
touch Term::ReadLine::Gnu.3pm
touch: setting times of `Term::ReadLine::Gnu.3pm': No such file or directory
cd ..
ll
...
drwxr-xr-x 2 leo leo 4096 Jan 19 21:31 man3
..
chown root:root man3
chown: changing ownership of `man3': Operation not permitted

Mir fällt auf, dass man keinerlei Rechte verändern kann. Außerdem ist die Uhrzeit der Ordner man1 und man3 die des letzten make install Versuchs.
Code: (dl )
1
2
# locate Term::ReadLine::Gnu.3pm
/usr/share/man/man3/Term::ReadLine::Gnu.3pm

Die Datei manuel in den anderen Ordner kopieren geht mangels Schreibrechten auch nicht.

Dann habe ich nochmal etwas ganz anderes probiert:
Weil mir die CPAN-Shell folgendes anzeigt
cpan[3]> install Term::ReadLine::Gnu
Term::ReadLine::Gnu is up to date (1.17).
habe ich in der Datei Gnu.pm die Variable $VERSION auf 1.16 gesetzt, und erneut install probiert. Leider bleibt die Meldung dieselbe. )-:

Der Weg zum Linux Guru ist lang.
<< |< 1 2 >| >> 14 Einträge, 2 Seiten



View all threads created 2009-01-17 18:39.