支持
RVM 由志愿者社区维护,请将问题报告至 RVM 问题追踪器。
如果您能提供帮助或希望成为维护者之一,请开始提供帮助。 您可以在 RVM Github 组织 中找到更多与 RVM 相关的项目。
赞助商
Carbon Ads

RVM 常见问题解答和说明

我在 RVM 中发现了一个错误。 如何提交问题或补丁来解决此问题?

要报告针对 RVM 的错误,请访问 https://github.com/rvm/rvm/issues/ 并在此处打开一个问题。 阅读所有现有报告! 有时问题正在调查中或已解决。 为同一个问题打开一个新的问题会浪费时间和资源,并可能导致您的报告被 summarily 关闭。 请使用 https://gist.github.com 存储和归档与错误报告相关的补充证据。 在您的报告中包含返回的 https(不是 git)URL。 请提供

  1. rvm info 的输出
  2. 如果您使用的是 gemsets,则来自 gem list -dl 的输出
  3. 运行的所有命令、任何错误/输出以及 RVM 告诉您查看的日志文件的内容。
  4. 以下跟踪/调试命令的完整输出。 set -x ; rvm --trace your_commands_here ; set +x 以提供我们最大信息来处理。 这些必须与您的问题/错误报告一起提供,以便我们能够为您提供帮助。

shell 登录是什么意思 ('bash -l')

有一些网站描述了 10 年前的这种方式,例如 这里这里,因此请阅读以了解它在当前世界中的工作方式

  1. 当您以图形方式登录系统时,它将读取~/.profile,因此您可以在其中放置诸如LANG之类的设置,这些设置对于图形应用程序很重要。
  2. 当您打开终端(除了 Gnome-terminal 和 Screen)时,您将打开一个login shell,它会来源~/.bash_profile
  3. 当您在非登录 shell 中执行命令,例如ssh server commandscp file server:~sudo(不带 -i)或su(不带 -l)时,它将执行~/.bashrc

  4. ~/.bashrc 旨在用于非登录调用,您不应该在那里打印任何输出 - 这会导致像scp这样的工具失败。

  5. 如果用户的 shell 设置为/bin/sh,则需要编辑/etc/passwd 并将其设置为/bin/bash

将环境变量放在~/.bashrc中是个好主意,这些变量是您的脚本(对于ssh server script)所依赖的。

然后,如果您的系统默认情况下没有通过/etc/profile来源~/.bashrc,则应在~/.bash_profile文件中来源它,以便任何登录 shell 也能访问与非登录会话相同的环境。

RVM 默认情况下将自身添加到~/.bash_profile文件中,推荐的方式是在 gnome-terminal(和 screen)中启用登录 shell。

要自动修复配置文件,请运行

rvm get [head|stable] --auto-dotfiles

我注意到 RVM 网站上有一些不正确的信息。如何提交补丁或问题?

请随时 fork rvm-site 并修复您发现的任何错误。然后提交一个 Pull Request。无论您是否愿意这样做,请在 Issue Tracker 上提交一个 Issue,其中包含当前错误和您认为的更改。如果您创建了一个 pull request,请在您的 Issue 中引用 URL。

我需要使用 sudo 来安装 gems 吗?

不。不要使用 sudo 来安装 RVM 管理的 rubygems。如果您需要更多解释,请参阅 rubygems 页面。

以 root 身份安装 gems?

不。如果您需要更多解释,请参阅 rubygems 页面。

找不到 RVM 或 RVM 选择的默认 ruby 未为新 shell 设置...

RVM 必须包含在配置文件的底部。否则您的设置将覆盖它(例如:PATH)。请参考 安装说明 将其包含在您的 PATH 中。

RVM 在 Windows 上可以工作吗?将来会支持吗?

不。如果您想在 Windows 上管理多个版本的 ruby,请使用 pik,它是 Gordon Thiesfeld 开发的一个很棒的工具。您可以在 GitHub 上找到它。计划在 RVM 2.0 中包含 Windows 支持 => https://www.bountysource.com/fundraisers/489-rvm-2-0.

我可以使用包含空格的路径吗?

目前路径中的空格不受支持。欢迎提交补丁 :)

如何设置默认 Ruby?

设置默认 Ruby 的方法 在这里解释

默认值是什么。

默认解释器是 'ruby'。每个 Ruby 解释器的默认版本在 ~/.rvm/config/db 中设置,用户可以在 ~/.rvm/config/user 中覆盖。

Ruby Gems 存储在哪里?

所有内容安装到哪里?

RVM 将所有内容安装到 ~/.rvm 中。要从系统中删除 RVM,请运行 rm -rf ~/.rvm。您可能在 ~/.rvmrc 中有一个额外的配置文件,当然还有您在 bash/zsh 启动文件中的 RVM 钩子。

安装 RVM 后还需要 gem 吗?

不需要,gem 仅用于分发,您可以直接克隆 github 仓库并运行 ./install。安装后,Gem 就不再需要了,可以安全地删除。除非您使用的是 RVM Ruby API。在这种情况下,使用 gem 会很有帮助,但不是必需的,因为它也可以从 ~/.rvm/lib/ 加载。

我的 Ruby 编译为 32 位,但我使用的是 Mac OS X Snow Leopard,它大力宣传自己是 64 位的!

RVM 编译到您当前运行的内核的架构。这意味着如果您的内核以 32 位内核运行 (uname -m),它将编译 32 位。您可以在安装 Ruby 解释器之前将以下内容放在 ~/.rvmrc 中来覆盖此行为

rvm_archflags="-arch x86_64"

我在 Gemfile 中使用 ruby 方法来选择生产环境中的 Ruby 版本,如何使用另一个 Ruby 版本进行开发?

在项目目录中放置一个 .ruby-version(或者如果你需要脚本的话,放置一个 .rvmrc)文件,其中包含用于开发的 Ruby 版本。

.ruby-version 文件的优先级高于 Gemfile,但低于 .rvmrc 文件,如果你在 Heroku 上,它将被忽略。

.ruby-version 文件可以包含一个特定的 Ruby 版本,也可以留空,以便只使用当前选择的 Ruby 版本。

我只想为 root 安装!

请注意,如果你只想为 root 安装,使用 per-user 安装,那么你**必须**在尝试安装之前,先在 root 的 $HOME/.rvmrc 中预填充以下内容

echo 'export rvm_prefix="$HOME"' > /root/.rvmrc
echo 'export rvm_path="$HOME/.rvm"' >> /root/.rvmrc

以覆盖默认的检查,该检查假设如果 root 正在执行安装,则必须是 Multi-User 安装类型,并且 RVM 必须位于 /usr/local/rvm 中。这还消除了使用 sudo 的必要性,因为所有这些因素的组合实际上将其变成了专门针对 root 用户的 Per-User 安装类型。

请注意,这不是一种典型的或普遍支持的安装类型。