1POD2::DE::local::lib(3)User Contributed Perl DocumentatioPnOD2::DE::local::lib(3)
2
3
4

NAME

6       local::lib~[de] - Erschaffen und benutzen von Perl Modulen in einem
7       lokalen lib/ Verzeichnis mit PERL5LIB
8

SYNOPSIS

10       Im Code -
11
12         use local::lib; # Benutzt das Verzeichnis ~/perl5 zum anlegen des lokalen lib/ Verzeichnisses
13
14         use local::lib '~/foo'; # das selbe, aber mit ~/foo
15
16         # Oder...
17         use FindBin;
18         use local::lib "$FindBin::Bin/../support";  # Applikationsspezifische Sammlung von Modulen
19
20       Von der Shell -
21
22         # Installiert LWP und alle notwendigen Abhaengigkeiten in das '~/perl5' Verzeichnis
23         perl -MCPAN -Mlocal::lib -e 'CPAN::install(LWP)'
24
25         # Gibt die Shell Kommandos aus um die Umgebung vorzubereiten
26         $ perl -Mlocal::lib
27         export PERL_MB_OPT='--install_base /home/username/perl5'
28         export PERL_MM_OPT='INSTALL_BASE=/home/username/perl5'
29         export PERL5LIB='/home/username/perl5/lib/perl5/i386-linux:/home/username/perl5/lib/perl5'
30         export PATH="/home/username/perl5/bin:$PATH"
31
32   Die Bootstrapping Methode
33       Ein typischer Weg um local::lib zu benutzen ist die sogenannte
34       "Bootstrapping" Methode.  Diese Methode wird benutzt wenn noch kein
35       local::lib auf dem System installiert ist.  In diesem Fall kannst du
36       einfach local::lib direkt in deinem Home-Verzeichnis installieren.
37
38       Selbst wenn du administrative Rechte hast, ist es wichtig das die
39       Umgebungsvariablen von Schritt 4 in deinem Shell Startup Skript gesetzt
40       werden. Ohne diesen Schritt werden die Module von CPAN weiterhin im
41       System installiert und auch Perl Skripte die du startest wuerden das
42       von local::lib erstellte lib/ Verzeichnis nicht nutzen.
43
44       Standardmaessig installiert sich local::lib in ~/perl5.
45
46       Windows Benutzern muessen ausserdem dies hier lesen: "Unterschiede bei
47       Benutzung dieses Module mit Win32".
48
49       1. Lade das Tar-Archiv von CPAN runter (Suche nach "Download" auf der
50       CPAN Seite von local::lib) und entpacke es in einem beliebigem
51       Verzeichnis. Um das obige Problem zu vermeiden, sollte man dies als
52       normaler User tun und nicht als root oder Administrator.
53
54       2. Starte in dem entstandenen Verzeichnis folgenden Befehl:
55
56         perl Makefile.PL --bootstrap
57
58       Wenn das System dir vorschlaegt gewisse Dinge eigenstaendig zu
59       konfigurieren ist es in fast allen Faellen vollkommen in Ordnung
60       einfach "yes" zu antworten.
61
62       Falls du local::lib nicht in das Standard Verzeichnis installieren
63       willst, musst du dieses Verzeichnis als Parameter angeben:
64
65         perl Makefile.PL --bootstrap=~/foo
66
67       3. Danach folgenden Befehl starten: (local::lib erwartet make auf dem
68       System)
69
70         make test && make install
71
72       4. Nun muessen wir die benoetigten Umgebungsvariablen, damit Perl unser
73       neu generiertes lib/ Verzeichnis benutzt. Wenn du bash oder eine andere
74       Bourne Shell benutzt, kannst du es ueber diesen Weg zu deinem Shell
75       Startup Skript hinzufuegen:
76
77         echo 'eval $(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib)' >>~/.bashrc
78
79       Wenn du C Shell benutzt, du kannst das gleiche hiermit erreichen:
80
81         /bin/csh
82         echo $SHELL
83         /bin/csh
84         perl -I$HOME/perl5/lib/perl5 -Mlocal::lib >> ~/.cshrc
85
86       Wenn du beim bootstrappen ein anderes Verzeichnis benutzt als das
87       Standardverzeichnis, dann musst du dieses Verzeichnis als Parameter
88       beim Laden des Modules local::lib angeben:
89
90         echo 'eval $(perl -I$HOME/foo/lib/perl5 -Mlocal::lib=$HOME/foo)' >>~/.bashrc
91
92       Nachdem diese Aenderungen in deinem Shell Startup Skript gemacht
93       wurden, ist es nun wichtig das diese Umgebungsvariablen auch gesetzt
94       sind in deiner aktuellen Umgebung. In Bourne Shells macht man dies z.B.
95       mit ". ~/.bashrc", und in C Shell wuerde man es mit: "source ~/.cshrc"
96       mit.
97
98       Wenn du eine sehr langsames System hast, oder du unter drakonischen
99       Regulierungen des Plattenplatz leben musst, kann man die automatische
100       Generierung der manpages vom POD bei der Installation des Moduls
101       deaktivieren beim bootstrapping mit dem "--no-manpages" Parameter:
102
103         perl Makefile.PL --bootstrap --no-manpages
104
105       Um zu vermeiden das man mehrere bootstraps macht um z.B. fuer
106       verschiedene Applikationen eigene local::lib Installationen zu nutzen,
107       kann man eine dieser Umgebungen benutzen um einfach in beliebigen
108       anderen Verzeichnis Module zu installieren und somit weitere
109       eigenstaendige lib/ Umgebungen zu bekommen:
110
111         cd ~/mydir1
112         perl -Mlocal::lib=./
113         eval $(perl -Mlocal::lib=./)  ### Um die Umgebungsvariablen fuer die
114                                       ### aktuelle Shell zusetzen
115
116         printenv                      ### Hier kannst du sehen das ~/mydir1
117                                       ### in der PERL5LIB Umgebungsvariable
118                                       ### steht
119
120         perl -MCPAN -e install ...    ### welche Module auch immer ...
121         cd ../mydir2
122
123         ... WIEDERHOLEN ...
124
125       Fuer mehrere Umgebungen in dieser Form brauch man eine Modifikation in
126       der Benutzung von "use FindBin" in dem "Im Code" Beispiel oben.  Wenn
127       du sowas machst, und du hast damit z.B. Perl Module nach "~/mydir1/lib"
128       installiert und du hast ein Script in "~/mydir1/scripts/myscript.pl",
129       du musst dort angeben das die Module die es braucht im Verzeichnis
130       "~/mydir1/lib" liegen.
131
132       In "~/mydir1/scripts/myscript.pl" steht dann:
133
134         use strict;
135         use warnings;
136         use local::lib "$FindBin::Bin/..";  ### zeigt auf ~/mydir1 und local::lib
137                                             ### findet dort lib
138         use lib "$FindBin::Bin/../lib";     ### zeigt auf ~/mydir1/lib
139
140       Setze das vor jeden BEGIN { ... } Block der die Module braucht die du
141       installiert hast.
142
143   Unterschiede bei Benutzung dieses Module mit Win32
144       Um die noetigen Umgebungsvariablen fuer diese Variablen in der
145       derzeitigen Sitzung mit "CMD.EXE" zu setzen, kann man folgendes
146       kommando nutzen:
147
148         C:\>perl -Mlocal::lib
149         set PERL_MB_OPT=--install_base C:\DOCUME~1\ADMINI~1\perl5
150         set PERL_MM_OPT=INSTALL_BASE=C:\DOCUME~1\ADMINI~1\perl5
151         set PERL5LIB=C:\DOCUME~1\ADMINI~1\perl5\lib\perl5;C:\DOCUME~1\ADMINI~1\perl5\lib\perl5\MSWin32-x86-multi-thread
152         set PATH=C:\DOCUME~1\ADMINI~1\perl5\bin;%PATH%
153
154         ### Um die Umgebungsvariablen fuer diese Shell alleine zu setzen
155         C:\>perl -Mlocal::lib > %TEMP%\tmp.bat && %TEMP%\tmp.bat && del %TEMP%\temp.bat
156         ### anstelle von $(perl -Mlocal::lib=./) in bash.
157
158       Wenn du willst das die Umgebungsvariablen dauerhaft gesetzt sind, musst
159       du diese in Systemsteuerung / System dauerhaft selber eintragen oder
160       App::local::lib::Win32Helper benutzen.
161
162       Die "~" wird uebersetzt zu dem Benutzer Profil Verzeichnis (das
163       Verzeichnis was beim User als "Dokumente und Einstellungen" bekannt ist
164       unter Windows XP und vorher oder das "Benutzer" Verzeichnis bei Windows
165       Vista und spaeter), solange $ENV{HOME} nicht gesetzt ist. Das
166       Verzeichnis wird hierbei zu dem korrekten Kurznamen umgewandelt, und
167       muss daher definitiv existieren, und wird um die noetigen
168       Unterverzeichnise erweitert.
169

GRUNDPRINZIP

171       Die Version von den Perl Paketen die man benoetigt fuer spezifische
172       Aufgaben sind sehr haeufig nicht die richtigen oder korrekten Versionen
173       auf dem System vorinstalliert. Ein Updaten von diesen Modulen ist in
174       vielen Faellen einfach nicht moeglich weil die noetigen Rechte fehlen.
175       Ausserdem ist es generell nicht gut eigenstaendig die Versionen der
176       Module auf dem System auszutauschen, weil natuerlich der Rest des
177       Systems genau die Version erwartet die von der Systemverwaltung auch
178       installiert wurde.
179
180       local::lib loest dieses Problem, es erlaubt dir dein komplett eigenes
181       Verzeichnis fuer deine CPAN Module zu haben und bist so nicht genoetigt
182       die Module vom System zu nutzen oder andersrum andere User nicht mit
183       individuellen Modulwuenschen zu Ueberarbeitung ihres Codes zu zwingen,
184       weil bestimmte Module zentral fuer alle auf neuere Version upgedatet
185       werden. Die Installation findet hierbei dann z.B. im Home Verzeichnis
186       statt. Es werden nur Umgebungsvariablen gesetzt die das installierte
187       Perl dazu bewegen die im Homeverzeichnis installierten Module zu
188       benutzen, zusaetzlich und vorgezogen zu denen auf dem System.
189
190       Daher muss man sich wenn man ein Paket System benutzt, wie z.b. Debian,
191       garnicht mehr Sorgen machen, irgendwas auf dem System zu verletzten nur
192       durch die Installation von Perl Modulen.
193

BESCHREIBUNG

195       Dieses Modul bietet eine schnelle und legitime Art und Weise ein
196       sogenanntes bootstrapping zu machen um in einem User Homeverzeichnis
197       eine Sammlung von Modulen zu installieren. Es erstellt auch die
198       noetigen Umgebungsvariablen die benoetigt werden um diese Module zu
199       nutzen, passend zu der Shell die der User in der Umgebungsvariable
200       "SHELL" angegeben hat, um dann direkt passend in die entsprechenden
201       Konfigurationsdateien der Shell einfuegt zu werden.
202
203       Weitergehend ist local::lib in der Lage Module zu nutzen die nicht im
204       standardmaessigen @INC Pfad von Perl enthalten sind. Das macht es
205       einfacher fuer bestimmte Applikationen ein bestimmtes Set von Modulen
206       zu installieren ohne die anderen Module auf dem System in irgendeiner
207       Art anzufassen.  Damit es z.B. auch sicherer Module zu installieren die
208       vom Maintainer noch nicht als Release verfuegbar sind.
209
210       Beim Import setzt local::lib die folgenden Umgebungsvariablen zu den
211       noetigen Werten:
212
213       PERL_MB_OPT
214       PERL_MM_OPT
215       PERL5LIB
216       PATH
217           Am PATH wird natuerlich angehangen, und nicht ersetzt.
218
219       Diese Werte sind dann verfuegbar fuer jeden Code der danach importiert
220       wurde.
221

ERSTELLEN EINES EIGENSTAeNDIGE SAMMLUNG VON MODULEN

223       Mit lib::core::only besteht eine Moeglichkeit dieses zutun, aber
224       beachte das hier eine Menge von Fallstricken und Problemen existieren,
225       und man sollte immer darauf achten das man auf einem Perl aufbaut was
226       sowenig wie moeglich veraendert wurde (d.h. site und vendor Verzeichnis
227       so leer wie moeglich).
228

METHODEN

230   ensure_dir_structure_for
231       Parameter: $path
232       Rueckgabewert: Keiner
233
234       Versucht den angegebenen Pfad anzulegen, mit allen noetigen
235       drueberliegenden Verzeichnissen. Im Fehlerfall wird eine Exception
236       geworfen.
237
238   print_environment_vars_for
239       Parameter: $pfad
240       Rueckgabewert: Keiner
241
242       Gibt die Umgebungsvariablen aus, die benoetigt werden um den
243       angegebenen Pfad als Basis Verzeichnis zu nutzen.
244
245   build_environment_vars_for
246       Parameter: $pfad, $interpolate
247       Rueckgabewert: \%umgebungs_variablen
248
249       Gibt ein Hash zurueck mit den Variablen die noetig sind in den
250       Umgebungsvariablen um eine Installation in dem gegebenen Pfad zu
251       benutzen.
252
253   setup_env_hash_for
254       Parameter: $pfad
255       Rueckgabewert: Keiner
256
257       Setzt die %ENV Eintraege basierend auf dem Aufruf von
258       "build_environment_vars_for".
259
260   install_base_perl_path
261       Parameter: $pfad
262       Rueckgabewert: $module_installations_pfad
263
264       Gibt den Pfad zurueck der benutzt wird um Perl Module zu installieren
265       bei dem gegebenen Pfad als Basis. Prinzipiell wird nur "lib" und
266       "perl5" als Pfadelemente angehangen.
267
268   install_base_arch_path
269       Parameter: $pfad
270       Rueckgabewert: $architektur_module_installations_pfad
271
272       Gibt den Pfad zurueck der benutzt wird um die Architektur-abhaengigen
273       Perl Module zu installieren basirend auf dem angegebenen Pfad als
274       Basis. Basierend auf dem was "install_base_perl_path" zurueckgibt, and
275       appends the value of $Config{archname}.asis.
276
277   install_base_bin_path
278       Parameter: $pfad
279       Rueckgabewert: $ausfuehrbare_programme_installations_pfad
280
281       Gibt den Pfad zurueck, wo ausfuehrbare Programme installiert werden,
282       basierend auf der Basis des angegebenen Pfad. Basierend auf
283       "install_base_perl_path" Rueckgabewert, haengt diese Methode noch "bin"
284       an.
285
286   resolve_empty_path
287       Parameter: $pfad
288       Rueckgabewert: $basis_pfad
289
290       Erstellt und gibt zurueck den Pfad der benutzt wird als Basis zur
291       Installation der Module. Standardmaessig dies ist "~/perl5".
292
293   resolve_home_path( $path )
294       Parameter: $pfad
295       Rueckgabewert: $home
296
297       Versucht das Home Verzeichnis vom aktullen User zu finden. Wenn
298       "File::HomeDir" installiert ist, fuer dieses benutzt dafuer. Es wird
299       eine Exception geworfen, wenn kein Home Verzeichnis ermittelt werden
300       konnte.
301
302   resolve_relative_path
303       Parameter: $pfad
304       Rueckgabewert: $absoluter_pfad
305
306       Macht aus dem angegebenen Pfad einen absoluten Pfad.
307
308   resolve_path
309       Parameter: $pfad
310       Rueckgabewert: $absoluter_pfad
311
312       Hierbei wird der Pfad durch die folgende Methoden gegeben, wobei der
313       Rueckgabewert der ersten an die naechste weitergeben wird, um die
314       Umgebung zu konfigurieren fuer die lokale Bibliotheks Installation:
315       "resolve_empty_path", "resolve_home_path", "resolve_relative_path".
316       Der daraus resultierende Pfad wird zu "resolve_empty_path" uebergeben,
317       dessen Resultat dann weitergegeben wird an "resolve_home_path", wessen
318       Resultat dann weitergegeben wird an "resolve_relative_path". Dieses
319       Resultat wird dann final an "resolve_path" uebergeben, welches dann den
320       Rueckgabewert stellt.
321

EINE WARNUNG VOR UNINST=1

323       Wenn man local::lib in Kombination mit "make install UNINST=1" benutzt,
324       muss man vorsichtig sein ueber die Tatsache das der Prozess ueber die
325       Neuinstallation eine nicht ausreichende Sicherheit hat bezueglich wo er
326       nun installieren muss.  Hierdurch mann es passieren das beim
327       deinstallieren eines Modul u.U. das globale Modul deinstalliert wird
328       (wenn die Rechte vorhanden sind) aber die neue Version nur in der
329       lokalen Version installiert ist. Es ist hier also sehr wichtig das man
330       "make install UNINST=1" und local::lib nur gleichzeitig benutzt wenn
331       man sehr sicher darueber ist welche Konsequenzen einem entgegenkommen.
332

EINSCHRAeNKUNGEN

334       Die Werkzeuge von perl, die benutzt werden um die Pakete zu
335       installieren (die sogenannte toolchain), sind leider nicht in der Lage
336       sauber mit Verzeichnissen umzugehen die Leerzeichen enthalten und
337       koennen daher local::lib nicht direkt in ein solches Verzeichnis
338       installieren. Was du machen kannst ist nach der Installation von
339       local::lib und der Module die du in deiner local::lib haben willst, das
340       gesamte Verzeichnis dahin zu bewegen. local::lib kann mit dem
341       Verzeichnis mit Leerzeichen umgehen. Bitte aufpassen das natuerlich
342       eine weitere Installation oder ein Erneuern von Paketen mit dem CPAN
343       Programm nicht mehr moeglich ist.
344
345       Die Shell Erkennung ist sehr primitiv. Derzeit ist es so das alles was
346       "csh" im Namen hat auch als C Shell eingeordnet wird, und alles andere
347       wird als Bourne Shell betrachet, ausser auf Win32 Systemen. Wenn die
348       "SHELL" Variable nicht gesetzt ist, eine Bourne Shell wird angenommen.
349
350       Bootstrap ist leider ein Hack, und wird auf jedenfall CPAN.pm benutzen
351       fuer ExtUtils::MakeMaker, auch wenn CPANPLUS installiert ist.
352
353       Es setzt definitiv PERL5LIB, PERL_MM_OPT und PERL_MB_OPT neu und
354       vernichtet jeden Wert der vorher gesetzt war.
355
356       Es sollte vielleicht eine automatische Korrektur der CPAN Config
357       machen, wenn das nicht schon gemacht wurde.
358
359       "Patches Welcome" - Patches sind immer willkommen beim Autor oder den
360       anderen Mitwirkenden.
361
362       Auf Win32 Systemen werden die Umgebungsvariablen nicht direkt in die
363       Registrierung geschrieben damit sie auch nach dem Neustarten erhalten
364       bleiben.
365

FEHLERANALYSE

367       Wenn du local::lib konfiguriert hast CPAN Module in deinem Home
368       Verzeichnis zu installieren, und du danach versuchst mit "cpan -i
369       Foo::Bar" ein Modul zu installieren, und dabei einen Fehler bekommst,
370       wie: "Warning: You do not have permissions to install into
371       /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux at
372       /usr/lib64/perl5/5.8.8/Foo/Bar.pm" und in der installationsausgabe
373       steht irgendwo ein Fehler der sagt "'INSTALL_BASE' is not a known
374       MakeMaker parameter name", dann hast du aus irgendeinem Grund dein neue
375       Version von ExtUtils::MakeMaker verloren.
376
377       Um dies zu korrigieren, einfach nochmal die bootstrapping Methode
378       laufen lassen, wie oben beschrieben.
379
380       Dann starte "rm -r ~/.cpan/build/Foo-Bar*"
381
382       Abschliessend dann nochmal mit "cpan -i Foo::Bar" installieren und die
383       Probleme sollten verschwunden sein.
384

UMGEBUNGSVARIABLEN

386       SHELL
387       COMSPEC
388           local::lib schaut in die "SHELL" Umgebungsvariable um die korrekten
389           Kommandos zu der Shell Konfiguration hinzuzufuegen.
390
391           Auf Win32 Systemen, "COMSPEC" wird auch analysiert.
392

SUPPORT

394       IRC:
395
396           Wir sind im Channel #local-lib auf dem Server irc.perl.org.
397

AUTOR DER UeBERSETZUNG

399       Torsten Raudssus <torsten@raudssus.de> http://www.raudssus.de/
400

URHEBERRECHT

402       Copyright (c) 2007 - 2010 von den local::lib "AUTHOR" in local::lib und
403       "CONTRIBUTORS" in local::lib aufgelistet in local::lib.
404

LIZENZ

406       Diese Sammlung ist freie Software und kann unter der selben Lizenz
407       verbreitet werden wie Perl selber.
408
409
410
411perl v5.12.2                      2010-12-10           POD2::DE::local::lib(3)
Impressum