强制macos系统降级ruby系统

Posted

技术标签:

【中文标题】强制macos系统降级ruby系统【英文标题】:force macos system to downgrade ruby system 【发布时间】:2020-08-06 02:35:40 【问题描述】:

我需要使用 Ruby 2.2.2,但我的 macOS 附带 2.6.3。

我以 root 而非 root 身份尝试过的命令:

sudo brew install ruby@2.2.2brew install ruby@2.2.2 导致错误 sudo gem update --system 2.2.2gem update --system 2.2.2 导致程序自行中止

rvm 没有安装。

如何安装 Ruby 2.2.2?

编辑:

遵循以下建议

install RVM with \curl -sSL https://get.rvm.io | bash -s stable
Restart your shell
Install Ruby with rvm install 2.2.2
Verify you are using the correct version of Ruby with ruby -v

然后我得到了这个错误:

CL-CJAKOB-XMD6R:~ cjakob$ rvm install 2.2.2
Searching for binary rubies, this might take some time.
No binary rubies available for: osx/10.15/x86_64/ruby-2.2.2.
Continuing with compilation. Please read 'rvm help mount' to get more information on binary rubies.
Checking requirements for osx.
Installing requirements for osx.
Updating system......
Installing required packages: automake, libtool, coreutils, libyaml, libksba, zlib, openssl..............
==> Upgrading 2 outdated packages:
pkg-config 0.29.2 -> 0.29.2_3
readline 8.0.1 -> 8.0.4
==> Upgrading readline 8.0.1 -> 8.0.4 
==> Downloading https://homebrew.bintray.com/bottles/readline-8.0.4.catalina.bot
==> Downloading from https://akamai.bintray.com/6a/6ae1c8e7c783f32bd22c6085caa4d
######################################################################## 100.0%
==> Pouring readline-8.0.4.catalina.bottle.tar.gz
==> Caveats
readline is keg-only, which means it was not symlinked into /usr/local,
because macOS provides BSD libedit.

For compilers to find readline you may need to set:
  export LDFLAGS="-L/usr/local/opt/readline/lib"
  export CPPFLAGS="-I/usr/local/opt/readline/include"

For pkg-config to find readline you may need to set:
  export PKG_CONFIG_PATH="/usr/local/opt/readline/lib/pkgconfig"

==> Summary
????  /usr/local/Cellar/readline/8.0.4: 48 files, 1.5MB
Removing: /usr/local/Cellar/readline/8.0.1... (48 files, 1.5MB)
==> Upgrading pkg-config 0.29.2 -> 0.29.2_3 
==> Downloading https://homebrew.bintray.com/bottles/pkg-config-0.29.2_3.catalin
==> Downloading from https://akamai.bintray.com/80/80f141e695f73bd058fd82e9f539d
######################################################################## 100.0%
==> Pouring pkg-config-0.29.2_3.catalina.bottle.tar.gz
????  /usr/local/Cellar/pkg-config/0.29.2_3: 11 files, 623.7KB
Removing: /usr/local/Cellar/pkg-config/0.29.2... (11 files, 623KB)
==> Checking for dependents of upgraded formulae...
==> Upgrading 2 dependents:
ruby-build 20200115 -> 20200401, ruby-build 20200115 -> 20200401
==> Upgrading ruby-build 20200115 -> 20200401 
==> Downloading https://github.com/rbenv/ruby-build/archive/v20200401.tar.gz
==> Downloading from https://codeload.github.com/rbenv/ruby-build/tar.gz/v202004
######################################################################## 100.0%
==> ./install.sh
==> Caveats
ruby-build installs a non-Homebrew OpenSSL for each Ruby version installed and these are never upgraded.

To link Rubies to Homebrew's OpenSSL 1.1 (which is upgraded) add the following
to your ~/.bash_profile:
  export RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix openssl@1.1)"

Note: this may interfere with building old versions of Ruby (e.g <2.4) that use
OpenSSL <1.1.
==> Summary
????  /usr/local/Cellar/ruby-build/20200401: 495 files, 245.2KB, built in 4 seconds
Removing: /usr/local/Cellar/ruby-build/20200115... (470 files, 234.4KB)
==> Checking for dependents of upgraded formulae...
Error: No such file or directory - /usr/local/Cellar/ruby-build/20200115
Requirements installation failed with status: 1.
CL-CJAKOB-XMD6R:~ cjakob$ 

我将如何从这里前进?

【问题讨论】:

为什么你需要使用 2.2.2(回答很重要,否则你可能会处理 XY 问题——如果你不知道什么是 xy 问题,请用谷歌搜索)。你的系统上可以有多个版本的 ruby​​:你需要一个 ruby​​ 版本管理器来帮助你。你可以得到 RVM 或者你可以得到 rbenv。我会推荐后者,因为我不喜欢处理 RVM 中需要的 gemset。但 rvm 对您来说仍然是一个可行的选择。所以你可以使用你需要的任何 ruby​​ 版本。现在回答您的问题:您可以尝试安装 RVM。 RVM 中需要的 gemsets 我已经专业和个人使用 RVM 超过 7 年,并且只处理过一次 gemsets。 按照说明安装了 rvm,但它导致了另一个错误,我已将其添加到我的问题中 重复您的rvm install 2.2.2 命令,看看它现在是否成功完成。如果没有,请运行brew doctorbrew upgrade,然后重试。 【参考方案1】:

请勿尝试在 macOS 上修改、降级、升级、删除或使用 Ruby 的内置版本。相反,请使用 Ruby 版本管理器来安装您需要的特定 Ruby 版本:

使用\curl -sSL https://get.rvm.io | bash -s stable 安装 RVM 重启你的shell 使用rvm install 2.2.2 安装 Ruby 通过ruby -v 验证您使用的是正确版本的 Ruby

然后重试您的操作。

有关系统 Ruby 的更多信息,请访问https://dontusesystemruby.com/。

【讨论】:

哎呀看起来我还没有走出困境 我必须为 ruby -v 添加 rvm use 2.2.2 --default 才能显示正确的内容。 更多信息请访问Don't use system Ruby。 你好,另一个mh,它是为我运行的,但我需要 2.6.0 版本并且正在工作!谢谢 @RicardoLuizPereira rvm install 2.6.0

以上是关于强制macos系统降级ruby系统的主要内容,如果未能解决你的问题,请参考以下文章

Mac-MacOS降级(Mac系统降级,系统回退)

MacOS系统降级

如何给你的 macOS 系统降级

ipadmini2降级10.3.3是啥版本

如何在 Mac OS 上使用 ruby​​ 设置文件创建时间?

Mac OS 下Ruby gem的一些坑