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 Abhängigkeiten 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 würden das von
42       local::lib erstellte lib/ Verzeichnis nicht nutzen.
43
44       Standardmäßig installiert sich local::lib in ~/perl5.
45
46       Windows Benutzern müssen 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 vorschlägt gewisse Dinge eigenständig zu
59       konfigurieren ist es in fast allen Fällen vollkommen in Ordnung einfach
60       "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 müssen wir die benötigten Umgebungsvariablen, damit Perl unser
73       neu generiertes lib/ Verzeichnis benutzt. Wenn du bash oder eine andere
74       Bourne Shell benutzt, kannst du es über diesen Weg zu deinem Shell
75       Startup Skript hinzufügen:
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 Änderungen in deinem Shell Startup Skript gemacht wurden,
93       ist es nun wichtig das diese Umgebungsvariablen auch gesetzt sind in
94       deiner aktuellen Umgebung. In Bourne Shells macht man dies z.B. mit ".
95       ~/.bashrc", und in C Shell würde man es mit: "source ~/.cshrc" mit.
96
97       Wenn du eine sehr langsames System hast, oder du unter drakonischen
98       Regulierungen des Plattenplatz leben musst, kann man die automatische
99       Generierung der manpages vom POD bei der Installation des Moduls
100       deaktivieren beim bootstrapping mit dem "--no-manpages" Parameter:
101
102         perl Makefile.PL --bootstrap --no-manpages
103
104       Um zu vermeiden das man mehrere bootstraps macht um z.B. für
105       verschiedene Applikationen eigene local::lib Installationen zu nutzen,
106       kann man eine dieser Umgebungen benutzen um einfach in beliebigen
107       anderen Verzeichnis Module zu installieren und somit weitere
108       eigenständige lib/ Umgebungen zu bekommen:
109
110         cd ~/mydir1
111         perl -Mlocal::lib=./
112         eval $(perl -Mlocal::lib=./)  ### Um die Umgebungsvariablen für die
113                                       ### aktuelle Shell zusetzen
114
115         printenv                      ### Hier kannst du sehen das ~/mydir1
116                                       ### in der PERL5LIB Umgebungsvariable
117                                       ### steht
118
119         perl -MCPAN -e install ...    ### welche Module auch immer ...
120         cd ../mydir2
121
122         ... WIEDERHOLEN ...
123
124       Für mehrere Umgebungen in dieser Form brauch man eine Modifikation in
125       der Benutzung von "use FindBin" in dem "Im Code" Beispiel oben.  Wenn
126       du sowas machst, und du hast damit z.B. Perl Module nach "~/mydir1/lib"
127       installiert und du hast ein Script in "~/mydir1/scripts/myscript.pl",
128       du musst dort angeben das die Module die es braucht im Verzeichnis
129       "~/mydir1/lib" liegen.
130
131       In "~/mydir1/scripts/myscript.pl" steht dann:
132
133         use strict;
134         use warnings;
135         use local::lib "$FindBin::Bin/..";  ### zeigt auf ~/mydir1 und local::lib
136                                             ### findet dort lib
137         use lib "$FindBin::Bin/../lib";     ### zeigt auf ~/mydir1/lib
138
139       Setze das vor jeden BEGIN { ... } Block der die Module braucht die du
140       installiert hast.
141
142   Unterschiede bei Benutzung dieses Module mit Win32
143       Um die nötigen Umgebungsvariablen für diese Variablen in der
144       derzeitigen Sitzung mit "CMD.EXE" zu setzen, kann man folgendes
145       kommando nutzen:
146
147         C:\>perl -Mlocal::lib
148         set PERL_MB_OPT=--install_base C:\DOCUME~1\ADMINI~1\perl5
149         set PERL_MM_OPT=INSTALL_BASE=C:\DOCUME~1\ADMINI~1\perl5
150         set PERL5LIB=C:\DOCUME~1\ADMINI~1\perl5\lib\perl5;C:\DOCUME~1\ADMINI~1\perl5\lib\perl5\MSWin32-x86-multi-thread
151         set PATH=C:\DOCUME~1\ADMINI~1\perl5\bin;%PATH%
152
153         ### Um die Umgebungsvariablen für diese Shell alleine zu setzen
154         C:\>perl -Mlocal::lib > %TEMP%\tmp.bat && %TEMP%\tmp.bat && del %TEMP%\temp.bat
155         ### anstelle von $(perl -Mlocal::lib=./) in bash.
156
157       Wenn du willst das die Umgebungsvariablen dauerhaft gesetzt sind, musst
158       du diese in Systemsteuerung / System dauerhaft selber eintragen oder
159       App::local::lib::Win32Helper benutzen.
160
161       Die "~" wird übersetzt zu dem Benutzer Profil Verzeichnis (das
162       Verzeichnis was beim User als "Dokumente und Einstellungen" bekannt ist
163       unter Windows XP und vorher oder das "Benutzer" Verzeichnis bei Windows
164       Vista und später), solange $ENV{HOME} nicht gesetzt ist. Das
165       Verzeichnis wird hierbei zu dem korrekten Kurznamen umgewandelt, und
166       muss daher definitiv existieren, und wird um die nötigen
167       Unterverzeichnise erweitert.
168

GRUNDPRINZIP

170       Die Version von den Perl Paketen die man benötigt für spezifische
171       Aufgaben sind sehr häufig nicht die richtigen oder korrekten Versionen
172       auf dem System vorinstalliert. Ein Updaten von diesen Modulen ist in
173       vielen Fällen einfach nicht möglich weil die nötigen Rechte fehlen.
174       Ausserdem ist es generell nicht gut eigenständig die Versionen der
175       Module auf dem System auszutauschen, weil natürlich der Rest des
176       Systems genau die Version erwartet die von der Systemverwaltung auch
177       installiert wurde.
178
179       local::lib löst dieses Problem, es erlaubt dir dein komplett eigenes
180       Verzeichnis für deine CPAN Module zu haben und bist so nicht genötigt
181       die Module vom System zu nutzen oder andersrum andere User nicht mit
182       individuellen Modulwünschen zu Überarbeitung ihres Codes zu zwingen,
183       weil bestimmte Module zentral für alle auf neuere Version upgedatet
184       werden. Die Installation findet hierbei dann z.B. im Home Verzeichnis
185       statt. Es werden nur Umgebungsvariablen gesetzt die das installierte
186       Perl dazu bewegen die im Homeverzeichnis installierten Module zu
187       benutzen, zusätzlich und vorgezogen zu denen auf dem System.
188
189       Daher muss man sich wenn man ein Paket System benutzt, wie z.b. Debian,
190       garnicht mehr Sorgen machen, irgendwas auf dem System zu verletzten nur
191       durch die Installation von Perl Modulen.
192

BESCHREIBUNG

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

ERSTELLEN EINES EIGENSTÄNDIGE SAMMLUNG VON MODULEN

222       Mit lib::core::only besteht eine Möglichkeit dieses zutun, aber beachte
223       das hier eine Menge von Fallstricken und Problemen existieren, und man
224       sollte immer darauf achten das man auf einem Perl aufbaut was sowenig
225       wie möglich verändert wurde (d.h. site und vendor Verzeichnis so leer
226       wie möglich).
227

METHODEN

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

EINE WARNUNG VOR UNINST=1

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

EINSCHRÄNKUNGEN

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

FEHLERANALYSE

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

UMGEBUNGSVARIABLEN

384       SHELL
385       COMSPEC
386           local::lib schaut in die "SHELL" Umgebungsvariable um die korrekten
387           Kommandos zu der Shell Konfiguration hinzuzufügen.
388
389           Auf Win32 Systemen, "COMSPEC" wird auch analysiert.
390

SUPPORT

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

AUTOR DER ÜBERSETZUNG

397       Torsten Raudssus <torsten@raudssus.de> http://www.raudssus.de/
398

URHEBERRECHT

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

LIZENZ

404       Diese Sammlung ist freie Software und kann unter der selben Lizenz
405       verbreitet werden wie Perl selber.
406
407
408
409perl v5.32.1                      2021-01-27           POD2::DE::local::lib(3)
Impressum