【问题标题】:rvm installation not working: "RVM is not a function"rvm 安装不工作:“RVM 不是函数”
【发布时间】:2012-03-09 08:17:27
【问题描述】:

我刚刚安装了 RVM,但无法正常工作。我的.profile 文件末尾有这样一行:

[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"

我尝试运行 source .profile 并重新启动终端,但是当我运行 rvm use 1.9.2 时,我得到了:

RVM is not a function, selecting rubies with 'rvm use ...' will not work.

我的系统是 Ubuntu 11.10。

【问题讨论】:

    标签: ruby rvm


    【解决方案1】:

    我更改 ruby​​ 版本的不干净方法是

    rvm alias create default ruby-2.2.3 && source ~/.bashrc && rvm list

    它可以工作,因为我的 ~/.bashrc 中有以下行,但奇怪的是它不会自动完成这项工作。

    [[ -s "/usr/local/rvm/bin/rvm" ]] && source "/usr/local/rvm/bin/rvm"

    我尝试通过 --login 连接到我的 docker 容器

    docker run -it imagename `/bin/bash --login`
    

    但在这种情况下,容器在后台保持打开状态,我无法输入命令。

    我用“用/bin/bash --login打开”选项尝试了zhc和终端

    【讨论】:

      【解决方案2】:

      您需要运行以下命令

      $ source ~/.rvm/scripts/rvm
      

      然后运行这个

      $ type rvm | head -n 1
      

      如果你得到

      rvm is a function
      

      问题解决了。

      您还需要运行 user$ rvm requirements 以查看您的操作系统的依赖项要求

      来源:https://rvm.io/rvm/install/

      我忘了提到你需要把这段代码放到你的 ~/.bashrc 或 ~/.zshrc 文件中,你不需要再次编写这段代码。干杯!

      【讨论】:

      • 谢谢。在 ubuntu 10.04 上为我工作。
      • 此解决方案仅适用于当前 shell 会话。如果您遵循此解决方案,则每次再次登录控制台时都必须重复这些步骤。更持久的解决方案是将以下内容添加到 ~/.bashrc 文件中: if test -f ~/.rvm/scripts/rvm;然后 [ "$(type -t rvm)" = "function" ] ||来源 ~/.rvm/scripts/rvm fi
      • 这确实应该在 RVM 的 gnome 集成页面上,更加简洁,并且在运行 KDE 和 Cinammon 的 mint nadia 上像魅力一样工作
      • 如果在你做完这一切后它仍然不是一个函数怎么办?
      • 如果@Stanley 的解决方案不起作用,也可以这样做:stackoverflow.com/questions/820517/bashrc-at-ssh-login
      【解决方案3】:

      我通过将此行添加到 .bash_profile 来修复它:

      [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*
      

      【讨论】:

        【解决方案4】:

        对于那些遇到同样问题并且像我一样使用 lubuntu 的人,我关注了这个link

        你用

        启动你的终端

        lxterminal -e "bash -il"

        感谢@mpapsis 为我指明了正确的方向

        【讨论】:

        • 由于链接有时是短暂的,因此在您的答案中粘贴一个简短的概要可能是个好主意,以供后代使用。
        【解决方案5】:

        运行bash --login,然后运行rvm use 2.0.0

        【讨论】:

          【解决方案6】:

          我遇到了同样的问题,我在我的 .bash_profile 中执行了此操作,并且成功了。 source "$HOME/.rvm/scripts/rvm"

          【讨论】:

            【解决方案7】:
            source ~/.bash_profile
            

            ...应该可以解决问题...,可能需要注销并重新登录。

            How to reload .bash_profile from the command line?

            【讨论】:

              【解决方案8】:

              我也遇到过这个问题。最后我在终端上执行了这一行。

              source ~/.rvm/scripts/rvm
              

              问题已解决。因为这一行将使 RVM 实例成为特定时间的函数。

              【讨论】:

              • 最简单的答案。只需将该行放入您的 ~/.bashrc 中,您就可以使用任何终端模拟器。
              • 嗨 - 虽然这个命令“修复”了我参加的学期课程,但结果并不并且对新的(或其他)学期课程没有帮助.而且桌面似乎也对这些变化一无所知。我也是“反”登录的东西,因为它是基于每个会话/登录的。就我个人而言,我希望能够将相同的程序与不同的 Ruby-s 和版本进行比较。
              • 你才是真正的MVP。在我尝试这个之前没有其他任何工作。我不在乎它是否是暂时的,我只需要修复。
              • rvm 的安装文件在哪里,所以当你安装它时,它会处理这个和其他问题?我使用了他们主页上描述的过程,并花了几个小时试图让它“正常工作”。应该是“yum install rvm”之类的东西,一切都准备好了。
              【解决方案9】:

              我在全新的 rvm 安装中也遇到了这个问题,这里的答案都没有解决它。进入官方 rvm 网站,在基础部分,他们有这个命令:

              #来自http://rvm.io/rvm/basics

              source $(rvm 1.9.3 do rvm env --path)

              您应该将 1.9.3 更改为您真正想要的 ruby​​ 版本,它将使 rvm 成为一个函数,而与 shell 类型无关。

              【讨论】:

                【解决方案10】:

                要永久解决此问题,只需剪切/粘贴以下行:

                [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

                来自:~/.bash_profile 文件

                收件人:~/.bashrc 文件

                之所以有效,是因为每次进入终端时都会执行.bashrc,每次登录时都会执行.bash_profile。这就是解决方案/bin/bash --login 有效的原因,但每次进入终端时都必须这样做。这样你就可以设置到下一个格式,到那时你会忘记这一切:)

                【讨论】:

                • 作为屏幕用户,我总是需要将这一行放在~/.bashrc,而不是~/.bash_profile
                • 谢谢!我对 gnome 登录所需的两秒延迟感到非常困扰。这将防止这种延迟。
                • 为什么 rvm 安装不自动执行此操作?
                • @mpapis 是 rvm 的发布经理,他说这样做“可能会导致 X 会话失败(如果我没记错的话,Fedora 17),它会导致 rsync 会话失败......还有更多我不能的原因现在回忆”。我想我会坚持使用 `/bin/bash --login.
                【解决方案11】:

                以上所有答案均有效。但是当我遇到同样的问题时,解决方案如下:

                • 更新 ZSH。 (由于某种原因尝试直接更新不起作用。所以从here卸载并重新安装了更新版本)
                • 使用 sudo chsh -s $(which zsh) $USER 将默认 shell 设置为 zsh(即,如果您更喜欢 zsh)
                • 在您安装最新的 RVM 后,确保以下代码位于您的 .zshrc 的底部,可能使用来自 official RVM site 的 CURL

                  [[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"
                  source ~/.profile
                  
                • 最重要的一点:确保在您的.zshrc 文件中,每次导出到PATH 时都附加:$PATH。即使按照上述步骤,我相信这是我问题的根源。

                • 发布这个我所有的 RVM 不是函数 的问题都消失了。如果它仍然不起作用,请在此处提供一些错误跟踪。经过几个小时的努力来解决这个问题,我确定我一定已经看到了所有相关的错误。

                希望对你有帮助。干杯!

                【讨论】:

                • 是的,先生。这对我有用。不明白最重要的部分,但是,它起作用了。
                • 当您尝试安装 RVM 时,如果您有 export PATH="/usr/bin:",它会发出警告。它会要求您将$PATH 附加到它。这是我的一个问题的原因。因此,每个export PATH 都应该附加$PATH,以便在导出之前,无论PATH 变量是否附加。无论如何,这很有帮助。
                【解决方案12】:

                打开终端,然后转到 Edit > Profile Preferences,然后转到选项卡“Title and Command”并选中“Run Command as Login壳牌”。

                启动 Bash,现在您可以直接从终端安装 Gems,而无需使用 sudo 并且错误“RVM 不是函数,使用 'rvm use ...' 选择 rubies 将不起作用。”将被淘汰。

                干杯。

                【讨论】:

                  【解决方案13】:

                  也许你可以试试下面的:

                  • 您的终端 ->
                  • 编辑->
                  • 个人资料偏好 ->
                  • 标题和命令 ->
                  • 选中“以登录 shell 方式运行命令”
                  • 完成

                  【讨论】:

                  • 这是最简单的解决方案,也是正确的解决方案,因为普通 shell 会跳过 .profile,使用此选项将导致它加载,根本不需要编辑 .bashrc。
                  【解决方案14】:

                  您没有使用登录 shell。

                  启用登录标志的过程在here 中进行了描述,有关登录shell 的一些详细信息可以在here 中找到。

                  因此,您需要在 Gnome 终端的设置中检查选项“以登录 shell 方式运行”。设置标志后需要打开新终端。

                  有时需要将命令设置为/bin/bash --login


                  对于远程连接,了解运行交互式ssh 会话和执行单个命令之间的区别很重要。

                  在运行 ssh server 然后以交互方式与服务器工作时,默认情况下您使用的是登录 shell,一切都很好,但是对于 ssh server "command",您没有使用登录 shell,需要使用 ssh server 'bash -lc "command"' 运行它.

                  任何远程调用都可能出现与使用ssh 执行单个命令相同的问题。

                  【讨论】:

                  • mac 上的等效解决方案是什么?
                  • 尝试rvm get stable --auto 并检查您的终端设置
                  • 仅供参考:设置后我们必须启动一个新终端。
                  • @mpapis 如何在无法将 X 服务器转发到我的机器的远程服务器上将 gnome-terminal 设置为“将命令作为登录 shell 运行”?
                  • 遵照@mpapis 的建议,--auto 已被--auto-dotfiles 弃用,所以现在的命令是rvm get stable --auto-dotfiles
                  【解决方案15】:

                  我遇到了同样的错误,但此页面上的解决方案似乎都不起作用。对我来说,将 rvm 可执行文件添加到我的路径就足够了:

                  PATH=$PATH:/usr/local/rvm/bin/
                  

                  瞧!

                  【讨论】:

                    【解决方案16】:

                    最新的 RVM(rvm 1.11.6(稳定))停止在 Ubuntu(10.10 - 64 位 - nerdy gnat 或其他)上工作 - 我一直在得到

                    “RVM 不是一个函数,用 'rvm use ...' 选择红宝石将不起作用。”

                    之前,我收到了消息,但 'rvm 1.9.3-p0@rails321' 可以工作。现在,它行不通了 - 你根本无法更改 gemset。

                    在我找到这个之前没有任何效果 - 将此作为 /home/your-name/.bashrc 中的最后一行

                    [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

                    【讨论】:

                    • "rvm get stable --auto" 添加到 .bash_login [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"并将其从 .bashrc 中删除 - 我在 .bashrc 的末尾添加了 source ~/.bash_login 以及在中途更改 gemsets 的任何脚本的开头
                    【解决方案17】:

                    如您所说,显示的错误可能是以下错误。

                    RVM is not a function, selecting rubies with 'rvm use ...' will not work.
                    
                    You need to change your terminal emulator preferences to allow login shell.
                    Sometimes it is required to use `/bin/bash --login` as the command. 
                    Please visit https://rvm.io/integration/gnome-terminal/ for a example.
                    

                    如上所述,只需在终端中输入“/bin/bash --login”(重启终端后),然后输入命令“rvm use 1.9.3”(例如)它将开始使用相同的版本。

                    只需执行命令“ruby -v”即可确认 RVM 使用的是 Ruby 的更新版本。

                    【讨论】:

                      【解决方案18】:

                      在 Mac OSX 10.8 Mountain Lion 上安装 Ruby 1.9.3-p125 的过程

                      1. 您已经安装了最新的 XCode (>= 4.3) 和命令行 Objective-C 编译器“clang”。
                      2. 您必须运行“bash”外壳程序才能运行此过程。
                      3. 转到系统偏好设置
                      4. 点击“用户和组”
                      5. 点击面板左下角的锁,输入密码解锁。
                      6. “Ctrl-单击”面板左侧窗格中的用户图标,然后选择“高级选项...”
                      7. 将登录 Shell 更改为“/bin/bash”
                      8. 关闭首选项
                      9. 打开终端窗口(按命令+空格键并输入“终端”)
                      10. 按照以下说明操作:

                      http://www.frederico-araujo.com/2011/07/30/installing-rails-on-os-x-lion-with-homebrew-rvm-and-mysql/

                      注意事项:

                      • 要安装 ruby​​,您可能需要指定 clang 编译器:

                        $ rvm install 1.9.3p125 --with-gcc=clang

                      • 如果 RVM 抱怨找不到 /usr/local/rvm,您需要创建一个链接:

                        $ ln -s /Users/[你的用户名]/.rvm /usr/local/rvm

                      【讨论】:

                      • 我认为他们现在达到了 P194。如果您执行 rvm install 1.9.3 --with-gcc=clang,您将自动获得最新版本的 1.9.3。
                      【解决方案19】:

                      【讨论】:

                        【解决方案20】:

                        即使您接受了答案,我还是想建议另一种方式 .. ~/.bashrc 在打开任何 shell 之前加载。在最后添加那行,你不需要任何登录 shell 的东西

                        【讨论】:

                        • “那个登录 shell 的东西”是有原因的,我已经用 RVM 采购做了很多测试,这是保证工作没有不可检测和难以解决的错误的唯一方法
                        • @mpapis 你能解释一下原因吗?从其他答案看来,大多数人都可以将行移动到 rc 文件
                        • 例如它可能会导致 X 会话失败(如果我没记错的话,Fedora 17),它会导致 rsync 会话失败......还有更多我现在想不起来的原因
                        【解决方案21】:

                        我遇到了同样的错误,因为我曾经使用 apt-get 命令安装过旧的 rvm 版本 ruby​​-rvm。

                        我通过删除在 .bashrc 文件中配置旧 rvm 的脚本行解决了这个问题。

                        检查旧的 rvm 配置脚本,然后运行 ​​source .profile

                        【讨论】:

                          猜你喜欢
                          • 2011-06-22
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          相关资源
                          最近更新 更多