ruby-build es una herramienta de línea de comandos que simplifica la instalación de cualquier versión de Ruby desde el código fuente en sistemas tipo Unix.
Está disponible como complemento para rbenv como el comando rbenv install
, o como programa independiente como el comando ruby-build
.
brew install ruby-build
Actualiza con:
brew upgrade ruby-build
git clone https://github.com/rbenv/ruby-build.git " $( rbenv root ) " /plugins/ruby-build
Actualiza con:
git -C " $( rbenv root ) " /plugins/ruby-build pull
Primero, descargue un tarball de https://github.com/rbenv/ruby-build/releases/latest. Entonces:
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
Advertencia
Ruby-build en su mayoría no verifica que las dependencias del sistema estén presentes antes de descargar e intentar compilar Ruby desde la fuente. Asegúrese de que todas las bibliotecas necesarias, como herramientas de compilación y encabezados de desarrollo, ya estén presentes en su sistema.
Básicamente, lo que hace Ruby-build al instalar una versión de Ruby es esto:
./configure --prefix=/path/to/destination
en el código fuente;make install
para compilar Ruby;Dependiendo del contexto, ruby-build hace un poco más que lo anterior: por ejemplo, intentará vincular Ruby a la versión apropiada de OpenSSL, incluso si eso significa descargar y compilar el propio OpenSSL; Descubrirá y vinculará instancias instaladas en Homebrew de algunas bibliotecas como libyaml y readline, etc.
Para instalar una versión de Ruby que Ruby-build no reconoce, puede especificar la ruta a un archivo de definición de compilación personalizado en lugar de un número de versión de Ruby.
Consulte las definiciones de compilación predeterminadas como ejemplos sobre cómo escribir archivos de definición.
El proceso de construcción se puede configurar a través de las siguientes variables de entorno:
Variable | Función |
---|---|
TMPDIR | Donde se almacenan los archivos temporales. |
RUBY_BUILD_BUILD_PATH | Dónde se descargan y crean las fuentes. (Predeterminado: un subdirectorio con marca de tiempo de TMPDIR ) |
RUBY_BUILD_CACHE_PATH | Dónde almacenar en caché los archivos de paquetes descargados. (Predeterminado: ~/.rbenv/cache si se invoca como complemento de rbenv) |
RUBY_BUILD_HTTP_CLIENT | Uno de aria2c , curl o wget para usar en la descarga. (Predeterminado: el primero que se encuentra en PATH) |
RUBY_BUILD_ARIA2_OPTS | Opciones adicionales para pasar a aria2c para su descarga. |
RUBY_BUILD_CURL_OPTS | Opciones adicionales para pasar a curl para descargar. |
RUBY_BUILD_WGET_OPTS | Opciones adicionales para pasar a wget para su descarga. |
RUBY_BUILD_MIRROR_URL | Raíz de URL espejo personalizada. |
RUBY_BUILD_MIRROR_PACKAGE_URL | URL espejo completa personalizada (por ejemplo, http://mirror.example.com/package-1.0.0.tar.gz). |
RUBY_BUILD_SKIP_MIRROR | Omita el espejo de descarga y obtenga todos los archivos del paquete desde sus URL originales. |
RUBY_BUILD_TARBALL_OVERRIDE | Anule la URL para obtener el tarball de Ruby, seguida opcionalmente de #checksum . |
RUBY_BUILD_DEFINITIONS | Lista de rutas separadas por dos puntos para buscar archivos de definición de compilación. |
RUBY_BUILD_ROOT | El prefijo de ruta para buscar archivos de definiciones de compilación. En desuso: use RUBY_BUILD_DEFINITIONS |
RUBY_BUILD_VENDOR_OPENSSL | Compilación y proveedor de openssl incluso si el sistema openssl es compatible |
CC | Ruta al compilador de C. |
RUBY_CFLAGS | Opciones CFLAGS adicionales ( por ejemplo, para anular -O3 ). |
CONFIGURE_OPTS | Opciones adicionales ./configure . |
MAKE | Comando make personalizado ( por ejemplo, gmake ). |
MAKE_OPTS / MAKEOPTS | Opciones make adicionales. |
MAKE_INSTALL_OPTS | Opciones adicionales make install . |
RUBY_CONFIGURE_OPTS | Opciones ./configure adicionales (se aplica solo a la fuente Ruby). |
RUBY_MAKE_OPTS | Opciones make adicionales (se aplica solo a la fuente Ruby). |
RUBY_MAKE_INSTALL_OPTS | Opciones adicionales make install (se aplica solo a la fuente Ruby). |
NO_COLOR | Deshabilite los colores ANSI en la salida. El valor predeterminado es usar colores para la salida conectada a un terminal. |
CLICOLOR_FORCE | Utilice colores ANSI en la salida incluso cuando no esté conectado a un terminal. |
Tanto el comando rbenv install
como ruby-build
admiten el indicador -p/--patch
para aplicar un parche al código fuente de Ruby antes de compilarlo. Los parches se leen desde la entrada estándar:
# 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
Todos los archivos de definición de Ruby incluidos con ruby-build incluyen sumas de verificación para los paquetes, lo que significa que todos los paquetes descargados externamente se verifican automáticamente para verificar su integridad después de recuperarlos.
Consulte la siguiente sección para obtener más información sobre cómo crear sumas de verificación.
Para acelerar las descargas, Ruby-build recupera archivos de paquetes desde una réplica alojada en Amazon CloudFront. Para beneficiarse de esto, los paquetes deben especificar su suma de verificación:
# example:
install_package " ruby-2.6.5 " " https://ruby-lang.org/ruby-2.6.5.tgz# "
ruby-build primero intentará recuperar este paquete desde $RUBY_BUILD_MIRROR_URL/
(nota: esta es la URL completa), donde
es la suma de comprobación del archivo. Volverá a descargar el paquete desde la ubicación original si:
RUBY_BUILD_SKIP_MIRROR
está habilitado. Puede especificar un espejo personalizado configurando RUBY_BUILD_MIRROR_URL
.
Si un sitio espejo no se ajusta al formato de URL anterior, puede especificar la URL completa configurando RUBY_BUILD_MIRROR_PACKAGE_URL
. Se comporta igual que RUBY_BUILD_MIRROR_URL
excepto que es una URL completa.
El espejo de descarga predeterminado de Ruby-build está patrocinado por Basecamp.
Tanto ruby-build
como rbenv install
aceptan el indicador -k
o --keep
, que le indica a ruby-build que conserve la fuente descargada después de la instalación. Esto puede resultar útil si necesita utilizar gdb
y memprof
con Ruby.
El código fuente se mantendrá en un árbol de directorios paralelo ~/.rbenv/sources
cuando se use --keep
con el comando rbenv install
. Debes especificar la ubicación del código fuente con la variable de entorno RUBY_BUILD_BUILD_PATH
cuando uses --keep
con ruby-build
.
Consulte la wiki de Ruby-build para encontrar soluciones a problemas comunes.
Si no puede encontrar una respuesta en la wiki, abra un problema en el rastreador de problemas. Asegúrese de incluir el registro de compilación completo para errores de compilación.