安装不与Home Brew一起使用的Ruby gem

时间:2011-06-26 07:38:03

标签: ruby macos bash gem homebrew

我通过sudo gem install ...安装的宝石无法执行(我得到command not found)。 它们似乎安装在/usr/local/Cellar/中,这是Brew的安装目录(同样,/Library/Ruby/中的宝石也不起作用)。还有什么我需要做的才能使宝石可执行吗?我在Mac OS X 10.6上使用ZSH,在Brew中使用Ruby v1.8。

编辑:现在似乎正在运作。我刚出去几个小时又回来再试一次。

8 个答案:

答案 0 :(得分:117)

Homebrew很好。但与brewnpm不同,gem不会自动在/usr/local/bin中生成别名。

解决方案

我采用了一种非常简单的方法(截至2019年3月):

export PATH=/usr/local/opt/ruby/bin:$PATH
export PATH=/usr/local/lib/ruby/gems/2.5.0/bin:$PATH

将此添加到您的.bashrc(或.bash_profile.zshrc等)。

就是这样!现在所有的Ruby箱和已安装的宝石都可以从你的shell获得!

在早期版本的Homebrew中(2017年之前),Ruby 2有一个名为ruby20的单独软件包,您可以使用以下代码段代替:

export PATH=/usr/local/opt/ruby20/bin:$PATH

这条线是当时唯一需要的线。但是,在Ruby 2.1中,宝石被移动到一个单独的目录中。不再是/usr/local/opt/ruby/bin,而是/usr/local/lib/ruby/gems/2.0.0/bin(其中“2.0.0”是Gem用途的最后一个主要Ruby版本。)

如何运作

Homebrew会跟踪它安装包的位置,并为您指定一个符号链接。

$ 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.5.0

工具

这些工具旨在自动在Homebrew和Gem之间架起桥梁:

我没有使用这些,但它们可能适合你。

答案 1 :(得分:35)

使用RVM而不是打扰Homebrew会更好。

修改

更好的是,使用rbenv

致匿名下载者

  • 如果你因为我推荐 RVM 而不是 rbenv 而贬低,请注意,当我写这个答案时,rbenv可能只能在Sam Stephenson的硬盘驱动器(或在他的头脑中),而RVM是标准。

  • 如果你是一个自制的粉丝,你生气因为我用你最喜欢的工具,请知道我经常自己使用它并认为它是一个很棒的工具。当时,使用专用工具只是最好的选择。也许,两年后,情况有所改善。我不知道。我所知道的是,我的回答仅限于Ruby。

答案 2 :(得分:21)

brew unlink ruby; brew link ruby可能会将符号链接添加到/usr/local/bin/

$ which sass
$ brew unlink ruby; brew link ruby
Unlinking /usr/local/Cellar/ruby/2.0.0-p0... 20 links removed
Linking /usr/local/Cellar/ruby/2.0.0-p0... 31 symlinks created
$ which sass
/usr/local/bin/sass

brew --prefix ruby仍然很慢,但您也可以在路径中添加/usr/local/opt/ruby/bin

$ time brew --prefix ruby
/usr/local/opt/ruby
0.216
$ time brew --prefix ruby
/usr/local/opt/ruby
0.076
$ stat -f%Y /usr/local/opt/ruby
../Cellar/ruby/2.0.0-p0

答案 3 :(得分:5)

你也可以使用自制软件安装ruby。你只是缺少自制宝石的功能。

首先:

sudo nano /etc/paths

这将带来纳米编辑,

然后将以下内容添加到路径中:

/usr/local/Cellar/ruby/1.9.3-p194/bin

您的红宝石版本可能会有所不同。

多数民众赞成。它现在应该检测你的宝石。

哦,顺便说一下,你需要按Ctrl + X> y>按ENTER键保存文件。

答案 4 :(得分:5)

我喜欢家酿。可能有更好的方法,但如果你运行:

gem environment

这将打印出所有相关路径的精美列表。寻找标有EXECUTABLE DIRECTORY的那个。那是你要添加到路径中的那个。在我的情况下,/usr/local/Cellar/ruby/1.9.3-p362/bin/ruby,但我认为它会随着更新版本的Ruby而改变。

我正在使用/bin/bash作为我的shell,但将其添加到路径中的过程应该就是名称。

我使用TextWrangler(通过命令行工具)编辑我的.profile文件。要做到这一点,它只是:

edit ~/.profile

完成后,要么关闭终端并打开新终端,要么运行:

source ~/.profile

答案 5 :(得分:4)

而不是使用=> $(cd $(which gem)/..; pwd)

您可以使用此代替=> $(brew --prefix ruby)/bin

答案 6 :(得分:2)

我认为这有点发展。

添加

export PATH=/usr/local/opt/ruby/bin:$PATH

到.bashrc(或.bash_profile,.zshrc / .bashrc,.. - 无论你使用什么)。

如果您对ruby本身有疑问

brew unlink ruby
brew link ruby

答案 7 :(得分:2)

使用Timo的answer中的信息,我知道了这一点:

PATH=/usr/local/opt/ruby/bin:$PATH
GEMSDIR=$(gem environment gemdir)/bin
PATH=$GEMSDIR:$PATH
export PATH

适用于Homebrew,适用于单独的gems目录,并且不对Ruby版本进行硬编码。