支援
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、紅寶石和 gemset。安裝後絕不有理由使用 sudo。

一旦加入「rvm」群組的任何使用者登出後再登入以取得 rvm 群組成員資格,他們就能夠執行

rvm get head
rvm get stable
更新 RVM 本身。他們還能安裝任何列在
rvm list known
中,以及升級現有的 Ruby,並建立 gemset。不在 rvm 群組中的使用者只能使用 RVM,但無法修改 RVM。這包括新增或修改專案 .rvmrc 檔案中的「信任」。

注意:使用者必須登出再登入才能取得 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()

在到目前為止我所看過的每個案例中,最後總是會發現一個具有 C 延伸模組的 ruby gem/函式庫是針對與嘗試載入它的 ruby 和/或架構不同的 ruby 和/或架構編譯的。嘗試解除安裝和重新安裝應用程式使用的具有 C 延伸模組的 gem,以找出這個錯誤。

MySQL

如果您在為 ruby 安裝 MySQL gem 時遇到問題,請造訪 MySQL 頁面。

.bash_profile 未在 OSX 上載入

如果您的 .bash_profile 未在 OSX 上正確載入,您需要執行以下三件事之一

Passenger

如果您在讓 passenger 使用 RVM 安裝的 ruby 執行時遇到問題,您很可能錯過了 passenger 頁面 上的「.bin/[ruby 字串]」註解。

Readline

如果您在編譯時遇到與 readline 相關的錯誤,請參閱 readline 頁面。

require "iconv" # => false ?!

如果您在 ruby/irb 中遇到 iconv 無法使用的問題,請參閱 iconv 頁面。

curl 失敗,'curl 是'?!

如果你看到這個

++ 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(以及可能 $CDPATH)時,遇到了 tab 補完的問題

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 中運作。(事實上,它確實仍然可以在 Bash 3.2 和 Bash 4 的 OSX 10.6、Bash 4 的 OpenBSD 4.7 以及 Bash 3.2 的 Debian 5.0.6 上運作。所有這些都已使用 最新版本的 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.