我想ruby在 OS X 上升级,但是当我运行时,brew upgrade ruby我得到了Error: ruby not installed. 当我运行时,which ruby我得到了/usr/bin/ruby,所以我知道我的系统上存在 ruby,但我认为该错误意味着我没有通过 Homebrew 安装它。
我想知道的是:
/usr/bin/ruby1)我是否正确地认为存在但brew upgrade ruby产生的事实Error: ruby not installed意味着已安装Ruby,但是使用Homebrew以外的工具安装的?
2)如果是这样,我怎样才能知道Ruby是如何安装在我的系统上的?
3)我应该如何升级Ruby?
/usr/bin/ruby我是否正确地认为存在但brew upgrade ruby产生的事实Error: ruby not installed意味着已安装 Ruby,但使用 Homebrew 以外的工具安装?
是的。
如果是这样,我怎样才能知道 Ruby 是如何安装在我的系统上的?
它配备了 OS X(目前)。不过,苹果计划弃用这一点,请参阅此处。
我应该如何升级 Ruby?
brew install ruby这是基于意见的,但我会用brew 来管理它,这意味着你也需要它。为了确保您使用brew installed ruby 而不是系统 ruby,您可以添加类似 add 的内容:
export PATH=/usr/local/opt/ruby/bin:/usr/local/lib/ruby/gems/2.6.0/bin:${PATH}
Run Code Online (Sandbox Code Playgroud)
给你的~/.bash_profile. 具体来说,您需要添加 (a) 提供 ruby 及其所有相关可执行文件的路径,以及 (b) 通过安装的可执行文件存在的brew路径。gem
对于 (a),查看 的输出brew info ruby,例如我得到:
...
If you need to have ruby first in your PATH run:
echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.bash_profile
...
Run Code Online (Sandbox Code Playgroud)
因此添加/usr/local/opt/ruby/bin到路径中。如果您进入ls该目录,您不仅会看到ruby可执行文件,还会看到irb、gem、bundle、rake和其他一些内容。因此,当您运行bundle installor时gem install,就会使用它。
对于 (b),您需要知道安装的 gem 可执行文件放在哪里。该gem env命令可以帮助您:
$ gem env | grep 'EXECUTABLE DIRECTORY'
- EXECUTABLE DIRECTORY: /usr/local/lib/ruby/gems/2.6.0/bin
Run Code Online (Sandbox Code Playgroud)
因此,添加了第二条路径,/usr/local/lib/ruby/gems/2.6.0/bin即$PATHmy 中的 my ~/.bash_profile。