Skip to main content Help Control Panel

Astuces en pagailles «  

TUTORIAL CPAN - Listage et désinstallation des modules

Posted by M. declercq on Apr. 16 2007, page edited by M. declercq on Apr. 15, (popular)  

Ce tutorial aborde une procédure qui permet de lister les modules CPAN installés sur un système aux fins de leurs désinstallation, a noter que par le biais de cette procédure, il est aussi possible de supprimer totalement CPAN.

I. Création d'un script qui va permettre de lister tous les modules CPAN installés

1. On se place dans le répertoire de l'utilisateur root :
$ cd /root
2. On créer un nouveau répertoire dédié aux scripts que nous allons créer :
$ mkdir uninstall_cpan_mods
3. On se place dans ce nouveau répertoire :
$ cd uninstall_cpan_mods
4. On créer le script qui va nous permettre de lister tous les modules installés via CPAN :
$ nano listing_cpan_mods_script.pl
5. Dans le fichier que l'on vient de créer, on ajoute le code suivant et on enregistre :
#!/usr/local/bin/perl

use ExtUtils::Installed;
my $instmod ExtUtils::Installed->new();
foreach 
my $module ($instmod->modules()) {
my $version $instmod->version($module) || "Version inconnue";
       print 
"$module -- $version\n";
}

II. Utilisation du script

L'utilisation de ce script est très simple, il nous suffit de l'exécuter via la commande suivante :

1. On exécute le script de listage des modules CPAN :
$ perl listing_cpan_mods_script.pl
Et voici le genre de résultat que l'on obtient : 2. Exemple de résultat de l'exécution du script de listage des modules CPAN :
ns1:~# perl listing_cpan_mods_script.pl
Archive::Zip -- 1.18
CPAN -- 1.8802
Compress::Raw::Zlib -- 2.004
Compress::Zlib -- 2.004
Cwd -- 3.24
Digest::SHA -- 5.44
ExtUtils::CBuilder -- 0.18
File::HomeDir -- 0.64
File::Temp -- 0.18
File::Which -- 0.05
IO::Compress::Base -- 2.004
IO::Compress::Zlib -- Version inconnue
List::Util -- 1.19
Module::Build -- 0.2806
Perl -- 5.8.4
Term::ReadKey -- 2.30
Term::ReadLine -- 1.01
Test::Harness -- 2.64
Test::Simple -- 0.70
Text::Glob -- 0.07
YAML -- 0.62
Comme vous pouvez le constater, l'exécution du script que l'on vient de créer retourne la liste de tous les modules CPAN installés sur notre système.

Connaissant le nom exacte des modules CPAN installés, nous pouvons désormais aisément les désinstaller.

III. Création d'un script permettant de désinstaller un modules CPAN

1. On se place dans le répertoire que l'on a précèdemment créé :
$ cd /root/uninstall_cpan_mods
2. On créer un nouveau fichier nommé uninstall_cpan_mods_script.pl :
$ nano uninstall_cpan_mods_script.pl
3. Dans ce nouveau fichier, on ajoute le contenu suivant et on enregistre :
#!/usr/local/bin/perl -w

use ExtUtils::Packlist;
use 
ExtUtils::Installed;

$ARGV[0] or die "Usage: $0 Module::Name\n";

my $mod $ARGV[0];

my $inst ExtUtils::Installed->new();

foreach 
my $item (sort($inst->files($mod))) {
print 
"suppression de $item\n";
unlink $item;
}

my $packfile $inst->packlist($mod)->packlist_file();
print 
"suppression de $packfile\n";
unlink $packfile;

IV. Utilisation du script

Pour utiliser le script, c'est à dire désinstaller un module CPAN, il nous suffit d'exécuter la commande suivante :
$ perl uninstall_cpan_mods_script.pl nom_du_module
Note : nom_du_module est à remplacer par le nom du module que l'on souhaite désinstaller.

Exemple pour le module Archive::Tar -- 1.30 :
$ perl uninstall_cpan_mods_script.pl Archive::Tar -- 1.30
Ce qui donne comme résultat :
removing /usr/bin/ptar
removing /usr/bin/ptardiff
removing /usr/local/man/man1/ptar.1p
removing /usr/local/man/man1/ptardiff.1p
removing /usr/local/man/man3/Archive::Tar.3pm
removing /usr/local/man/man3/Archive::Tar::File.3pm
removing /usr/local/share/perl/5.8.4/Archive/Tar.pm
removing /usr/local/share/perl/5.8.4/Archive/Tar/Constant.pm
removing /usr/local/share/perl/5.8.4/Archive/Tar/File.pm
removing /usr/local/lib/perl/5.8.4/auto/Archive/Tar/.packlist
Comme vous pouvez le remarquer, la désinstallation est entièrement automatique.

Bien entendu, vous pouvez, après avoir désinstallé tous les modules, désinstallé CPAN lui même --> CPAN -- 1.8802

IV. Problèmes pouvant intervenir

Après avoir désinstallé certains modules, il se peut que vous ne puissiez plus utiliser les deux scripts créés précèdement. Dans ce cas, pas de panique, il vous suffit d'exécuter la commande suivante pour que tous rentre dans l'ordre et que vous puissiez continuer à désinstaller les modules qui ne vous servent plus à rien :

1. On ré-install les paquets de base nécessaires à l'utilisation des deux scripts que nous avons créé précèdement :
$ apt-get install --reinstall perl perl-base perl-modules



Une erreur, une incompréhension concernant ce tutorial ? N'hésitez pas à utiliser la fonction commentaire de notre portail et/ou à nous joindre directement en utilisant notre formulaire contact : Nous contacter




Rédigé par M. Laurent DECLERCQ

v1.1 build 20070415.0630

Sources : http://www.cpan.org/misc/cpan-faq.html#How_installed_modules
Lefakir on May 22 2007
Merci pour ce tutoriel,

Savez vous si les modules installés via un autre moyen que le CPAN (par exemple par un aptitude install libwww-perl) sont susceptibles d'être désinstallés par mégarde avec la méthode exposée ?
Lefakir on May 22 2007
Oups désolé, j'avais mal lu car dans les problèmes exposés c'est implicite mais ça répond à ma question ...

Yacs skin by Laurent DECLERCQ - 2006-2008 - All right reserved