ruby-build é uma ferramenta de linha de comando que simplifica a instalação de qualquer versão Ruby do código-fonte em sistemas do tipo Unix.
Ele está disponível como um plugin para rbenv como o comando rbenv install
, ou como um programa independente como o comando ruby-build
.
brew install ruby-build
Atualize com:
brew upgrade ruby-build
git clone https://github.com/rbenv/ruby-build.git " $( rbenv root ) " /plugins/ruby-build
Atualize com:
git -C " $( rbenv root ) " /plugins/ruby-build pull
Primeiro, baixe um tarball em https://github.com/rbenv/ruby-build/releases/latest. Então:
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
Aviso
Ruby-build geralmente não verifica se as dependências do sistema estão presentes antes de baixar e tentar compilar Ruby a partir do código-fonte. Certifique-se de que todas as bibliotecas necessárias, como ferramentas de construção e cabeçalhos de desenvolvimento, já estejam presentes em seu sistema.
Basicamente, o que Ruby-build faz ao instalar uma versão Ruby é isto:
./configure --prefix=/path/to/destination
no código-fonte;make install
para compilar Ruby;Dependendo do contexto, ruby-build faz um pouco mais do que acima: por exemplo, ele tentará vincular Ruby à versão apropriada do OpenSSL, mesmo que isso signifique baixar e compilar o próprio OpenSSL; ele descobrirá e vinculará instâncias instaladas pelo Homebrew de algumas bibliotecas como libyaml e readline, etc.
Para instalar uma versão do Ruby que não é reconhecida pelo ruby-build, você pode especificar o caminho para um arquivo de definição de compilação personalizado no lugar de um número de versão do Ruby.
Confira as definições de compilação padrão como exemplos de como escrever arquivos de definição.
O processo de construção pode ser configurado através das seguintes variáveis de ambiente:
Variável | Função |
---|---|
TMPDIR | Onde os arquivos temporários são armazenados. |
RUBY_BUILD_BUILD_PATH | Onde as fontes são baixadas e construídas. (Padrão: um subdiretório com carimbo de data/hora de TMPDIR ) |
RUBY_BUILD_CACHE_PATH | Onde armazenar em cache os arquivos do pacote baixado. (Padrão: ~/.rbenv/cache se invocado como plugin rbenv) |
RUBY_BUILD_HTTP_CLIENT | Um dos aria2c , curl ou wget para usar no download. (Padrão: primeiro encontrado em PATH) |
RUBY_BUILD_ARIA2_OPTS | Opções adicionais para passar para aria2c para download. |
RUBY_BUILD_CURL_OPTS | Opções adicionais para passar para curl para download. |
RUBY_BUILD_WGET_OPTS | Opções adicionais para passar ao wget para download. |
RUBY_BUILD_MIRROR_URL | Raiz de URL espelhada personalizada. |
RUBY_BUILD_MIRROR_PACKAGE_URL | URL de espelho completo personalizado (por exemplo, http://mirror.example.com/package-1.0.0.tar.gz). |
RUBY_BUILD_SKIP_MIRROR | Ignore o espelho de download e busque todos os arquivos do pacote em seus URLs originais. |
RUBY_BUILD_TARBALL_OVERRIDE | Substitua o URL para buscar o tarball Ruby, opcionalmente seguido por #checksum . |
RUBY_BUILD_DEFINITIONS | Lista de caminhos separados por dois pontos para procurar arquivos de definição de compilação. |
RUBY_BUILD_ROOT | O prefixo do caminho para procurar arquivos de definições de compilação. Obsoleto: use RUBY_BUILD_DEFINITIONS |
RUBY_BUILD_VENDOR_OPENSSL | Construa e venda o openssl mesmo que o sistema openssl seja compatível |
CC | Caminho para o compilador C. |
RUBY_CFLAGS | Opções adicionais CFLAGS ( por exemplo, para substituir -O3 ). |
CONFIGURE_OPTS | Opções adicionais de ./configure . |
MAKE | Comando make personalizado ( por exemplo, gmake ). |
MAKE_OPTS / MAKEOPTS | Opções adicionais make . |
MAKE_INSTALL_OPTS | Opções adicionais make install . |
RUBY_CONFIGURE_OPTS | Opções ./configure adicionais (aplica-se apenas à fonte Ruby). |
RUBY_MAKE_OPTS | Opções adicionais make (aplica-se apenas ao código-fonte Ruby). |
RUBY_MAKE_INSTALL_OPTS | Opções adicionais make install (aplica-se apenas ao código-fonte Ruby). |
NO_COLOR | Desative as cores ANSI na saída. O padrão é usar cores para saída conectada a um terminal. |
CLICOLOR_FORCE | Use cores ANSI na saída mesmo quando não estiver conectado a um terminal. |
Os comandos rbenv install
e ruby-build
suportam o sinalizador -p/--patch
para aplicar um patch ao código-fonte Ruby antes da construção. Os patches são lidos na entrada padrão:
# 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 os arquivos de definição Ruby incluídos no ruby-build incluem somas de verificação para pacotes, o que significa que todos os pacotes baixados externamente são automaticamente verificados quanto à integridade após a busca.
Consulte a próxima seção para obter mais informações sobre como criar somas de verificação.
Para acelerar os downloads, ruby-build busca arquivos de pacotes de um espelho hospedado no Amazon CloudFront. Para se beneficiar disso, os pacotes devem especificar sua soma de verificação:
# example:
install_package " ruby-2.6.5 " " https://ruby-lang.org/ruby-2.6.5.tgz# "
ruby-build tentará primeiro buscar este pacote em $RUBY_BUILD_MIRROR_URL/
(nota: esta é a URL completa), onde
é a soma de verificação do arquivo. O download do pacote do local original voltará a ser feito se:
RUBY_BUILD_SKIP_MIRROR
está habilitado. Você pode especificar um espelho personalizado configurando RUBY_BUILD_MIRROR_URL
.
Se um site espelho não estiver em conformidade com o formato de URL acima, você poderá especificar o URL completo configurando RUBY_BUILD_MIRROR_PACKAGE_URL
. Ele se comporta da mesma forma que RUBY_BUILD_MIRROR_URL
exceto por ser uma URL completa.
O espelho de download padrão do Ruby-build é patrocinado pelo Basecamp.
Tanto ruby-build
quanto rbenv install
aceitam o sinalizador -k
ou --keep
, que diz ao ruby-build para manter a fonte baixada após a instalação. Isso pode ser útil se você precisar usar gdb
e memprof
com Ruby.
O código-fonte será mantido em uma árvore de diretórios paralela ~/.rbenv/sources
ao usar --keep
com o comando rbenv install
. Você deve especificar a localização do código-fonte com a variável de ambiente RUBY_BUILD_BUILD_PATH
ao usar --keep
com ruby-build
.
Por favor, consulte o wiki ruby-build para soluções para problemas comuns.
Se você não conseguir encontrar uma resposta no wiki, abra um problema no rastreador de problemas. Certifique-se de incluir o log de compilação completo para falhas de compilação.