ruby-build adalah alat baris perintah yang menyederhanakan instalasi versi Ruby apa pun dari sumber pada sistem mirip Unix.
Ini tersedia sebagai plugin untuk rbenv sebagai perintah rbenv install
, atau sebagai program mandiri sebagai perintah ruby-build
.
brew install ruby-build
Tingkatkan dengan:
brew upgrade ruby-build
git clone https://github.com/rbenv/ruby-build.git " $( rbenv root ) " /plugins/ruby-build
Tingkatkan dengan:
git -C " $( rbenv root ) " /plugins/ruby-build pull
Pertama, unduh tarball dari https://github.com/rbenv/ruby-build/releases/latest. Kemudian:
tar -xzf ruby-build- * .tar.gz
PREFIX=/usr/local ./ruby-build- * /install.sh
# As a standalone program
$ ruby-build --list # lists latest stable releases for each Ruby
$ ruby-build --definitions # lists all definitions, including outdated ones
$ ruby-build 3.2.2 ~ /.rubies/ruby-3.2.2 # installs Ruby 3.2.2
$ ruby-build -d ruby-3.2.2 ~ /.rubies # alternate form for the previous example
# As an rbenv plugin
$ rbenv install 3.2.2 # installs Ruby 3.2.2 to ~/.rbenv/versions/3.2.2
Peringatan
ruby-build sebagian besar tidak memverifikasi bahwa dependensi sistem ada sebelum mengunduh dan mencoba mengkompilasi Ruby dari sumber. Harap pastikan bahwa semua perpustakaan yang diperlukan seperti alat pembangunan dan header pengembangan sudah ada di sistem Anda.
Pada dasarnya, apa yang ruby-build lakukan ketika menginstal versi Ruby adalah ini:
./configure --prefix=/path/to/destination
dalam kode sumber;make install
untuk mengkompilasi Ruby;Tergantung pada konteksnya, ruby-build melakukan lebih dari yang di atas: misalnya, ia akan mencoba menghubungkan Ruby ke versi OpenSSL yang sesuai, bahkan jika itu berarti mengunduh dan mengkompilasi OpenSSL itu sendiri; itu akan menemukan dan menautkan ke instance beberapa perpustakaan yang diinstal Homebrew seperti libyaml dan readline, dll.
Untuk menginstal versi Ruby yang tidak dikenali oleh ruby-build, Anda dapat menentukan jalur ke file definisi build kustom sebagai pengganti nomor versi Ruby.
Lihat definisi build default sebagai contoh cara menulis file definisi.
Proses pembangunan dapat dikonfigurasi melalui variabel lingkungan berikut:
Variabel | Fungsi |
---|---|
TMPDIR | Tempat file-file sementara disimpan. |
RUBY_BUILD_BUILD_PATH | Tempat sumber diunduh dan dibuat. (Default: subdirektori TMPDIR yang diberi stempel waktu) |
RUBY_BUILD_CACHE_PATH | Tempat menyimpan file paket yang diunduh dalam cache. (Default: ~/.rbenv/cache jika dipanggil sebagai plugin rbenv) |
RUBY_BUILD_HTTP_CLIENT | Salah satu aria2c , curl , atau wget yang digunakan untuk mengunduh. (Default: yang pertama ditemukan di PATH) |
RUBY_BUILD_ARIA2_OPTS | Opsi tambahan untuk diteruskan ke aria2c untuk diunduh. |
RUBY_BUILD_CURL_OPTS | Opsi tambahan untuk diteruskan ke curl untuk diunduh. |
RUBY_BUILD_WGET_OPTS | Opsi tambahan untuk diteruskan ke wget untuk diunduh. |
RUBY_BUILD_MIRROR_URL | Akar URL cermin khusus. |
RUBY_BUILD_MIRROR_PACKAGE_URL | URL cermin lengkap khusus (misalnya http://mirror.example.com/package-1.0.0.tar.gz). |
RUBY_BUILD_SKIP_MIRROR | Lewati cermin unduhan dan ambil semua file paket dari URL aslinya. |
RUBY_BUILD_TARBALL_OVERRIDE | Ganti URL tempat mengambil tarball rubi, secara opsional diikuti dengan #checksum . |
RUBY_BUILD_DEFINITIONS | Daftar jalur yang dipisahkan titik dua untuk mencari file definisi build. |
RUBY_BUILD_ROOT | Awalan jalur untuk mencari file definisi build. Tidak berlaku lagi: gunakan RUBY_BUILD_DEFINITIONS |
RUBY_BUILD_VENDOR_OPENSSL | Bangun dan vendor openssl meskipun sistem openssl kompatibel |
CC | Jalur ke kompiler C. |
RUBY_CFLAGS | Opsi CFLAGS tambahan ( misalnya, untuk mengganti -O3 ). |
CONFIGURE_OPTS | Opsi ./configure tambahan. |
MAKE | Perintah make khusus ( misalnya, gmake ). |
MAKE_OPTS / MAKEOPTS | Opsi make tambahan. |
MAKE_INSTALL_OPTS | Opsi make install tambahan. |
RUBY_CONFIGURE_OPTS | Opsi ./configure tambahan (hanya berlaku untuk sumber Ruby). |
RUBY_MAKE_OPTS | Opsi make tambahan (hanya berlaku untuk sumber Ruby). |
RUBY_MAKE_INSTALL_OPTS | Opsi make install tambahan (hanya berlaku untuk sumber Ruby). |
NO_COLOR | Nonaktifkan warna ANSI dalam keluaran. Defaultnya adalah menggunakan warna untuk output yang terhubung ke terminal. |
CLICOLOR_FORCE | Gunakan warna ANSI dalam output meskipun tidak terhubung ke terminal. |
Perintah rbenv install
dan ruby-build
mendukung flag -p/--patch
untuk menerapkan patch ke kode sumber Ruby sebelum membangun. Patch dibaca dari input standar:
# applying a single patch
$ rbenv install --patch 1.9.3-p429 < /path/to/ruby.patch
# applying a patch from HTTP
$ rbenv install --patch 1.9.3-p429 < <( curl -sSL http://git.io/ruby.patch )
# applying multiple patches
$ cat fix1.patch fix2.patch | rbenv install --patch 1.9.3-p429
Semua file definisi Ruby yang dibundel dengan ruby-build menyertakan checksum untuk paket, artinya semua paket yang diunduh secara eksternal secara otomatis diperiksa integritasnya setelah diambil.
Lihat bagian selanjutnya untuk informasi lebih lanjut tentang cara menulis checksum.
Untuk mempercepat pengunduhan, ruby-build mengambil file paket dari mirror yang dihosting di Amazon CloudFront. Untuk mendapatkan keuntungan dari hal ini, paket harus menentukan checksumnya:
# example:
install_package " ruby-2.6.5 " " https://ruby-lang.org/ruby-2.6.5.tgz# "
ruby-build pertama-tama akan mencoba mengambil paket ini dari $RUBY_BUILD_MIRROR_URL/
(catatan: ini adalah URL lengkap), dengan
adalah checksum untuk file tersebut. Ini akan kembali mengunduh paket dari lokasi asli jika:
RUBY_BUILD_SKIP_MIRROR
diaktifkan. Anda dapat menentukan cermin khusus dengan menyetel RUBY_BUILD_MIRROR_URL
.
Jika situs mirror tidak sesuai dengan format URL di atas, Anda dapat menentukan URL lengkap dengan menyetel RUBY_BUILD_MIRROR_PACKAGE_URL
. Ini berperilaku sama seperti RUBY_BUILD_MIRROR_URL
kecuali URL lengkap.
Cermin pengunduhan ruby-build default disponsori oleh Basecamp.
ruby-build
dan rbenv install
menerima flag -k
atau --keep
, yang memberitahu ruby-build untuk menyimpan sumber yang diunduh setelah instalasi. Ini berguna jika Anda perlu menggunakan gdb
dan memprof
dengan Ruby.
Kode sumber akan disimpan di pohon direktori paralel ~/.rbenv/sources
saat menggunakan --keep
dengan perintah rbenv install
. Anda harus menentukan lokasi kode sumber dengan variabel lingkungan RUBY_BUILD_BUILD_PATH
saat menggunakan --keep
dengan ruby-build
.
Silakan lihat wiki ruby-build untuk solusi masalah umum.
Jika Anda tidak dapat menemukan jawaban di wiki, buka isu di pelacak isu. Pastikan untuk menyertakan log build lengkap untuk kegagalan build.