[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Perl-Modul von CPAN installieren



Selber kompilieren und ein Debian Paket bauen kannst du machen, wenn du aber öfters updatest und viele Module installierst/updatest würde ich den weg nicht empfehlen. Unabhängig davon würdest du so oder so Debian Packete mit dieser Methode ersetzen und es könnte sein das andere Programme nicht mehr laufen oder es zu Problemen kommt.

Wenn dann würde ich Module komplett vom System getrennt installieren. Dafür hast du ja schon local::lib genannt. local::lib erlaubt es dir Grundsätzlich auch das du Perl Module Problemlos als Nutzer installieren kannst. Dadurch das es vom System volkommen getrennt ist gibt es auch keine Konflikte mit Systemmodulen oder Programme, und nur deine selbst geschriebenen Programme nutzen deine neu installierten Bibliotheken.

Das was Dirk Deimeke geschrieben hat musst du ansonsten nicht machen. Den das ist letztendlich genau das was local::lib macht, nur in kompliziert (da du alles selber machen musst).

Wenn du deine Module allerdings nutzen möchtest musst du lediglich "local::lib" einbinden. Du musst nicht den Pfad explizit nochmal Includen. Daher ein

> perl -Mlocal::lib -wle 'print "Hallo\n"'

reicht aus. Und in deinem Programmen einfach entsprechend ein "use local::lib" hinzufügen. Das war es.

Eine weitere alternative ist wenn du "perlbrew" nutzt. Das erlaubt es dir gleich eine vollständige Perl Installation getrennt vom System aufzusetzen.

So kannst du damit ohne weiteres mehrere verschiedene Perl Versionen installieren die dann im $HOME Verzeichnis abgelegt werden. Du kannst dann ebenfalls zwischen diesen Versionen wechseln und jede Perl version hat seine vollständig eigene Bibliothek.

Bei letzteres sollte man dann "#!/usr/bin/env perl" als Pfad nutzen, das dann immer das Perl nutzt was zuerst in $PATH gefunden wird, und perlbrew managed dann deinen Pfad. Deswegen sollte man eigentlich Grundsätzlich den angegebenen Pfad nutzen für alles was man selber schreibt und nicht teil einer Distribution sein soll, da es deutlich flexibler ist.

Ob du nun local::lib oder perlbrew nutzt musst du selber entscheiden. perlbrew macht es dir einfach neue Perl Versionen generell zu installieren und auch zwischen diesen zu wechseln. Jede perl version hat sein eigenes Set an Bibliotheken.

Bei local::lib kannst du eigene Module in dein Home verzeichnis installieren die dann bevorzugt zu deinem System Modulen genutzt werden. Jedoch wird weiterhin dein System-Perl genutzt. Und wenn du ein Perl Modul im System installierst ist es auch ersteinmal verfügbar mit local::lib wodurch du nicht jedes Perl Modul selber kompilieren musst, sondern es nur dort machen musst wo du es unbedingt benötigst.

Ein "richtig" gibt es so nicht. Es sind zwei Alternativen mit ihren eigenen Vor und Nachteilen die du selber abwägen musst was für dich wichtig ist. Aber eine von beiden würde ich nutzen. Mit beiden Modulen wirst du nichts aus deinem System ersetzen und kannst auch einfach alles wieder deinstallieren indem du einfach das Verzeichnis in deinem $HOME löschst.

Selbst gebaute Debian Pakete sehe ich hier eher als die schlechtere wahl an. Es ersetzt ja wirklich die Module/Bibliotheken in deinem System, ist schlechter zu deinstallieren und kann Probleme mit könnte probleme mit Programmen in deinem System verursachen. Und letztendlich ist es auch noch Zeitintensiver ständig noch zusätzlich die Debian Pakete zu bauen.

Von daher local::lib oder perlbrew sind die empfohlende wege mit dennen du Parallel zum System etwas installieren kannst und nicht dein System abändert. Gilt übrigens auch für andere Linux-Systeme so, nicht nur Debian.

http://search.cpan.org/perldoc?App%3A%3Aperlbrew

On 01/16/2013 09:55 PM, Paul Muster wrote:
Hallo,

ich benötige ein Perl-Modul, dessen Version in Wheezy und Sid zu alt ist.

Sehe ich das richtig, dass ich

1) erstmal mit # apt-get install dh-make-perl installiere

und dann

2) den Perl-Code von CPAN mit

    $ dh-make-perl --build --cpan ...

    zu einem Debian-Paket mache?

Dann könnte ich

3) das Paket mit

    # dpkg -i ...deb

    installieren. Es landet in /usr/share/perl5/, also systemweit


Wie macht man es sauber, wenn man plant, an dem Perl-Code
herumzuschrauben? Also den Code eigentlich irgendwo im ~ bräuchte, um
daran herumzuschrauben. Installiert man liblocal-lib-perl und arbeitet
dann mit

    perl -I~/perl5 -Mlocal::lib
    (Neue Shell öffnen, damit die Umgebungsvariablen[1] greifen)
    cpan<Modul>

weiter? Bei mir landete das Modul dann in ~/perl5/lib/perl5/

Ist das der richtige Weg unter Debian?


Danke&  viele Grüße

Paul


[1] bei mir:
export PERL_LOCAL_LIB_ROOT="/home/paul/perl5";
export PERL_MB_OPT="--install_base /home/paul/perl5";
export PERL_MM_OPT="INSTALL_BASE=/home/paul/perl5";
export
PERL5LIB="/home/paul/perl5/lib/perl5/i486-linux-gnu-thread-multi-64int:/home/paul/perl5/lib/perl5";
export PATH="/home/paul/perl5/bin:$PATH";





Reply to: