故障排除
在这里,我们将探讨常见问题及其解决方案。
在尝试以下任何解决方案之前,请验证以下内容
-
确保您使用的是最新版本的 RVM,方法是执行
rvm get stable
或者,如果您更冒险,rvm get head
-
确保 RVM 文件的来源在您的 shell 配置文件(.bash_profile /
/ .zshrc)中 *最后* 出现,尤其是在对您的 $PATH、函数或别名进行任何自定义之后。
- 确保您的文件不包含“&& return”。
- 请确保使用 Bash 或 Zsh。RVM 在其他 shell 中的测试最多只能说是没有经过测试。
多用户安装 - 使用 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 上正确加载,您需要执行以下三项操作之一
- 创建一个名为 ~/.bash_profile 的文件,并在其中添加 RVM 源代码行
- 将 RVM 源代码行添加到 ~/.profile
- 在您的终端首选项中,将 shell 从默认的 /usr/bin/login 更改为 /bin/bash。
乘客
如果您在使用 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.