X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2Fpodloc%2Fde_DE%2Flocal%2Flib.pod;fp=lib%2Fpodloc%2Fde_DE%2Flocal%2Flib.pod;h=5444218cd4a6411312a0fab9728ab659d9204ca2;hb=898f36cf124d4d8a3e17ce1f7db773f41ab84618;hp=0000000000000000000000000000000000000000;hpb=ac9016d3734e7117122b3f12ab15c10673219b88;p=p5sagit%2Flocal-lib.git diff --git a/lib/podloc/de_DE/local/lib.pod b/lib/podloc/de_DE/local/lib.pod new file mode 100755 index 0000000..5444218 --- /dev/null +++ b/lib/podloc/de_DE/local/lib.pod @@ -0,0 +1,312 @@ +=encoding utf8 + +=head1 NAME + +local::lib - Erschaffen und benutzen von Perl Modulen in einem lokalen lib/ Verzeichnis mit PERL5LIB + +=head1 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 + + # Or... + use FindBin; + use local::lib "$FindBin::Bin/../support"; # app-local support library + +Von der Shell - + + # Installiert LWP und alle notwendigen Abhängigkeiten 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 MODULEBUILDRC=/home/username/perl/.modulebuildrc + export PERL_MM_OPT='INSTALL_BASE=/home/username/perl' + export PERL5LIB='/home/username/perl/lib/perl5:/home/username/perl/lib/perl5/i386-linux' + export PATH="/home/username/perl/bin:$PATH" + +=head2 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 +würden das von local::lib erstellte lib/ Verzeichnis nicht nutzen. + +Windows Benutzern müssen ausserdem dies hier lesen: +L. + +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 vorschlägt gewisse Dinge eigenständig zu konfigurieren ist es in +fast allen Fällen 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 müssen wir die benötigten Umgebungsvariablen, damit Perl unser neu generiertes +lib/ Verzeichnis benutzt. Wenn du bash oder eine andere Bourne Shell benutzt, kannst +du es über diesen Weg zu deinem Shell Startup Skript hinzufügen: + + 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 Änderungen 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 C<. ~/.bashrc>, und in C Shell würde man es mit: +C 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 C<--no-manpages> +Parameter: + + perl Makefile.PL --bootstrap --no-manpages + +Wenn du mehrere lokale lib/ Installationen nutzen möchtest, z.B. für verschiedene +Applikationen. Hierfür kannst du local::lib einfach einm + +Um zu vermeiden das man mehrere bootstraps macht um z.B. für 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 +eigenständige lib/ Umgebungen zu bekommen: + + cd ~/mydir1 + perl -Mlocal::lib=./ + eval $(perl -Mlocal::lib=./) ### Um die Umgebungsvariablen für 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 ... + +Für mehrere Umgebungen in dieser Form brauch man eine Modifikation in der +Benutzung von C<< use FindBin >> in dem "Im Code" Beispiel oben. +Wenn du sowas machst, und du hast damit z.B. Perl Module nach C<< +~/mydir1/lib >> installiert und du hast ein Script in C<< +~/mydir1/scripts/myscript.pl >>, du musst dort angeben das die Module +die es braucht im Verzeichnis C<< ~/mydir1/lib >> liegen. + +In C<< ~/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. + +=head2 Unterschiede bei Benutzung dieses Module mit Win32 + +Um die nötigen Umgebungsvariablen für diese Variablen in der derzeitigen +Sitzung mit C zu setzen, kann man folgendes kommando nutzen: + + C:\>perl -Mlocal::lib + set MODULEBUILDRC=C:\DOCUME~1\ADMINI~1\perl5\.modulebuildrc + 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 für 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 +L benutzen. + +Die "~" wird übersetzt 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 später, solange +$ENV{HOME} nicht gesetzt ist. Das Verzeichnis wird hierbei zu dem korrekten +Kurznamen umgewandelt, und muss daher definitiv existieren, und wird um die +nötigen Unterverzeichnise erweitert. + +=head1 EXISTENZGRUNDLAGE + +Die Version von den Perl Paketen die man benötigt für spezifische Aufgaben sind +sehr häufig nicht die richtigen oder korrekten Versionen auf dem System +vorinstalliert. Ein Updaten von diesen Modulen ist in vielen Fällen einfach +nicht möglich weil die nötigen Rechte fehlen. Ausserdem ist es generell nicht +gut eigenständig die Versionen der Module auf dem System auszutauschen, weil +natürlich der Rest des Systems genau die Version erwartet die von der +Systemverwaltung auch installiert wurde. + +local::lib löst dieses Problem, es erlaubt dir dein komplett eigenes Verzeichnis +für deine CPAN Module zu haben und bist so nicht genötigt die Module vom +System zu nutzen oder andersrum andere User nicht mit individuellen +Modulwünschen zu Überarbeitung ihres Codes zu zwingen, weil bestimmte Module +zentral für 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, zusätzlich 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. + +=head1 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 nötigen Umgebungsvariablen +die benötigt werden um diese Module zu nutzen, passend zu der Shell die der +User in der Umgebungsvariable C angegeben hat, um dann direkt passend +in die entsprechenden Konfigurationsdateien der Shell einfügt zu werden. + +Weitergehend ist local::lib in der Lage Module zu nutzen die nicht im +standardmäßigen C<@INC> Pfad von Perl enthalten sind. Das macht es einfacher +für 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 verfügbar sind. + +Beim Import setzt local::lib die folgenden Umgebungsvariablen zu den +nötigen Werten: + +=over 4 + +=item MODULEBUILDRC + +=item PERL_MM_OPT + +=item PERL5LIB + +=item PATH + +Am PATH wird natürlich angehangen, und nicht ersetzt. + +=back + +Diese Werte sind dann verfügbar für jeden Code der danach importiert wurde. + +=head1 CREATING A SELF-CONTAINED SET OF MODULES + +C<Übersetzung fehlt...> + +=head1 METHODS + +C<Übersetzung fehlt...> + +=head1 A WARNING ABOUT UNINST=1 + +Wenn man local::lib in Kombination mit "make install UNINST=1" benutzt, muss +man vorsichtig sein über die Tatsache das der Prozess über die Neuinstallation +eine nicht ausreichende Sicherheit hat bezüglich 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 darüber ist welche Konsequenzen einem +entgegenkommen. + +=head1 EINSCHRÄNKUNGEN + +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 C Variable +nicht gesetzt ist, eine Bourne Shell wird angenommen. + +Bootstrap ist leider ein Hack, und wird auf jedenfall CPAN.pm benutzen für +ExtUtils::MakeMaker, auch wenn CPANPLUS installiert ist. + +Es setzt definitiv PERL5LIB, PERL_MM_OPT und MODULEBUILDRC 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. + +=head1 FEHLERANALYSE + +Wenn du local::lib konfiguriert hast CPAN Module in deinem Home Verzeichnis +zu installieren, und du danach versuchst mit C ein Modul +zu installieren, und dabei einen Fehler bekommst, wie: C und in der installationsausgabe steht +irgendwo ein Fehler der sagt C<'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 C + +Abschliessend dann nochmal mit C installieren und die Probleme +sollten verschwunden sein. + +=head1 UMGEBUNGSVARIABLEN + +=over 4 + +=item SHELL + +=item COMSPEC + +local::lib schaut in die C Umgebungsvariable um die korrekten Kommandos +zu der Shell Konfiguration hinzuzufügen. + +Auf Win32 Systemen, C wird auch analysiert. + +=back + +=head1 AUTOR DER ÜBERSETZUNG + +Torsten Raudssus http://www.raudssus.de/ + +=head1 URHEBERRECHT + +Copyright (c) 2007 - 2010 von den local::lib L und L +aufgelistet in L. + +=head1 LIZENZ + +Diese Sammlung ist freie Software und kann unter der selben Lizenz verbreitet +werden wie Perl selber. + +=cut + +1;