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

9

J'ai besoin d'installer CPAN et certains modules Perl automatiquement dans un script d'installation de Scientific Linux (RHEL). 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.

Je dois donc installer CPAN, le configurer automatiquement (ou avec un fichier de configuration), puis 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 vu aucune très bonne documentation à ce sujet. Le problème est que chaque fois que CPAN est lancé pour la première fois, une configuration interactive s'exécute. Cela peut-il être ignoré d'une manière ou d'une autre? Et comment lancer des installations de modules directement à partir de la ligne de commande?

Mikael Grönfelt
la source

Réponses:

5

Vous voudrez peut-être regarder cpanm pour cela; il est léger, interprétable par script et beaucoup plus simple que le CPAN classique.

Jeff Albert
la source
1
La très bonne réponse. Utilisez cpanm. Si vous utilisez Perlbrew, utilisez perlbrew install-cpanmet vous avez terminé.
Craig Ringer
Posté une nouvelle question et réponse sur serverfault.com/q/815649/102814 parce que je suis ennuyé par la façon dont cela est relativement inconnu, et que perlbrew n'est apparu nulle part.
Craig Ringer
23

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

export PERL_MM_USE_DEFAULT=1

Il fait automatiquement perl répondre "oui" lorsque CPAN demande "Voulez-vous configurer autant que possible automatiquement? [Oui]"

La source

Circuit dans le mur
la source
Cette réponse est bien meilleure que la réponse acceptée.
kapad
6

"Et comment lancer des installations de modules directement à partir de la ligne de commande?"

Cela devrait faire:

perl -MCPAN -e 'install Your::Package'
Janne Pikkarainen
la source
5

Si c'est une tâche répétitive, il peut être utile 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 en proie à des événements inattendus (bizarreries de version, problèmes de réseau, échecs de tests factices) pour être utilisées dans une installation (semi-) automatique.

Forme de vie extraterrestre
la source
3

Cela devrait faire la magie:

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
Magochi
la source