2010-11-10 52 views
2

Problèmes de CPAN pour travailler avec un référentiel MiniCPAN à partir d'un script (un système de déploiement de code pour construire des modules locaux avec des modules du CPAN, les installer sur une librairie locale, puis les synchroniser avec les serveurs)Comment automatiser l'installation d'un module à partir d'un référentiel MiniCPAN local?

$HOME/.cpan/CPAN/MyConfig.pm existe, avec urllist ensemble à ['file:///home/user/minicpan/']

le (non-CPAN) distribution du module a été injecté avec succès dans le repo minicpan, et le fichier existe: par exemple, /home/user/minicpan/authors/U/US/USER/My-Module-0.01.tar.gz.

L'auteur est en .../01mailrc.txt.gz, le module est en .../modules/02packages.details.txt.gz

Le module se trouve et installe via le shell CPAN.

ne réussit pas par le code suivant:

CPAN::HandleConfig->load; 
CPAN::Shell::setup_output; 
CPAN::Index->reload; 

# dumping config here shows urllist set correctly, 
# and config exactly the same as through shell 
use Data::Dumper; 
$Data::Dumper::Sortkeys = 1; 
print Dumper($CPAN::Config); 

CPAN::Shell->install("My::Module"); 

Ou ne trouve pas le module ("Cannot install My::Module, don't know what it is.") ou réclamations est à jour (My::Module is up to date (0.01))

Module est pas installé dans le lib local (et non nulle part ailleurs sur la machine, par exemple dans/usr/...) variables d'environnement local-lib sont définies par eval $(perl -I$HOME/foo/lib/perl5 -Mlocal::lib=$HOME/locallib) dans bash profil

Après avoir obtenu soit erreur (y compris 'Module est à jour'), ​​une 'installation' normale dans le shell fonctionne sans force, comme le fait perl -MCPAN -e "install My::Module", donc je présume que la configuration n'est pas correctement définie, mais les docs CPAN.pm sont plutôt difficiles à suivre. ..

(CPAN.pm est v1.9402)

+0

avait pas de chance avec CPANPLUS soit ... fini par utiliser App :: cpanminus avec le nouveau « --mirror option "only" (en v.1001) – plusplus

+0

Quand vous dites "injecté", comment faites-vous l'injection dans le MiniCPAN? Êtes-vous simplement en train de copier le fichier sans mettre à jour les index? –

Répondre

0

essayer:

#!/usr/bin/perl -w 

system <cpan install My::Module>