Diam dan skrip menginstal modul CPAN dan Perl?


9

Saya perlu menginstal CPAN dan beberapa modul Perl secara otomatis dalam skrip instalasi Scientific Linux (RHEL). Sayangnya modul spesifik yang saya inginkan (setidaknya salah satunya) tidak dapat ditemukan sebagai RPM: s sejauh yang saya lihat.

Jadi saya perlu menginstal CPAN, mengkonfigurasinya secara otomatis (atau dengan file konfigurasi) dan kemudian menginstal modul yang diinginkan (termasuk dependensi) secara otomatis juga.

Ini sepertinya bukan persyaratan yang sangat tidak biasa, tetapi saya belum melihat dokumentasi yang sangat bagus tentang ini. Masalahnya adalah bahwa setiap kali CPAN diluncurkan untuk pertama kalinya konfigurasi interaktif berjalan. Bisakah ini dilewati entah bagaimana? Dan bagaimana cara memulai instalasi modul langsung dari baris perintah?

Jawaban:


5

Anda mungkin ingin melihat cpanm untuk ini; ringan, skrip shell, dan jauh lebih sederhana daripada CPAN klasik.


1
Jawaban yang sangat tepat. Gunakan cpanm. Jika Anda menggunakan perlbrew, gunakan perlbrew install-cpanmdan Anda selesai.
Craig Ringer

Diposting pertanyaan dan jawaban baru di serverfault.com/q/815649/102814 karena saya kesal dengan betapa relatif tidak dapat ditemukannya ini, dan perlbrew tidak muncul di mana pun.
Craig Ringer

23

Coba atur variabel lingkungan ini sebelum menjalankan CPAN:

export PERL_MM_USE_DEFAULT=1

Itu membuat perl secara otomatis menjawab "ya" ketika CPAN bertanya "Apakah Anda ingin mengkonfigurasi sebanyak mungkin secara otomatis? [Ya]"

Sumber


Jawaban ini jauh lebih baik daripada jawaban yang diterima.
kapad

6

"Dan bagaimana cara memulai instalasi modul langsung dari baris perintah?"

Ini harus dilakukan:

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

5

Jika itu adalah tugas yang berulang, mungkin membayar untuk menghabiskan beberapa jam dengan cpan2rpm dan mengubahnya menjadi RPM. Dalam pengalaman saya, berjalan CPAN (bahkan interaktif) terlalu terganggu oleh peristiwa yang tidak terduga (versi quirks, masalah jaringan, kegagalan pengujian palsu) untuk dapat diandalkan dalam instalasi (semi-) otomatis.


3

Ini harus melakukan keajaiban:

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.