¿Instalación silenciosa y programada de módulos CPAN y Perl?

9

Necesito instalar CPAN y algunos módulos de Perl automáticamente en un script de instalación de Scientific Linux (RHEL). Desafortunadamente, los módulos específicos que quiero (al menos uno de ellos) no se pueden encontrar como RPM: s por lo que he visto.

Por lo tanto, necesito instalar CPAN, configurarlo automáticamente (o con un archivo de configuración) y luego instalar los módulos deseados (incluidas las dependencias) automáticamente también.

Esto no parece un requisito muy inusual, pero no he visto ninguna documentación realmente buena sobre esto. El problema es que cada vez que se inicia CPAN por primera vez se ejecuta una configuración interactiva. ¿Se puede omitir esto de alguna manera? ¿Y cómo inicio las instalaciones de módulos directamente desde la línea de comandos?

Mikael Grönfelt
fuente

Respuestas:

5

Es posible que desee mirar cpanm para esto; es liviano, programable en shell y mucho más simple que el clásico CPAN.

Jeff Albert
fuente
1
Abrumadoramente la respuesta correcta. Usa cpanm. Si está usando perlbrew, use perlbrew install-cpanmy ya está.
Craig Ringer el
Publiqué una nueva pregunta y respuesta en serverfault.com/q/815649/102814 porque estoy molesto por lo relativamente poco detectable que es esto, y ese perlbrew no apareció en ningún lado.
Craig Ringer
23

Intente configurar esta variable de entorno antes de ejecutar CPAN:

export PERL_MM_USE_DEFAULT=1

Hace que Perl responda automáticamente "sí" cuando CPAN pregunta "¿Desea configurar automáticamente la mayor cantidad posible? [Sí]"

Fuente

Circuito en la pared
fuente
Esta respuesta es mucho mejor que la respuesta aceptada.
kapad
6

"¿Y cómo inicio las instalaciones de módulos directamente desde la línea de comandos?"

Esto debería hacer:

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

Si es una tarea repetitiva, puede pagar pasar unas horas con cpan2rpm y convertirlas en RPM. En mi experiencia, las ejecuciones de CPAN (incluso interactivas) están plagadas de eventos inesperados (peculiaridades de versión, problemas de red, fallas de pruebas falsas) como para confiar en una instalación (semi) automática.

Forma de vida alienígena
fuente
3

Esto debería hacer la magia:

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
fuente