Multiple instance de Perl
Introduction
Pour Python il y a virtualenv, pour Ruby il y a rvm et pour Perl il y a Perlbrew. C'est outil qui va permettre notamment de gérer facilement de multiple installation de différentes version Perl dans son $HOME. Avec une isolation complète perl universe, ce qui est plutôt pratique et offre plusieurs avantages.
Fonctionnalités
Je vais ici lister les différentes fonctionnalités repris du site officiel.
- Plus besoin d'avoir les droits adminstrateur c'est-à-dire root, pour installer de nouveaux modules, tant-donné qu'ils sont installé dans le home utilisateurs.
- Essayer les dernières versions de Perl
- Apprendre les dernières nouveautés du langage
- Tester du code de production
- Hacker les internal de Perl
Installation
Il y a plusieurs façon d'installer perlbrew. Soit en utilisant par exemple cpanm, soit en récupérant simplement le script.
curl -kL http://install.perlbrew.pl | bash
Avec cette manière de faire, on a pas besoin d'être root.
sudo cpanm App::Perlbrew
En l'installant de cette manière le chemin de l'exécutable sera /usr/bin/perlbrew ou /usr/bin/local/perlbrew. Il sera disponible pour tous les utilisateurs qui souhaite utiliser perlbrew, il faudra au préalble faire un perlbrew init.
Le répertoire par défaut de perlbrew est $HOME/perl5/perlbrew, il est possible de le changer via la variable d'environnement PERLBREW_ROOT avant l'installation et l'initialisation. Pour plus de détails consulter la documentation, personnelement le chemin par défaut me convient parfaitement.
Une fois installé, il vous faudra aussi ajouter une ligne à votre bashrc ou zshrc, ou toutes autres shell.
source $HOME/perl5/perlbrew/etc/bashrc
Fonctionne aussi pour zsh, ajoute notamment des variables d'environnement utile à perlbrew.
Utilisation de perlbrew
L'utilisation de perlbrew est vraiment très simple.
Lister les versions de Perl disponible:
perlbrew available
Installer une version de Perl:
perlbrew install perl-5.14.2
Lister les différentes versions de Perl installé:
perlbrew list
Utiliser une version de Perl permanante pour tous le système:
perlbrew switch perl-5.14.2
Utiliser une version de Perl simplement pour le shell courant:
perlbrew use perl-5.14.2
Ne plus utiliser perlbrew:
perlbrew off
Obternir l'aide de perlbrew:
perlbrew help
Installer cpanm
Alors cpanm est un client CPAN dont j'ai déjà parlé sur ce blog qui est génial, rapide et léger. Je n'utilise plus que cpanm, et il y a une manière de l'installer pour toutes les versions utilisé. Si vous installer cpanm avec l'utilitaire cpan dans une installation de perlbrew de cette manière:
perlbrew use perl-5.14.2
cpan App::cpanminus
cpanm Moose
Cela va fonctionner et vous pourrez utiliser cpanm pour installer des modules, mais si vous changer de version Perl:
perlbrew use perl-5.15.7
cpanm Moose
Cela ne va pas fonctionner. La raison est simple, lorsque vous avez installé cpanm avec le client cpan, il a installé le binaire dans le chemin de la version perl donc $HOME/perl5/perlbrew/perls/5.14.2/bin, et lorsqu'on change de version variable $PATH est modifié. Si vous souhaiter utiliser uniquement cpanm, sans avoir besoin de l'installer pour chaque version, il faut utiliser install-cpanm, tout simplement.
perlbrew install-cpanm
Le binaire va être installé dans $HOME/perl5/perlbrew/bin et sera toujours accesible.
Utiliser switch ou use
Il y a deux manière d'utiliser une des versions de Perl que perlbrew à installer dans notre home, switch ou use, je conseil d'utiliser le deuxième. Avec switch on change de version pour le système ce qui peut poser des problème à certains moment. Avec use la version est changé uniquement pour le shell courant, donc les scripts utilisant Perl vont continuer à utiliser la version Perl du système. Je conseil donc d'ajouter une ligne à son bashrc ou zshrc:
perlbrew use perl-5.14.2
Puis la changer de temps en temps, lorsqu'une nouvelle version de Perl arrive.
Ligne de shebang
Avec perlbrew il est important de laisser ceci à la charge de l'environnement plutôt que de mettre le chemin du binaire Perl, commencer vos scripts par:
#!/usr/bin/env perl
Cela vous évitera quelques problèmes. J'ai honte j'ai perdu quelques bonnes minutes à comprendre un problème du au fait que j'utilise pas le bon interprète.
Conclusion
En conclusion, c'est vraiment un très bon outil, qui permet d'avoir de multiple instance de Perl installer et de switcher facilement d'une version à une autre. Meilleur isolation chaque version ayant ses modules installés indépendament.