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?

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.


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


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'

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.


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.