Trying to workaround a search.cpan.org "Bug"
[p5sagit/local-lib.git] / lib / podloc / de_DE / local / lib.pod
CommitLineData
898f36cf 1=encoding utf8\r
2\r
3=head1 NAME\r
4\r
0f5e2f42 5podloc::de_DE::local::lib - Erschaffen und benutzen von Perl Modulen in einem lokalen lib/ Verzeichnis mit PERL5LIB\r
898f36cf 6\r
b75c7320 7L<Original English Translation|local::lib>\r
8\r
898f36cf 9=head1 SYNOPSIS\r
10\r
11Im Code -\r
12\r
13 use local::lib; # Benutzt das Verzeichnis ~/perl5 zum anlegen des lokalen lib/ Verzeichnisses\r
14\r
15 use local::lib '~/foo'; # das selbe, aber mit ~/foo\r
16\r
b75c7320 17 # Oder...\r
898f36cf 18 use FindBin;\r
b75c7320 19 use local::lib "$FindBin::Bin/../support"; # Applikationsspezifische Sammlung von Modulen\r
898f36cf 20\r
21Von der Shell -\r
22\r
23 # Installiert LWP und alle notwendigen Abhängigkeiten in das '~/perl5' Verzeichnis\r
24 perl -MCPAN -Mlocal::lib -e 'CPAN::install(LWP)'\r
25\r
26 # Gibt die Shell Kommandos aus um die Umgebung vorzubereiten\r
27 $ perl -Mlocal::lib\r
28 export MODULEBUILDRC=/home/username/perl/.modulebuildrc\r
29 export PERL_MM_OPT='INSTALL_BASE=/home/username/perl'\r
30 export PERL5LIB='/home/username/perl/lib/perl5:/home/username/perl/lib/perl5/i386-linux'\r
31 export PATH="/home/username/perl/bin:$PATH"\r
32\r
33=head2 Die Bootstrapping Methode\r
34\r
35Ein typischer Weg um local::lib zu benutzen ist die sogenannte "Bootstrapping" Methode.\r
36Diese Methode wird benutzt wenn noch kein local::lib auf dem System installiert ist.\r
37In diesem Fall kannst du einfach local::lib direkt in deinem Home-Verzeichnis installieren.\r
38\r
39Selbst wenn du administrative Rechte hast, ist es wichtig das die Umgebungsvariablen von\r
40Schritt 4 in deinem Shell Startup Skript gesetzt werden. Ohne diesen Schritt werden die\r
41Module von CPAN weiterhin im System installiert und auch Perl Skripte die du startest\r
42würden das von local::lib erstellte lib/ Verzeichnis nicht nutzen.\r
43\r
44Windows Benutzern müssen ausserdem dies hier lesen: \r
45L</Unterschiede bei Benutzung dieses Module mit Win32>.\r
46\r
471. Lade das Tar-Archiv von CPAN runter (Suche nach "Download" auf der CPAN Seite von\r
48local::lib) und entpacke es in einem beliebigem Verzeichnis. Um das obige Problem zu\r
49vermeiden, sollte man dies als normaler User tun und nicht als root oder Administrator.\r
50\r
512. Starte in dem entstandenen Verzeichnis folgenden Befehl:\r
52\r
53 perl Makefile.PL --bootstrap\r
54\r
55Wenn das System dir vorschlägt gewisse Dinge eigenständig zu konfigurieren ist es in\r
56fast allen Fällen vollkommen in Ordnung einfach "yes" zu antworten.\r
57\r
58Falls du local::lib nicht in das Standard Verzeichnis installieren willst, musst du\r
59dieses Verzeichnis als Parameter angeben:\r
60\r
61 perl Makefile.PL --bootstrap=~/foo\r
62\r
633. Danach folgenden Befehl starten: (local::lib erwartet make auf dem System)\r
64\r
65 make test && make install\r
66\r
674. Nun müssen wir die benötigten Umgebungsvariablen, damit Perl unser neu generiertes\r
68lib/ Verzeichnis benutzt. Wenn du bash oder eine andere Bourne Shell benutzt, kannst \r
69du es über diesen Weg zu deinem Shell Startup Skript hinzufügen:\r
70\r
71 echo 'eval $(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib)' >>~/.bashrc\r
72\r
73Wenn du C Shell benutzt, du kannst das gleiche hiermit erreichen:\r
74\r
75 /bin/csh\r
76 echo $SHELL\r
77 /bin/csh\r
78 perl -I$HOME/perl5/lib/perl5 -Mlocal::lib >> ~/.cshrc\r
79\r
80Wenn du beim bootstrappen ein anderes Verzeichnis benutzt als das Standardverzeichnis,\r
81dann musst du dieses Verzeichnis als Parameter beim Laden des Modules local::lib angeben:\r
82\r
83 echo 'eval $(perl -I$HOME/foo/lib/perl5 -Mlocal::lib=$HOME/foo)' >>~/.bashrc\r
84\r
85Nachdem diese Änderungen in deinem Shell Startup Skript gemacht wurden, ist es nun wichtig\r
86das diese Umgebungsvariablen auch gesetzt sind in deiner aktuellen Umgebung. In Bourne\r
87Shells macht man dies z.B. mit C<. ~/.bashrc>, und in C Shell würde man es mit: \r
88C<source ~/.cshrc> mit.\r
89\r
90Wenn du eine sehr langsames System hast, oder du unter drakonischen Regulierungen des\r
91Plattenplatz leben musst, kann man die automatische Generierung der manpages vom POD\r
92bei der Installation des Moduls deaktivieren beim bootstrapping mit dem C<--no-manpages>\r
93Parameter:\r
94\r
95 perl Makefile.PL --bootstrap --no-manpages\r
96\r
97Wenn du mehrere lokale lib/ Installationen nutzen möchtest, z.B. für verschiedene\r
98Applikationen. Hierfür kannst du local::lib einfach einm\r
99\r
100Um zu vermeiden das man mehrere bootstraps macht um z.B. für verschiedene Applikationen\r
101eigene local::lib Installationen zu nutzen, kann man eine dieser Umgebungen benutzen\r
102um einfach in beliebigen anderen Verzeichnis Module zu installieren und somit weitere\r
103eigenständige lib/ Umgebungen zu bekommen:\r
104\r
105 cd ~/mydir1\r
106 perl -Mlocal::lib=./\r
107 eval $(perl -Mlocal::lib=./) ### Um die Umgebungsvariablen für die\r
108 ### aktuelle Shell zusetzen\r
109\r
110 printenv ### Hier kannst du sehen das ~/mydir1\r
111 ### in der PERL5LIB Umgebungsvariable\r
112 ### steht\r
113\r
114 perl -MCPAN -e install ... ### welche Module auch immer ...\r
115 cd ../mydir2\r
116\r
117 ... WIEDERHOLEN ...\r
118\r
119Für mehrere Umgebungen in dieser Form brauch man eine Modifikation in der\r
120Benutzung von C<< use FindBin >> in dem "Im Code" Beispiel oben.\r
121Wenn du sowas machst, und du hast damit z.B. Perl Module nach C<<\r
122~/mydir1/lib >> installiert und du hast ein Script in C<< \r
123~/mydir1/scripts/myscript.pl >>, du musst dort angeben das die Module\r
124die es braucht im Verzeichnis C<< ~/mydir1/lib >> liegen.\r
125\r
126In C<< ~/mydir1/scripts/myscript.pl >> steht dann:\r
127\r
128 use strict;\r
129 use warnings;\r
130 use local::lib "$FindBin::Bin/.."; ### zeigt auf ~/mydir1 und local::lib \r
131 ### findet dort lib\r
132 use lib "$FindBin::Bin/../lib"; ### zeigt auf ~/mydir1/lib\r
133\r
134Setze das vor jeden BEGIN { ... } Block der die Module braucht die du\r
135installiert hast.\r
136\r
137=head2 Unterschiede bei Benutzung dieses Module mit Win32\r
138\r
139Um die nötigen Umgebungsvariablen für diese Variablen in der derzeitigen\r
140Sitzung mit C<CMD.EXE> zu setzen, kann man folgendes kommando nutzen:\r
141\r
142 C:\>perl -Mlocal::lib\r
143 set MODULEBUILDRC=C:\DOCUME~1\ADMINI~1\perl5\.modulebuildrc\r
144 set PERL_MM_OPT=INSTALL_BASE=C:\DOCUME~1\ADMINI~1\perl5\r
145 set PERL5LIB=C:\DOCUME~1\ADMINI~1\perl5\lib\perl5;C:\DOCUME~1\ADMINI~1\perl5\lib\perl5\MSWin32-x86-multi-thread\r
146 set PATH=C:\DOCUME~1\ADMINI~1\perl5\bin;%PATH%\r
147 \r
148 ### Um die Umgebungsvariablen für diese Shell alleine zu setzen\r
149 C:\>perl -Mlocal::lib > %TEMP%\tmp.bat && %TEMP%\tmp.bat && del %TEMP%\temp.bat\r
150 ### anstelle von $(perl -Mlocal::lib=./) in bash.\r
151\r
152Wenn du willst das die Umgebungsvariablen dauerhaft gesetzt sind, musst du diese\r
153in Systemsteuerung / System dauerhaft selber eintragen oder \r
154L<App::local::lib::Win32Helper> benutzen.\r
155\r
156Die "~" wird übersetzt zu dem Benutzer Profil Verzeichnis (das Verzeichnis was\r
157beim User als "Dokumente und Einstellungen" bekannt ist unter Windows XP und\r
158vorher oder das "Benutzer" Verzeichnis bei Windows Vista und später, solange\r
159$ENV{HOME} nicht gesetzt ist. Das Verzeichnis wird hierbei zu dem korrekten\r
160Kurznamen umgewandelt, und muss daher definitiv existieren, und wird um die\r
161nötigen Unterverzeichnise erweitert.\r
162\r
b75c7320 163=head1 GRUNDPRINZIP\r
898f36cf 164\r
165Die Version von den Perl Paketen die man benötigt für spezifische Aufgaben sind\r
166sehr häufig nicht die richtigen oder korrekten Versionen auf dem System\r
167vorinstalliert. Ein Updaten von diesen Modulen ist in vielen Fällen einfach\r
168nicht möglich weil die nötigen Rechte fehlen. Ausserdem ist es generell nicht\r
169gut eigenständig die Versionen der Module auf dem System auszutauschen, weil\r
170natürlich der Rest des Systems genau die Version erwartet die von der\r
171Systemverwaltung auch installiert wurde.\r
172\r
173local::lib löst dieses Problem, es erlaubt dir dein komplett eigenes Verzeichnis\r
174für deine CPAN Module zu haben und bist so nicht genötigt die Module vom\r
175System zu nutzen oder andersrum andere User nicht mit individuellen \r
176Modulwünschen zu Überarbeitung ihres Codes zu zwingen, weil bestimmte Module\r
177zentral für alle auf neuere Version upgedatet werden. Die Installation findet\r
178hierbei dann z.B. im Home Verzeichnis statt. Es werden nur Umgebungsvariablen\r
179gesetzt die das installierte Perl dazu bewegen die im Homeverzeichnis \r
180installierten Module zu benutzen, zusätzlich und vorgezogen zu denen auf dem\r
181System.\r
182\r
183Daher muss man sich wenn man ein Paket System benutzt, wie z.b. Debian, garnicht\r
184mehr Sorgen machen, irgendwas auf dem System zu verletzten nur durch die\r
185Installation von Perl Modulen.\r
186\r
187=head1 BESCHREIBUNG\r
188\r
189Dieses Modul bietet eine schnelle und legitime Art und Weise ein sogenanntes\r
190bootstrapping zu machen um in einem User Homeverzeichnis eine Sammlung von\r
191Modulen zu installieren. Es erstellt auch die nötigen Umgebungsvariablen\r
192die benötigt werden um diese Module zu nutzen, passend zu der Shell die der\r
193User in der Umgebungsvariable C<SHELL> angegeben hat, um dann direkt passend\r
194in die entsprechenden Konfigurationsdateien der Shell einfügt zu werden.\r
195\r
196Weitergehend ist local::lib in der Lage Module zu nutzen die nicht im\r
197standardmäßigen C<@INC> Pfad von Perl enthalten sind. Das macht es einfacher\r
198für bestimmte Applikationen ein bestimmtes Set von Modulen zu installieren\r
199ohne die anderen Module auf dem System in irgendeiner Art anzufassen.\r
200Damit es z.B. auch sicherer Module zu installieren die vom Maintainer noch\r
201nicht als Release verfügbar sind.\r
202\r
203Beim Import setzt local::lib die folgenden Umgebungsvariablen zu den\r
204nötigen Werten:\r
205\r
206=over 4\r
207\r
208=item MODULEBUILDRC\r
209\r
210=item PERL_MM_OPT\r
211\r
212=item PERL5LIB\r
213\r
214=item PATH\r
215\r
216Am PATH wird natürlich angehangen, und nicht ersetzt.\r
217\r
218=back\r
219\r
220Diese Werte sind dann verfügbar für jeden Code der danach importiert wurde.\r
221\r
222=head1 CREATING A SELF-CONTAINED SET OF MODULES\r
223\r
224C<Übersetzung fehlt...>\r
225\r
226=head1 METHODS\r
227\r
228C<Übersetzung fehlt...>\r
229\r
230=head1 A WARNING ABOUT UNINST=1\r
231\r
232Wenn man local::lib in Kombination mit "make install UNINST=1" benutzt, muss\r
233man vorsichtig sein über die Tatsache das der Prozess über die Neuinstallation\r
234eine nicht ausreichende Sicherheit hat bezüglich wo er nun installieren muss.\r
235Hierdurch mann es passieren das beim deinstallieren eines Modul u.U. das\r
236globale Modul deinstalliert wird (wenn die Rechte vorhanden sind) aber die\r
237neue Version nur in der lokalen Version installiert ist. Es ist hier also sehr\r
238wichtig das man "make install UNINST=1" und local::lib nur gleichzeitig\r
239benutzt wenn man sehr sicher darüber ist welche Konsequenzen einem\r
240entgegenkommen.\r
241\r
242=head1 EINSCHRÄNKUNGEN\r
243\r
244Die Shell Erkennung ist sehr primitiv. Derzeit ist es so das alles was "csh"\r
245im Namen hat auch als C Shell eingeordnet wird, und alles andere wird als\r
246Bourne Shell betrachet, ausser auf Win32 Systemen. Wenn die C<SHELL> Variable\r
247nicht gesetzt ist, eine Bourne Shell wird angenommen.\r
248\r
249Bootstrap ist leider ein Hack, und wird auf jedenfall CPAN.pm benutzen für\r
250ExtUtils::MakeMaker, auch wenn CPANPLUS installiert ist.\r
251\r
252Es setzt definitiv PERL5LIB, PERL_MM_OPT und MODULEBUILDRC neu und vernichtet\r
253jeden Wert der vorher gesetzt war.\r
254\r
255Es sollte vielleicht eine automatische Korrektur der CPAN Config machen, wenn\r
256das nicht schon gemacht wurde.\r
257\r
258"Patches Welcome" - Patches sind immer willkommen beim Autor oder den anderen\r
259Mitwirkenden.\r
260\r
261Auf Win32 Systemen werden die Umgebungsvariablen nicht direkt in die Registrierung\r
262geschrieben damit sie auch nach dem Neustarten erhalten bleiben.\r
263\r
264=head1 FEHLERANALYSE\r
265\r
266Wenn du local::lib konfiguriert hast CPAN Module in deinem Home Verzeichnis\r
267zu installieren, und du danach versuchst mit C<cpan -i Foo::Bar> ein Modul\r
268zu installieren, und dabei einen Fehler bekommst, wie: C<Warning: You do not \r
269have permissions to install into /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux at\r
270/usr/lib64/perl5/5.8.8/Foo/Bar.pm> und in der installationsausgabe steht\r
271irgendwo ein Fehler der sagt C<'INSTALL_BASE' is not a known MakeMaker parameter \r
272name>, dann hast du aus irgendeinem Grund dein neue Version von ExtUtils::MakeMaker\r
273verloren.\r
274\r
275Um dies zu korrigieren, einfach nochmal die bootstrapping Methode laufen lassen,\r
276wie oben beschrieben.\r
277\r
278Dann starte C<rm -r ~/.cpan/build/Foo-Bar*>\r
279\r
280Abschliessend dann nochmal mit C<cpan -i Foo::Bar> installieren und die Probleme\r
281sollten verschwunden sein.\r
282\r
283=head1 UMGEBUNGSVARIABLEN\r
284\r
285=over 4\r
286\r
287=item SHELL\r
288\r
289=item COMSPEC\r
290\r
291local::lib schaut in die C<SHELL> Umgebungsvariable um die korrekten Kommandos\r
292zu der Shell Konfiguration hinzuzufügen.\r
293\r
294Auf Win32 Systemen, C<COMSPEC> wird auch analysiert.\r
295\r
296=back\r
297\r
298=head1 AUTOR DER ÜBERSETZUNG\r
299\r
300Torsten Raudssus <torsten@raudssus.de> http://www.raudssus.de/\r
301\r
302=head1 URHEBERRECHT\r
303\r
304Copyright (c) 2007 - 2010 von den local::lib L</AUTHOR> und L</CONTRIBUTORS>\r
305aufgelistet in L<local::lib|local::lib>.\r
306\r
307=head1 LIZENZ\r
308\r
309Diese Sammlung ist freie Software und kann unter der selben Lizenz verbreitet\r
310werden wie Perl selber.\r
311\r
312=cut\r
313\r
3141;\r