【问题标题】:Cannot use RVM-installed Ruby with sudo无法将 RVM 安装的 Ruby 与 sudo 一起使用
【发布时间】:2011-04-08 09:03:03
【问题描述】:

我已成功配置 RVM 以使用 Ruby 1.9.2,一切都很好。但是,当我尝试使用 sudo 运行 Ruby 时,它说它找不到 RVM 或 Ruby:

$ ruby -v
ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-linux]

$ sudo ruby -v
[sudo] password for administrator:
sudo: ruby: command not found

这是正确的行为还是我的 RVM 配置错误?也许我应该使用system wide install

【问题讨论】:

    标签: ruby rvm sudo


    【解决方案1】:

    Sudo 正在重置您的 PATH。 rvm 通过修改您的 PATH 环境变量来工作,以便您使用的 ruby​​ 是一个特定的,可能在您的 ~/.rvm/rubies 目录中。当您使用 sudo 对 ruby​​ 进行 ruby​​ 时,sudo 没有使用修改后的 PATH,因此它不会找到您的 rvm ruby​​。有关解决方法,请参阅此问题:sudo changes PATH - why?

    【讨论】:

      【解决方案2】:

      使用rvmsudo 命令代替sudo

      【讨论】:

      • +1 - 谢谢卡拉斯!这对我来说非常有用。我有许多 gem 需要我在运行它们时使用 sudo(例如 RubyCAS),这很好地解决了我的问题。再次感谢!
      • 我需要更新 rvm 来安装命令。 rvm update --head 为我解决了这个问题,这只是在全新安装之后。
      • 很高兴我找到了这个。我正在拔头发。
      • @tgandrews 现在是rvm get [stable|latest|etc] :)
      【解决方案3】:

      将@calas 的回答更进一步,将其添加到您的~/.bashrc

      alias sudo=rvmsudo
      

      这避免了必须记住将每个命令的 sudo 更改为 rvmsudo 的要求(对于复制/粘贴命令尤其烦人)。

      【讨论】:

        【解决方案4】:

        @calas 的答案就是答案。但是如果您无法通过使用rvmsudo 来实现您的目标,例如使用命令passenger-install-nginx-module 安装nginx,请更改相关文件夹/路径的所有者。例如

        $ chown <your_username>:<your_group> /opt -R
        $ passenger-install-nginx-module
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-12-27
          • 2013-03-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-09-10
          • 1970-01-01
          相关资源
          最近更新 更多