Installazione silenziosa e con script dei moduli CPAN e Perl?


9

Devo installare automaticamente CPAN e alcuni moduli Perl in uno script di installazione di Scientific Linux (RHEL). Sfortunatamente i moduli specifici che desidero (almeno uno di essi) non possono essere trovati come RPM: s per quanto ho visto.

Quindi ho bisogno di installare CPAN, configurarlo automaticamente (o con un file di configurazione) e quindi installare automaticamente anche i moduli desiderati (comprese le dipendenze).

Questo non sembra un requisito molto insolito, ma non ho visto alcuna documentazione davvero valida su questo. Il problema è che ogni volta che CPAN viene avviato per la prima volta, viene eseguita una configurazione interattiva. Questo può essere saltato in qualche modo? E come posso avviare le installazioni del modulo direttamente dalla riga di comando?

Risposte:


5

Potresti voler guardare cpanm per questo; è leggero, shell scriptable e molto più semplice del classico CPAN.


1
Incredibilmente la risposta giusta. Usa cpanm. Se stai usando perlbrew, usa perlbrew install-cpanme il gioco è fatto.
Craig Ringer,

Ho pubblicato una nuova domanda e risposta su serverfault.com/q/815649/102814 perché sono infastidito da quanto sia relativamente sconosciuto e che il perlbrew non è venuto da nessuna parte.
Craig Ringer,

23

Prova a impostare questa variabile d'ambiente prima di eseguire CPAN:

export PERL_MM_USE_DEFAULT=1

Fa in modo che il perl risponda automaticamente "sì" quando CPAN chiede "Desideri configurare il più automaticamente possibile? [Sì]"

fonte


Questa risposta è molto meglio della risposta accettata.
Kapad,

6

"E come posso avviare le installazioni del modulo direttamente dalla riga di comando?"

Questo dovrebbe fare:

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

5

Se si tratta di un'attività ripetitiva, potrebbe essere necessario passare qualche ora con cpan2rpm e trasformarli in RPM. Nella mia esperienza, le esecuzioni CPAN (anche interattive) sono troppo afflitte da eventi imprevisti (stranezze di versione, problemi di rete, fallimenti di test fasulli) per essere invocate in un'installazione (semi) automatica.


3

Questo dovrebbe fare 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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.