ruby - 安装 Ruby gems 不适用于 Home Brew

标签 ruby macos bash gem homebrew

我通过 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 软件很好。然而不像brewnpm , 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/rubyPATH与以下相同:

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:

我没有用过这些,但它们可能对你有用。

关于ruby - 安装 Ruby gems 不适用于 Home Brew,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6482738/

相关文章:

ruby - Capybara + Cucumber + Selenium Driver 的 Authlogic 不工作

ruby-on-rails - acts_as_taggable_on Gem 不适用于 Rails 5

mysql - 无法通过消息登录 docker phpmyadmin #2002

c++ - "The C++ compiler "/usr/bin/c++ "is not able to compile a simple test program."尝试安装 OpenCV 时

bash - 在后台运行脚本?

ruby-on-rails - 具有未知键和强参数的 Rails 哈希

ruby - 在 .NET 的 Ruby 中使用 3DES 解密十六进制字符串

objective-c - 从其他类设置 NSStatusBar 标题?

bash - 如何在 bash 中的 if 条件下比较两个字符串

linux - 如何使用 xargs max-procs 实用程序并行多次调用 while 语句