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