Gast: Probleme beim Installieren eines Moduls

Beitrag lesen

Okay, local::lib ist leider eine Sackgasse. Ich helfe dir, wieder aufzuräumen.

»» Es hat keine weiteren Abhängigkeiten.

Das stimmt wohl nicht ganz, die Abhängigkeiten werden mit Perl mitgeliefert, aber sind auf deinem System zu alt. Mir ist dieser Umstand vorher nicht aufgefallen, weil ich ein modernes Perl habe.

Sieht man hier:

ExtUtils::MakeMaker version 6.31 required--this is only version 6.30_01.
CPAN version 1.8 required--this is only version 1.7602.

Meiner Meinung nach ist es nicht sinnvoll, die Abhängigkeiten zu holen, um sie temporär zu installieren, um local::lib zu installieren, um ein lokales Module-Verzeichnis zu bootstrappen, um WWW::Mechanize zu installieren. Du kennst bestimmt das Lied »Wenn der Topf aber nun ein Loch hat« - so ein elendes Gefrickle will ich dir Neuling nicht zumuten. Gute Lösung am Ende dieses Postings.

Die nächste Frage richte ich mal an die anderen in der Runde:

mkdir /etc/perl: Permission denied at /usr/share/perl/5.8/CPAN.pm line 1252

Offensichtlich ist das CPAN 1.7602 auf 5.8.8, http://cpansearch.perl.org/src/NWCLARK/perl-5.8.8/lib/CPAN.pm. Wenn man sich mal Zeile 1252 und davor anschaut, wird der Config-Pfad relativ zum Standort von CPAN.pm gesetzt. Wie kommt /etc/perl beim Johnny zustande, wo doch das Modul in /usr/share/... liegt?

Außerdem etwas in cgi-bin.

Aus sicherheitstechnischen Gründen ist es eine ganz schlechte Idee, Perlmodule in cgi-bin zu installieren. Lösche alles außer deinen wirklichen CGI-Programmen.

echo 'eval $(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib)' >>~/.bashrc
"echo" heißt doch, daß eine Ausgabe erfolgen sollte, oder nicht? Wenn ich die Zeile so eingebe wie oben, passiert weiter nichts.

leitet die Ausgabe um und hängt sie an besagte Datei an. Schau rein, lösche die letzten paar Befehle raus, die so anfangen:

export MODULEBUILDRC=
  export PERL_MM_OPT=
  export PERL5LIB=
  export PATH=

Lösche auch das Verzeichnis ~/perl5. Damit bist du wieder sauber und die Veränderungen von local::lib sind rückgängig gemacht.

»» Du solltest mal deine CPAN-Shell-Konfiguration bereinigen. Schau in ~/.cpan/CPAN/MyConfig.pm, es gibt auch noch andere Orte abhängig vom Vendor, wo sie sein könnte.
--- es gibt bei mir kein Verzeichnis ~/.cpan/CPAN?!??

Wie gesagt kann sie woanders sein. Ich habe auch gesehen, ein alternativer Dateiname ist »Config.pm«. Der Befehl »locate« zum Aufspüren von Dateien ist das angebrachte Werkzeug.

Aber egal. Mein Vorschlag für dich ist, dein eigenes Perl in deinem Homeverzeichnis zu installieren. Die Vorteile liegen auf der Hand:
* Du kriegst moderne Software aus dem Jahr 2008, nicht 2006. Standardmodule liegen in halbwegs neuer Version vor, und sind auch leichter upzugraden.
* Du musst dich nie mehr mit PERL5LIB, PREFIX, INSTALL_BASE und deren Konfiguration in der CPAN-Shell ärgern, du musst nie 'use lib ...' benutzen. Wenn du zusätzliche Module installierst, gelangen sie in Pfade, die bereits in @INC sind.

Live-Hilfe erhältst du auf irc.perl.org im Kanal #perlde.

So geht's in aller Schnelle: http://www.cpan.org/src/perl-5.10.0.tar.gz runterladen und auspacken, in der Datei INSTALL den Abschnitt »Installation prefix« lesen.

sh Configure -Dprefix=$HOME/local -des
    make
    make test
    make install

Das Ergebnis davon ist, dass du $HOME/local/bin, $HOME/local/lib usw. bekommst. Nimm $HOME/local/bin in deinen PATH auf, und zukünftig fangen deine Programme mit dem Shebang »#!/home/benutzer/local/bin/perl« an. Ich glaube nämlich, wenn Perl auf deiner Kiste schon so alt ist, wirst du noch andere Software lokal in deinem Verzeichnis installieren wollen, um an moderne Versionen zu gelangen. Enorm viele Sachen basieren auf GNU autoconf, erkennbar am Schema zum Installieren:
    ./configure
    make
    make install
Gib in diesem Falle
    ./configure --prefix=$HOME/local
an, und zusätzliche Software fügt sich nett in dieses Gebilde ein.