15%

Économisez 15% sur tous les services d'hébergement

Testez vos compétences et obtenez Réduction sur tout plan d'hébergement

Utilisez le code :

Skills
Commencer
21.10.2024

Installation des Modules Perl : Un Guide Technique Complet

Les modules Perl sont des packages de code Perl autonomes et réutilisables, stockés dans des fichiers avec l’extension .pm, conçus pour étendre le langage de base avec des fonctionnalités prédéfinies pour des tâches allant des requêtes HTTP et de l’accès aux bases de données à l’analyse XML et à la cryptographie. Les installer correctement — que ce soit via CPAN, cpanm, ou une compilation manuelle — est une compétence fondamentale pour tout développeur Perl ou administrateur système.

Ce guide couvre en profondeur chaque méthode d’installation, y compris les environnements sans accès root, la résolution des dépendances, l’épinglage de versions et la vérification post-installation — les détails que la plupart des tutoriels ignorent complètement.

Que sont les modules Perl et pourquoi sont-ils importants

Un module Perl est un package dont la portée est définie par un espace de noms, qui exporte des fonctions, des variables ou des interfaces orientées objet dans votre script. Les modules résident dans le chemin de recherche @INC et sont chargés au moment de la compilation avec use ou à l’exécution avec require. La distinction est importante : use Module est évalué avant l’exécution de votre script, ce qui signifie qu’un module manquant provoque une erreur fatale immédiate plutôt qu’une surprise à l’exécution.

Le Comprehensive Perl Archive Network (CPAN) héberge plus de 200 000 distributions de modules rédigées par des milliers de contributeurs. Tout environnement Perl en production — qu’il s’exécute sur un serveur bare-metal, un VPS, ou un environnement partagé — dépend d’un flux de travail fiable pour l’installation des modules.

Méthode 1 : Installer des modules Perl via le shell CPAN

Le client CPAN intégré est fourni avec chaque installation Perl standard. Il gère automatiquement la résolution des dépendances, la récupération des modules, la compilation, les tests et l’installation.

Configuration initiale de CPAN

Sur un système vierge, la première invocation du shell CPAN déclenche un assistant de configuration interactif. Pour le contourner et accepter automatiquement des valeurs par défaut raisonnables :

perl -MCPAN -e 'CPAN::Shell->install("CPAN")'

Ou lancez directement le shell :

perl -MCPAN -e shell

Dans le shell, installez n’importe quel module par son nom :

cpan[1]> install LWP::Simple
cpan[2]> install DBI

Installation non interactive en une seule ligne

Pour les déploiements scriptés ou les pipelines CI, ignorez complètement le shell :

perl -MCPAN -e 'install("LWP::Simple")'

Cas limite critique : Si CPAN demande une configuration lors d’une exécution non interactive (fréquent dans les conteneurs Docker ou les images OS minimales), forcez d’abord la configuration automatique :

perl -MCPAN -e 'my $c = CPAN::HandleConfig->load; CPAN::Shell->install("LWP::Simple")'

Ou définissez la variable d’environnement avant l’exécution :

PERL_MM_USE_DEFAULT=1 perl -MCPAN -e 'install("LWP::Simple")'

Mise à jour du client CPAN lui-même

Un client CPAN obsolète est une source fréquente d’échecs de handshake TLS et de graphes de dépendances défaillants. Mettez-le à jour avant d’installer quoi que ce soit d’autre sur un système hérité :

cpan CPAN

Méthode 2 : cpanm (CPAN Minus) — L’outil de production privilégié

cpanm est un client CPAN sans configuration, capable de gérer les dépendances, et significativement plus rapide que le shell CPAN complet. Il produit une sortie plus propre, gère silencieusement la plupart des chaînes de dépendances, et s’intègre parfaitement avec local::lib et perlbrew. Pour tout flux de travail de déploiement sérieux, cpanm est le choix par défaut approprié.

Installation de cpanm

curl -L https://cpanmin.us | perl - --sudo App::cpanminus

Si curl n’est pas disponible :

wget -O - https://cpanmin.us | perl - --sudo App::cpanminus

Sur les systèmes où vous disposez déjà d’un client CPAN fonctionnel :

cpan App::cpanminus

Installation de modules avec cpanm

cpanm LWP::Simple
cpanm DBI
cpanm Moose

Installation d’une version spécifique

L’épinglage de version est essentiel pour des builds reproductibles. Pour installer une version exacte :

cpanm GAAS/libwww-perl-6.67.tar.gz

Ou utilisez la syntaxe @version :

cpanm LWP::Simple@6.67

Installation depuis un cpanfile

Pour la gestion des dépendances au niveau du projet, définissez vos exigences dans un cpanfile :

requires 'LWP::Simple', '>= 6.00';
requires 'DBI', '>= 1.643';
requires 'Moose';

Puis installez toutes les dépendances déclarées en une seule commande :

cpanm --installdeps .

C’est l’équivalent Perl de pip install -r requirements.txt ou npm install, et il doit figurer dans chaque script de déploiement en production.

Méthode 3 : Installation manuelle depuis une archive source

L’installation manuelle est nécessaire lorsque vous travaillez dans des environnements isolés d’internet, lorsqu’un module n’est pas encore sur CPAN, ou lorsque vous devez appliquer des correctifs avant la compilation.

Étape 1 : Télécharger l’archive

Récupérez l’archive de distribution depuis search.cpan.org ou metacpan.org, ou transférez-la manuellement sur votre serveur :

wget https://cpan.metacpan.org/authors/id/G/GA/GAAS/libwww-perl-6.67.tar.gz

Étape 2 : Extraire l’archive

tar -xzf libwww-perl-6.67.tar.gz
cd libwww-perl-6.67

Étape 3 : Compiler avec Makefile.PL ou Build.PL

La plupart des distributions CPAN utilisent l’un des deux systèmes de compilation. Vérifiez lequel est présent avant de continuer.

Pour Makefile.PL (ExtUtils::MakeMaker) :

perl Makefile.PL
make
make test
sudo make install

Pour Build.PL (Module::Build) :

perl Build.PL
./Build
./Build test
sudo ./Build install

Ce que fait chaque étape :

  • perl Makefile.PL — Interroge votre installation Perl et les bibliothèques système pour générer un Makefile spécifique à la plateforme.
  • make — Compile tout code XS (extension C) et prépare les fichiers Perl purs.
  • make test — Exécute la suite de tests de la distribution sur les fichiers compilés. Ne sautez jamais cette étape sur les systèmes en production ; une suite de tests défaillante est un signal fort que quelque chose ne va pas dans votre environnement ou dans le module lui-même.
  • sudo make install — Copie les fichiers compilés dans le chemin de la bibliothèque Perl système.

Piège : Si make test signale des échecs, ne passez pas à make install. Examinez la sortie des tests dans le répertoire t/. De nombreux échecs sont causés par des dépendances optionnelles manquantes ou une configuration spécifique à l’environnement, et non par de véritables bugs.

Méthode 4 : local::lib pour les environnements sans root et partagés

Sur un hébergement partagé, des serveurs gérés, ou tout environnement où vous n’avez pas accès sudo, local::lib redirige toutes les installations de modules vers un répertoire dans votre dossier personnel. C’est la bonne approche architecturale — pas un contournement.

Configuration de local::lib

Si vous avez un accès CPAN quelconque :

cpanm --local-lib=~/perl5 local::lib

Ou via le shell CPAN :

perl -MCPAN -e 'install("local::lib")'

Activation de l’environnement

Ajoutez ce qui suit à votre ~/.bashrc ou ~/.bash_profile :

eval "$(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib=$HOME/perl5)"

Rechargez votre shell :

source ~/.bashrc

Cela définit PERL5LIB, PERL_LOCAL_LIB_ROOT, PERL_MB_OPT, PERL_MM_OPT et PATH afin que perl et cpanm utilisent automatiquement votre répertoire de bibliothèque local.

Installation de modules dans local::lib

Après activation, tous les appels cpanm suivants s’installent dans ~/perl5 sans indicateurs supplémentaires :

cpanm LWP::Simple
cpanm Mojolicious

Nuance importante : Si vous déployez sur un VPS avec cPanel, cPanel gère son propre environnement Perl séparément du Perl système. Les modules installés dans le chemin système peuvent ne pas être visibles par l’interpréteur Perl de cPanel. Vérifiez toujours quel binaire Perl est utilisé avec which perl et perl -V avant d’installer.

Méthode 5 : Gestionnaire de paquets système

Sur les systèmes Debian/Ubuntu et RHEL/CentOS, de nombreux modules CPAN populaires sont packagés en tant que paquets OS natifs. Cette approche s’intègre aux mises à jour système et évite les exigences en matière de chaîne d’outils de compilation.

Debian/Ubuntu :

sudo apt-get install libwww-perl libdbi-perl libmoose-perl

RHEL/CentOS/Fedora :

sudo dnf install perl-LWP-Simple perl-DBI perl-Moose

Quand préférer les paquets système plutôt que CPAN :

CritèrePaquet systèmeCPAN / cpanm
Actualité des versionsSouvent obsolèteToujours la dernière
Gestion des dépendancesGérée par l’OSGérée par CPAN
Chaîne d’outils de compilation requiseNonOui (pour les modules XS)
Adapté aux serveurs en productionOui, pour la stabilitéOui, avec épinglage
Fonctionne sans internetOui (miroir local)Nécessite une configuration de miroir
S’intègre aux mises à jour systèmeOuiNon
Prend en charge local::libNonOui

Comparaison des méthodes d’installation des modules Perl

MéthodeRoot requisVitesseSupport hors ligneÉpinglage de versionMeilleur cas d’utilisation
Shell CPANOui (par défaut)LentNonLimitéSystèmes hérités, configuration initiale
`cpanm`OptionnelRapideAvec miroir localOuiTous les flux de travail modernes
Archive manuelleOptionnelManuelOuiOuiEnvironnements isolés, builds avec correctifs
`local::lib`NonRapide (avec cpanm)NonOuiHébergement partagé, sans root
Paquets systèmeOuiRapideOui (en cache)NonServeurs axés sur la stabilité

Vérification de l’installation des modules

Après l’installation, confirmez toujours que le module est chargeable et vérifiez sa version :

perl -MLWPSimple -e 'print $LWP::Simple::VERSION, "n"'

Pour les modules qui n’exportent pas directement un scalaire $VERSION, utilisez :

perl -e 'use LWP::Simple; print "OKn"'

Pour trouver où un module a été installé sur le disque :

perl -MLWP::Simple -e 'print $INC{"LWP/Simple.pm"}, "n"'

Pour inspecter le chemin de recherche @INC complet utilisé par votre Perl :

perl -e 'print join("n", @INC), "n"'

Résolution des problèmes d’installation courants

Compilateur C ou outils de compilation manquants

Les modules XS (ceux avec des extensions C) nécessitent un compilateur C et make. Sur Debian/Ubuntu :

sudo apt-get install build-essential

Sur RHEL/CentOS :

sudo dnf groupinstall "Development Tools"

Échecs de connexions TLS/SSL aux miroirs CPAN

Si cpanm ou le shell CPAN échoue avec des erreurs SSL, installez d’abord les modules requis :

sudo cpan Mozilla::CA IO::Socket::SSL LWP::Protocol::https

Cela est particulièrement pertinent lors du déploiement d’applications Perl qui gèrent également le trafic HTTPS — la même infrastructure SSL qui sécurise vos Certificats SSL au niveau de la couche web doit être reflétée dans votre environnement Perl.

Conflits de dépendances

Lorsqu’un module nécessite une version d’une dépendance qui entre en conflit avec ce qui est déjà installé, utilisez l’indicateur --notest de cpanm avec précaution, ou isolez l’environnement avec local::lib ou perlbrew :

cpanm --notest Problematic::Module

N’utilisez jamais --notest en production sans comprendre pourquoi les tests échouent. Cela supprime le seul contrôle de sécurité automatisé dans le pipeline de compilation.

Permission refusée lors de l’installation

Si make install échoue avec des erreurs de permission et que sudo n’est pas disponible, redirigez vers une bibliothèque locale :

cpanm --local-lib=~/perl5 LWP::Simple

Module introuvable après installation

Si perl -MModule::Name -e 1 signale « Can’t locate », le module a été installé dans un chemin absent de @INC. Vérifiez :

perl -V | grep -A 20 '@INC'

Puis réinstallez dans le bon chemin ou définissez PERL5LIB :

export PERL5LIB="$HOME/perl5/lib/perl5:$PERL5LIB"

Déploiement d’applications Perl sur une infrastructure serveur

Pour les applications Perl en production — en particulier celles utilisant des frameworks comme Mojolicious, Catalyst ou Dancer2 — la gestion des modules doit être traitée comme une infrastructure, et non comme une réflexion après coup.

Flux de travail de production recommandé :

  1. Utilisez un cpanfile pour déclarer toutes les dépendances avec des contraintes de version minimales.
  2. Utilisez cpanm --installdeps . dans votre script de déploiement.
  3. Épinglez les versions des modules critiques pour éviter les mises à jour inattendues.
  4. Exécutez make test ou cpanm --test-only dans votre pipeline CI avant le déploiement.
  5. Utilisez local::lib ou perlbrew pour isoler les environnements d’application du Perl système.

Les applications Perl qui traitent des requêtes web, traitent des e-mails ou interagissent avec des bases de données sont des charges de travail courantes sur l’Hébergement VPS et les Serveurs Dédiés. Sur une infrastructure dédiée, vous avez un contrôle total sur la version Perl, la chaîne d’outils de compilation et les chemins des modules — éliminant ainsi les contraintes qui rendent local::lib nécessaire dans les environnements partagés.

Si votre application Perl envoie des e-mails transactionnels, les modules Email::Sender ou MIME::Lite s’intègrent directement avec l’infrastructure SMTP. Associer cela à un service d’Hébergement Email fiable garantit que les e-mails de votre application ne sont pas signalés comme spam en raison de paramètres de relais mal configurés.

Liste de contrôle pour la prise de décision technique

Utilisez cette matrice pour sélectionner la bonne approche d’installation selon votre situation :

  • Vous avez un accès root et avez besoin de la dernière version du module — Utilisez cpanm avec une installation à l’échelle du système.
  • Vous êtes sur un hébergement partagé ou n’avez pas sudo — Utilisez local::lib avec cpanm.
  • Vous êtes dans un environnement isolé ou hors ligne — Téléchargez les archives manuellement et compilez depuis les sources.
  • Vous avez besoin de builds reproductibles sur plusieurs serveurs — Utilisez un cpanfile et cpanm --installdeps . dans votre pipeline de déploiement.
  • Vous avez besoin d’une stabilité au niveau OS et de mises à jour de sécurité automatiques — Utilisez les paquets système (apt, dnf) pour les modules bien packagés.
  • Vous exécutez plusieurs versions Perl sur une même machine — Utilisez perlbrew pour gérer les installations Perl, puis cpanm dans chacune d’elles.
  • Un module échoue à sa suite de tests — Examinez avant d’installer. Consultez le suivi des problèmes du module sur MetaCPAN.
  • Vous devez isoler les dépendances d’une application Perl du système — Combinez perlbrew + local::lib pour une isolation complète.

FAQ

Quelle est la différence entre use et require lors du chargement d’un module Perl ?

use Module est traité au moment de la compilation et interrompra immédiatement le script si le module est introuvable. require Module est évalué à l’exécution, permettant un chargement conditionnel. Pour la plupart des modules, use est le bon choix car il détecte les dépendances manquantes avant le début de l’exécution.

Pourquoi cpanm échoue-t-il avec « SSL verification failed » sur un nouveau serveur ?

Le client cpanm utilise LWP::Protocol::https pour les connexions HTTPS aux miroirs CPAN. Sur une installation OS minimale, les bibliothèques SSL requises (IO::Socket::SSL, Mozilla::CA) peuvent être absentes. Installez-les d’abord via votre gestionnaire de paquets système : sudo apt-get install libssl-dev suivi de cpan IO::Socket::SSL.

Puis-je installer des modules Perl sans accès internet ?

Oui. Téléchargez la distribution .tar.gz depuis MetaCPAN sur une machine connectée, transférez-la sur le serveur cible et compilez manuellement en utilisant perl Makefile.PL && make && make test && sudo make install. Vous pouvez également configurer un miroir CPAN local en utilisant CPAN::Mini pour un accès hors ligne à l’échelle de l’équipe.

Comment vérifier quelle version d’un module est actuellement installée ?

Exécutez perl -MModule::Name -e 'print Module::Name->VERSION, "n"'. Par exemple : perl -MLWP::Simple -e 'print $LWP::Simple::VERSION, "n"'. Vous pouvez également utiliser cpanm --info Module::Name pour voir à la fois la version installée et la dernière disponible sur CPAN.

Que faire si un module s’installe avec succès mais que mon script ne peut toujours pas le trouver ?

Le module a été installé dans un répertoire absent du @INC de votre Perl. Exécutez perl -V pour voir le chemin d’inclusion complet, puis comparez-le avec la sortie de perl -MModule::Name -e 'print $INC{"Module/Name.pm"}'. Réinstallez soit dans le bon préfixe, soit exportez PERL5LIB pour indiquer à Perl le bon répertoire avant d’exécuter votre script.

15%

Économisez 15% sur tous les services d'hébergement

Testez vos compétences et obtenez Réduction sur tout plan d'hébergement

Utilisez le code :

Skills
Commencer