Installer des modules Perl en tant qu'utilisateur non root

Gazette Linux n°129 — Juin 2007

Deny

Adaptation française

Joëlle Cornavin

Relecture de la version française

Article paru dans le n°139 de la Gazette Linux de juin 2007.

Article publié sous Open Publication License. La Linux Gazette n'est ni produite, ni sponsorisée, ni avalisée par notre hébergeur principal, SSC, Inc.


Table des matières

1. Introduction
2. Configuration de l'environnement
3. Installation des modules
4. Conclusion

1. Introduction

Si vous faites appel à Perl pour des tâches plus complexes que la génération traditionnelle (et ennuyeuse) de Bonjour monde, alors il est également probable que ayez une bonne connaissance de ces merveilleux dispositifs qui font gagner du temps — les modules Perl. En outre, il se peut que vous n'ignoriez rien du CPAN, Comprehensive Perl Archive Network et de son interface conviviale que fournit le module CPAN. L'ensemble fonctionne très correctement — à condition que a) vous exécutiez un système d'exploitation moderne et rationnel comme Linux et que b) vous ayez un accès root à la machine que vous utilisez (ou un administrateur réseau compréhensif et coopératif). En revanche, qu'en est-il si ces hypothèses ne sont pas vraies ? Que faire si, par exemple, vous avez un compte shell sur une machine administrée par quelque importante entreprise qui n'est pas disposée à installer le module Foo::Bar::Zotz::Blagger-0.01 dans son /usr/lib/perl ? Je ne saurais, pour ma part, les en blâmer ; une installation à l'échelle du système pourrait les amener à une foison de bogues inconnus. Lorsque vos intérêts et les leurs divergent, vous perdez à chaque fois — puisqu'ils possèdent le système.

Donc, que pouvons-nous faire si nous avons réellement besoin de ce module mais que nous ne pouvons obtenir qu'il soit installé à l'échelle du système ? La réponse consiste à l'installer ailleurs — dans quelque répertoire où vous avez les droits d'écriture.

2. Configuration de l'environnement

Manifestement, si vous n'êtes pas root, vous n'allez pas pouvoir enregistrer les fichiers dans leur emplacement par défaut dans /usr/ — qui est l'endroit dans lequel ils devraient normalement se trouver. Par conséquent, nous devons indiquer à Perl où trouver les modules que nous installerons. Heureusement, il s'agit de la partie facile : décidez simplement de l'endroit où vous installerez les modules, créez ce répertoire s'il n'existe pas déjà, ajoutez /lib à la fin de son nom et fixez la variable PERL5LIB à cette chaîne. Par exemple, si vous utilisez Bash, alors modifiez votre fichier ~/.bash_profile et ajoutez les instructions suivantes :

if [ -z "$PERL5LIB" ]
then
	# Si la variable PERL5LIB n'était pas précédemment définie, fixez-la...
	PERL5LIB=~/monperl/lib
else
	# ...sinon, ajoutez-la.
	PERL5LIB=$PERL5LIB:~/monperl/lib
fi

MANPATH=$MANPATH:~/monperl/man

export PERL5LIB MANPATH

À présent, créez les trois répertoires nécessaires :


mkdir -p ~/monperl/lib
mkdir -p ~/monperl/man/man{1,3}

Après vous être déconnecté et reconnecté, Perl considérera cet emplacement comme faisant partie de @INC (la liste des répertoires dans lesquels rechercher les bibliothèques et les modules.) Si vous voulez confirmer que c'est ce qui s'est effectivement produit, exécutez simplement la commande suivante et utilisez le nom de votre répertoire en tant qu'argument de grep :


perl -wle'print for grep /monperl/, @INC'

3. Installation des modules


perl -MCPAN -we 'shell'

Tout d'abord, vous devrez configurer le module CPAN. Si vous ne l'avez jamais fait, rien de plus simple ; exécutez juste la commande précédente sur la ligne de commande, et le tour est joué. Certaines personnes parlent à ce sujet d'une installation « clés en mains ». En ce qui nous concerne, cependant, nous devons apporter deux légères modifications à la procédure standard : lorsque le script vous demande des arguments supplémentaires pour Makefile.PL, fournissez-lui la liste suivante (en supposant que vous ayez choisi ~/monperl comme répertoire lib personnel) :

LIB=~/monperl/lib INSTALLSITEMAN1DIR=~/monperl/man/man1 INSTALLSITEMAN3DIR=~/monperl/man/man3

Il faut également vous assurer que le paramètre UNINST est désactivé ; pour ce faire, paramétrez 'UNINST=0' lorsque la question est posée pendant l'installation. (Il s'agit du comportement par défaut à moins que vous ne le fixiez, toutefois vous feriez aussi bien de vous en assurer.)

Si vous aviez déjà configuré le shell CPAN en quelque occasion par le passé, il vous reste simplement à modifier la configuration. Là encore, démarrez le shell comme précédemment et saisissez les commandes suivantes à l'invite cpan>< :



`` o conf makepl_arg "LIB=~/monperl/lib INSTALLSITEMAN1DIR=~/monperl/man/man1 INSTALLSITEMAN3DIR=~/monperl/man/man3" o conf make_install_arg UNINST=0 o conf commit ''

Tout est terminé. À partir de maintenant, l'utilisation du shell CPAN (ou n'importe laquelle des autres fonctions et méthodes de CPAN) devrait fonctionner comme d'habitude :

# Invoque le shell
perl -MCPAN -we shell

# Installe le module Net::FTP
perl -MCPAN -we 'install "Net::FTP"'

# Met à jour tous les modules périmés sur ce système
perl -MCPAN -we 'CPAN::Shell->install(CPAN::Shell->r)'

4. Conclusion

Tant le module CPAN que sa documentation — qui sont, par ailleurs, inclus en tant qu'éléments de l'installation Perl standard — ont toujours été efficaces, mais ils se sont encore améliorés ces dernières années. Si nous n'avez pas pris le temps de vous y mettre, vous devriez le faire, car vous en retireriez une économie de temps et d'efforts appréciable. Le CPAN lui-même devrait également être votre première étape avant de vous lancer dans n'importe quel projet complexe — j'ai gaspillé nombre d'heures à essayer d'accomplir certaines tâches, pour finir par constater plus tard (ou en partie grâce au projet, avec un peu de chance) qu'un module effectuant ce travail existait déjà. Penchez-vous sérieusement sur la question !

Ben est le rédacteur en chef de la Linux Gazette et il est membre de l'Answer Gang.

Ben est né à Moscou (Russie) en 1962. Il a commencé à s'intéresser à l'électricité dès l'âge de 6 ans, ce qu'il a rapidement démontré en enfonçant une fourchette dans une prise et en déclenchant un incendie, et depuis il n'a jamais cessé de s'intéresser à la technologie. Il travaille avec les ordinateurs depuis les Temps Anciens, lorsqu'il fallait souder soi-même des composants sur des cartes à circuits imprimés et que les programmes devaient tenir dans 4 ko de mémoire. Il serait heureux de payer un bon prix tout psychologue capable de le guérir des cauchemars récurrents qu'il a gardés de cette époque.

Ses expériences suivantes comprennent la création de programmes dans près d'une douzaine de langages, la maintenance de réseaux et de bases de données pendant l'approche d'un ouragan, sans oublier l'écriture d'articles pour des publications allant des magazines de voile aux journaux technologiques. Après une croisière de 7 ans dans l'Atlantique et les Caraïbes ainsi que des passages sur la côte Est des États-Unis, il a désormais jeté l'ancre à St-Augustine (Floride). Instructeur technique chez Sun Microsystems, il travaille également à titre privé comme consultant open source et développeur web. Ses passe-temps actuels sont notamment l'aviation, le yoga, les arts martiaux, la moto, l'écriture et l'histoire romaine. Son Palm Pilot© est truffé d'alarmes dont la plupart contiennent des points d'exclamation.

Il travaille avec Linux depuis 1997 et lui doit d'avoir perdu tout intérêt sur les retombées d'une guerre nucléaire dans le nord-est du Pacifique.

Adaptation française de la Gazette Linux

L'adaptation française de ce document a été réalisée dans le cadre du Projet de traduction de la Gazette Linux.

Vous pourrez lire d'autres articles traduits et en apprendre plus sur ce projet en visitant notre site : http://wiki.traduc.org/Gazette_Linux.

Si vous souhaitez apporter votre contribution, n'hésitez pas à nous rejoindre, nous serons heureux de vous accueillir.