POD2::DE::local::lib(3pm) - phpMan

Command: man perldoc info search(apropos)  


POD2::DE::local::lib(3)        User Contributed Perl Documentation        POD2::DE::local::lib(3)



NAME
       local::lib~[de] - Erschaffen und benutzen von Perl Modulen in einem lokalen lib/
       Verzeichnis mit PERL5LIB

SYNOPSIS
       Im Code -

         use local::lib; # Benutzt das Verzeichnis ~/perl5 zum anlegen des lokalen lib/ Verzeichnisses

         use local::lib '~/foo'; # das selbe, aber mit ~/foo

         # Oder...
         use FindBin;
         use local::lib "$FindBin::Bin/../support";  # Applikationsspezifische Sammlung von Modulen

       Von der Shell -

         # Installiert LWP und alle notwendigen Abhaengigkeiten in das '~/perl5' Verzeichnis
         perl -MCPAN -Mlocal::lib -e 'CPAN::install(LWP)'

         # Gibt die Shell Kommandos aus um die Umgebung vorzubereiten
         $ perl -Mlocal::lib
         export PERL_MB_OPT='--install_base /home/username/perl5'
         export PERL_MM_OPT='INSTALL_BASE=/home/username/perl5'
         export PERL5LIB='/home/username/perl5/lib/perl5/i386-linux:/home/username/perl5/lib/perl5'
         export PATH="/home/username/perl5/bin:$PATH"

   Die Bootstrapping Methode
       Ein typischer Weg um local::lib zu benutzen ist die sogenannte "Bootstrapping" Methode.
       Diese Methode wird benutzt wenn noch kein local::lib auf dem System installiert ist.  In
       diesem Fall kannst du einfach local::lib direkt in deinem Home-Verzeichnis installieren.

       Selbst wenn du administrative Rechte hast, ist es wichtig das die Umgebungsvariablen von
       Schritt 4 in deinem Shell Startup Skript gesetzt werden. Ohne diesen Schritt werden die
       Module von CPAN weiterhin im System installiert und auch Perl Skripte die du startest
       wuerden das von local::lib erstellte lib/ Verzeichnis nicht nutzen.

       Standardmaessig installiert sich local::lib in ~/perl5.

       Windows Benutzern muessen ausserdem dies hier lesen: "Unterschiede bei Benutzung dieses
       Module mit Win32".

       1. Lade das Tar-Archiv von CPAN runter (Suche nach "Download" auf der CPAN Seite von
       local::lib) und entpacke es in einem beliebigem Verzeichnis. Um das obige Problem zu
       vermeiden, sollte man dies als normaler User tun und nicht als root oder Administrator.

       2. Starte in dem entstandenen Verzeichnis folgenden Befehl:

         perl Makefile.PL --bootstrap

       Wenn das System dir vorschlaegt gewisse Dinge eigenstaendig zu konfigurieren ist es in
       fast allen Faellen vollkommen in Ordnung einfach "yes" zu antworten.

       Falls du local::lib nicht in das Standard Verzeichnis installieren willst, musst du dieses
       Verzeichnis als Parameter angeben:

         perl Makefile.PL --bootstrap=~/foo

       3. Danach folgenden Befehl starten: (local::lib erwartet make auf dem System)

         make test && make install

       4. Nun muessen wir die benoetigten Umgebungsvariablen, damit Perl unser neu generiertes
       lib/ Verzeichnis benutzt. Wenn du bash oder eine andere Bourne Shell benutzt, kannst du es
       ueber diesen Weg zu deinem Shell Startup Skript hinzufuegen:

         echo 'eval $(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib)' >>~/.bashrc

       Wenn du C Shell benutzt, du kannst das gleiche hiermit erreichen:

         /bin/csh
         echo $SHELL
         /bin/csh
         perl -I$HOME/perl5/lib/perl5 -Mlocal::lib >> ~/.cshrc

       Wenn du beim bootstrappen ein anderes Verzeichnis benutzt als das Standardverzeichnis,
       dann musst du dieses Verzeichnis als Parameter beim Laden des Modules local::lib angeben:

         echo 'eval $(perl -I$HOME/foo/lib/perl5 -Mlocal::lib=$HOME/foo)' >>~/.bashrc

       Nachdem diese Aenderungen in deinem Shell Startup Skript gemacht wurden, ist es nun
       wichtig das diese Umgebungsvariablen auch gesetzt sind in deiner aktuellen Umgebung. In
       Bourne Shells macht man dies z.B. mit ". ~/.bashrc", und in C Shell wuerde man es mit:
       "source ~/.cshrc" mit.

       Wenn du eine sehr langsames System hast, oder du unter drakonischen Regulierungen des
       Plattenplatz leben musst, kann man die automatische Generierung der manpages vom POD bei
       der Installation des Moduls deaktivieren beim bootstrapping mit dem "--no-manpages"
       Parameter:

         perl Makefile.PL --bootstrap --no-manpages

       Um zu vermeiden das man mehrere bootstraps macht um z.B. fuer verschiedene Applikationen
       eigene local::lib Installationen zu nutzen, kann man eine dieser Umgebungen benutzen um
       einfach in beliebigen anderen Verzeichnis Module zu installieren und somit weitere
       eigenstaendige lib/ Umgebungen zu bekommen:

         cd ~/mydir1
         perl -Mlocal::lib=./
         eval $(perl -Mlocal::lib=./)  ### Um die Umgebungsvariablen fuer die
                                       ### aktuelle Shell zusetzen

         printenv                      ### Hier kannst du sehen das ~/mydir1
                                       ### in der PERL5LIB Umgebungsvariable
                                       ### steht

         perl -MCPAN -e install ...    ### welche Module auch immer ...
         cd ../mydir2

         ... WIEDERHOLEN ...

       Fuer mehrere Umgebungen in dieser Form brauch man eine Modifikation in der Benutzung von
       "use FindBin" in dem "Im Code" Beispiel oben.  Wenn du sowas machst, und du hast damit
       z.B. Perl Module nach "~/mydir1/lib" installiert und du hast ein Script in
       "~/mydir1/scripts/myscript.pl", du musst dort angeben das die Module die es braucht im
       Verzeichnis "~/mydir1/lib" liegen.

       In "~/mydir1/scripts/myscript.pl" steht dann:

         use strict;
         use warnings;
         use local::lib "$FindBin::Bin/..";  ### zeigt auf ~/mydir1 und local::lib
                                             ### findet dort lib
         use lib "$FindBin::Bin/../lib";     ### zeigt auf ~/mydir1/lib

       Setze das vor jeden BEGIN { ... } Block der die Module braucht die du installiert hast.

   Unterschiede bei Benutzung dieses Module mit Win32
       Um die noetigen Umgebungsvariablen fuer diese Variablen in der derzeitigen Sitzung mit
       "CMD.EXE" zu setzen, kann man folgendes kommando nutzen:

         C:\>perl -Mlocal::lib
         set PERL_MB_OPT=--install_base C:\DOCUME~1\ADMINI~1\perl5
         set PERL_MM_OPT=INSTALL_BASE=C:\DOCUME~1\ADMINI~1\perl5
         set PERL5LIB=C:\DOCUME~1\ADMINI~1\perl5\lib\perl5;C:\DOCUME~1\ADMINI~1\perl5\lib\perl5\MSWin32-x86-multi-thread
         set PATH=C:\DOCUME~1\ADMINI~1\perl5\bin;%PATH%

         ### Um die Umgebungsvariablen fuer diese Shell alleine zu setzen
         C:\>perl -Mlocal::lib > %TEMP%\tmp.bat && %TEMP%\tmp.bat && del %TEMP%\temp.bat
         ### anstelle von $(perl -Mlocal::lib=./) in bash.

       Wenn du willst das die Umgebungsvariablen dauerhaft gesetzt sind, musst du diese in
       Systemsteuerung / System dauerhaft selber eintragen oder App::local::lib::Win32Helper
       benutzen.

       Die "~" wird uebersetzt zu dem Benutzer Profil Verzeichnis (das Verzeichnis was beim User
       als "Dokumente und Einstellungen" bekannt ist unter Windows XP und vorher oder das
       "Benutzer" Verzeichnis bei Windows Vista und spaeter), solange $ENV{HOME} nicht gesetzt
       ist. Das Verzeichnis wird hierbei zu dem korrekten Kurznamen umgewandelt, und muss daher
       definitiv existieren, und wird um die noetigen Unterverzeichnise erweitert.

GRUNDPRINZIP
       Die Version von den Perl Paketen die man benoetigt fuer spezifische Aufgaben sind sehr
       haeufig nicht die richtigen oder korrekten Versionen auf dem System vorinstalliert. Ein
       Updaten von diesen Modulen ist in vielen Faellen einfach nicht moeglich weil die noetigen
       Rechte fehlen. Ausserdem ist es generell nicht gut eigenstaendig die Versionen der Module
       auf dem System auszutauschen, weil natuerlich der Rest des Systems genau die Version
       erwartet die von der Systemverwaltung auch installiert wurde.

       local::lib loest dieses Problem, es erlaubt dir dein komplett eigenes Verzeichnis fuer
       deine CPAN Module zu haben und bist so nicht genoetigt die Module vom System zu nutzen
       oder andersrum andere User nicht mit individuellen Modulwuenschen zu Ueberarbeitung ihres
       Codes zu zwingen, weil bestimmte Module zentral fuer alle auf neuere Version upgedatet
       werden. Die Installation findet hierbei dann z.B. im Home Verzeichnis statt. Es werden nur
       Umgebungsvariablen gesetzt die das installierte Perl dazu bewegen die im Homeverzeichnis
       installierten Module zu benutzen, zusaetzlich und vorgezogen zu denen auf dem System.

       Daher muss man sich wenn man ein Paket System benutzt, wie z.b. Debian, garnicht mehr
       Sorgen machen, irgendwas auf dem System zu verletzten nur durch die Installation von Perl
       Modulen.

BESCHREIBUNG
       Dieses Modul bietet eine schnelle und legitime Art und Weise ein sogenanntes bootstrapping
       zu machen um in einem User Homeverzeichnis eine Sammlung von Modulen zu installieren. Es
       erstellt auch die noetigen Umgebungsvariablen die benoetigt werden um diese Module zu
       nutzen, passend zu der Shell die der User in der Umgebungsvariable "SHELL" angegeben hat,
       um dann direkt passend in die entsprechenden Konfigurationsdateien der Shell einfuegt zu
       werden.

       Weitergehend ist local::lib in der Lage Module zu nutzen die nicht im standardmaessigen
       @INC Pfad von Perl enthalten sind. Das macht es einfacher fuer bestimmte Applikationen ein
       bestimmtes Set von Modulen zu installieren ohne die anderen Module auf dem System in
       irgendeiner Art anzufassen.  Damit es z.B. auch sicherer Module zu installieren die vom
       Maintainer noch nicht als Release verfuegbar sind.

       Beim Import setzt local::lib die folgenden Umgebungsvariablen zu den noetigen Werten:

       PERL_MB_OPT
       PERL_MM_OPT
       PERL5LIB
       PATH
           Am PATH wird natuerlich angehangen, und nicht ersetzt.

       Diese Werte sind dann verfuegbar fuer jeden Code der danach importiert wurde.

ERSTELLEN EINES EIGENSTAeNDIGE SAMMLUNG VON MODULEN
       Mit lib::core::only besteht eine Moeglichkeit dieses zutun, aber beachte das hier eine
       Menge von Fallstricken und Problemen existieren, und man sollte immer darauf achten das
       man auf einem Perl aufbaut was sowenig wie moeglich veraendert wurde (d.h. site und vendor
       Verzeichnis so leer wie moeglich).

METHODEN
   ensure_dir_structure_for
       Parameter: $path
       Rueckgabewert: Keiner

       Versucht den angegebenen Pfad anzulegen, mit allen noetigen drueberliegenden
       Verzeichnissen. Im Fehlerfall wird eine Exception geworfen.

   print_environment_vars_for
       Parameter: $pfad
       Rueckgabewert: Keiner

       Gibt die Umgebungsvariablen aus, die benoetigt werden um den angegebenen Pfad als Basis
       Verzeichnis zu nutzen.

   build_environment_vars_for
       Parameter: $pfad, $interpolate
       Rueckgabewert: \%umgebungs_variablen

       Gibt ein Hash zurueck mit den Variablen die noetig sind in den Umgebungsvariablen um eine
       Installation in dem gegebenen Pfad zu benutzen.

   setup_env_hash_for
       Parameter: $pfad
       Rueckgabewert: Keiner

       Setzt die %ENV Eintraege basierend auf dem Aufruf von "build_environment_vars_for".

   install_base_perl_path
       Parameter: $pfad
       Rueckgabewert: $module_installations_pfad

       Gibt den Pfad zurueck der benutzt wird um Perl Module zu installieren bei dem gegebenen
       Pfad als Basis. Prinzipiell wird nur "lib" und "perl5" als Pfadelemente angehangen.

   install_base_arch_path
       Parameter: $pfad
       Rueckgabewert: $architektur_module_installations_pfad

       Gibt den Pfad zurueck der benutzt wird um die Architektur-abhaengigen Perl Module zu
       installieren basirend auf dem angegebenen Pfad als Basis. Basierend auf dem was
       "install_base_perl_path" zurueckgibt, and appends the value of $Config{archname}.asis.

   install_base_bin_path
       Parameter: $pfad
       Rueckgabewert: $ausfuehrbare_programme_installations_pfad

       Gibt den Pfad zurueck, wo ausfuehrbare Programme installiert werden, basierend auf der
       Basis des angegebenen Pfad. Basierend auf "install_base_perl_path" Rueckgabewert, haengt
       diese Methode noch "bin" an.

   resolve_empty_path
       Parameter: $pfad
       Rueckgabewert: $basis_pfad

       Erstellt und gibt zurueck den Pfad der benutzt wird als Basis zur Installation der Module.
       Standardmaessig dies ist "~/perl5".

   resolve_home_path( $path )
       Parameter: $pfad
       Rueckgabewert: $home

       Versucht das Home Verzeichnis vom aktullen User zu finden. Wenn "File::HomeDir"
       installiert ist, fuer dieses benutzt dafuer. Es wird eine Exception geworfen, wenn kein
       Home Verzeichnis ermittelt werden konnte.

   resolve_relative_path
       Parameter: $pfad
       Rueckgabewert: $absoluter_pfad

       Macht aus dem angegebenen Pfad einen absoluten Pfad.

   resolve_path
       Parameter: $pfad
       Rueckgabewert: $absoluter_pfad

       Hierbei wird der Pfad durch die folgende Methoden gegeben, wobei der Rueckgabewert der
       ersten an die naechste weitergeben wird, um die Umgebung zu konfigurieren fuer die lokale
       Bibliotheks Installation: "resolve_empty_path", "resolve_home_path",
       "resolve_relative_path".  Der daraus resultierende Pfad wird zu "resolve_empty_path"
       uebergeben, dessen Resultat dann weitergegeben wird an "resolve_home_path", wessen
       Resultat dann weitergegeben wird an "resolve_relative_path". Dieses Resultat wird dann
       final an "resolve_path" uebergeben, welches dann den Rueckgabewert stellt.

EINE WARNUNG VOR UNINST=1
       Wenn man local::lib in Kombination mit "make install UNINST=1" benutzt, muss man
       vorsichtig sein ueber die Tatsache das der Prozess ueber die Neuinstallation eine nicht
       ausreichende Sicherheit hat bezueglich wo er nun installieren muss.  Hierdurch mann es
       passieren das beim deinstallieren eines Modul u.U. das globale Modul deinstalliert wird
       (wenn die Rechte vorhanden sind) aber die neue Version nur in der lokalen Version
       installiert ist. Es ist hier also sehr wichtig das man "make install UNINST=1" und
       local::lib nur gleichzeitig benutzt wenn man sehr sicher darueber ist welche Konsequenzen
       einem entgegenkommen.

EINSCHRAeNKUNGEN
       Die Werkzeuge von perl, die benutzt werden um die Pakete zu installieren (die sogenannte
       toolchain), sind leider nicht in der Lage sauber mit Verzeichnissen umzugehen die
       Leerzeichen enthalten und koennen daher local::lib nicht direkt in ein solches Verzeichnis
       installieren. Was du machen kannst ist nach der Installation von local::lib und der Module
       die du in deiner local::lib haben willst, das gesamte Verzeichnis dahin zu bewegen.
       local::lib kann mit dem Verzeichnis mit Leerzeichen umgehen. Bitte aufpassen das
       natuerlich eine weitere Installation oder ein Erneuern von Paketen mit dem CPAN Programm
       nicht mehr moeglich ist.

       Die Shell Erkennung ist sehr primitiv. Derzeit ist es so das alles was "csh" im Namen hat
       auch als C Shell eingeordnet wird, und alles andere wird als Bourne Shell betrachet,
       ausser auf Win32 Systemen. Wenn die "SHELL" Variable nicht gesetzt ist, eine Bourne Shell
       wird angenommen.

       Bootstrap ist leider ein Hack, und wird auf jedenfall CPAN.pm benutzen fuer
       ExtUtils::MakeMaker, auch wenn CPANPLUS installiert ist.

       Es setzt definitiv PERL5LIB, PERL_MM_OPT und PERL_MB_OPT neu und vernichtet jeden Wert der
       vorher gesetzt war.

       Es sollte vielleicht eine automatische Korrektur der CPAN Config machen, wenn das nicht
       schon gemacht wurde.

       "Patches Welcome" - Patches sind immer willkommen beim Autor oder den anderen
       Mitwirkenden.

       Auf Win32 Systemen werden die Umgebungsvariablen nicht direkt in die Registrierung
       geschrieben damit sie auch nach dem Neustarten erhalten bleiben.

FEHLERANALYSE
       Wenn du local::lib konfiguriert hast CPAN Module in deinem Home Verzeichnis zu
       installieren, und du danach versuchst mit "cpan -i Foo::Bar" ein Modul zu installieren,
       und dabei einen Fehler bekommst, wie: "Warning: You do not have permissions to install
       into /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux at /usr/lib64/perl5/5.8.8/Foo/Bar.pm"
       und in der installationsausgabe steht irgendwo ein Fehler der sagt "'INSTALL_BASE' is not
       a known MakeMaker parameter name", dann hast du aus irgendeinem Grund dein neue Version
       von ExtUtils::MakeMaker verloren.

       Um dies zu korrigieren, einfach nochmal die bootstrapping Methode laufen lassen, wie oben
       beschrieben.

       Dann starte "rm -r ~/.cpan/build/Foo-Bar*"

       Abschliessend dann nochmal mit "cpan -i Foo::Bar" installieren und die Probleme sollten
       verschwunden sein.

UMGEBUNGSVARIABLEN
       SHELL
       COMSPEC
           local::lib schaut in die "SHELL" Umgebungsvariable um die korrekten Kommandos zu der
           Shell Konfiguration hinzuzufuegen.

           Auf Win32 Systemen, "COMSPEC" wird auch analysiert.

SUPPORT
       IRC:

           Wir sind im Channel #local-lib auf dem Server irc.perl.org.

AUTOR DER UeBERSETZUNG
       Torsten Raudssus <torsten AT raudssus.de> http://www.raudssus.de/

URHEBERRECHT
       Copyright (c) 2007 - 2010 von den local::lib "AUTHOR" in local::lib und "CONTRIBUTORS" in
       local::lib aufgelistet in local::lib.

LIZENZ
       Diese Sammlung ist freie Software und kann unter der selben Lizenz verbreitet werden wie
       Perl selber.



perl v5.16.3                                2013-02-12                    POD2::DE::local::lib(3)

Generated by $Id: phpMan.php,v 4.55 2007/09/05 04:42:51 chedong Exp $ Author: Che Dong
On Apache
Under GNU General Public License
2024-11-21 08:24 @18.217.118.7 CrawledBy Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
Valid XHTML 1.0!Valid CSS!