| () | () |
== Name
ruby-build - Download, compile, and install a version of Ruby
== Synopsis
ruby-build [-dvpk] _<definition>_ _<prefix>_ [-- _<configure-args>_...] + ruby-build {--list|--definitions} + ruby-build --resolve _<version>_ + ruby-build --version
== Description
ruby-build downloads, compiles, and installs a Ruby version named by the _definition_ argument into the location specified by _prefix_.
The _definition_ argument can be a path to a file on disk, in which case it is sourced into ruby-build as a bash script.
Optionally, extra Ruby _configure-args_ may be listed after "--" and will get forwarded to the `./configure` invocation.
By default, all compile output is redirected to a log file at `$TMPDIR/ruby-build.*.log`. Activate the verbose mode to skip the log file and print everything to standard streams.
== Ruby versions
When listing "latest" Ruby versions, such as in `--list` output, ruby-build only knows of Ruby versions that are bundled with this project. That means that when a new Ruby version comes out, ruby-build will not know about it immediately; you will have to upgrade ruby-build before you can use it to install the new Ruby version.
== Ruby implementations
ruby-build ships with definitions for the following Ruby implementations:
- CRuby, also known as "MRI": denoted by version numbers
in form of "X.Y.Z".
This is the main Ruby implementation that most people use.
- "jruby": High-performance Ruby implementation with
real threading built
on top of the Java virtual machine (JVM).
- "mruby": Lightweight Ruby for microcontrollers.
- "picoruby": Alternative mruby implementation for one-chip microcontrollers.
- "truffleruby": The Native standalone distribution of
TruffleRuby, an
implementation of Ruby on top of GraalVM's Truffle framework.
- "truffleruby+graalvm": The JVM standalone distribution of TruffleRuby.
The _definition_ argument may optionally start with "ruby-", in which case it resolves to a CRuby that matches the version number that follows. The _definition_ argument may also be a name of one of the alternative Ruby implementations, in which case the latest version of that implementation will be installed.
== Options
*-l, --list*::
List latest stable releases for each Ruby
*--definitions*::
List all local definitions, including outdated ones
*--resolve*::
Print the definition name of the latest stable Ruby version matching the
_version_ argument
*--version*::
Show version of ruby-build
*-d, --dir*::
Install the Ruby in the _prefix/definition_ destination instead of directly
in _prefix_
*-v, --verbose*::
Verbose mode: forward all build output to stdout/stderr
*-p, --patch*::
Apply a patch from stdin before building
*-k, --keep*::
Do not remove source tree after installation
*-4, --ipv4*::
Resolve names to IPv4 addresses only
*-6, --ipv6*::
Resolve names to IPv6 addresses only
== Examples
Install a Ruby version while tweaking some configuration options: ---- $ ruby-build 3.4.9 /path/to/destination -- --disable-install-doc --with-openssl-dir=/opt/openssl ----
Install a Ruby version to `~/.rubies/ruby-3.4.9`: ---- $ ruby-build --dir ruby-3.4.9 ~/.rubies ----
Install the latest Ruby 3.x version to `~/.rubies/ruby-3.x.y`: ---- $ ruby-build --dir ruby-3 ~/.rubies ----
Install a Ruby version to `~/.rbenv/versions/3.3.11`: ---- $ ruby-build --dir 3.3.11 ~/.rbenv/versions ----
Usage as rbenv plugin, accomplishes the same as the previous example: ---- $ rbenv install 3.3.11 ----
== Environment Variables
*TMPDIR*::
The location to write temporary files on disk
*RUBY_BUILD_BUILD_PATH* (default: a timestamped subdirectory of
_TMPDIR_)::
The build location for downloading source files to and compiling
*RUBY_BUILD_CACHE_PATH* (default: "~/.rbenv/cache" if
invoked as rbenv plugin)::
Where to cache downloaded package files
*RUBY_BUILD_HTTP_CLIENT* (default: first tool found in PATH)::
One of "aria2c", "curl", or "wget" to use for
downloading
*RUBY_BUILD_ARIA2_OPTS*::
Additional options to pass to aria2c for downloading
*RUBY_BUILD_CURL_OPTS*::
Additional options to pass to curl for downloading
*RUBY_BUILD_WGET_OPTS*::
Additional options to pass to wget for downloading
*RUBY_BUILD_MIRROR_URL* (default: a sponsored Amazon CloudFront
mirror)::
Custom mirror URL root to download packages from
*RUBY_BUILD_MIRROR_PACKAGE_URL*::
Custom complete mirror URL
*RUBY_BUILD_SKIP_MIRROR*::
Bypass the download mirror and fetch all package files from their original
URLs
*RUBY_BUILD_ROOT* (default: "share/ruby-build" within
ruby-build install location)::
Custom build definition directory
*RUBY_BUILD_TARBALL_OVERRIDE*::
Override the URL to fetch the ruby tarball from, optionally followed by
"#<checksum>"
*RUBY_BUILD_DEFINITIONS*::
Paths to search for build definitions in addition to _RUBY_BUILD_ROOT_
*CC*::
Path to the C compiler
*RUBY_CFLAGS*::
Additional `CFLAGS` options to use for Ruby compilation
*CONFIGURE_OPTS*::
Additional "./configure" arguments
*MAKE* (default: "make")::
Custom make command (e.g., "gmake")
*MAKE_OPTS*, *MAKEOPTS*::
Additional arguments for "make"
*MAKE_INSTALL_OPTS*::
Additional arguments for "make install"
*RUBY_CONFIGURE_OPTS*::
Additional "./configure" arguments that apply only to Ruby
source
*RUBY_MAKE_OPTS*::
Additional make arguments that apply only to Ruby source
*RUBY_MAKE_INSTALL_OPTS*::
Additional "make install" arguments that apply only to Ruby
source
*NO_COLOR* (default: allow colors when connected to terminal)::
Disable ANSI colors in output
*CLICOLOR_FORCE*::
Use ANSI colors in output even when not connected to a terminal
== Notes
* https://github.com/rbenv/ruby-build#readme