无法安装RVM。 / usr / local / rvm中的权限被拒绝

时间:2011-03-09 23:31:52

标签: ruby-on-rails rvm

根据我之前的帖子:RVM installed by Ruby not working?我使用root用户安装了RVM,然后我必须完全删除RVM安装,现在我作为用户安装。

所以我做了:

  1. 通过执行以下操作创建新用户:useradd newuser
  2. 按照RVM网站上的说明执行命令:bash< <(curl http://rvm.beginrescueend.com/releases/rvm-install-head
  3. 现在,我收到错误: mkdir:无法创建目录`/ usr / local / rvm':权限被拒绝

    我创建的新用户无权访问此目录。我手动尝试创建文件夹,但同样的错误。请帮忙。

    编辑:原始问题发生了,因为我没有重新启动终端并且它仍在使用旧设置。

    现在,我遇到了一个新问题:安装RVM后,我无法运行它并且它给我一个错误:找不到rvm命令。

    这是我的〜/ .bash_profile

    的输出
    # .bash_profile
    
    # Get the aliases and functions
    if [ -f ~/.bashrc ]; then
            . ~/.bashrc
    fi
    
    # User specific environment and startup programs
    
    PATH=$PATH:$HOME/bin
    
    export PATH
    [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"  # This loads RVM into a shell session.
    

    这是〜/ .bashrc文件的输出

    # .bashrc
    
    # Source global definitions
    if [ -f /etc/bashrc ]; then
            . /etc/bashrc
    fi
    
    # User specific aliases and functions
    [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"  # This loads RVM into a shell session.
    

12 个答案:

答案 0 :(得分:67)

  

mkdir:无法创建目录`/ usr / local / rvm':权限被拒绝

如果您以前以root身份运行rvm安装程序,请删除/ usr / local / rvm和/ etc / rvmrc。

答案 1 :(得分:18)

RVM易于安装,但是通过尝试混合和匹配安装类型,您会变得更加困难。您不需要创建新用户。运行时,RVM将在您的主目录中创建一个目录:~/.rvm,并在其中安装所有内容。这意味着您将拥有所有正确的权限。您不需要以root身份运行,也不需要使用sudo。我建议关闭所有命令行并打开一个新的命令行并从主目录开始。如果以root用户身份运行,请注销,然后重新登录普通帐户。对于单用户安装,您不需要是root用户。

对于使用RVM作为Ruby沙箱的单个用户,请使用the single-user installation docs。按照所有该页面上的说明进行操作,包含“安装后”部分。

关闭终端窗口,然后重新打开。如果您已正确遵循上述说明,则键入rvm info应该在安装Ruby实例后吐出一个模板。如果您没有看到任何输出或出现错误,请在“安装后”部分中回溯您的步骤,然后完成“故障排除”部分。人们出现的大多数问题都是因为他们没有费心去阅读指示。

安装RVM后,键入rvm notes并阅读需要安装的依赖项。如果您不添加这些文件,则安装的Rubies将缺少功能。它们会起作用,但是你会听到的一些生物舒适感不起作用,你会想知道为什么。

安装依赖项之后,您应该处于良好状态以安装Rubies。为可以安装的所有Rubies RVM输入rvm list known。如果你想要1.8.7类型rvm install 1.8.7,类似地,你需要rvm install 1.9.2来实现Ruby 1.9.2。如果您需要特定修订版,可以根据列表中的修订版添加该版本。

使用rvm get head定期更新RVM非常重要。这将添加功能,修复错误,并告诉RVM它可以安装的新版本的Ruby。

安装Ruby后,输入rvm list,它应显示在列表中,如下所示:

rvm rubies

   ruby-1.8.7-p334 [ x86_64 ]
   ruby-1.9.2-p180 [ x86_64 ]

键入rvm use 1.9.2 --default以设置在登录之间粘滞的默认Ruby。如果1.9.2没有漂浮您的船,请使用您想要默认的任何Ruby的版本。一旦定义了默认值,它应该类似于:

rvm rubies

   ruby-1.8.7-p334 [ x86_64 ]
=> ruby-1.9.2-p180 [ x86_64 ]

在开始将RMS安装到RVM管理的Ruby之前,请阅读"RVM and RubyGems ",特别是“不要使用sudo ...”的部分。我重复。尽管某些博客或网页上写道,但不要使用sudo来安装任何宝石。在使用RVM控制的Rubies时,RVM的作者更清楚。这是人们使用RVM的另一个错误,再次是由于没有阅读指示。

在Mac OS上,您需要为您的操作系统提供最新版本的XCode。请勿在DVD上使用Snow Leopard附带的XCode。它是马车。从Apple's Developer site下载并安装新版本。这是免费下载,需要免费注册。这是一个大文件,大约8GB,所以你想要启动它并走开。安装XCode,你应该准备让RVM安装Rubies。

最后,RVM很容易安装,你要求它安装的Rubies也是如此。我在Mac OS,Ubuntu和CentOS上大约有四五台不同的机器和虚拟机。安装它需要大约一分钟,配置它并开始安装新的Ruby需要一分钟。这真的很容易。

答案 2 :(得分:6)

我在这个问题中报告了原始问题,“ mkdir:在尝试安装rvm时无法创建目录`/ usr / local / rvm':Permission denied ”。

这是我的场景以及我是如何解决的 - 也许这会帮助其他人解决同样的问题。

我在笔记本电脑上安装了Ubuntu 11.04,我只有1个用户,我在安装时创建的用户名为nathan。当我尝试将rvm安装为nathan时,rvm安装程序将我视为root并继续尝试全局安装rvm,但由于我不是root用户,因此无法访问/ usr / local / rvm中创建目录

我远不是Ubuntu的专家,所以我确信有更容易/更好的方法来完成我所做的事情(我很想了解它们),但这对我有用:

  1. 我创建了一个名为rubydev
  2. 的新用户
  3. 我以rubydev身份登录,打开终端并键入:

    rubydev~$ bash < <(curl -B http://rvm.beginrescueend.com/install/rvm)
    
  4. rvm安装正确,我退出了rubydev

  5. 作为nathan回来,打开一个终端并键入“su”(你可以用sudo做这一切,我很懒)
  6. 成功获得root后,我输入以下命令:

    root: /home/nathan# cp -R /home/rubydev/.rvm .
    
    root: /home/nathan# chown -R nathan .rvm
    
    root: /home/nathan# chgrp -R nathan .rvm
    
    root: /home/nathan# exit
    
    nathan~$ echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function' >> ~/.bash_profile
    
    nathan~$ echo 'export rvm_path="/home/nathan/.rvm"' > ~/.rvmrc
    
    nathan~$ source .bash_profile
    
  7. 此时,rvm已正确安装在我的主目录下。验证我输入了:

    nathan~$ type rvm | head -1
    rvm is a function (if you don't get this response, something else is wrong)
    
  8. 阅读说明并安装所有依赖项

    nathan~$ rvm notes
    
  9. 我安装了一些红宝石

    nathan~$ rvm install 1.8.7-head
    nathan~$ rvm install 1.9.2-head
    
  10. 已验证安装

        nathan~$ rvm list
    
        rvm rubies
            ruby-1.8.7-head [x86_64]
            ruby-1.9.2-head [x86_64]
    
        nathan~$ rvm use 1.9.2
        using /home/nathan/.rvm/gems/ruby-1.9.2-head
    
        nathan~$ rvm list
    
        rvm rubies
           ruby-1.8.7-head [x86_x64]
        => ruby-1.9.2-head [x86_x64]
    
  11. 最后,我编辑了终端本身的首选项,以确保选中“标题和命令”选项卡下的“运行命令和登录shell”。似乎.bash_profile没有以其他方式处理。

  12. 我删除了在步骤1中创建的rubydev用户。

  13. 所有这一切,我使用我的首选用户名在Ubuntu 11.04下运行了一个rvm。

答案 3 :(得分:5)

如果您首先以root用户身份安装RVM,然后将其卸载。现在您尝试将其安装为非sudo用户,并且您收到以下错误:

mkdir: cannot create directory `/usr/local/rvm': Permission denied

在尝试在用户下安装之前,请确保已注销根会话。

答案 4 :(得分:4)

我通过添加

解决了这个问题
export rvm_path=~/.rvm

到〜/ .bash_profile

答案 5 :(得分:2)

如果您以用户身份安装RVM,则应在主目录中生成RVM文件夹:

~/.rvm 

根本不存在权限问题。

我建议它从系统安装中获取一些旧的配置。

确保没有留下/ etc / rvmrc或$ HOME / .rvmrc文件,因为它可能正在使用这些文件中先前初始化的变量来构造错误的安装路径。

如果我们查看bash脚本的这一部分:

if [[ ${rvm_ignore_rvmrc:-0} -eq 0 ]]; then
  for file in /etc/rvmrc "$HOME/.rvmrc  " ; do
    if [[ -s "$file" ]] ; then
      source $file
    fi
  done
fi

它试图找到其中一个文件,如果它找到一个,如果它将运行它可能初始化rvm_path,随后不会被此命令设置为$ HOME / .rvm

rvm_path="${rvm_path:-"$HOME/.rvm"}"

答案 6 :(得分:2)

我有同样的问题。当我尝试创建gemset时,我会收到权限被拒绝错误。我忘了先运行“rvm use 1.8.7”命令。之后,我能够毫无问题地创建和使用gemset。

答案 7 :(得分:2)

在rstm的持续版本中,您还需要删除/etc/profile.d/。

如果您尝试以root用户身份安装,然后再以普通用户身份重试,则会发生这种情况。

希望得到这个帮助。

答案 8 :(得分:2)

在/ etc目录下查找文件rvm.sh(可能在/ etc或/etc/init.d中)。 另外,尝试一些grep rvm / etc -r,这样你就可以找到一些文件/行,阻止你在$ HOME目录中安装rvm。

答案 9 :(得分:2)

让我跑步

__rvm_unload

首先工作,这是因为我已经为多用户安装了rvm。

答案 10 :(得分:0)

如果您以root用户身份安装rvm并且您获得了权限被拒绝的问题(可能您使用capistrano作为非root用户进行部署),那么您可以在执行rvm fix-permissions之后尝试rvm install 2.2.2以及以root身份创建gemset。

答案 11 :(得分:0)

斯科特巴特尔的解决方案为我工作。我正在使用数字海洋预制图像,他们已经将rvm设置为root。 1.删​​除/ etc / rvmrc。 2.将导出rvm_path =〜/ .rvm添加到〜/ .bash_profile 3.退出ssh会话到虚拟机 4.重新登录并预先安装!

会评论,但代表是3分太低了:)