La instalación de Ruby 3.0.x funciona bien en MacBooks M1 usando rbenv o asdf . Pero las versiones anteriores como 2.7.x y 2.6.x tienen varios problemas. ¿Cómo los soluciono sin instalar las versiones x86 y ARM de homebrew al mismo tiempo?
Me he enfrentado al mismo problema con Ruby 2.2.2 y muchas gemas dependían de eso. Así que creé un contenedor docker para ubuntu 18.04 y luego instalé Ruby en él. Esta funcionando.
Para que la instalación de las versiones 2.6.x o 2.7.x de Ruby sea exitosa en la MacBook M1 usando rbenv o asdf (asdf se usa en este ejemplo), siga estos pasos:
Actualice a la última versión del rbenv o asdf-ruby utilizando su método de instalación preferido. En mi caso, es asdf-ruby instalado sobre homebrew:
brew upgrade asdf asdf plugin update ruby Vuelva a instalar las versiones actuales de openssl , readline y ruby-build para tener las últimas versiones y configuraciones:
brew uninstall --ignore-dependencies readline brew uninstall --ignore-dependencies openssl brew uninstall --ignore-dependencies ruby-build rm -rf /opt/homebrew/etc/openssl@1.1 brew install -s readline brew install -s openssl brew install -s ruby-build En su configuración de shell .bashrc o .zshrc agregue las siguientes variables ENV:
export RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix openssl@1.1)" export LDFLAGS="-L/opt/homebrew/opt/readline/lib:$LDFLAGS" export CPPFLAGS="-I/opt/homebrew/opt/readline/include:$CPPFLAGS" export PKG_CONFIG_PATH="/opt/homebrew/opt/readline/lib/pkgconfig:$PKG_CONFIG_PATH" export optflags="-Wno-error=implicit-function-declaration" export LDFLAGS="-L/opt/homebrew/opt/libffi/lib:$LDFLAGS" export CPPFLAGS="-I/opt/homebrew/opt/libffi/include:$CPPFLAGS" export PKG_CONFIG_PATH="/opt/homebrew/opt/libffi/lib/pkgconfig:$PKG_CONFIG_PATH" Esto garantizará que se utilicen las bibliotecas y los encabezados adecuados durante las instalaciones e ignorará la implicit-function-declaration que impide que algunas versiones continúen con la instalación. Tenga en cuenta que para otras conchas como el fish la exportación de estas variables será un poco diferente.
Ahora inicie una nueva sesión de terminal y puede intentar instalar las versiones anteriores de Ruby:
asdf install ruby 2.7.2 asdf install ruby 2.6.5Tenga en cuenta que las versiones muy antiguas por debajo de la 2.5 aún pueden tener problemas. La mayoría de los créditos van a este número de Github .
Para Ruby 2.2, cambie la siguiente variable:
export RUBY_CONFIGURE_OPTS=openssl@1.0y haz un
asdf reshim rubyGracias @xjlin0 por esta actualización