rbenv没有改变ruby版本

时间:2012-06-07 22:28:47

标签: ruby rbenv

我根据github指示安装了rbenv。我正在运行OSX,但我在Ubuntu 12.04 VM上尝试了这个并得到了相同的结果。当我尝试更改ruby版本时,以下是我在终端中获得的内容:

rbenv versions
* 1.9.3-p0 (set by /Users/user/.rbenv/version)
1.9.3-p125

rbenv global
1.9.3-p0

rbenv rehash

ruby -v
ruby 1.8.7 (2011-12-28 patchlevel 357) [universal-darwin11.0]

which ruby
/usr/bin/ruby

任何人都有任何想法为什么rbenv没有像它认为的那样切换ruby版本?此外,本地目录中没有.rbenv文件会导致ruby版本默认为1.8.7

rbenv local
rbenv: no local version configured for this directory

25 个答案:

答案 0 :(得分:421)

检查PATH是否包含$ HOME / .rbenv / shims和$ HOME / .rbenv / bin

$ env | grep PATH

如果使用bash,还要检查〜/ .bash_profile中是否包含以下内容;如果使用zsh,请检查〜/ .zshenv

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

注意: 确保它是〜/ .bash_profile中的最后一个设置。我遇到了一个问题,我安装了一个程序来更新我的.bash_profile并重置PATH。

答案 1 :(得分:86)

这可能是一个老问题,但谷歌带领我来到这里,为了后人的缘故,我想我会分享。

在上面的许多推荐解决方案之后,我的问题仍然存在。像OP一样,我安装了rbenv然后安装了ruby版本,但我的笔记本电脑默认为系统。我忽略的是当我跑步时:

[~/.rbenv] $ rbenv versions
* system (set by /Users/alphadogg/.rbenv/version)
  2.0.0-p247

IOW,它仍然默认为系统。快点

[~/.rbenv] $ rbenv local 2.0.0-p247

将其切换为新版本。

答案 2 :(得分:78)

我通过将以下内容添加到我的〜/ .bash_profile:

来修复此问题
#PATH for rbenv
export PATH="$HOME/.rbenv/shims:$PATH"

这是https://github.com/sstephenson/rbenv中记录的内容。

据我所知,没有〜/ .rbenv / bin目录,在@rodowi的帖子中提到过。

答案 3 :(得分:26)

第一步是找出被调用的红宝石:
which ruby

你的系统说:
/usr/bin/ruby

这不是rbenv使用的垫片,它(在MacOS上)应该是这样的:
/Users/<username>/.rbenv/shims/ruby

垫片实际上是一个脚本,其作用类似于您设置的红宝石版本的重定向。

rbenv global 1.9.3 rbenv local --unset rbenv shell --unset
我建议您在解决问题时取消设置项目特定的“本地”版本,以及特定于shell的“shell”版本,并使用“全局”版本设置进行测试,该设置在〜/ .rbenv / verion中的纯文本文件中确定。在你的情况下将只是版本号“1.9.3”。您可以在项目文件夹的根目录(而不是主文件夹)中执行“ls -laG”,以确保不再存在“.ruby-version”文件。

您可以使用“rbenv版本”来确定rbenv设置使用的版本(以及设置该文件的文件的位置和名称)。

rbenv versions

没有重要事项:直到你正确设置路径。

使用它来确保您的* MacOS会服从您:
eval "$(rbenv init -)"

其次是:
which ruby

确保它看起来像: /用户//。rbenv /垫片/红宝石

然后将该行添加到您的个人资料中,以便每次打开新的终端窗口时都会运行: ~/.bash_profile eval "$(rbenv init -)"

还有其他方法可以修改路径,可以随意替换它们而不是运行rbenv init。

注意:重新安装Rails:
gem install rails

如果您尝试运行Ruby on Rails,那么您需要先将其全部工作,然后再次安装rails gem。以前安装的Rails将使用硬编码路径来处理错误的ruby,其他几个东西也会出错,所以只需再次安装gem。

P上。 S.如果您的MacOS不服从您(*如上所述),那么您可能必须找到另一种方法来修改您的路径,但这不太可能是一个问题因为“Macs正常工作”;)

答案 4 :(得分:21)

我刚刚发现了同样的问题。我做的是卸载rbenv(通过自制程序)并重新安装它。我还添加了

if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi
当我重新安装rbenv时,

进入〜/ .bash_profile。现在工作得很好。

答案 5 :(得分:9)

在我的情况下,更改~/.zshenv不起作用。我必须在~/.zshrc内进行更改。

我刚补充说:

# Include rbenv for ZSH
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

位于~/.zshrc的顶部,重新启动shell并注销。

检查它是否有效:

➜  ~ rbenv install 2.4.0
➜  ~ rbenv global 2.4.0
➜  ~ rbenv global
2.4.0
➜  ~ ruby -v
ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-darwin16]

答案 6 :(得分:6)

运行此命令

将rbenv添加到bash中,以便每次打开终端时加载

echo 'if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi' >> ~/.bash_profile
source ~/.bash_profile

这将解决您的问题Reference

答案 7 :(得分:4)

我有同样的问题,但是由Homebrew引起:

[~]$ rbenv version
2.3.0 (set by /Users/user/.rbenv/version)
[~]$ ruby -v
ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-darwin16]
[~]$ which ruby
/usr/local/bin/ruby

不知何故,我也通过Homebrew安装了Ruby,Homebrew路径位于$PATH的rbenv路径之前。正在运行brew uninstall ruby为我修复了它。

答案 8 :(得分:4)

rbenv help shell

“通过在shell中设置'RBENV_VERSION'环境变量来设置特定于shell的Ruby版本。此版本覆盖特定于localapplication的版本和全局版本。应该是与rbenv已知的Ruby版本匹配的字符串。特殊版本字符串'system'将使用您的默认系统Ruby。运行rbenv versions'以获取可用Ruby版本的列表。“

如果正确安装了rbenv,ruby -v将对应

rbenv shell 1.9.3-p125

答案 9 :(得分:3)

我遇到了同样的问题。 通过使用“sudo”运行“rbenv global”命令来解决此问题。 我认为这是许可问题。

更新: 我终于找到了解决方案。 我的mac上有一个相同的文件“version”,位于“/usr/local/Cellar/rbenv/0.3.0/”下。 我认为它偶尔会被错误地创建。你应该删除它。

答案 10 :(得分:3)

至于我,使用rbenvzsh的最简单方法是将rbenv添加到.zshrc配置中的插件部分。在我看来,它看起来类似于:

# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
# Add wisely, as too many plugins slow down shell startup.
plugins=(git bower rails ruby rbenv gulp npm node nvm sublime)

之后在rbenv的帮助下安装,切换,使用ruby版本时没有问题。

注意在进行更改后重新启动终端会话。

答案 11 :(得分:3)

当我遇到这些症状时,问题结果是安装在我试图切换到的新Ruby版本中途失败了,没有我注意到。解决方法是删除&amp;重新安装它。

(这意味着尽管ruby 1.9.3出现在可用版本的rbenv列表中,但它在rbenv假设的路径上没有可执行文件。因为rbenv试图通过预先添加来改变你的ruby版本路径的位置,如果它所在的位置实际上没有任何内容,您的操作系统将很乐意继续搜索您的默认路径并找到您的系统版本,在我的情况下就像问题1.8.7一样。)

答案 12 :(得分:2)

我重新安装rbenv之后就发生了这件事。显然我的主目录中有一个.ruby-version文件,指定一个不再存在的版本。删除文件后,一切正常。

答案 13 :(得分:2)

for fish shell user

set --universal fish_user_paths $fish_user_paths ~/.rbenv/shims/

答案 14 :(得分:2)

确保onComplete的最后一行是:

.bash_profile

答案 15 :(得分:2)

可接受的答案建议添加以下内容:

export PATH="$HOME/.rbenv/bin:$PATH"

这在OP所引用的Mac OSX上不起作用。实际上,如果通过brew install rbenv安装rbenv,这实际上是Mac OSX中唯一的安装方法,因为curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-installer | bash在OSX中将失败,那么rbenv可执行文件将安装在:

$ which rbenv
/usr/local/bin/rbenv

但是,即使在OSX中,rbenv根目录也将保留在$ HOME目录中:

~ viggy$ rbenv root
/Users/viggy/.rbenv

这是什么意思?这意味着当您安装红宝石时,它们将安装在给定的主目录下的.rbenv下:

$ rbenv install 2.6.0
$ ls ~/.rbenv/versions
2.6.0

现在brew安装完成了一些您必须在Linux中手动执行的工作。例如,在Linux中,您将必须手动将ruby-build作为插件安装:

$ mkdir -p "$(rvbenv root)/plugins"
$ git clone https://github.com/rbenv/ruby-build.git "(rbenv root)"/plugins/ruby-build

这已通过自制程序安装完成。与Linux安装一样,在自制程序安装中必须完成一个重要步骤。您必须将rbenv垫片添加到路径中。为此,在您的shell启动时,您必须评估以下命令(该命令将把rbenv垫片添加到$ PATH的开头):

$ vim ~/.bash_profile
eval "$(rbenv init -)"
$ source ~/.bash_profile

现在,当您运行echo $PATH时,将看到rbenv垫片:

$ echo $PATH
/Users/viggy/.rbenv/shims:

现在检查您的ruby版本,它将反映已安装的rbenv ruby​​:

ruby -v
ruby 2.6.0p0 

答案 16 :(得分:1)

运行:

localStorage.setItem("val1","some text");

localStorage.getItem("val1")
//some text

运行之后,当我设置本地rbenv版本时:

rbenv init

然后我的rbenv local 2.4.0 和我的ruby -v版本重合。

注意:你可能还想退出你所在的目录,然后再回到它,我注意到这对我来说是必要的,以便让事情发挥作用。

答案 17 :(得分:1)

Linux / Ubuntu 用户 第 1 步:

$ rbenv versions
  system
  2.6.0
* 2.7.0 (set by /home/User/Documents/sample-app/.ruby-version) #Yours will be different
  2.7.2

第 2 步:

$ nano /home/User/Documents/sample-app/.ruby-version

第 3 步:

$ ruby -v
ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x86_64-linux]

答案 18 :(得分:0)

您可以尝试使用chruby吗? chruby不依赖于垫片,而只是修改PATHGEM_HOMEGEM_PATH

答案 19 :(得分:0)

奇怪的是,rbenv版本没有设置.rbenv文件 检查:ls -ltra - &gt;看到写了一个rbenv

答案 20 :(得分:0)

如果您正在使用 bash ,请转到

~/.bash_profile

并添加以下行(如果尚未添加)

if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi

如果您使用的是Zsh,请转到

~/.zshrc

并在.zshrc文件的末尾添加同一行代码。

然后只需重新启动终端即可,现在应该可以了。

答案 21 :(得分:0)

这里所有其他答案都可以针对各种情况提供很好的建议,但是有一种更简单的方法。

rbenv文档为我们提供了rbenv-doctor诊断工具,该工具将快速验证系统上所有这些潜在的陷阱:

curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash

一切正常时,您会看到以下内容:

$ curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash                                     <aws:hd-pmp-developer>
Checking for `rbenv' in PATH: /usr/local/bin/rbenv
Checking for rbenv shims in PATH: OK
Checking `rbenv install' support: /usr/local/bin/rbenv-install (ruby-build 20201005)
Counting installed Ruby versions: 1 versions
Checking RubyGems settings: OK
Auditing installed plugins: OK

现在,如果我们违反了这些期望之一(例如删除rbenv-install),该工具将直接指出问题所在,并提供解决方法的链接:

$ mv /usr/local/bin/rbenv-install rbenv-install-GONE
                                                                      
$ curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash                                     
Checking for `rbenv' in PATH: /usr/local/bin/rbenv
Checking for rbenv shims in PATH: OK

===> Checking `rbenv install' support: not found <===
  Unless you plan to add Ruby versions manually, you should install ruby-build.
  Please refer to https://github.com/rbenv/ruby-build#installation

Counting installed Ruby versions: 1 versions
Checking RubyGems settings: OK
Auditing installed plugins: OK

答案 22 :(得分:0)

将 eval "$(rbenv init -)" 添加到我的 Mac 上的 .bash_profile 解决了这个问题。 本地环境 ruby -v 给出了集合

答案 23 :(得分:0)

我在 MacBook Pro Catalina OS 上使用 rbenv 设置 Ruby 时遇到了这个问题。

这是我修复的方法

首先运行下面的命令来初始化rbenv:

rbenv init

这会给你一些关于做什么的指导。基本上,您必须打开 ~/.zshrc 文件并将其添加到文件 eval "$(rbenv init -)"。您可以通过运行以下命令来完成此操作:

echo 'eval "$(rbenv init -)"' >> ~/.zshrc

接下来,运行以下命令来设置您的 ruby​​ 版本:

rbenv local your-desired-ruby-version

rbenv shell your-desired-ruby-version

就我而言,我想要的 ruby​​ 版本是 3.0.1,所以是:

rbenv local 3.0.1

完成后,使用 Command + Q 退出终端,然后打开一个新终端,这次是运行命令:

ruby -v 
rbenv versions

您会看到已经为您设置了所需的 ruby​​ 版本。

仅此而已。

我希望这会有所帮助

答案 24 :(得分:-1)

我在安装rbenv之前忘了删除rvm。我删除了rvm并重新安装了rbenv,但是系统仍然没有使用rbenv指定为全局的Ruby版本。我尝试关闭终端,但只有在我重新启动整台机器后才能工作。