macOS - 安装 ruby

文章目录

    • 关于 ruby
    • macOS 安装 Ruby
      • 关于 keg-only
    • 参考资料


关于 ruby

  • ruby 官网:https://www.ruby-lang.org/zh_cn/
    支持多种语言,包括简体中文
  • ruby 官方安装:https://www.ruby-lang.org/en/documentation/installation/#homebrew

macOS 安装 Ruby

官方提示为:

$ brew install ruby

  • 关于brew,可参考:macOS 工具 - Homebrew
    https://blog.csdn.net/lovechris00/article/details/121613647
  • brew 安装的 ruby,位于 /usr/local/Cellar/ruby,没有软连接到 /usr/local/bin 下。需要参考安装的打印信息进行设置。

  • 默认情况下,gem安装的二进制文件在 /usr/local/lib/ruby/gems/3.1.0/bin 中,你可能需要将这个地址添加到环境变量(PATH)。
  • ruby 是 keg-only,意味着它不能被软连接到 /usr/local,因为macOS默认提供了 ruby。如果软连接可能会出现各种问题。

如果你想添加环境变量,可以运行以下命令:

echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> /Users/xx/.bash_profile

对于要查找ruby的编译器,您可能需要设置:

export LDFLAGS="-L/usr/local/opt/ruby/lib"
export CPPFLAGS="-I/usr/local/opt/ruby/include"

要想让pkg config找到ruby,您可能需要设置:

export PKG_CONFIG_PATH="/usr/local/opt/ruby/lib/pkgconfig"

安装时有如下提示


By default, binaries installed by gem will be placed into:
  /usr/local/lib/ruby/gems/3.1.0/bin

You may want to add this to your PATH.

ruby is keg-only, which means it was not symlinked into /usr/local,
because macOS already provides this software and installing another version in
parallel can cause all kinds of trouble.

If you need to have ruby first in your PATH, run:
  echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> /Users/xx/.bash_profile

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

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

关于 keg-only

转自:https://zhuanlan.zhihu.com/p/196667957

首先, brew 本身是酿造、酿酒的意思,会用这个字的原因是 homebrew 的安装方式为下载 source code 回来做编译,由于是在自己电脑做 local compile 编译套件,所以这个工具叫做 homebrew 自家酿酒。

酿酒需要有配方 formula,当你需要安装套件时,流程就是下 brew 命令去根据配方 formula, 酿造出一桶( keg)酒来。所以 keg 指的是整个编译完成的套件资料夹。

再来,放置套件的位置在 /usr/local/Cellar/Cellar 就是地窖,一桶一桶酿好的酒当然要存放在地窖里囖!所以编译安成的套件资料夹 keg 预设目录在 /usr/local/Cellar/

最后回到「keg-only」整个词,字面上意思现在就很清除,表示这个套件只会存放在桶子里,不会跑出桶子外。实际上的行为是 brew 不会帮你做 symlink/usr/local,避免你的原生系统内还有一套 readline 而打架,所以提示消息说 readline 套件是 keg-only

至此,希望你通过上面的解释了解 Homebrew 相关有趣的命名~


参考资料

  • 有趣的Homebrew 命名及 keg-only 的意思
    https://zhuanlan.zhihu.com/p/196667957
  • macOS 工具 - Homebrew
    https://blog.csdn.net/lovechris00/article/details/121613647
  • What is a keg, PATH, and symlink
    https://github.com/orgs/Homebrew/discussions/239

2023-06-10(六)

你可能感兴趣的:(软件工具/使用技巧,macos,ruby,安装,brew,keg-only)