Miré esta La instalación de Ruby (2.2.2) falla en macOS Big Sur

Mi macOS es Big Sur y la versión que tengo es 11.2 y fue lo más cercano que pude encontrar al problema que tengo con mi sistema operativo, seguí lo que pude al intentar

CFLAGS="-Wno-error=implicit-function-declaration" rbenv install 2.5.3

Y también

RUBY_CFLAGS=-DUSE_FFI_CLOSURE_ALLOC rbenv install 2.5.3

Esta es la salida en mi Terminal:

Downloading openssl-1.1.1i.tar.gz...
-> https://dqw8nmjcqpjn7.cloudfront.net/e8be6a35fe41d10603c3cc635e93289ed00bf34b79671a3a4de64fcee00d5242
Installing openssl-1.1.1i...
Installed openssl-1.1.1i to /Users/richard/.rbenv/versions/2.5.3

Downloading ruby-2.5.3.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.3.tar.bz2
Installing ruby-2.5.3...

WARNING: ruby-2.5.3 is nearing its end of life.
It only receives critical security updates, no bug fixes.

ruby-build: using readline from homebrew
/opt/homebrew/bin/ruby-build: line 1121: 31528 Killed: 9               "$RUBY_BIN" -e '
    manager = ARGV[0]
    packages = {
      "apt-get" => Hash.new {|h,k| "lib#{k}-dev" }.update(
        "openssl" => "libssl-dev",
        "zlib" => "zlib1g-dev"
      ),
      "yum" => Hash.new {|h,k| "#{k}-devel" }.update(
        "yaml" => "libyaml-devel"
      )
    }

    failed = %w[openssl readline zlib yaml].reject do |lib|
      begin
        require lib
      rescue LoadError
        $stderr.puts "The Ruby #{lib} extension was not compiled."
      end
    end

    if failed.size > 0
      $stderr.puts "ERROR: Ruby install aborted due to missing extensions"
      $stderr.print "Try running `%s install -y %s` to fetch missing dependencies.\n\n" % [
        manager,
        failed.map { |lib| packages.fetch(manager)[lib] }.join(" ")
      ] unless manager.empty?
      $stderr.puts "Configure options used:"
      require "rbconfig"; require "shellwords"
      RbConfig::CONFIG.fetch("configure_args").shellsplit.each { |arg| $stderr.puts "  #{arg}" }
      exit 1
    end
  ' "$(basename "$(type -p yum apt-get | head -1)")" 1>&4 2>&1

BUILD FAILED (macOS 11.2 using ruby-build 20210119)

Inspect or clean up the working tree at /var/folders/rn/c7nmr3x12gg5r8qwsr4ty8hh0000gn/T/ruby-build.20210209143521.94730.xfFT9O
Results logged to /var/folders/rn/c7nmr3x12gg5r8qwsr4ty8hh0000gn/T/ruby-build.20210209143521.94730.log

Last 10 log lines:
installing bundled gems:            /Users/richard/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0 (build_info, cache, doc, extensions, gems, specifications)
                                    power_assert 1.1.1
                                    net-telnet 0.1.1
                                    did_you_mean 1.2.0
                                    xmlrpc 0.3.0
                                    rake 12.3.0
                                    minitest 5.10.3
                                    test-unit 3.2.7
installing rdoc:                    /Users/richard/.rbenv/versions/2.5.3/share/ri/2.5.0/system
installing capi-docs:               /Users/richard/.rbenv/versions/2.5.3/share/doc/ruby

Recibo este error para los dos comandos mencionados anteriormente y ambos dan este mismo resultado. La versión de Ruby tampoco parece importar, también probé la 3.0.0 y obtuve los mismos resultados.

Además, esta es la salida original cuando intento instalar ruby ​​con rbenv install

Downloading openssl-1.1.1i.tar.gz...
-> https://dqw8nmjcqpjn7.cloudfront.net/e8be6a35fe41d10603c3cc635e93289ed00bf34b79671a3a4de64fcee00d5242
Installing openssl-1.1.1i...
Installed openssl-1.1.1i to /Users/richard/.rbenv/versions/2.5.3
Downloading ruby-2.5.3.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.3.tar.bz2
Installing ruby-2.5.3...
WARNING: ruby-2.5.3 is nearing its end of life.
It only receives critical security updates, no bug fixes.
ruby-build: using readline from homebrew
BUILD FAILED (macOS 11.2 using ruby-build 20210119)
Inspect or clean up the working tree at /var/folders/rn/c7nmr3x12gg5r8qwsr4ty8hh0000gn/T/ruby-build.20210209143107.60561.YqaRpk
Results logged to /var/folders/rn/c7nmr3x12gg5r8qwsr4ty8hh0000gn/T/ruby-build.20210209143107.60561.log
Last 10 log lines:
compiling ../.././ext/psych/yaml/reader.c
compiling ../.././ext/psych/yaml/emitter.c
compiling ../.././ext/psych/yaml/parser.c
linking shared-object json/ext/generator.bundle
5 warnings generated.
linking shared-object date_core.bundle
linking shared-object zlib.bundle
1 warning generated.
linking shared-object psych.bundle
make: *** [build-ext] Error 2

La versión de xcode-select es 2384.
La versión Homebrew es 3.0.0 y brew doctor dice que estoy listo para preparar.

Mi archivo .zshrc también contiene esta línea eval "$(rbenv init -)"

En este punto, no estoy seguro de a dónde más acudir 🤷 Si hay algún dato específico que desee ver en el archivo de registro, avíseme de dónde, el archivo de registro es demasiado grande para compartirlo aquí. ¿Por qué sucede esto y cómo puedo solucionarlo? 🤦‍♂️

2
Richard 10 feb. 2021 a las 02:17

1 respuesta

La mejor respuesta

Esta no es una solución oficial . Estoy seguro de que los desarrolladores de rbenv están trabajando en una solución real, pero esta solución debería ayudar a otros que están configurando sus entornos ruby ​​en los nuevos chips M1 para Mac.

  • Asegúrese de que su terminal esté usando Rosetta. Puede encontrar cómo hacerlo usando Google.

  • Desinstale su rbenv actual siguiendo estas instrucciones Eliminación de rbenv. Asegúrese de eliminar también todas las versiones descargadas de ruby ​​si tiene alguna (menos la predeterminada del sistema) ubicada en /Users/<your user name>/.rbenv/versions/.

  • Desinstale la versión ARM de Homebrew con: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall.sh)"

  • Instale la versión x86_64 de Homebrew con: arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

  • Si ejecuta brew install rbenv debería producir un resultado que diga "Error: ¡No se puede instalar en Homebrew en el procesador ARM con el prefijo predeterminado de Intel (/ usr / local)!". Se esperaba esto.

  • Quieres decirle a brew que instale la arquitectura anterior x86_64 arch -x86_64 brew install rbenv

  • Luego, finalmente instale la versión que desea usando arch -x86_64 rbenv install x.x.x (x = algún número, es decir, 2.7.2)

A partir de ahí, solo necesita recordar decirle a brew arch -x86_64 cuando instale otras versiones de Ruby.

Una vez que llegue una solución real, podrá volver a la arquitectura más nueva y no tendrá que usar el argumento arch. Tampoco tienes que hacer esto todo el tiempo con brew, solo rbenv.

4
eveevans 23 feb. 2021 a las 19:38