8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

在 M1 MacBook 上安装旧版本的 Ruby?

bartolo-otrit 2月前

102 0

使用 rbenv 或 asdf 在 M1 MacBook 上安装 Ruby 3.0.x 效果很好。但 2.7.x 和 2.6.x 等旧版本存在各种问题。如何修复这些问题,而无需同时安装 x86 和 ARM 版本...

rbenv 在 M1 MacBook 上安装 Ruby 3.0.x 效果很好 asdf 。但 2.7.x 和 2.6.x 等旧版本存在各种问题。如何修复这些问题,而不必 homebrew 同时安装 x86 和 ARM 版本?

帖子版权声明 1、本帖标题:在 M1 MacBook 上安装旧版本的 Ruby?
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由bartolo-otrit在本站《macos》版块原创发布, 转载请注明出处!
最新回复 (0)
  • Tang 2月前 0 只看Ta
    引用 2

    为了在 M1 MacBook 上使用 rbenv asdf (此示例中使用 asdf) 请按照以下步骤操作:

    升级到最新版本 rbenv asdf-ruby 插件。就我而言,它是 asdf-ruby 通过 Homebrew 安装的:

    brew upgrade asdf
    asdf plugin update ruby
    

    重新安装当前版本 openssl , readline ruby-build 获得最新版本和配置:

    brew uninstall --ignore-dependencies readline
    brew uninstall --ignore-dependencies openssl
    brew uninstall --ignore-dependencies ruby-build
    rm -rf /opt/homebrew/etc/[email protected]
    brew install -s readline
    brew install -s openssl
    brew install -s ruby-build
    

    在您的 shell 配置中 .bashrc .zshrc 添加以下 ENV 变量:

    export RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix [email protected])"
    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"
    

    这将确保在安装过程中使用正确的库和标头,并且它将忽略 implicit-function-declaration 阻止某些版本继续安装的问题。请注意,对于其他一些 shell, fish 这些变量的导出会略有不同。

    现在启动一个新的终端会话并尝试安装较旧的 ruby​​ 版本:

    asdf install ruby 2.7.2
    asdf install ruby 2.6.5
    

    请注意,低于 2.5 的旧版本可能仍存在问题。大部分功劳都归功于 这个 Github 问题 .

    更新

    对于 Ruby 2.2,请更改以下变量:

    export [email protected]
    

    并做一个

    asdf reshim ruby
    

    感谢@xjlin0 的更新

  • 使用这些说明卸载并重新安装 OpenSSL 会导致我的 ruby​​gems 和 npm 注册功能崩溃,并且我必须手动安装 CA 证书。

  • 对于 2.2 github.com/rbenv/ruby-build/issues/1742#issuecomment-835790760 另外将 RUBY_CONFIGURE_OPTS 设置为 [email protected] 和 asdf reshim ruby

  • 这在 BUILD FAILED 上不起作用(macOS 12.6 使用 ruby​​-build 20220910.1)

  • 这个简单的命令帮助了我

    RUBY_CFLAGS="-w" rbenv install 2.5.5
    
  • 哇哦,这个从 1 月 23 日起真的有效了,不像已接受的版本,它也需要做更多的工作

  • 在 M2 Pro、Ventura 13.4.1 上遇到错误

    Error running '__rvm_make -j12',
    please read /Users/mkrasikov/.rvm/log/1688468004_ruby-2.7.4/make.log
    There has been an error while running make. Halting the installation.
    

    解决:

    brew install rbenv
    RUBY_CFLAGS="-w" rbenv install 2.7.4
    
  • 对于 M1 Macbook Pro 2021 上带有 frum 的 OSX v12.6.1,我在使用 brew 安装 ruby​​-build 后在 ~/.bash_profile 中使用以下导出成功构建了 ruby​​ 2.6.5

    export optflags="-Wno-error=implicit-function-declaration"
    export RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix openssl@3)"
    export LDFLAGS="-L/opt/homebrew/opt/readline/lib -L/opt/homebrew/opt/openssl@3/lib"
    export CPPFLAGS="-I/opt/homebrew/opt/readline/include -I/opt/homebrew/opt/openssl@3/include"
    export PKG_CONFIG_PATH="/opt/homebrew/opt/readline/lib/pkgconfig /opt/homebrew/opt/openssl@3/pkgconfig"
    
  • 我在 Ruby 2.2.2 中遇到了同样的问题,许多 gem 都依赖于它。所以我为 ubuntu 18.04 创建了一个 docker 容器,然后在其上安装了 ruby​​。它正在运行。

  • 是的,我更希望我的开发设置也适用于所有项目。但我确实在本地安装了我使用的语言,以便编辑器使用 lint 和格式化。在容器内部使用 lint/format 是可行的,但对于许多编辑器来说,体验仍然不是很好,而且设置起来也不容易。这就是为什么我只在本地安装 Ruby/Elixir 版本,而我使用的所有其他服务都严格来自 Docker,比如 Posgres、Redis 等。

  • 引用 12

    ruby​​ 2.7.10 及更高版本 中得到解决 。如果您使用版本管理器(例如 asdf ,则该问题应该已在完整 2.7.x 版本范围(而不仅仅是 2.7.10)中得到解决。

    根本问题是 Xcode 14 中引入的不兼容性 。一种解决方案是降级到 Xcode 13,这样您就可以构建 ruby​​。对于许多用户来说,这不是一条可行的路径,因此另一种选择是获取适合您的架构的已构建的 ruby​​ 版本,这可以通过从以下位置下载来实现 homebrew .

    Homebrew 有一个适用于 [email protected] ,可在 MacOS M1 (arm) 和较旧的基于英特尔的型号 (x86) 上运行。您可以安装它, brew install [email protected] 它将安装 ruby​​ 2.6.10。如果这就是您所需要的,您可以在这里停止。

    如果您想要使用 ruby​​ 2.6 和版本管理器(例如) asdf ,您可以执行以下操作:

    brew install [email protected]
    ln -s $(brew --prefix [email protected]) ~/.asdf/installs/ruby/2.6.10
    asdf reshim ruby 2.6.10
    
  • 感谢@orthodox

    使用 rosetta 我在 arm64 下安装了 brew。所以我卸载了它,然后使用 x86 重新安装,然后工作了

    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    echo 'eval "$(/usr/local/bin/brew shellenv)"' >> /Users/mberrueta/.zprofile
    eval "$(/usr/local/bin/brew shellenv)"
    
    arch -x86_64 brew uninstall --ignore-dependencies   asdf
    arch -x86_64 brew install asdf
    arch -x86_64 brew upgrade asdf
    asdf plugin add ruby https://github.com/asdf-vm/asdf-ruby.git
    asdf plugin update ruby
    
    
    arch -x86_64 brew uninstall --ignore-dependencies --force openssl
    arch -x86_64 brew uninstall --ignore-dependencies  --force ruby-build
    rm -rf /opt/homebrew/etc/[email protected]
    arch -x86_64 brew install -s readline
    arch -x86_64 brew install -s openssl
    arch -x86_64 brew install -s ruby-build
    
    
    
    export RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix [email protected])"
    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"
    
    asdf install ruby 2.6.9
    
返回
作者最近主题: