Schrift
[thread]5510[/thread]

[Win] Mehrere Perl parallel installieren: Alte und neue Perlversionen zusammen

Leser: 15


<< |< 1 2 3 >| >> 23 Einträge, 3 Seiten
GwenDragon
 2005-10-16 17:51
#47407 #47407
User since
2005-01-17
14745 Artikel
Admin1
[Homepage]
user image
Ich brauche zur Entwicklung mehrere Perl-Versionen parallell.Ich brauche 5.6 und 5.8!
5.5 wird ja wohl kaum noch irgendow verwendet, oder?
Mein Windows-System benutzt ActivePerl zur Entwicklung.

In alten Perl/ActivePerl-Versionen war es irgendwie durch setzen bestimmter Regsitrywerte und Installation der Libraries un bestimmte Verzeichnisse möglich, diese Versionen parallel laufen zu lassen.

Weiß eineR wie ich das hinbekomme?\n\n

<!--EDIT|GwenDragon|1129470784-->
Rambo
 2005-10-16 20:28
#47408 #47408
User since
2003-08-14
803 Artikel
BenutzerIn

user image
ansich sehr einfach,
kopiere (nicht unbedingt installieren) die einzelnen versionen in ein verzeichnis
z.B. c:\win32app\perl\5.50; c:\win32app\perl\5.60 c:\win32app\perl\5.80
die einträge in der registrie sind nicht notwendig da hier nur
die verknüpfungen für *.pl drin sind.
was wichtig ist sind die pfad erweiterungen (set path)
was hier drin steht ist ausschlaggebend wo windof perl sucht.
hier hast du mehrere möglichkeiten
1. keine einträge im path
2. bau 3 kleine cmd start dateien in dem jeweils die unterschiedlichen versionen als path erweiterung drin sind
3. punkt 2 manuell durchführen.
4. jeweils die einzelnen perl.exe umbenenen und alles
3 versionen in den path eintragen. Aufruf dann über z.B.
perl580 script.pl oder perl550 script.pl usw.

für perl sind unter windof nur diese einträge als path erw.wichtig
E:\WIN32APP\PERL.580\bin\

hoffe das hilft

fürti rambo
GwenDragon
 2005-10-16 22:22
#47409 #47409
User since
2005-01-17
14745 Artikel
Admin1
[Homepage]
user image
Na ja, natürlich geht sowas. Aber es ist nicht auf einem Server nutzbar.

Ich habe noch folgendes gefunden. Nach langer, langer Sucherei im WWW und Download einer 5.005-Version bei AS.

Quote
Installing multiple versions of Perl on the same machine

Multiple versions of Perl can easily be installed with this release of ActivePerl. For example the following configuration is supported for three installations with varying version and/or architecture.

Installation 1:

c:\perl\5.005

bin ... all perl binaries and util scripts

lib ... core modules

Installation 2:

c:\perl\5.00501

bin ... all perl binaries and util scripts

lib ... core modules

Installation 3:

c:\perl\5.00501-thread

bin ... all perl binaries and util scripts

lib ... core modules

Shared site:

c:\perl\site

lib ... global site modules location

The ActivePerl installer recognizes if you are installing in a <version>.<sub-version>* specific directory, such as 5.005 or 5.00502, and automatically moves your site directory up a level. This way multiple installations can easily share the same site libraries. Alternatively, you can use the environment or system registry variable(see below) to configure the location of a common site library.

If you run Perl at the command prompt, the script will be executed by the first Perl.exe it encounters in the list of paths in the PATH environment variable. To ensure the script is executed by the Perl build you want it to be executed by, you can specify the complete path to the Perl.exe you want to use. (typing perl -v at the command prompt will tell you which version of Perl is currently first in your PATH)

Installing ActivePerl will change your Path environment variable and may change registry settings, such as file associations, which may affect your Web server. If you want to use a previously installed copy of Perl, you will need to modify these settings.
Changing the default location of your Perl modules

@INC can be configured by adding semi-colon separated directory names to the following variables. See belowfor precedence:

PERLLIB environment variable

PERL5LIB environment variable

\\HKLM\Software\Perl\lib-{$]}

\\HKLM\Software\Perl\sitelib-{$]}

\\HKLM\Software\Perl\lib

\\HKLM\Software\Perl\sitelib

** {$]} is the Perl variable containing Perl's version, sub-version and patch level

The following values are defined in the algorithm for building @INC:

$Reg_Lib_Version = the actual value of \\HKLM\Software\Perl\lib-{$]}

$Reg_Site_Version = the actual value of \\HKLM\Software\Perl\sitelib-{$]}

$Reg_Lib = the actual value of \\HKLM\Software\Perl\lib

$Reg_Site = the actual value of \\HKLM\Software\Perl\sitelib

$Perl_Dir = the directory into which Perl was installed and contains 'bin' and 'lib' directories

$Arch = Perl architecture ex. 'MSWin32-x86-object', 'MSWin32-ALPHA-object'

$Perl_Version = Complete Perl <version>.<sub-version> with no patch level ex. $Perl_Version == 5.005 for Perl 5.005_02

The algorithm for building @INC is as follows:

# This gets rid of a version in the path if one exists

($Perl_Site) = ($Perl_Dir =~ /(.*?)(?:[\/\\]$Perl_Version.*)?$/);

$Perl_Site .= '/site';

push @INC, split /;/, ($ENV{PERL5LIB} || $ENV{PERLLIB});

push @INC, split /;/, ($Reg_Lib_Version || $Reg_Lib);

push @INC, ("$Perl_Dir/lib/$Arch", "$Perl_Dir/lib);

push @INC, ("$Perl_Site/$]/lib/$Arch", "$Perl_Site/$]/lib");

push @INC, split /;/, ($Reg_Site_Version || $Reg_Site);

push @INC, ("$Perl_Site/lib/$Arch", "$Perl_Site/lib");

push @INC, '.';
Quelle: ActivePerl 522 Install Notes
Das mit der Registry gilt auch für neuere Perl-Versionen von AS 5.6.1 und 5.8.3.

In Server-Skripten rufe ich dann eh verschiedene Shebangs auf, das müsste dann klappen.
Hoffe ich.

Somit können mehrere Versionen nebeneinander laufen.
Rambo
 2005-10-17 12:13
#47410 #47410
User since
2003-08-14
803 Artikel
BenutzerIn

user image
[quote=GwenDragon,16.10.2005, 20:22]Na ja, natürlich geht sowas. Aber es ist nicht auf einem Server nutzbar.[/quote]
also ich benutze es so local und auf meinen servern.
GwenDragon
 2005-10-17 16:47
#47411 #47411
User since
2005-01-17
14745 Artikel
Admin1
[Homepage]
user image
Ich habe jetzt einmal keine PATH-Angaben zu Perl mehr im System.

Die "Perlen" sind unter X:\usr\local\perl\VERSION\ installiert.

Die Perl-Exes habe ich umbenannt in
perl.exe und perl58.exe für Perl 5.008
perl56.exe für Perl 5.006
perl5005.exe für Perl 5.005
und zu den Perl-Versionen zugehörigen DLLs
perlcore.dll perl56.dll perl58.dll
habe ich auch in Verzeichnisse wie /bin /usr/bin /usr/local/bin kopiert, damit ich nicht jedesmal die Pfade in die Skripte schreiben muss.

Dummerweise finden die Skripte keine @INC mehr, obwohl doch die Perl-Exes aus der Registry lesen können. :(

Und ohne PATH-Angaben klappt es mit den Shebangs auf /usr/bin/perl oder /usr/bin/perl58 auch nicht mehr.

Nur wenn ich dann PATH wie folgt setze:
PATH X:\usr\local\perl\5.005\bin;X:\usr\local\perl\5.006\bin;X:\usr\local\perl\5.008\bin
//Edit Slashes falsch hier eingegeben ;)
klappt es auch nicht

Dummerwise kann ich die PERLLIB bzw. PERL5LIB nicht Versionsspezifisch setzen.

Denke ich falsch vom Ansatz?
Was nun?\n\n

<!--EDIT|GwenDragon|1129631297-->
Rambo
 2005-10-17 17:47
#47412 #47412
User since
2003-08-14
803 Artikel
BenutzerIn

user image
hi,
bei dir fehlt noch ein / nach dem bin.
schau hier das habe ich local gemacht auch cmd
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
E:\PERL_PRGS\test>set path=D:\UTIL\PERL.580\bin\;

E:\PERL_PRGS\test>set pa
path=D:\UTIL\PERL.580\bin\;
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.PL;

E:\PERL_PRGS\test>dir
Datenträger in Laufwerk E: ist E_HDD
Datenträgernummer: 9CF6-682B

Verzeichnis von E:\PERL_PRGS\test

17.10.2005 15:41 <DIR> .
17.10.2005 15:41 <DIR> ..
17.10.2005 15:41 <DIR> $log_dest
17.10.2005 15:41 <DIR> 2
17.10.2005 15:38 38 perl_ver.pl
1 Datei(en) 38 Bytes
4 Verzeichnis(se), 12.607.303.680 Bytes frei

E:\PERL_PRGS\test>perl_ver.pl

This is perl, v5.8.6 built for MSWin32-x86-multi-thread
(with 3 registered patches, see perl -V for more detail)

Copyright 1987-2004, Larry Wall

Binary build 811 provided by ActiveState Corp. http://www.ActiveState.com
ActiveState is a division of Sophos.
Built Dec 13 2004 09:52:01

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using `man perl' or `perldoc perl'. If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.
E:\PERL_PRGS\test>


und hier vom server
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
E:\PERL_PRGS\test>set path=P:\CUTE_FUTURE\ARINC\USERS\LH\NT\TOOLS\PERL\BIN\;

E:\PERL_PRGS\test>dir
Datenträger in Laufwerk E: ist E_HDD
Datenträgernummer: 9CF6-682B

Verzeichnis von E:\PERL_PRGS\test

17.10.2005 15:41 <DIR> .
17.10.2005 15:41 <DIR> ..
17.10.2005 15:41 <DIR> $log_dest
17.10.2005 15:41 <DIR> 2
17.10.2005 15:38 38 perl_ver.pl
1 Datei(en) 38 Bytes
4 Verzeichnis(se), 12.607.303.680 Bytes frei

E:\PERL_PRGS\test>perl_ver.pl

This is perl, v5.6.0 built for MSWin32-x86-multi-thread
(with 1 registered patch, see perl -V for more detail)

Copyright 1987-2000, Larry Wall

Binary build 616 provided by ActiveState Tool Corp. http://www.ActiveState.com
Built 13:47:17 Jul 14 2000


Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5.0 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using `man perl' or `perldoc perl'. If you have access to the
Internet, point your browser at http://www.perl.com/, the Perl Home Page.
E:\PERL_PRGS\test>

lediglich das script bliebt local aber ich verbiege NUR den path
aber mit bin/ am ende

gruss rambo
GwenDragon
 2005-10-18 14:29
#47413 #47413
User since
2005-01-17
14745 Artikel
Admin1
[Homepage]
user image
Wieso der Slash am Ende? Seit wann denn das? Alle WIndows-Pfade haben bei mir keinen \ am Ende.
Seit wann muss das sein?
GwenDragon
 2005-10-18 15:57
#47414 #47414
User since
2005-01-17
14745 Artikel
Admin1
[Homepage]
user image
Jetzt habe ich folgendes mal gemacht:
Alle Pfadeinträge (für User und Maschine), die auf Perl/bin zeigen, über Systemeinstellungen gelöscht gelöscht.
mit ln.exe in den Verzeichnissen X:\usr\bin und x:\usr\local\bin jeweils Hardlinks auf die jeweiligen perl${VERSION}.exe und perl${VERSION}.dll erzeugt.
Und siehe da, es läuft. Sowhl im Server als auch in der DOs-Shell.

Wieso? Keine Ahnung und das obwohl ich seit Jahrzehnten an diversen System arbeite.
Unix ist einfach durchschauber als WIndows. :angry:
Rambo
 2005-10-18 16:05
#47415 #47415
User since
2003-08-14
803 Artikel
BenutzerIn

user image
das habe ich schon bei einigen programmen zumindest unter windows so gesehen. auch bei java hatte ich das gesehen und
ich vermute das dies mit der jeweiligen implementierung
des prg. zu tun.
z.B das wächseln in andere verzeichnisse durch ..\ oder .\
usw. kann es aber nicht mit 100% sagen das meine aussage so stimmt.
was perl betrifft geht es unter windof NUR so zumindest habe ich nix anderes gesehen
GwenDragon
 2005-10-18 16:06
#47416 #47416
User since
2005-01-17
14745 Artikel
Admin1
[Homepage]
user image
Nein, dafür finden die ver*** 5.6 und 5.8 Versionen NICHT ihre libs für @INC; :angry:

Die 5005 hat kein Problem, die liest die Registry aus und findet die lib für @INC.

Langsam habe ich das Gefühl, dass ActiveState das Auslesen der Registry für Versionen > 5.005 einfach abgeschafft hat, nach dem Motto: Am besten sie haben nur eine Perl-Version am Laufen, nämlich die neueste.

Was kan ich jetzt tun?
<< |< 1 2 3 >| >> 23 Einträge, 3 Seiten



View all threads created 2005-10-16 17:51.