6 Stimmen

CPAN gibt alle Arten von Fehlern auf Ubuntu

Ich versuche gerade, ein einfaches Perl-Programm auszuführen, um Daten aus xml zu importieren und sie in eine Datenbank zu exportieren.

Use Mysql; hat nicht funktioniert, also habe ich stattdessen DBD::mysql verwendet, nachdem ich Mysql.pm nicht von cpan bekommen konnte.

Ich kann jedoch nichts installieren. Ich versuche, xml-Parser-Modul zu installieren, aber cpan gibt diese Fehler, egal welches Modul Sie versuchen, zu installieren.

install xml::parser
CPAN: Storable loaded ok (v2.20)
Going to read '/root/.cpan/sources/authors/01mailrc.txt.gz'
CPAN: Compress::Zlib loaded ok (v2.02)
............................................................................DONE
Going to read '/root/.cpan/sources/modules/02packages.details.txt.gz'
Warning: Your /root/.cpan/sources/modules/02packages.details.txt.gz does not contain a Line-Count header.
Please check the validity of the index file by comparing it to more
than one CPAN mirror. I'll continue but problems seem likely to
happen.
CPAN: Time::HiRes loaded ok (v1.9719)
Warning: Your /root/.cpan/sources/modules/02packages.details.txt.gz does not contain a Last-Updated header.
Please check the validity of the index file by comparing it to more
than one CPAN mirror. I'll continue but problems seem likely to
happen.
DONE
Going to read '/root/.cpan/sources/modules/03modlist.data.gz'
Catching error: "Can't locate object method \"data\" via package \"CPAN::Modulelist\" (perhaps you forgot to load \"CPAN::Modulelist\"?) at (eval 29) line 1.\cJ at /usr/share/perl/5.10/CPAN/Index.pm line 518\cJ\cICPAN::Index::rd_modlist('CPAN::Index', '/root/.cpan/sources/modules/03modlist.data.gz') called at /usr/share/perl/5.10/CPAN/Index.pm line 85\cJ\cICPAN::Index::reload('CPAN::Index') called at /usr/share/perl/5.10/CPAN.pm line 955\cJ\cICPAN::exists('CPAN=HASH(0xa225610)', 'CPAN::Module', 'xml::parser') called at /usr/share/perl/5.10/CPAN/Shell.pm line 1243\cJ\cICPAN::Shell::expandany('CPAN::Shell', 'xml::parser') called at /usr/share/perl/5.10/CPAN/Shell.pm line 1639\cJ\cICPAN::Shell::rematein('CPAN::Shell', 'install', 'xml::parser') called at /usr/share/perl/5.10/CPAN/Shell.pm line 1935\cJ\cICPAN::Shell::__ANON__('CPAN::Shell', 'xml::parser') called at /usr/share/perl/5.10/CPAN.pm line 375\cJ\cIeval {...} called at /usr/share/perl/5.10/CPAN.pm line 372\cJ\cICPAN::shell() called at /usr/bin/cpan line 198\cJ" at /usr/share/perl/5.10/CPAN.pm line 391
    CPAN::shell() called at /usr/bin/cpan line 198
Going to read '/root/.cpan/sources/authors/01mailrc.txt.gz'
............................................................................DONE
Going to read '/root/.cpan/sources/modules/02packages.details.txt.gz'
Warning: Your /root/.cpan/sources/modules/02packages.details.txt.gz does not contain a Line-Count header.
Please check the validity of the index file by comparing it to more
than one CPAN mirror. I'll continue but problems seem likely to
happen.
Warning: Your /root/.cpan/sources/modules/02packages.details.txt.gz does not contain a Last-Updated header.
Please check the validity of the index file by comparing it to more
than one CPAN mirror. I'll continue but problems seem likely to
happen.
cpanDONE
Going to read '/root/.cpan/sources/modules/03modlist.data.gz'
No history written (no histfile specified).
Lockfile removed.
Can't locate object method "data" via package "CPAN::Modulelist" (perhaps you forgot to load "CPAN::Modulelist"?) at (eval 31) line 1.
 at /usr/share/perl/5.10/CPAN/Index.pm line 518
    CPAN::Index::rd_modlist('CPAN::Index', '/root/.cpan/sources/modules/03modlist.data.gz') called at /usr/share/perl/5.10/CPAN/Index.pm line 85
    CPAN::Index::reload('CPAN::Index') called at /usr/share/perl/5.10/CPAN.pm line 692
    CPAN::all_objects('CPAN=HASH(0xa225610)', 'CPAN::Distribution') called at /usr/share/perl/5.10/CPAN/Shell.pm line 1046
    CPAN::Shell::failed('CPAN::Shell', 2, 1) called at /usr/share/perl/5.10/CPAN.pm line 413
    eval {...} called at /usr/share/perl/5.10/CPAN.pm line 413
  CPAN::shell() called at /usr/bin/cpan line 198

Mache ich etwas falsch? Ich habe versucht, nach diesen Fehlern zu suchen, aber niemand hat eine richtige Lösung. Gibt es eine Einstellung in der Konfiguration, die ich ändern sollte?

0 Stimmen

Wenn Sie Perl als System installieren, müssen Sie cpan unter sudo ausführen. Dieses Problem verschwindet, wenn Sie ein perlbrew Perl einrichten und Ihre Module in Ihr lokales Perl installieren.

1 Stimmen

Versuchen Sie zu entfernen /root/.cpan/sources/modules/02packages.details.txt.gz die beschädigt zu sein scheint, und versuchen Sie es erneut. Wenn auch das nicht funktioniert, würde ich den Rat von Arjuna Del Toso unten befolgen.

2 Stimmen

@DavidO: nein, man muss nur in der CPAN-Konfiguration sudo in mbuild_install_build_command und make_install_make_command einfügen. Aber es sieht so aus, als ob er bereits als Root läuft.

17voto

Arjuna Del Toso Punkte 559

Wenn niemand eine Antwort für Ihr spezielles Problem hat, würde ich es wahrscheinlich einfach mit einem neuen cpan versuchen, etwa so:

cd && mv .cpan .cpan-bak

und versuchen Sie dann, das Modul erneut zu installieren.

Ich hoffe, das hilft.

4voto

Flow Punkte 35

Ich hatte ein ähnliches Problem.

Situation:

Ich versuche, Catalyst::Plugin::AutoCRUD zu installieren.

verwendete Perl-Version: perlbrew-5.14.2

Lösung:

Das Problem war das sudo, das ich dem cpan install-Befehl so vorangestellt habe:

HAT NICHT GEKLAPPT:

sudo cpan Catalyst::Plugin::AutoCRUD

WERKEN:

chown -R myusername:myusergroup ~/.cpan
cpan Catalyst::Plugin::AutoCRUD

Grund: da ich perlbrew + cpan unter meinem Benutzerkonto, NICHT als Root, installiert habe, müssen alle nachfolgenden cpan-Modul-Installationen mit demselben Benutzer durchgeführt werden.

3voto

Bopper Punkte 31

Ich hatte das gleiche Problem, als meine Verbindung zur Perl-Site abbrach. Die /root/.cpan/sources/modules/02packages.details.txt.gz enthielt nur die Information, dass das Netz eine Zeitüberschreitung hatte, und die /root/.cpan/sources/modules/03modlist.data.gz war auch Schrott.

Indem ich nur diese Dateien entfernte und es erneut versuchte, als das Netzwerk weniger ausgelastet war, wurden die Dateien korrekt abgerufen und alles funktionierte wieder.

2voto

Damian Green Punkte 613

Überprüfen Sie, ob Ihre Version von "cpan" (Ihrem Installationsprogramm) mit Ihrer "perl"-Version übereinstimmt...

Überprüfen Sie dies, indem Sie es tun: cpan --version et perl -v

Ich stieß auf denselben Fehler, als ich versuchte, ein anderes Modul zu installieren, und es stellte sich heraus, dass die Version von "cpan", die ich benutzte, als Teil des 5.8.8-Perl-Pakets kompiliert wurde, aber die Version von "perl", die hier bei der Arbeit als Standard eingestellt ist, ist Version 5.8.5, also kompilierte cpan den C-Code mit Verweisen auf die falsche 5.8.8-Perl-Basisbibliothek, die nicht kompatibel war, wenn sie von der 5.8.5-Perl-Basis implementiert wurde.

Die einfache Lösung war, das richtige "cpan"-Programm mit dem vollständigen Pfad " /usr/.../perl/5.8.5/bin/cpan modul_name ".

Diese kleine Ungereimtheit, dass verschiedene Binärdateien von verschiedenen Paketversionen standardmäßig zur Verfügung stehen, ist ein Versehen unserer Administratoren und hat wirklich viel Ärger verursacht.

1voto

ppal Punkte 21

Um dieses Problem zu lösen, musste ich cpanm auf Centos7 installieren.

Schritte:

yum install perl-devel
yum install perl-CPAN
curl -L http://cpanmin.us | perl - --sudo App::cpanminus

Lokale Mülltonne hinzufügen ( /usr/local/bin ) an PATH verwenden:

PATH=$PATH:/usr/local/bin

Links

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X