开发环境设置失败,无法进行 bundle install

大家好,我想通过阅读 Rails 的代码来学习 Rails 开发,并尝试为它做出贡献。

我刚刚按照这个链接在 Macbook Air M1 上设置了我的开发环境:

在 bundle install 步骤中,我遇到了一个关于 openssl 的错误,我不知道如何解决,有人能帮帮我吗?
这是错误消息:

...
Installing actionmailer 6.1.4.1
Installing sprockets-rails 3.4.2
Installing omniauth-github 1.4.0
Installing railties 6.1.4.1
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    current directory: /Users/dongxu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/openssl-2.2.1/ext/openssl
/Users/dongxu/.rbenv/versions/2.7.3/bin/ruby -I /Users/dongxu/.rbenv/versions/2.7.3/lib/ruby/site_ruby/2.7.0 -r
./siteconf20220110-88454-17mhnii.rb extconf.rb
checking for t_open() in -lnsl... no
checking for socket() in -lsocket... no
checking for openssl/ssl.h... yes
checking for LIBRESSL_VERSION_NUMBER in openssl/opensslv.h... no
checking for OpenSSL version >= 1.0.1 and < 3.0.0... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

Provided configuration options:
	--with-opt-dir
	--without-opt-dir
	--with-opt-include
	--without-opt-include=${opt-dir}/include
	--with-opt-lib
	--without-opt-lib=${opt-dir}/lib
	--with-make-prog
	--without-make-prog
	--srcdir=.
	--curdir
	--ruby=/Users/dongxu/.rbenv/versions/2.7.3/bin/$(RUBY_BASE_NAME)
	--with-openssl-dir
	--with-openssl-include
	--without-openssl-include=${openssl-dir}/include
	--with-openssl-lib
	--without-openssl-lib=${openssl-dir}/lib
	--with-kerberos-dir
	--without-kerberos-dir
	--with-kerberos-include
	--without-kerberos-include=${kerberos-dir}/include
	--with-kerberos-lib
	--without-kerberos-lib=${kerberos-dir}/lib
	--with-debug
	--without-debug
	--enable-debug
	--disable-debug
	--with-nsl-dir
	--without-nsl-dir
	--with-nsl-include
	--without-nsl-include=${nsl-dir}/include
	--with-nsl-lib
	--without-nsl-lib=${nsl-dir}/lib
	--with-nsllib
	--without-nsllib
	--with-socket-dir
	--without-socket-dir
	--with-socket-include
	--without-socket-include=${socket-dir}/include
	--with-socket-lib
	--without-socket-lib=${socket-dir}/lib
	--with-socketlib
	--without-socketlib
	--with-openssl-config
	--without-openssl-config
	--with-pkg-config
	--without-pkg-config
extconf.rb:113:in `<main>': OpenSSL >= 1.0.1, < 3.0.0 or LibreSSL >= 2.5.0 is required (RuntimeError)

To see why this extension failed to compile, please check the mkmf.log which can be found here:

  /Users/dongxu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/extensions/arm64-darwin-21/2.7.0/openssl-2.2.1/mkmf.log
  
extconf failed, exit code 1

Gem files will remain installed in /Users/dongxu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/openssl-2.2.1 for inspection.
Results logged to /Users/dongxu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/extensions/arm64-darwin-21/2.7.0/openssl-2.2.1/gem_make.out

  /Users/dongxu/.rbenv/versions/2.7.3/lib/ruby/site_ruby/2.7.0/rubygems/ext/builder.rb:95:in `run'
  /Users/dongxu/.rbenv/versions/2.7.3/lib/ruby/site_ruby/2.7.0/rubygems/ext/ext_conf_builder.rb:47:in `block in build'
  /Users/dongxu/.rbenv/versions/2.7.3/lib/ruby/2.7.0/tempfile.rb:291:in `open'
  /Users/dongxu/.rbenv/versions/2.7.3/lib/ruby/site_ruby/2.7.0/rubygems/ext/ext_conf_builder.rb:26:in `build'
  /Users/dongxu/.rbenv/versions/2.7.3/lib/ruby/site_ruby/2.7.0/rubygems/ext/builder.rb:161:in `build_extension'
  /Users/dongxu/.rbenv/versions/2.7.3/lib/ruby/site_ruby/2.7.0/rubygems/ext/builder.rb:195:in `block in build_extensions'
  /Users/dongxu/.rbenv/versions/2.7.3/lib/ruby/site_ruby/2.7.0/rubygems/ext/builder.rb:192:in `each'
  /Users/dongxu/.rbenv/versions/2.7.3/lib/ruby/site_ruby/2.7.0/rubygems/ext/builder.rb:192:in `build_extensions'
  /Users/dongxu/.rbenv/versions/2.7.3/lib/ruby/site_ruby/2.7.0/rubygems/installer.rb:847:in `build_extensions'
/Users/dongxu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/bundler-2.2.26/lib/bundler/rubygems_gem_installer.rb:66:in
`build_extensions'
  /Users/dongxu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/bundler-2.2.26/lib/bundler/rubygems_gem_installer.rb:26:in `install'
  /Users/dongxu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/bundler-2.2.26/lib/bundler/source/rubygems.rb:192:in `install'
  /Users/dongxu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/bundler-2.2.26/lib/bundler/installer/gem_installer.rb:54:in `install'
/Users/dongxu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/bundler-2.2.26/lib/bundler/installer/gem_installer.rb:16:in
`install_from_spec'
/Users/dongxu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/bundler-2.2.26/lib/bundler/installer/parallel_installer.rb:186:in
`do_install'
/Users/dongxu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/bundler-2.2.26/lib/bundler/installer/parallel_installer.rb:177:in `block
in worker_pool'
  /Users/dongxu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/bundler-2.2.26/lib/bundler/worker.rb:62:in `apply_func'
  /Users/dongxu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/bundler-2.2.26/lib/bundler/worker.rb:57:in `block in process_queue'
  /Users/dongxu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/bundler-2.2.26/lib/bundler/worker.rb:54:in `loop'
  /Users/dongxu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/bundler-2.2.26/lib/bundler/worker.rb:54:in `process_queue'
/Users/dongxu/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/bundler-2.2.26/lib/bundler/worker.rb:91:in `block (2 levels) in
create_threads'

An error occurred while installing openssl (2.2.1), and Bundler cannot continue.

In Gemfile:
  cose was resolved to 1.2.0, which depends on
    openssl-signature_algorithm was resolved to 1.1.1, which depends on
      openssl

我在新的 M1 MacBook 上遇到了这个问题。这个 Stack Overflow 帖子 提供了解决方案。后来我需要这个帖子 来运行 bundle install,因为有一个 Postgres 问题。希望这对你有帮助!

如何切换全局 Ruby 版本?我尝试了 asdf global ruby 3.1.2,但在 Mac m1 上仍然停留在 ruby 2.5.0p0