∞RVM 常见问题解答和说明
∞我在 RVM 中发现了一个错误。 如何提交问题或补丁来解决此问题?
要报告针对 RVM 的错误,请访问 https://github.com/rvm/rvm/issues/ 并在此处打开一个问题。 阅读所有现有报告! 有时问题正在调查中或已解决。 为同一个问题打开一个新的问题会浪费时间和资源,并可能导致您的报告被 summarily 关闭。 请使用 https://gist.github.com 存储和归档与错误报告相关的补充证据。 在您的报告中包含返回的 https(不是 git)URL。 请提供
rvm info
的输出- 如果您使用的是 gemsets,则来自
gem list -dl
的输出 - 运行的所有命令、任何错误/输出以及 RVM 告诉您查看的日志文件的内容。
- 以下跟踪/调试命令的完整输出。
set -x ; rvm --trace your_commands_here ; set +x
以提供我们最大信息来处理。 这些必须与您的问题/错误报告一起提供,以便我们能够为您提供帮助。
∞shell 登录是什么意思 ('bash -l')
有一些网站描述了 10 年前的这种方式,例如 这里 或 这里,因此请阅读以了解它在当前世界中的工作方式
- 当您以图形方式登录系统时,它将读取
~/.profile
,因此您可以在其中放置诸如LANG
之类的设置,这些设置对于图形应用程序很重要。 - 当您打开终端(除了 Gnome-terminal 和 Screen)时,您将打开一个
login
shell,它会来源~/.bash_profile
当您在非登录 shell 中执行命令,例如
ssh server command
或scp file server:~
或sudo
(不带 -i)或su
(不带 -l)时,它将执行~/.bashrc
~/.bashrc
旨在用于非登录调用,您不应该在那里打印任何输出 - 这会导致像scp
这样的工具失败。- 如果用户的 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 存储在哪里?
- 所有已安装 Ruby 解释器和版本的 Ruby Gems 都存储在完全独立的位置。
- Gems 位于 ~/.rvm/gems/$ruby_string 中。
- Gems 可以使用 Gem Sets 进行额外分离。
- 使用 Gem Sets 的 Gem 目录格式为:~/.rvm/gems/$ruby_string@gemset_name
∞所有内容安装到哪里?
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 安装类型。
请注意,这不是一种典型的或普遍支持的安装类型。