Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

pp, PAR::Packer et ActiveState 5.8.8 822

12 réponses
Avatar
Paul Gaborit
Pour faciliter le déploiement d'une application Perl, je souhaite
utiliser 'pp' (qui vient avec PAR::Packer) pour transformer mon appli
et ses modules en un seul exécutable.

Sous Linux ou FreeBSD, pas de problème.

Par contre sous windows, impossible d'installer 'pp'. J'utilise
ActiveSate 5.8.8 822. J'ai essayé d'installer PAR::Packer via les
repositories PPM de 'uwinnipeg' ou de 'bribes' mais les packages
n'installent pas 'pp'. J'ai essayé la méthode par 'cpan' mais
l'installation échoue à cause de 'parl' (je n'ai pas sous la main le
message d'erreur exact).

Si vous avez réussi à installer cet outil, pourriez-vous m'indiquer le
cheminement correct ?

Merci.

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>

10 réponses

1 2
Avatar
jl_morel
Dans l'article ,
a dit...

Pour faciliter le déploiement d'une application Perl, je souhaite
utiliser 'pp' (qui vient avec PAR::Packer) pour transformer mon appli
et ses modules en un seul exécutable.

Sous Linux ou FreeBSD, pas de problème.

Par contre sous windows, impossible d'installer 'pp'. J'utilise
ActiveSate 5.8.8 822. J'ai essayé d'installer PAR::Packer via les
repositories PPM de 'uwinnipeg' ou de 'bribes' mais les packages
n'installent pas 'pp'. J'ai essayé la méthode par 'cpan' mais
l'installation échoue à cause de 'parl' (je n'ai pas sous la main le
message d'erreur exact).

Si vous avez réussi à installer cet outil, pourriez-vous m'indiquer le
cheminement correct ?




Pour le dépot 'bribes' il faut utiliser la version spéciale pour Perl 5.8.8
(qui n'est pas compatible au niveau binaire avec celle pour Perl 5.8.6)
Voir :
http://www.bribes.org/perl/ppmdir.html

Le plus simple est de lancer dans une console DOS la commande :

ppm install http://www.bribes.org/perl/ppm/PAR-Packer-588.ppd

On obtient quelque chose comme ça (il peut y avoir d'autres modules chargés
s'ils ne sont pas déjà installés) :

C:UsersJL>ppm install http://www.bribes.org/perl/ppm/PAR-Packer-588.ppd
Downloading PAR-Packer-0.977...done
Downloading PAR-0.977...done
Downloading PAR-Dist-0.25...done
Unpacking PAR-Packer-0.977...done
Unpacking PAR-0.977...done
Unpacking PAR-Dist-0.25...done
Generating HTML for PAR-Packer-0.977...done
Generating HTML for PAR-0.977...done
Generating HTML for PAR-Dist-0.25...done
Updating files in site area...done
46 files installed

C:UsersJL>pp
C:aperl58sitebin/pp: No input files specified

pp (et tkpp - la version Perl/Tk de pp) se trouve donc dans perlsitebin
répertoire qui, normalement, est dans le path.

Il ne faut pas hésiter à me dire si ça ne marche pas car je n'ai pas de
retour : je suppose naïvement que tout va bien :-)

--
J-L.M.
http://www.bribes.org/perl

Avatar
Paul Gaborit
À (at) 18 Jan 2008 17:12:47 GMT,
(Jean-Louis MOREL) écrivait (wrote):
Pour le dépot 'bribes' il faut utiliser la version spéciale pour Perl 5.8.8


Merci pour ce retour (et pour les packages aussi !).

C'est la première version que j'ai essayée...

[...]

Et l'installation se passe bien (je viens de la refaire sur une
version propre de ActivePerl 5.8.8 822).

pp (et tkpp - la version Perl/Tk de pp) se trouve donc dans perlsitebin
répertoire qui, normalement, est dans le path.


C'était ma première erreur. Je ne voyais rien dans perlbin. Et, en
fait, perlsitebin n'était pas dans mon PATH. Mais comme la doc du
script 'pp' ne s'ajoutait pas dans la doc HTML de ActiveState, je
supposais bêtement qu'il ne s'installait pas.

Il ne faut pas hésiter à me dire si ça ne marche pas car je n'ai pas de
retour : je suppose naïvement que tout va bien :-)


'pp' est donc bien installé. Mais maintenant, je me heurte au même
problème que d'autres. Lors de l'exécution de 'pp', je reçois un
message d'erreur dans une fenêtre :

Le point d'entrée de procédure Perl_sv_2iv_flags est introuvable
dans la bibliothéque de liaisons dynamique perl58.dll

Puis les message suivants :

Can't load 'C:/Perl/lib/auto/IO/IO.dll' for module IO: load_file:La
procédure spécifiée est introuvable at C:/Perl/lib/XSLoader.pm line
64.
at C:/Perl/lib/IO.pm line 11

Certains suggèrent de revenir à la version 820 de ActivePerl 5.8.8. Je
ne suis pas sûr que ça marchera. Avant de tenter cela (il faut déjà
retrouver cette ancienne distribution...), existe-t-il une autre
solution permettant d'utiliser la 822 ?

Merci.

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>

Avatar
jl_morel
Dans l'article ,
a dit...

C'était ma première erreur. Je ne voyais rien dans perlbin. Et, en
fait, perlsitebin n'était pas dans mon PATH. Mais comme la doc du
script 'pp' ne s'ajoutait pas dans la doc HTML de ActiveState, je
supposais bêtement qu'il ne s'installait pas.



Je viens d'installer ActivePerl 5.8.8 Build 822.
Effectivement le script d'installation ne met pas perlsitebin dans le
path :-(
C'est un bug qui est corrigé dans ActivePerl 5.10


'pp' est donc bien installé. Mais maintenant, je me heurte au même
problème que d'autres. Lors de l'exécution de 'pp', je reçois un
message d'erreur dans une fenêtre :

Le point d'entrée de procédure Perl_sv_2iv_flags est introuvable
dans la bibliothéque de liaisons dynamique perl58.dll

Puis les message suivants :

Can't load 'C:/Perl/lib/auto/IO/IO.dll' for module IO: load_file:La
procédure spécifiée est introuvable at C:/Perl/lib/XSLoader.pm line
64.
at C:/Perl/lib/IO.pm line 11



C'est une incompatibilité binaire. Je savais qu'il y avait incompatibilité
entre les version 5.8.6 et 5.8.8 mais maintenant c'est au niveau du Build !

C'est un problème avec PAR. Le mainteneur, Steffen Müller, m'avait demandé
de préciser la version utilisée dans sa page WikiPAR :

http://par.wikia.com/wiki/PAR_PPM_Compatibility_List

Ça va être dur de maintenir cette page à jour !

J'ai rajouté un paquetage pour ActivePerl 5.8.8 Build 822.
Il s'installe en tapant dans une console DOS la commande :

ppm install http://www.bribes.org/perl/ppm/PAR-Packer-588_822.ppd

et là, ça doit marcher !

HTH

--
J-L.M.
http://www.bribes.org/perl

Avatar
Paul Gaborit
À (at) 20 Jan 2008 13:41:56 GMT,
(Jean-Louis MOREL) écrivait (wrote):
Je viens d'installer ActivePerl 5.8.8 Build 822.
Effectivement le script d'installation ne met pas perlsitebin dans le
path :-(
C'est un bug qui est corrigé dans ActivePerl 5.10


Bon, c'est déjà ça de gagner... Mais la version 5.10 est encore trop
récente. Il faudrait que je teste toute mon appli avec cette nouvelle
version. C'est prévu mais pas dans l'immédiat.

Et le build de ActiveState ne fournit pas encore tout ce qu'il y avait
dans les versions antérieures (Tk par exemple).

C'est une incompatibilité binaire. Je savais qu'il y avait incompatibilité
entre les version 5.8.6 et 5.8.8 mais maintenant c'est au niveau du Build !

C'est un problème avec PAR. Le mainteneur, Steffen Müller, m'avait demandé
de préciser la version utilisée dans sa page WikiPAR :

http://par.wikia.com/wiki/PAR_PPM_Compatibility_List

Ça va être dur de maintenir cette page à jour !


Oui ! J'avais vu cette table mais comme le Build 822 était en blanc,
il fallait essayer ! ;-)

J'ai rajouté un paquetage pour ActivePerl 5.8.8 Build 822.
Il s'installe en tapant dans une console DOS la commande :

ppm install http://www.bribes.org/perl/ppm/PAR-Packer-588_822.ppd

et là, ça doit marcher !


Je teste dès que possible. Encore un grand merci pour ce package.
D'autant que c'est du travail dominical (je vois que je ne suis pas le
seul) ! ;-)

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>

Avatar
Patrick Texier
Le Sun, 20 Jan 2008 17:13:18 +0100, Paul Gaborit a écrit :

Bon, c'est déjà ça de gagner... Mais la version 5.10 est encore trop
récente. Il faudrait que je teste toute mon appli avec cette nouvelle
version. C'est prévu mais pas dans l'immédiat.

Et le build de ActiveState ne fournit pas encore tout ce qu'il y avait
dans les versions antérieures (Tk par exemple).


Il manque aussi pratiquement tous les DBD sauf SQLlite qui doit être
utilisé par PPM.

Il faut aussi être prudent si on a des programmes C à compiler avec
Perl, Vim compile if_perl.c mais ne trouve plus une série de fonctions à
l'édition de liens (ex : _Perl_ISv_ptr)

Avatar
Steph

D'autant que c'est du travail dominical (je vois que je ne suis pas le


Et un vrai travail de dominicain ;-)

Avatar
Paul Gaborit
À (at) Sun, 20 Jan 2008 17:13:18 +0100,
Paul Gaborit écrivait (wrote):
À (at) 20 Jan 2008 13:41:56 GMT,
(Jean-Louis MOREL) écrivait (wrote):
J'ai rajouté un paquetage pour ActivePerl 5.8.8 Build 822.
Il s'installe en tapant dans une console DOS la commande :

ppm install http://www.bribes.org/perl/ppm/PAR-Packer-588_822.ppd

et là, ça doit marcher !


Je teste dès que possible. Encore un grand merci pour ce package.


Bon, ça marche parfaitement !

Merci, merci, merci...

Un seul petit détail : avec ppm (via l'interface graphique) et apreès
avoir ajouté bribes comme repository, on choisit "PAR-Packer (APerl
588 build *822*)" et c'est bien lui qui s'installe puisque ça marche
mais ensuite ppm indique que c'est "PAR-Packer (APerl 588 build
*820*)" qui est installé...

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>


Avatar
jl_morel
Dans l'article ,
a dit...

[couic]


Un seul petit détail : avec ppm (via l'interface graphique) et apreès
avoir ajouté bribes comme repository, on choisit "PAR-Packer (APerl
588 build *822*)" et c'est bien lui qui s'installe puisque ça marche
mais ensuite ppm indique que c'est "PAR-Packer (APerl 588 build
*820*)" qui est installé...



J'ai vérifié les fichiers .ppd, il n'y a pas d'erreur.

Je pense que c'est ppm qui se plante car il se retrouve avec plusieurs
fichiers .ppd pour le même paquetage; donc pour lui ils sont équivalents et
il pointe le premier par ordre alpha"bêtique" !

Et si je donne des noms différents aux paquetages dans les fichiers
.ppd, il y aura des problèmes lors les mises-à-jour :-(

L'idéal ce serait que ppm reconnaisse les différentes versions de Perl.
Malheureusement il ne reconnaît que Perl5.6, Perl5.8 et Perl5.10.

Impossible de lui faire distinguer Perl 5.8.6 de Perl 5.8.8 ; alors, a
fortiori, il ne peut distinguer Perl 5.8.8 Build 820 de Build 822.

Rien, ni personne, n'est parfait !

--
J-L.M.
http://www.bribes.org/perl

Avatar
Paul Gaborit
À (at) 23 Jan 2008 17:56:49 GMT,
(Jean-Louis MOREL) écrivait (wrote):
J'ai vérifié les fichiers .ppd, il n'y a pas d'erreur.

Je pense que c'est ppm qui se plante car il se retrouve avec plusieurs
fichiers .ppd pour le même paquetage; donc pour lui ils sont équivalents et
il pointe le premier par ordre alpha"bêtique" !

Et si je donne des noms différents aux paquetages dans les fichiers
.ppd, il y aura des problèmes lors les mises-à-jour :-(

L'idéal ce serait que ppm reconnaisse les différentes versions de Perl.
Malheureusement il ne reconnaît que Perl5.6, Perl5.8 et Perl5.10.

Impossible de lui faire distinguer Perl 5.8.6 de Perl 5.8.8 ; alors, a
fortiori, il ne peut distinguer Perl 5.8.8 Build 820 de Build 822.


Ok. De toutes manières, ce n'est que de l'affichage. Si on lui demande
de désinstaller, il désinstalle évidemment le seul qui est installé.
;-)

De plus, je ne voyais que le symptôme. L'explication que tu donnes
indique le vrai problème : tu ne peux pas lui dire (à ppm) qu'un
package est spécifique à tel ou tel build. Si bien qu'il doit bêtement
accepter d'installer simultanément tous les packages PAR-Packer que tu
proposes (et en cas de dépendance, il doit bêtement prendre le premeir
qu'il trouve). Une solution (lourde) serait de faire un repository
spécifique à chaque build ! ;-)

Encore un fois : merci pour tout le boulot que tu fournis.

Au fait, as-tu essayé StrawberryPerl ? Et si oui, qu'en penses-tu ?

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>

Avatar
jl_morel
Dans l'article ,
a dit...

Au fait, as-tu essayé StrawberryPerl ? Et si oui, qu'en penses-tu ?



Non, je n'ai pas essayé StrawberryPerl, mais ça a l'air intéressant.
C'est une distribution entièrement OpenSource.

À noter que depuis ActivePerl 5.8.8 Build 820 on peut utiliser MinGW gcc
pour compiler des modules avec du code XS. Il le détecte automatiquement,
il suffit que le répertoire de MinGW soit dans le PATH. Je n'ai rien trouvé
dans la doc ActiveState mais c'est dans un blog :

http://blogs.activestate.com/activestate/2007/01/activeperl_5888.html

Ça aussi il faudrait essayer.

--
J-L.M.
http://www.bribes.org/perl

1 2