POD2::DE::local::lib(category2-linux-allgemein.html) - phpMan

POD2::DE::local::lib(3User Contributed Perl DocumentatiPOD2::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 Abhangigkeiten 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 wurden das von
       local::lib erstellte lib/ Verzeichnis nicht nutzen.
       StandardmaBig installiert sich local::lib in ~/perl5.
       Windows Benutzern mussen 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 vorschlagt gewisse Dinge eigenstandig zu
       konfigurieren ist es in fast allen Fallen 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 mussen wir die benotigten Umgebungsvariablen, damit Perl unser
       neu generiertes lib/ Verzeichnis benutzt. Wenn du bash oder eine andere
       Bourne Shell benutzt, kannst du es uber diesen Weg zu deinem Shell
       Startup Skript hinzufugen:
         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 Anderungen 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 wurde 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. fur
       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
       eigenstandige lib/ Umgebungen zu bekommen:
         cd ~/mydir1
         perl -Mlocal::lib=./
         eval $(perl -Mlocal::lib=./)  ### Um die Umgebungsvariablen fur 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 ...
       Fur 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 notigen Umgebungsvariablen fur 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 fur 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 ubersetzt 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 spater), solange $ENV{HOME} nicht gesetzt ist. Das
       Verzeichnis wird hierbei zu dem korrekten Kurznamen umgewandelt, und
       muss daher definitiv existieren, und wird um die notigen
       Unterverzeichnise erweitert.
GRUNDPRINZIP
       Die Version von den Perl Paketen die man benotigt fur spezifische
       Aufgaben sind sehr haufig nicht die richtigen oder korrekten Versionen
       auf dem System vorinstalliert. Ein Updaten von diesen Modulen ist in
       vielen Fallen einfach nicht moglich weil die notigen Rechte fehlen.
       Ausserdem ist es generell nicht gut eigenstandig die Versionen der
       Module auf dem System auszutauschen, weil naturlich der Rest des
       Systems genau die Version erwartet die von der Systemverwaltung auch
       installiert wurde.
       local::lib lost dieses Problem, es erlaubt dir dein komplett eigenes
       Verzeichnis fur deine CPAN Module zu haben und bist so nicht genotigt
       die Module vom System zu nutzen oder andersrum andere User nicht mit
       individuellen Modulwunschen zu Uberarbeitung ihres Codes zu zwingen,
       weil bestimmte Module zentral fur 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, zusatzlich 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 notigen
       Umgebungsvariablen die benotigt 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 einfugt zu werden.
       Weitergehend ist local::lib in der Lage Module zu nutzen die nicht im
       standardmaBigen @INC Pfad von Perl enthalten sind. Das macht es
       einfacher fur 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 verfugbar sind.
       Beim Import setzt local::lib die folgenden Umgebungsvariablen zu den
       notigen Werten:
       PERL_MB_OPT
       PERL_MM_OPT
       PERL5LIB
       PATH
           Am PATH wird naturlich angehangen, und nicht ersetzt.
       Diese Werte sind dann verfugbar fur jeden Code der danach importiert
       wurde.
ERSTELLEN EINES EIGENSTANDIGE SAMMLUNG VON MODULEN
       Mit lib::core::only besteht eine Moglichkeit 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 moglich verandert wurde (d.h. site und vendor Verzeichnis so leer
       wie moglich).
METHODEN
   ensure_dir_structure_for
       Parameter: $path
       Ruckgabewert: Keiner
       Versucht den angegebenen Pfad anzulegen, mit allen notigen
       druberliegenden Verzeichnissen. Im Fehlerfall wird eine Exception
       geworfen.
   print_environment_vars_for
       Parameter: $pfad
       Ruckgabewert: Keiner
       Gibt die Umgebungsvariablen aus, die benotigt werden um den angegebenen
       Pfad als Basis Verzeichnis zu nutzen.
   build_environment_vars_for
       Parameter: $pfad, $interpolate
       Ruckgabewert: \%umgebungs_variablen
       Gibt ein Hash zuruck mit den Variablen die notig sind in den
       Umgebungsvariablen um eine Installation in dem gegebenen Pfad zu
       benutzen.
   setup_env_hash_for
       Parameter: $pfad
       Ruckgabewert: Keiner
       Setzt die %ENV Eintrage basierend auf dem Aufruf von
       "build_environment_vars_for".
   install_base_perl_path
       Parameter: $pfad
       Ruckgabewert: $module_installations_pfad
       Gibt den Pfad zuruck 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
       Ruckgabewert: $architektur_module_installations_pfad
       Gibt den Pfad zuruck der benutzt wird um die Architektur-abhangigen
       Perl Module zu installieren basirend auf dem angegebenen Pfad als
       Basis. Basierend auf dem was "install_base_perl_path" zuruckgibt, and
       appends the value of $Config{archname}.asis.
   install_base_bin_path
       Parameter: $pfad
       Ruckgabewert: $ausfuehrbare_programme_installations_pfad
       Gibt den Pfad zuruck, wo ausfuhrbare Programme installiert werden,
       basierend auf der Basis des angegebenen Pfad. Basierend auf
       "install_base_perl_path" Ruckgabewert, hangt diese Methode noch "bin"
       an.
   resolve_empty_path
       Parameter: $pfad
       Ruckgabewert: $basis_pfad
       Erstellt und gibt zuruck den Pfad der benutzt wird als Basis zur
       Installation der Module. StandardmaBig dies ist "~/perl5".
   resolve_home_path( $path )
       Parameter: $pfad
       Ruckgabewert: $home
       Versucht das Home Verzeichnis vom aktullen User zu finden. Wenn
       "File::HomeDir" installiert ist, fur dieses benutzt dafur. Es wird eine
       Exception geworfen, wenn kein Home Verzeichnis ermittelt werden konnte.
   resolve_relative_path
       Parameter: $pfad
       Ruckgabewert: $absoluter_pfad
       Macht aus dem angegebenen Pfad einen absoluten Pfad.
   resolve_path
       Parameter: $pfad
       Ruckgabewert: $absoluter_pfad
       Hierbei wird der Pfad durch die folgende Methoden gegeben, wobei der
       Ruckgabewert der ersten an die nachste weitergeben wird, um die
       Umgebung zu konfigurieren fur die lokale Bibliotheks Installation:
       "resolve_empty_path", "resolve_home_path", "resolve_relative_path".
       Der daraus resultierende Pfad wird zu "resolve_empty_path" ubergeben,
       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" ubergeben, welches dann den
       Ruckgabewert stellt.
EINE WARNUNG VOR UNINST=1
       Wenn man local::lib in Kombination mit "make install UNINST=1" benutzt,
       muss man vorsichtig sein uber die Tatsache das der Prozess uber die
       Neuinstallation eine nicht ausreichende Sicherheit hat bezuglich 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 daruber ist welche Konsequenzen einem entgegenkommen.
EINSCHRANKUNGEN
       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
       konnen 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 naturlich eine
       weitere Installation oder ein Erneuern von Paketen mit dem CPAN
       Programm nicht mehr moglich 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
       fur 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 hinzuzufugen.
           Auf Win32 Systemen, "COMSPEC" wird auch analysiert.
SUPPORT
       IRC:
           Wir sind im Channel #local-lib auf dem Server irc.perl.org.
AUTOR DER UBERSETZUNG
       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.26.3                      2014-01-20           POD2::DE::local::lib(3)