Instalação silenciosa e com script dos módulos CPAN e Perl?

9

Preciso instalar o CPAN e alguns módulos Perl automaticamente em um script de instalação do Scientific Linux (RHEL). Infelizmente, os módulos específicos que eu quero (pelo menos um deles) não podem ser encontrados como RPM: s até onde eu vi.

Então, eu preciso instalar o CPAN, configurá-lo automaticamente (ou com um arquivo de configuração) e, em seguida, instalar os módulos desejados (incluindo dependências) automaticamente.

Isso não parece um requisito muito incomum, mas eu não vi nenhuma documentação realmente boa sobre isso. O problema é que sempre que o CPAN é iniciado pela primeira vez, uma configuração interativa é executada. Isso pode ser pulado de alguma forma? E como inicio instalações de módulos diretamente da linha de comando?

Mikael Grönfelt
fonte

Respostas:

5

Você pode querer olhar para o cpanm ; é leve, com script de shell e muito mais simples que o CPAN clássico.

Jeff Albert
fonte
1
Surpreendentemente, a resposta certa. Use cpanm. Se você estiver usando perlbrew, use perlbrew install-cpanme pronto.
Craig Ringer
Publiquei uma nova pergunta e resposta em serverfault.com/q/815649/102814 porque estou chateado com o quão relativamente desconhecido isso é, e esse perlbrew não chegou a lugar algum.
Craig Ringer
23

Tente definir essa variável de ambiente antes de executar o CPAN:

export PERL_MM_USE_DEFAULT=1

Isso faz com que o perl responda automaticamente "yes" quando o CPAN pergunta "Deseja configurar o máximo possível automaticamente? [Yes]"

Fonte

Circuito na parede
fonte
Essa resposta é muito melhor que a resposta aceita.
23719 kapad
6

"E como inicio instalações de módulos diretamente da linha de comando?"

Isso deve fazer:

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

Se for uma tarefa repetitiva, pode valer a pena passar algumas horas com cpan2rpm e transformá-las em RPMs. Na minha experiência, as execuções de CPAN (mesmo interativas) são muito afetadas por eventos inesperados (peculiaridades da versão, problemas de rede, falhas de testes falsos) para serem confiáveis ​​em uma instalação (semi-) automática.

Forma de vida alienígena
fonte
3

Isso deve fazer a mágica:

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
fonte