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