11 votes

Installation silencieuse et scriptée de CPAN et de modules Perl ?

J'ai besoin d'installer CPAN et quelques modules Perl automatiquement dans une installation Scientific Linux (RHEL) script. Malheureusement, les modules spécifiques que je veux (au moins l'un d'entre eux) ne peuvent pas être trouvés en tant que RPM:s pour autant que je l'ai vu.

J'ai donc besoin d'installer CPAN, de le configurer automatiquement (ou à l'aide d'un fichier de configuration) et d'installer automatiquement les modules souhaités (y compris les dépendances).

Cela ne semble pas être une exigence très inhabituelle, mais je n'ai pas vu de bonne documentation à ce sujet. Le problème est qu'à chaque fois que CPAN est lancé pour la première fois, une configuration interactive s'exécute. Est-il possible de sauter cette étape ? Et comment lancer l'installation de modules directement à partir de la ligne de commande ?

31voto

Sandra Points 11

Essayez de définir cette variable d'environnement avant d'exécuter CPAN :

export PERL_MM_USE_DEFAULT=1

Il permet à perl de répondre automatiquement "yes" lorsque CPAN demande "Would you like to configure as much as possible automatically ? [oui]"

Quelle

6voto

Janne Pikkarainen Points 31244

"Et comment lancer l'installation de modules directement à partir de la ligne de commande ?

Cela devrait suffire :

perl -MCPAN -e 'install Your::Package'

5voto

Milind R Points 121

S'il s'agit d'une tâche répétitive, il peut être intéressant de passer quelques heures avec cpan2rpm et de les transformer en RPM. D'après mon expérience, les exécutions CPAN (même interactives) sont trop perturbées par des événements inattendus (bizarreries de version, problèmes de réseau, échecs de faux tests) pour qu'on puisse s'y fier dans le cadre d'une installation (semi-)automatique.

5voto

Jeff Albert Points 1967

Vous pouvez consulter cpanm pour cela ; il est léger, Shell scriptable, et beaucoup plus simple que le CPAN classique.

3voto

Magochi Points 31

Cela devrait faire l'affaire :

get_cpanm(){
    if [ \! -f /usr/local/bin/cpanm ]; then
            cd $TMP_DIR && curl --insecure -L http://cpanmin.us | perl - App::cpanminus
            if [ \! -f /usr/local/bin/cpanm ]; then
                    echo "Downloading from cpanmin.us failed, downloading from xrl.us"
                    curl -LO http://xrl.us/cpanm &&
            chmod +x cpanm &&
            mv cpanm /usr/local/bin/cpanm
            fi
    fi
    CPANM=$(which cpanm);
    if [ \! -f "$CPANM" ]; then
            echo "ERROR: Unable to find cpanm"
            return 1;
    fi
    return 0
}
cpanm Time::HiRes CGI Moose Config::JSON other::cpanmodules

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X