Peter Dietlein: Module lokal installieren....

Hallo Leute,

eine kurze Frage. Wie kann man Module lokal installieren, das heisst im lokalen Verzeichnis?
Gibt es bei der Verwendung von Makefile.PL Zusatzoptionen wie z.B.:

cd neuesModul
perl Makefile.PL PATHLOCAL=/home/PETER/Lib \  etc.

Vielleicht hat das schon jemand gemacht und kann mir weiterhelfen.
Über ein kurzes Feedback würde ich mich freuen.

Beste Grüße
Peter

  1. Vielleicht um die Anfrage zu päzisieren: Installation der Module in meinem eigenen Homeverzeichnis...vielleicht ist das besser oder verständlicher, denn mein Admin streikt...na ja, nicht ganz,  er weigert sich einfach neue Module zu installieren.

    Ich habe da auch schon was gefunden, leider klappt das nicht bzw. erzeugt ein Link- Error.

    INSTALLING GD IN YOUR HOME DIRECTORY

    IF YOU DON'T HAVE PRIVILEGES TO INSTALL GD.pm in your system's main
    Perl library directory, don't despair.  You can install it into your
    home directory using the following feature of Makefile.PL:

    a.  cd GD-1.18  
    b.  perl Makefile.PL INSTALLDIRS=site \  
    

    INSTALLSITELIB=/home/fred/lib \                              INSTALLSITEARCH=/home/fred/lib/arch
    c.  make
    d.  make install
    p
    You'll now need to modify your GD-using scripts to tell Perl where to
    find GD.  This example assumes that your home directory is at path
    "/home/fred"; change it as appropriate.

    #!/usr/local/bin/perl  
    

    use lib '/home/fred/lib/perl/lib',
             '/home/fred/lib/perl/arch';
            use GD;
    ... etc ...

    vielleicht weiß jemand den finalen Trick.

    Beste Grüße
    Peter

    1. vielleicht weiß jemand den finalen Trick.

      Hm, ich habe gerade zum ersten Mal selbst Perl-Module bei mir installiert (hier bin ich selbst der Admin).

      Schau Dir doch mal den Inhalt des Verzeichnisses "site-perl" auf Deiner Kiste an. Alles, was da drin ist, sind Unterverzeichnisse und *.pm-Dateien.
      Genau das hast Du aber doch bereits nach "make" lokal vorliegen, und zwar im Verzeichnis "blib". Dort greift "make test" zu, um zu prüfen, ob alles funktioniert. Im Prinzip müßtest Du also eigentlich bloß dieses blib-Verzeichnis irgendwohin kopieren.
      Der Trick besteht dann später darin, beim require auf das Zielverzeichnis zuzugreifen; ich würde empfehlen, dazu die Perl-Variable @INC um die Wurzel Deiner lokalen Modulverzeichnisse zu erweitern.

      Schau Dir auch mal das erzeugte Makefile an - das ist alles keine Zauberei. Du kannst auch die dort eingebrannten Verzeichnispfade für die normale Installation durch einen Pfad nach eigenem Wunsch ersetzen und dann normal "make install" machen. Arg viel Anderes als das Kopieren des blib-Verzeichnisses macht "make install" aber gar nicht - außer einen Haufen PODs etc. zu kopieren.

      1. Schau Dir auch mal das erzeugte Makefile an - das ist alles keine Zauberei. Du kannst auch die dort eingebrannten Verzeichnispfade für die normale Installation durch einen Pfad nach eigenem Wunsch ersetzen und dann normal "make install" machen. Arg viel Anderes als das Kopieren des blib-Verzeichnisses macht "make install" aber gar nicht - außer einen Haufen PODs etc. zu kopieren.

        Hallo Michael,
        danke für Deinen Gedankenanstoß. In der Tat liegt der Schlüssel im Makefile. Hier reicht's anscheinend folgende Einträge zu editieren um den Installationspfad auf des eigene Verzeichnis zu lenken.

        PREFIX = /home/eigenesVerzeichnis
        INSTALLDIRS = site
        .
        .
        INSTALLSITELIB = $(PREFIX)/lib
        INSTALLSITEARCH = $(PREFIX)/arch

        danach werden mit make .blib Verzeichnisse erstellt, und mit make install die Installation durchgeführt. Das Herz ist mir ein bißchen in die Hose gerutscht als ich rm /usr/lib/perl5/datei1 - /usr/lib/perl5/datei100 las. Ich hab schon meinen Admin mit einer Pumpgun vor der Tür stehen sehen, aber na, anscheinend scheint alles noch zu funktionieren..., na ja so etwas versetzt mir immer einen zeimlichen Adrenalinkick

        Okay zumindest funktioniert die Prozedur mit so wichtigen Modulen wie LWP.pm etc... , leider ließ sich das GD.pm Modul dann doch nicht installieren, weil beim anlegen einer Bioliothek der C-Compiler eingesetzt werden muß (IMHO), das hat bei mir dann doch nicht geklappt (vielleicht sollte man Lincoln Stein ein E-Mail senden - 'feel free to contact me via e-mail' ;-).

        Also hast luego
        Peter

        1. Das Herz ist mir ein bißchen in die Hose gerutscht als ich rm /usr/lib/perl5/datei1 - /usr/lib/perl5/datei100 las. Ich hab schon meinen Admin mit einer Pumpgun vor der Tür stehen sehen,

          Aber nicht doch. Wenn Dein Admin Dich die perl-Module nicht in /usr/local installieren läßt, dann wird er Dich dort auch nichts löschen lassen.

          leider ließ sich das GD.pm Modul dann doch nicht installieren, weil beim anlegen einer Bioliothek der C-Compiler eingesetzt werden muß (IMHO), das hat bei mir dann doch nicht geklappt.

          Wieso? Ein UNIX-Rechner ohne C-Compiler?

          Andererseits: "Wichtig ist, was hinten rauskommt", also im Prinzip müßtest Du die entsprechende GD.pm aus jeder beliebigen Perl-Installation entnehmen und installieren können - das ist Perl-Quelltext, also ASCII, denke ich doch.
          Also: Notfalls ActivePerl 5.005 (mit Unmengen von Modulen!) auf dem eigenen PC installieren und passende Dateien herausfischen ...