Updated Changes and version
[p5sagit/local-lib.git] / lib / podloc / de_DE / local / lib.pod
1 =encoding utf8\r
2 \r
3 =head1 NAME\r
4 \r
5 podloc::de_DE::local::lib - Erschaffen und benutzen von Perl Modulen in einem lokalen lib/ Verzeichnis mit PERL5LIB\r
6 \r
7 L<Original English Translation|local::lib>\r
8 \r
9 =head1 SYNOPSIS\r
10 \r
11 Im 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
17   # Oder...\r
18   use FindBin;\r
19   use local::lib "$FindBin::Bin/../support";  # Applikationsspezifische Sammlung von Modulen\r
20 \r
21 Von 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
35 Ein typischer Weg um local::lib zu benutzen ist die sogenannte "Bootstrapping" Methode.\r
36 Diese Methode wird benutzt wenn noch kein local::lib auf dem System installiert ist.\r
37 In diesem Fall kannst du einfach local::lib direkt in deinem Home-Verzeichnis installieren.\r
38 \r
39 Selbst wenn du administrative Rechte hast, ist es wichtig das die Umgebungsvariablen von\r
40 Schritt 4 in deinem Shell Startup Skript gesetzt werden. Ohne diesen Schritt werden die\r
41 Module von CPAN weiterhin im System installiert und auch Perl Skripte die du startest\r
42 würden das von local::lib erstellte lib/ Verzeichnis nicht nutzen.\r
43 \r
44 Windows Benutzern müssen ausserdem dies hier lesen: \r
45 L</Unterschiede bei Benutzung dieses Module mit Win32>.\r
46 \r
47 1. Lade das Tar-Archiv von CPAN runter (Suche nach "Download" auf der CPAN Seite von\r
48 local::lib) und entpacke es in einem beliebigem Verzeichnis. Um das obige Problem zu\r
49 vermeiden, sollte man dies als normaler User tun und nicht als root oder Administrator.\r
50 \r
51 2. Starte in dem entstandenen Verzeichnis folgenden Befehl:\r
52 \r
53   perl Makefile.PL --bootstrap\r
54 \r
55 Wenn das System dir vorschlägt gewisse Dinge eigenständig zu konfigurieren ist es in\r
56 fast allen Fällen vollkommen in Ordnung einfach "yes" zu antworten.\r
57 \r
58 Falls du local::lib nicht in das Standard Verzeichnis installieren willst, musst du\r
59 dieses Verzeichnis als Parameter angeben:\r
60 \r
61   perl Makefile.PL --bootstrap=~/foo\r
62 \r
63 3. Danach folgenden Befehl starten: (local::lib erwartet make auf dem System)\r
64 \r
65   make test && make install\r
66 \r
67 4. Nun müssen wir die benötigten Umgebungsvariablen, damit Perl unser neu generiertes\r
68 lib/ Verzeichnis benutzt. Wenn du bash oder eine andere Bourne Shell benutzt, kannst \r
69 du 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
73 Wenn 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
80 Wenn du beim bootstrappen ein anderes Verzeichnis benutzt als das Standardverzeichnis,\r
81 dann 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
85 Nachdem diese Änderungen in deinem Shell Startup Skript gemacht wurden, ist es nun wichtig\r
86 das diese Umgebungsvariablen auch gesetzt sind in deiner aktuellen Umgebung. In Bourne\r
87 Shells macht man dies z.B. mit C<. ~/.bashrc>, und in C Shell würde man es mit: \r
88 C<source ~/.cshrc> mit.\r
89 \r
90 Wenn du eine sehr langsames System hast, oder du unter drakonischen Regulierungen des\r
91 Plattenplatz leben musst, kann man die automatische Generierung der manpages vom POD\r
92 bei der Installation des Moduls deaktivieren beim bootstrapping mit dem C<--no-manpages>\r
93 Parameter:\r
94 \r
95   perl Makefile.PL --bootstrap --no-manpages\r
96 \r
97 Wenn du mehrere lokale lib/ Installationen nutzen möchtest, z.B. für verschiedene\r
98 Applikationen. Hierfür kannst du local::lib einfach einm\r
99 \r
100 Um zu vermeiden das man mehrere bootstraps macht um z.B. für verschiedene Applikationen\r
101 eigene local::lib Installationen zu nutzen, kann man eine dieser Umgebungen benutzen\r
102 um einfach in beliebigen anderen Verzeichnis Module zu installieren und somit weitere\r
103 eigenstä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
119 Für mehrere Umgebungen in dieser Form brauch man eine Modifikation in der\r
120 Benutzung von C<< use FindBin >> in dem "Im Code" Beispiel oben.\r
121 Wenn 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
124 die es braucht im Verzeichnis C<< ~/mydir1/lib >> liegen.\r
125 \r
126 In 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
134 Setze das vor jeden BEGIN { ... } Block der die Module braucht die du\r
135 installiert hast.\r
136 \r
137 =head2 Unterschiede bei Benutzung dieses Module mit Win32\r
138 \r
139 Um die nötigen Umgebungsvariablen für diese Variablen in der derzeitigen\r
140 Sitzung 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
152 Wenn du willst das die Umgebungsvariablen dauerhaft gesetzt sind, musst du diese\r
153 in Systemsteuerung / System dauerhaft selber eintragen oder \r
154 L<App::local::lib::Win32Helper> benutzen.\r
155 \r
156 Die "~" wird übersetzt zu dem Benutzer Profil Verzeichnis (das Verzeichnis was\r
157 beim User als "Dokumente und Einstellungen" bekannt ist unter Windows XP und\r
158 vorher 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
160 Kurznamen umgewandelt, und muss daher definitiv existieren, und wird um die\r
161 nötigen Unterverzeichnise erweitert.\r
162 \r
163 =head1 GRUNDPRINZIP\r
164 \r
165 Die Version von den Perl Paketen die man benötigt für spezifische Aufgaben sind\r
166 sehr häufig nicht die richtigen oder korrekten Versionen auf dem System\r
167 vorinstalliert. Ein Updaten von diesen Modulen ist in vielen Fällen einfach\r
168 nicht möglich weil die nötigen Rechte fehlen. Ausserdem ist es generell nicht\r
169 gut eigenständig die Versionen der Module auf dem System auszutauschen, weil\r
170 natürlich der Rest des Systems genau die Version erwartet die von der\r
171 Systemverwaltung auch installiert wurde.\r
172 \r
173 local::lib löst dieses Problem, es erlaubt dir dein komplett eigenes Verzeichnis\r
174 für deine CPAN Module zu haben und bist so nicht genötigt die Module vom\r
175 System zu nutzen oder andersrum andere User nicht mit individuellen \r
176 Modulwünschen zu Überarbeitung ihres Codes zu zwingen, weil bestimmte Module\r
177 zentral für alle auf neuere Version upgedatet werden. Die Installation findet\r
178 hierbei dann z.B. im Home Verzeichnis statt. Es werden nur Umgebungsvariablen\r
179 gesetzt die das installierte Perl dazu bewegen die im Homeverzeichnis \r
180 installierten Module zu benutzen, zusätzlich und vorgezogen zu denen auf dem\r
181 System.\r
182 \r
183 Daher muss man sich wenn man ein Paket System benutzt, wie z.b. Debian, garnicht\r
184 mehr Sorgen machen, irgendwas auf dem System zu verletzten nur durch die\r
185 Installation von Perl Modulen.\r
186 \r
187 =head1 BESCHREIBUNG\r
188 \r
189 Dieses Modul bietet eine schnelle und legitime Art und Weise ein sogenanntes\r
190 bootstrapping zu machen um in einem User Homeverzeichnis eine Sammlung von\r
191 Modulen zu installieren. Es erstellt auch die nötigen Umgebungsvariablen\r
192 die benötigt werden um diese Module zu nutzen, passend zu der Shell die der\r
193 User in der Umgebungsvariable C<SHELL> angegeben hat, um dann direkt passend\r
194 in die entsprechenden Konfigurationsdateien der Shell einfügt zu werden.\r
195 \r
196 Weitergehend ist local::lib in der Lage Module zu nutzen die nicht im\r
197 standardmäßigen C<@INC> Pfad von Perl enthalten sind. Das macht es einfacher\r
198 für bestimmte Applikationen ein bestimmtes Set von Modulen zu installieren\r
199 ohne die anderen Module auf dem System in irgendeiner Art anzufassen.\r
200 Damit es z.B. auch sicherer Module zu installieren die vom Maintainer noch\r
201 nicht als Release verfügbar sind.\r
202 \r
203 Beim Import setzt local::lib die folgenden Umgebungsvariablen zu den\r
204 nö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
216 Am PATH wird natürlich angehangen, und nicht ersetzt.\r
217 \r
218 =back\r
219 \r
220 Diese 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
224 C<Übersetzung fehlt...>\r
225 \r
226 =head1 METHODS\r
227 \r
228 C<Übersetzung fehlt...>\r
229 \r
230 =head1 A WARNING ABOUT UNINST=1\r
231 \r
232 Wenn man local::lib in Kombination mit "make install UNINST=1" benutzt, muss\r
233 man vorsichtig sein über die Tatsache das der Prozess über die Neuinstallation\r
234 eine nicht ausreichende Sicherheit hat bezüglich wo er nun installieren muss.\r
235 Hierdurch mann es passieren das beim deinstallieren eines Modul u.U. das\r
236 globale Modul deinstalliert wird (wenn die Rechte vorhanden sind) aber die\r
237 neue Version nur in der lokalen Version installiert ist. Es ist hier also sehr\r
238 wichtig das man "make install UNINST=1" und local::lib nur gleichzeitig\r
239 benutzt wenn man sehr sicher darüber ist welche Konsequenzen einem\r
240 entgegenkommen.\r
241 \r
242 =head1 EINSCHRÄNKUNGEN\r
243 \r
244 Die Shell Erkennung ist sehr primitiv. Derzeit ist es so das alles was "csh"\r
245 im Namen hat auch als C Shell eingeordnet wird, und alles andere wird als\r
246 Bourne Shell betrachet, ausser auf Win32 Systemen. Wenn die C<SHELL> Variable\r
247 nicht gesetzt ist, eine Bourne Shell wird angenommen.\r
248 \r
249 Bootstrap ist leider ein Hack, und wird auf jedenfall CPAN.pm benutzen für\r
250 ExtUtils::MakeMaker, auch wenn CPANPLUS installiert ist.\r
251 \r
252 Es setzt definitiv PERL5LIB, PERL_MM_OPT und MODULEBUILDRC neu und vernichtet\r
253 jeden Wert der vorher gesetzt war.\r
254 \r
255 Es sollte vielleicht eine automatische Korrektur der CPAN Config machen, wenn\r
256 das nicht schon gemacht wurde.\r
257 \r
258 "Patches Welcome" - Patches sind immer willkommen beim Autor oder den anderen\r
259 Mitwirkenden.\r
260 \r
261 Auf Win32 Systemen werden die Umgebungsvariablen nicht direkt in die Registrierung\r
262 geschrieben damit sie auch nach dem Neustarten erhalten bleiben.\r
263 \r
264 =head1 FEHLERANALYSE\r
265 \r
266 Wenn du local::lib konfiguriert hast CPAN Module in deinem Home Verzeichnis\r
267 zu installieren, und du danach versuchst mit C<cpan -i Foo::Bar> ein Modul\r
268 zu installieren, und dabei einen Fehler bekommst, wie: C<Warning: You do not \r
269 have 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
271 irgendwo ein Fehler der sagt C<'INSTALL_BASE' is not a known MakeMaker parameter \r
272 name>, dann hast du aus irgendeinem Grund dein neue Version von ExtUtils::MakeMaker\r
273 verloren.\r
274 \r
275 Um dies zu korrigieren, einfach nochmal die bootstrapping Methode laufen lassen,\r
276 wie oben beschrieben.\r
277 \r
278 Dann starte C<rm -r ~/.cpan/build/Foo-Bar*>\r
279 \r
280 Abschliessend dann nochmal mit C<cpan -i Foo::Bar> installieren und die Probleme\r
281 sollten 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
291 local::lib schaut in die C<SHELL> Umgebungsvariable um die korrekten Kommandos\r
292 zu der Shell Konfiguration hinzuzufügen.\r
293 \r
294 Auf Win32 Systemen, C<COMSPEC> wird auch analysiert.\r
295 \r
296 =back\r
297 \r
298 =head1 AUTOR DER ÜBERSETZUNG\r
299 \r
300 Torsten Raudssus <torsten@raudssus.de> http://www.raudssus.de/\r
301 \r
302 =head1 URHEBERRECHT\r
303 \r
304 Copyright (c) 2007 - 2010 von den local::lib L</AUTHOR> und L</CONTRIBUTORS>\r
305 aufgelistet in L<local::lib|local::lib>.\r
306 \r
307 =head1 LIZENZ\r
308 \r
309 Diese Sammlung ist freie Software und kann unter der selben Lizenz verbreitet\r
310 werden wie Perl selber.\r
311 \r
312 =cut\r
313 \r
314 1;\r