我通过 sudo gem install ...
安装的 gems 无法执行(我得到一个 command not found
)。
它们似乎安装在 /usr/local/Cellar/
中,这是 Brew 的安装目录(此外,/Library/Ruby/
中的 gems 也不起作用)。我还需要做些什么来使 gems 可执行吗?我在 Mac OS X 10.6 上使用 ZSH,在 Brew 中使用 Ruby v1.8。
编辑:它现在似乎正在工作。我刚出去几个小时,回来再试一次。
最佳答案
Homebrew 软件很好。然而不像brew
和 npm
, gem
不在 /usr/local/bin
中创建别名自动。
解决方案
我采用了一种非常简单的方法(截至 2020 年 3 月):
# Based on "`brew --prefix ruby`/bin"
export PATH=/usr/local/opt/ruby/bin:$PATH
# Based on "`gem environment gemdir`/bin"
export PATH=/usr/local/lib/ruby/gems/3.0.0/bin:$PATH
将此添加到您的 .bashrc
(或 .bash_profile
、 .zshrc
等)。
就是这样!现在,所有 Ruby bin 和已安装的 gem 都可以从您的 shell 中使用!
在旧版本的 Homebrew 中(2017 年之前),Ruby 2 有一个单独的包,名为 ruby20
,您将使用以下代码段代替:
export PATH=/usr/local/opt/ruby20/bin:$PATH
这一行是当时唯一需要的行。但是,在 Ruby 2.1 中,gems 被移到了一个单独的目录中。不再在 /usr/local/opt/ruby/bin
下, 而不是 /usr/local/lib/ruby/gems/2.0.0/bin
(其中“2.0.0”是 Gem 目的的最后一个主要 Ruby 版本)。
工作原理
Homebrew 会跟踪包的安装位置,并为您维护一个指向该位置的符号链接(symbolic link)。
$ brew --prefix ruby
/usr/local/opt/ruby
$ l /usr/local/opt/ruby
/usr/local/opt/ruby@ -> ../Cellar/ruby/2.5.3_1
有效地,添加/usr/local/opt/ruby
至 PATH
与以下相同:
export PATH=/usr/local/Cellar/ruby/2.5.3_1/bin:$PATH
除此之外,这个长版本硬编码了当前安装的 Ruby 版本,并且会在您下次升级 Ruby 时停止工作。
至于 Gem,下面的命令会告诉你 Gem 添加新包的确切目录:
$ gem environment gemdir
/usr/local/lib/ruby/gems/2.7.0
工具
这些工具旨在自动连接 Homebrew 和 Gem:
josh/brew-gem(不再存在)indirect/brewbygems(未维护)
我没有用过这些,但它们可能对你有用。
关于ruby - 安装 Ruby gems 不适用于 Home Brew,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6482738/