RVM 查找系统 gem 的可执行文件

2024-02-05

我已经安装了 RVM 和 ruby​​ 版本。但是,如果我启动控制台并运行命令rails server、bundle install等,我会收到此错误

bash: /usr/bin/rails: /usr/bin/ruby1.8: bad interpreter: No such file or directory

但如果我跑rvm use 1.9.2首先,然后一切都好。我尝试使用“rvm use --default 1.9.2”,但没有任何改变。这是否意味着它使用了与 RVM 中不同的 ruby​​?提前致谢!


rubygems bin 文件夹和 PATH 的说明

哦。您的rvm ruby​​ 中没有安装rails,但您的系统ruby 中安装了rails。

个别宝石,如rails可以有一个bin将包含可执行帮助程序脚本的目录。你的系统默认 ruby​​gems 正在将符号链接从你的系统 /usr/bin/ 目录创建到 gem 的目录中bin这些帮助程序可执行文件的文件夹。

RVM 提供了类似的功能,只不过它不会污染系统 /usr/bin 目录,而只是附加its ~/.rvm/gems/#{rvm_gemset_string}/bin文件夹添加到 PATH 环境变量中。


将系统 Rubygems 列表导入到新的 rvm rubies 的 gem 目录中

默认情况下,RVM 不会将您的 gems 从系统 ruby​​ 安装导入到 rvm ruby​​ 安装中。它对整个 ruby​​ 系统进行了完全干净的分叉,包括 ruby​​gems(gem 'rubygems')和 ruby​​gems 的 gem 列表。当你rvm install 1.9.2就像您对 ruby​​ 使用的所有内容进行了全新安装一样。

如果您想将之前使用的所有系统 ruby​​ gem 放入您首选的 rvm ruby​​ 中,请尝试以下操作:

  rvm use system
  rvm gemset export system.gems
  rvm use 1.9.2
  rvm gemset import system.gems
  #You'll now have all your system gems reinstalled to your new ruby version

原始答案/来自@Telemachus 的编辑

尝试将源 rvm 的行移到您的末尾~/.bash_profile or ~/.bashrc(无论你有它):

'[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function'

.

bash: /usr/bin/rails: /usr/bin/ruby1.8: bad interpreter: No such file ...
|                 |                 ^--------------------------------\
^ Bash, not rvm;  ^/usr/bin/rails, not ~/.rvm/gems/*/bin/rails;      |
                       Some ruby leftover from a previous install in the os

您已安装导轨/usr/bin,这可能位于 bash 中的 rvm ruby​​ bin 路径之前echo $PATH变量,因此它正在查找系统 Rails 安装(/usr/bin/rails,一个 ruby​​ 脚本),其开头如下:

#! /usr/bin/ruby18

您必须让冲突停止发生,所有可能的方法中最好的方法是确保 RVM 的 bin 目录位于您的 PATH 的开头。这发生在#Load rvm environment您添加到的脚本~/.bash_profile安装rvm时。如果您将 rvm 安装为系统库而不是仅为您的用户安装,则情况会有所不同。

如果您遇到这种情况,请询问@Telemachus。

然后,您需要确保已将 Rails gem 安装在新的 RVM ruby​​ 中,如上所述。

验收测试:

当你完成后你会发现rvm use 1.9.2, then which ruby会返回类似的东西~/.rvm/rubies/1.9.2/bin/ruby, and which rails应该返回类似的东西~/.rvm/gems/*/bin/rails.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RVM 查找系统 gem 的可执行文件 的相关文章

随机推荐