Stille und skriptbasierte Installation von CPAN- und Perl-Modulen?


9

Ich muss CPAN und einige Perl-Module automatisch in einem RHEL-Installationsskript (Scientific Linux) installieren. Leider können die gewünschten Module (mindestens eines davon) meines Erachtens nicht als RPM: s gefunden werden.

Daher muss ich CPAN installieren, es automatisch konfigurieren (oder mit einer Konfigurationsdatei) und dann auch die gewünschten Module (einschließlich Abhängigkeiten) automatisch installieren.

Dies scheint keine sehr ungewöhnliche Anforderung zu sein, aber ich habe keine wirklich gute Dokumentation dazu gesehen. Das Problem ist, dass beim ersten Start von CPAN eine interaktive Konfiguration ausgeführt wird. Kann das irgendwie übersprungen werden? Und wie starte ich Modulinstallationen direkt über die Befehlszeile?

Antworten:


5

Vielleicht möchten Sie sich cpanm dafür ansehen . Es ist leicht, Shell-skriptfähig und viel einfacher als klassisches CPAN.


1
Überwiegend die richtige Antwort. Verwenden Sie cpanm. Wenn Sie Perlbrew verwenden, verwenden perlbrew install-cpanmSie und Sie sind fertig.
Craig Ringer

Ich habe eine neue Frage und Antwort unter serverfault.com/q/815649/102814 gepostet, weil ich mich darüber ärgere, wie relativ unentdeckbar dies ist und dass Perlbrew nirgendwo aufgetaucht ist.
Craig Ringer

23

Versuchen Sie, diese Umgebungsvariable festzulegen, bevor Sie CPAN ausführen:

export PERL_MM_USE_DEFAULT=1

Perl antwortet automatisch mit "Ja", wenn CPAN fragt "Möchten Sie so viel wie möglich automatisch konfigurieren? [Ja]".

Quelle


Diese Antwort ist viel besser als die akzeptierte Antwort.
Kapad

6

"Und wie starte ich Modulinstallationen direkt über die Befehlszeile?"

Dies sollte tun:

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

5

Wenn es sich um eine sich wiederholende Aufgabe handelt, kann es sich lohnen, einige Stunden mit cpan2rpm zu verbringen und sie in RPMs umzuwandeln. Nach meiner Erfahrung sind CPAN-Läufe (auch interaktiv) zu sehr von unerwarteten Ereignissen (Versionsproblemen, Netzwerkproblemen, falschen Testfehlern) geplagt, als dass man sich bei einer (halb-) automatischen Installation darauf verlassen könnte.


3

Dies sollte die Magie tun:

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.