RVM tiba-tiba mulai memunculkan kesalahan "variabel tidak terikat" saat mencoba menginstal dan menggunakan Ruby 2.3.4 di Amazon Linux. Kami pertama kali melihat masalah pada 8 Mei 2019 dan saya yakin itu mungkin terkait dengan rilis RVM terbaru. Ruby menginstal dengan benar tetapi ketika kami mencoba untuk "menggunakannya" ( rvm --default use 2.3.4
) kami mendapatkan kesalahan ini.
Kami menggunakan Packer untuk membangun image AWS dengan RVM dan Ruby 2.3.4 terinstal. Proses kami berjalan dari pekerjaan Jenkins dan telah bekerja dengan baik setiap hari Minggu selama beberapa tahun terakhir. Selama membangun lingkungan Jenkins baru minggu lalu, kami menemukan bahwa proses Packer gagal dengan kesalahan _system_name: unbound variable
dan kami pikir itu adalah kesalahan yang kami lakukan. Menyelidiki lebih jauh, kami menemukan bahwa pekerjaan hari Minggu terakhir kami telah gagal dengan cara yang sama.
yes | rvm install ruby-2.3.4 -- --with-openssl-dir=/etc/pki/tls
Kami berharap untuk melihat Ruby menginstal dan proses Packer kami berlanjut seperti biasa.
Perilaku sebenarnya adalah kesalahan yang dapat kami tiru menggunakan 2 akun AWS dan instans Jenkins yang berbeda.
https://Gist.github.com/rnhurt/0363630689f2d2d3a94fb8903c2c6bc8
Berikut adalah Gist yang menunjukkan skrip bash yang kita jalankan di dalam Packer dan output dari Jenkins. Bendera Jenkins DEBUG dihidupkan dan menampilkan tumpukan tumpukan lengkap dari RVM.
Mengembalikan ke versi RVM sebelumnya (v1.29.7) tampaknya menyelesaikan masalah.
kembalikan ke v1.29.7 masih bermasalah
Saya menemukan bahwa skrip saya memiliki set -u
, sehingga akan gagal mengeksekusi skrip rvm.
jika Anda benar-benar ingin menggunakan set -u
, Anda dapat membungkus skrip Anda seperti ini:
YOUR OTHER SCRIPT ...
set +u
YOUR SCRIPT RUN rvm
set -u
YOUR OTHER SCRIPT ...
Komentar yang paling membantu
Saya menemukan bahwa skrip saya memiliki
set -u
, sehingga akan gagal mengeksekusi skrip rvm.jika Anda benar-benar ingin menggunakan
set -u
, Anda dapat membungkus skrip Anda seperti ini: