Ruby-build — это инструмент командной строки, который упрощает установку любой версии Ruby из исходного кода в Unix-подобных системах.
Он доступен как плагин для rbenv (команда rbenv install
) или как отдельная программа (команда ruby-build
).
brew install ruby-build
Обновите с помощью:
brew upgrade ruby-build
git clone https://github.com/rbenv/ruby-build.git " $( rbenv root ) " /plugins/ruby-build
Обновите с помощью:
git -C " $( rbenv root ) " /plugins/ruby-build pull
Сначала загрузите архив с https://github.com/rbenv/ruby-build/releases/latest. Затем:
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
Предупреждение
Ruby-build в большинстве случаев не проверяет наличие системных зависимостей перед загрузкой и попыткой скомпилировать Ruby из исходного кода. Убедитесь, что все необходимые библиотеки, такие как инструменты сборки и заголовки разработки, уже присутствуют в вашей системе.
По сути, что делает Ruby-build при установке версии Ruby:
./configure --prefix=/path/to/destination
в исходном коде;make install
для компиляции Ruby;В зависимости от контекста, Ruby-build делает немного больше, чем указано выше: например, он попытается связать Ruby с соответствующей версией OpenSSL, даже если это означает загрузку и компиляцию самого OpenSSL; он обнаружит экземпляры некоторых библиотек, таких как libyaml, readline и т. д., установленные Homebrew, и свяжется с ними.
Чтобы установить версию Ruby, которая не распознается Ruby-build, вы можете указать путь к файлу определения пользовательской сборки вместо номера версии Ruby.
Ознакомьтесь с определениями сборки по умолчанию в качестве примеров того, как писать файлы определений.
Процесс сборки можно настроить с помощью следующих переменных среды:
Переменная | Функция |
---|---|
TMPDIR | Где хранятся временные файлы. |
RUBY_BUILD_BUILD_PATH | Где загружаются и собираются исходники. (По умолчанию: подкаталог TMPDIR с отметкой времени) |
RUBY_BUILD_CACHE_PATH | Где кэшировать загруженные файлы пакетов. (По умолчанию: ~/.rbenv/cache , если он вызывается как плагин rbenv) |
RUBY_BUILD_HTTP_CLIENT | Один из aria2c , curl или wget , который можно использовать для загрузки. (По умолчанию: первый найденный в PATH) |
RUBY_BUILD_ARIA2_OPTS | Дополнительные параметры для передачи aria2c для загрузки. |
RUBY_BUILD_CURL_OPTS | Дополнительные параметры, которые можно передать в curl для загрузки. |
RUBY_BUILD_WGET_OPTS | Дополнительные параметры для передачи в wget для загрузки. |
RUBY_BUILD_MIRROR_URL | Пользовательский корневой URL-адрес зеркала. |
RUBY_BUILD_MIRROR_PACKAGE_URL | Пользовательский полный URL-адрес зеркала (например, http://mirror.example.com/package-1.0.0.tar.gz). |
RUBY_BUILD_SKIP_MIRROR | Обходите зеркало загрузки и получайте все файлы пакетов с их исходных URL-адресов. |
RUBY_BUILD_TARBALL_OVERRIDE | Переопределите URL-адрес для получения tar-архива Ruby, за которым (необязательно) следует #checksum . |
RUBY_BUILD_DEFINITIONS | Список путей, разделенных двоеточиями, для поиска файлов определений сборки. |
RUBY_BUILD_ROOT | Префикс пути для поиска файлов определений сборки. Устарело: используйте RUBY_BUILD_DEFINITIONS |
RUBY_BUILD_VENDOR_OPENSSL | Создавайте и продавайте openssl, даже если система openssl совместима. |
CC | Путь к компилятору C. |
RUBY_CFLAGS | Дополнительные параметры CFLAGS ( например, для переопределения -O3 ). |
CONFIGURE_OPTS | Дополнительные параметры ./configure . |
MAKE | Пользовательская команда make ( например, gmake ). |
MAKE_OPTS / MAKEOPTS | Дополнительные возможности make . |
MAKE_INSTALL_OPTS | Дополнительные параметры make install . |
RUBY_CONFIGURE_OPTS | Дополнительные параметры ./configure (применяются только к исходному коду Ruby). |
RUBY_MAKE_OPTS | Дополнительные параметры make (применяется только к исходному коду Ruby). |
RUBY_MAKE_INSTALL_OPTS | Дополнительные параметры make install (применяются только к исходному коду Ruby). |
NO_COLOR | Отключите цвета ANSI на выходе. По умолчанию используются цвета для вывода, подключенного к терминалу. |
CLICOLOR_FORCE | Используйте цвета ANSI при выводе, даже если они не подключены к терминалу. |
Команды rbenv install
и ruby-build
поддерживают флаг -p/--patch
для применения исправления к исходному коду Ruby перед сборкой. Патчи считываются со стандартного ввода:
# 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
Все файлы определений Ruby, входящие в состав Ruby-build, включают контрольные суммы для пакетов. Это означает, что все загружаемые извне пакеты автоматически проверяются на целостность после получения.
См. следующий раздел для получения дополнительной информации о том, как создавать контрольные суммы.
Чтобы ускорить загрузку, Ruby-build извлекает файлы пакетов с зеркала, размещенного на Amazon CloudFront. Чтобы воспользоваться этим, пакеты должны указать свою контрольную сумму:
# example:
install_package " ruby-2.6.5 " " https://ruby-lang.org/ruby-2.6.5.tgz# "
Ruby-build сначала попытается получить этот пакет из $RUBY_BUILD_MIRROR_URL/
(примечание: это полный URL-адрес), где
— контрольная сумма файла. Он вернется к загрузке пакета из исходного местоположения, если:
RUBY_BUILD_SKIP_MIRROR
включен. Вы можете указать собственное зеркало, установив RUBY_BUILD_MIRROR_URL
.
Если зеркальный сайт не соответствует указанному выше формату URL-адреса, вы можете указать полный URL-адрес, установив RUBY_BUILD_MIRROR_PACKAGE_URL
. Он ведет себя так же, как RUBY_BUILD_MIRROR_URL
за исключением того, что является полным URL-адресом.
Зеркало загрузки Ruby-сборки по умолчанию спонсируется Basecamp.
И ruby-build
, и rbenv install
принимают флаг -k
или --keep
, который указывает Ruby-build сохранить загруженный исходный код после установки. Это может быть полезно, если вам нужно использовать gdb
и memprof
с Ruby.
Исходный код будет храниться в параллельном дереве каталогов ~/.rbenv/sources
при использовании --keep
с командой rbenv install
. Вы должны указать местоположение исходного кода с помощью переменной среды RUBY_BUILD_BUILD_PATH
при использовании --keep
с ruby-build
.
Пожалуйста, посетите вики Ruby-build для решения распространенных проблем.
Если вы не можете найти ответ в вики, откройте проблему в системе отслеживания проблем. Обязательно включите полный журнал сборки на случай сбоев сборки.