简短回答:
通过自制程序安装 ruby 后,只需执行以下操作:
brew link --overwrite ruby
然后重新启动或重新打开您的终端
长答案
所以我使用 homebrew 正常安装了 ruby
brew install ruby
安装得很好,但它仍然使用系统默认的 ruby。 我通过这样做验证了:
which ruby
#/usr/bin/ruby
因此,根据 Matthew Rudy 的建议,我检查了 /etc/paths 的顺序,一切都很好。
然后我决定这样做:
which -a ruby
#/usr/bin/ruby
#usr/local/bin/ruby
所以没有任何东西被破坏。 尝试使用homebrew方法再次重新安装ruby,然后我找到了它。
自制提到:
Warning: ruby-2.3.1 already installed, it's just not linked
所以必须做:
brew link --overwrite ruby
我建议你看看rvm。 然后您可以使用
rvm use 1.9.3 --default
将其设置为默认值
但是如果您对自制软件安装感到满意。
然后只需更改目录中的优先级即可
PATH
这是我的/etc/paths
# homebrews should always take precedence
/usr/local/bin
# the default stack
/usr/bin
/bin
/usr/sbin
/sbin
这通常对于 homebrew 来说很重要,否则系统版本的 git、ruby、pg_admin 等都将被使用,而不是 brew 版本。
如果你说
which -a ruby
你会看到所有已安装的红宝石,以及PATH
中的优先级
例如。
$ which -a ruby
/Users/matthew/.rvm/rubies/ruby-1.9.3-p0/bin/ruby
/Users/matthew/.rvm/bin/ruby
/usr/bin/ruby
/etc/paths
相反,您需要检查
.profile
、.bashrc
或 .bash_login
中的哪一个正在加载到您的 shell 中,然后将 /usr/local/bin
添加到您的路径中。
对于我来说,我只有一个
.profile
。如果您的主目录中不存在这些文件,您可以创建该文件。
# homebrews should always take precedence
export PATH=/usr/local/bin:$PATH
如果您想使用自制程序安装1.9.3,您可以按照以下步骤操作:
$ brew update
$ brew install rbenv
$ brew install ruby-build
安装 rbenv 和 ruby-build 后,您可以运行以下命令来安装 Ruby 1.9.3。
$ rbenv install 1.9.3-p125
现在如果您想默认使用1.9.3,您可以运行以下命令:
$ rbenv global 1.9.3-p125
Ruby 由 Homebrew 在
/usr/local/opt/ruby
安装。所以,我们需要将此路径添加到 bash
或 Zsh
。
# Type this to find out which shell you're using (e.g., bash, Zsh)
echo $SHELL
# If you're using Bash (e.g., echo $SHELL returns /bin/bash)
echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.bash_profile
# If you're using Zsh
echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.zshrc
然后,获取文件
# E.g., if you're using bash
source ~/.bash_profile
最后验证ruby的版本
ruby -v
我也有类似的情况。我使用 Homebrew 安装了 ruby。
which -a ruby
给了我以下输出:
#usr/local/bin/ruby
#/usr/bin/ruby
这意味着应该使用新安装的版本,但是
ruby --version
仍然返回旧的系统版本。
我退出终端(Cmd+Q),重新启动后
ruby --version
返回了正确的版本。因此,请确保在安装后重新启动终端,然后再尝试任何其他(可能不必要的)修复。
brew install ruby
这将安装最新版本的 ruby,现在您想将其设置为默认使用,例如在我的情况下:
echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.zshrc
然后运行
source ~/.zshrc
这会将其设置为配置文件中的默认值
现在可以查看ruby的版本了
ruby -v
简短: 请记下您要更改的内容。
如果您在 OS X 上并尝试使用 Ruby 来实现 Jekyll 之类的功能,那么请不要使用 homebrew,因为这就是 Apple 用于 Ruby 的用途,如果您不确定自己的用途,那么使用 Ruby 可能不太好。正在做。相反,请使用 rbenv 或 RVM。
少短: 我试图从默认版本切换到更新版本(从 2.0)以使用 Jekyll,因为它需要 Ruby 版本 2.2.5 及更高版本。我更新了它并安装了2.5版本,但是当我检查“ruby -v”时,它仍然是2.0。当我最终开始更改默认版本时,我无法安装我需要的包,因为我没有写入权限。例如,如果你遇到这样的事情,那么你可能也遇到了同样的问题
$ gem install jekyll bundler
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.
在 OSX 中,您可以使用以下命令更改路径:
sudo nano /etc/paths
然后添加路径或更改顺序。
看到 Craig Wayne 的回答后,我想也许我在使用 Homebrew 安装 ruby 时错过了警告。所以我用
brew reinstall [email protected]
重新安装了它,结果是:
==> Caveats
By default, binaries installed by gem will be placed into:
/usr/local/lib/ruby/gems/2.7.0/bin
You may want to add this to your PATH.
[email protected] is keg-only, which means it was not symlinked into /usr/local,
because this is an alternate version of another formula.
If you need to have [email protected] first in your PATH, run:
echo 'export PATH="/usr/local/opt/[email protected]/bin:$PATH"' >> ~/.zshrc
For compilers to find [email protected] you may need to set:
export LDFLAGS="-L/usr/local/opt/[email protected]/lib"
export CPPFLAGS="-I/usr/local/opt/[email protected]/include"
For pkg-config to find [email protected] you may need to set:
export PKG_CONFIG_PATH="/usr/local/opt/[email protected]/lib/pkgconfig"
所以我的解决方案是将
/usr/local/opt/[email protected]/bin:
添加到 ~/.zshrc
中 PATH 的开头。
就我而言, 酿造链接——覆盖红宝石-f 不起作用,它不能覆盖所有链接(也许不应该)。
如果您查看该命令的输出:
Warning: Refusing to link macOS provided/shadowed software: ruby
If you need to have ruby first in your PATH, run:
echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.zshrc
For compilers to find ruby you may need to set:
export LDFLAGS="-L/usr/local/opt/ruby/lib"
export CPPFLAGS="-I/usr/local/opt/ruby/include"
For pkg-config to find ruby you may need to set:
export PKG_CONFIG_PATH="/usr/local/opt/ruby/lib/pkgconfig"
只需按照上面的答案调整优先级,如果您使用 zsh,我建议改为运行此命令:
echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.zshenv
要与 gcc 或 g++、clang 等集成,只需在 ~/.zshenv 中设置 LDFLAGS 和 CPPFLAGS 即可。
作为其他寻求此问题答案的人的替代方法 - 您可以在 .bash_profile 中设置别名,例如
ruby="/usr/local/bin/ruby"
这就是我解决这个问题的方法