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

故障排除

在这里,我们将探讨常见问题及其解决方案。

在尝试以下任何解决方案之前,请验证以下内容

多用户安装 - 使用 sudo 命令

两种安装方法的安装过程类似,但是,在安装多用户

配置时, 不要直接作为/从 'root' 帐户运行安装程序! 始终从非特权用户帐户使用 sudo 命令。这是因为 root 环境和用户环境之间的变量不同,这些变量不受 EUID 更改的影响,并且安装本身中的代码检查也是如此。此外,使用 sudo 不会加载 /etc/profile.d/rvm.sh,该文件存在于当前安装中,因此不会加载 RVM。您可以通过执行以下操作来证明这一点
sudo printenv | grep -i rvm

此外,您只在安装过程中使用 sudo 命令。在多用户配置中,任何需要 sudo 访问权限的操作都必须使用 rvmsudo 命令,该命令会保留 RVM 环境并将此环境传递给 sudo。但是,请注意,在核心安装完成后,很少有情况需要使用 rvmsudo!更新 RVM 本身并不属于其中之一。rvm 组中的任何用户都可以更新 RVM、ruby 和 gemsets。 从来 没有理由在安装后使用 sudo。

一旦添加到 'rvm' 组的任何用户注销然后重新登录以获得 rvm 组成员资格,他们将能够执行

rvm get head
或者
rvm get stable
来更新 RVM 本身。他们还将能够安装列在
rvm list known
中的任何 Ruby,以及升级现有 ruby 和创建 gemsets。 在 rvm 组中的用户只能使用 RVM,但不能修改 RVM。这包括添加或修改项目 .rvmrc 文件上的 'trust'。

注意:用户**必须**注销并重新登录才能获得 rvm 组成员资格,因为组成员资格仅在初始登录时由操作系统评估。

ruby-debug 和 ruby 1.9

如果您在安装 ruby-debug19 时遇到问题,请尝试使用以下命令进行安装

$ rvm reinstall 1.9.3 --patch debug --force-autoconf
$ gem install ruby-debug19 -- --with-ruby-include="${MY_RUBY_HOME/rubies/src}"

我一直在使用 Ruby 1.8.7 时遇到 callback.func 错误

这通常是由于使用预发布编译器造成的。在这种情况下,这通常会在 gcc-4.6 下显示。此问题不会在 gcc-4.5 中发生。建议您安装 gcc-4.5 并将变量

CC=/usr/bin/gcc-4.5

添加到您的 $rvm_path/environments/[ruby_version_string] 文件中。大多数人在使用 ArchLinux 时会遇到此问题。**注意:我们不支持任何类型的预发布编译器。**

i386(32 位)

我需要将 ruby X 编译为 i386(32 位)。

CFLAGS='-m32' CXXFLAGS='-m32' LDFLAGS='-m32' rvm install X

另外请注意,在 OSX 上,使用

rvm install X --32

总线错误 / 段错误

当您尝试运行的命令产生段错误时,可能类似于以下内容

[BUG] cross-thread violation on rb_gc()

在我迄今为止看到的所有此类情况下,它最终都归结为一个 ruby gem/库(带有 C 扩展)针对与尝试加载它的 ruby 和/或体系结构不同的 ruby 和/或体系结构进行编译。尝试卸载和重新安装您的应用程序使用的带有 C 扩展的 gem 以找出这个错误。

MySQL

如果您在为 ruby 安装 MySQL gem 时遇到问题,请访问 MySQL 页面。

.bash_profile 未在 OSX 上加载

如果您的 .bash_profile 未在 OSX 上正确加载,您需要执行以下三项操作之一

乘客

如果您在使用 RVM 安装的 ruby 运行乘客时遇到问题,很可能您错过了 乘客页面 上的“'.bin/[ruby string]'”注释。

读取线

如果您在编译时遇到与读取线相关的错误,请参考 读取线页面。

require "iconv" # => false ?!

如果您在 ruby/irb 中遇到 iconv 不可用问题,请参考 iconv 页面。

curl 失败,'curl is' ?!

如果你看到这个

++ curl is /opt/local/bin/curl -O -L -s -C - ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p383.tar.gz
curl: Remote file name has no length!
curl: try 'curl --help' or 'curl --manual' for more information

那么你可能已经将 'which' 命令别名或符号链接到 'type' 命令,恢复此操作,RVM 应该可以工作。

我似乎无法安装 pg gem。

在 PATH 变量赋值前加上 pg_config 文件的位置,例如

PATH=/usr/local/bdsm/pkg/postgresql/active/bin:$PATH gem install pg --no-rdoc --no-ri

我在 Bash 中使用 cd 的 tab 补全(以及可能 $CDPATH)时遇到问题。

rvm 会挂钩到 cd,以便对每个目录检查 '.rvmrc' 文件。目录的 tab 补全应该仍然有效,但有些人报告了问题。如果在安装 rvm 之前 tab 补全有效,但现在无效,你可以从 rvm 本身启用 cd 补全。

将以下内容添加到你的 ~/.bash_profile 或 ~/.profile 中,具体取决于你的情况。

export rvm_cd_complete_flag=1

如果你遇到此问题,请将你的操作系统、$BASH_VERSION、你使用的 bash_completion 版本等详细信息报告给 Freenode 上的 #rvm 或 Github。老实说,bash_completion 中的 cd tab 补全比 rvm 中 cd 函数的代码更健壮,并且应该仍然可以与 rvm 一起使用。(事实上,它确实仍然可以在 OSX 10.6 上的 Bash 3.2 和 Bash 4、OpenBSD 4.7 上的 Bash 4 以及 Debian 5.0.6 上的 Bash 3.2 上使用。所有这些都在 最新的 bash-completion 上进行了测试。如果你没有它,你可能想试试。)然而,有些人报告了问题,rvm 中的 cd 补全帮助了他们。

构建解释器失败,并出现与 RDOC 相关的错误。

偶尔,构建会失败,因为构建过程会拾取路径中现有的 rdoc。如果发生这种情况,你可以添加一个配置选项,以防止在安装过程中构建文档。

rvm install  --disable-install-doc

或者,你可以尝试将 rdoc 的更新版本安装到当前环境中。这样,更新的 rdoc 应该能够处理你正在安装的更新版本的 Ruby 的文档。

如何完全清除系统中所有与 RVM 相关的痕迹,包括系统范围的安装?

这是一个自定义脚本,我们将其命名为“cleanout-rvm”。虽然您可以使用“rvm implode”作为普通用户或“rvmsudo rvm implode”用于系统范围的安装,但此脚本很有用,因为它完全脱离了 RVM 并清理了 RVM,而无需使用 RVM 本身,不留任何痕迹。

#!/bin/bash
/usr/bin/sudo rm -rf $HOME/.rvm $HOME/.rvmrc /etc/rvmrc /etc/profile.d/rvm.sh /usr/local/rvm /usr/local/bin/rvm
/usr/bin/sudo /usr/sbin/groupdel rvm
/bin/echo "RVM is removed. Please check all .bashrc|.bash_profile|.profile|.zshrc for RVM source lines and delete
or comment out if this was a Per-User installation."

我使用的是 zsh+oh-my-zsh,它一直试图使用系统 Ruby 来运行 rubygems。

检查您是否在 oh-my-zsh 中启用了 bundler 插件。执行以下操作:

set -x ; cd $some_project ; set -x
        Look in the output for 'within-bundled-project'. If you see that edit your .zshrc and remove the bundler plugin from
        the 'plugins=()' line, then log out of the shell and back in. Should all work now. The bundler plugin in oh-my-zsh
        overrides RVM's settings related to RubyGems for some reason.