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

joh*_*n2x 37 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.

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

Tim*_*hof 125

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
Run Code Online (Sandbox Code Playgroud)

添加到您.bashrc(或.bash_profile,.zshrc等等).

而已!现在所有的Ruby箱和已安装的宝石都可以从你的shell中获得!

在早期版本的Homebrew(2017年之前)中,有一个单独的Ruby 2包被调用ruby20,为此您将使用以下代码段:

export PATH=/usr/local/opt/ruby20/bin:$PATH
Run Code Online (Sandbox Code Playgroud)

这条线是当时唯一需要的线.但是,在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
Run Code Online (Sandbox Code Playgroud)

实际上,加入/usr/local/opt/rubyPATH相同如下:

export PATH=/usr/local/Cellar/ruby/2.5.3_1/bin:$PATH
Run Code Online (Sandbox Code Playgroud)

除此之外,这个长版本硬编码了当前安装的Ruby版本,并在下次升级Ruby时停止工作.

至于Gem,以下命令将告诉您Gem添加新包的确切目录:

$ gem environment gemdir
/usr/local/lib/ruby/gems/2.5.0
Run Code Online (Sandbox Code Playgroud)

工具

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

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


Lri*_*Lri 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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

  • 这应该是公认的答案.OP正在使用自制程序,因此解决特定用例(如果可用)的答案比建议不同的工作流程更合适. (4认同)

Dan*_*ley 10

使用蒂莫的回答中的信息,我得到了这个:

PATH=/usr/local/opt/ruby/bin:$PATH
GEMSDIR=$(gem environment gemdir)/bin
PATH=$GEMSDIR:$PATH
export PATH
Run Code Online (Sandbox Code Playgroud)

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


sam*_*era 5

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

先做:

sudo nano /etc/paths
Run Code Online (Sandbox Code Playgroud)

这将带来纳米编辑器,

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

/usr/local/Cellar/ruby/1.9.3-p194/bin
Run Code Online (Sandbox Code Playgroud)

你的红宝石版本可能会有所不同.

而已.它现在应该检测你的宝石.

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

  • 或者将`PATH =/usr/local/Cellar/ruby​​/1.9.3-p194/bin:$ PATH`添加到.zshrc/.bashrc文件中. (2认同)

Jac*_*hin 5

我喜欢自制啤酒。可能有更好的方法来执行此操作,但是如果运行:

gem environment
Run Code Online (Sandbox Code Playgroud)

这将打印出所有相关路径的完整列表。寻找标记为的那个EXECUTABLE DIRECTORY。那就是您要添加到路径中的那个。以我为例,/usr/local/Cellar/ruby/1.9.3-p362/bin/ruby但是我想它会随着较新版本的Ruby改变。

我使用的/bin/bash是我的shell,但是将其添加到路径中的过程应该差不多就是这个名字。

我使用TextWrangler(通过命令行工具)编辑.profile文件。为此,它只是:

edit ~/.profile
Run Code Online (Sandbox Code Playgroud)

完成后,关闭终端并打开一个新终端,或者运行:

source ~/.profile
Run Code Online (Sandbox Code Playgroud)