Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何安装gem或更新RubyGems(如果失败并出现权限错误)_Ruby_Macos_Rubygems - Fatal编程技术网

如何安装gem或更新RubyGems(如果失败并出现权限错误)

如何安装gem或更新RubyGems(如果失败并出现权限错误),ruby,macos,rubygems,Ruby,Macos,Rubygems,我正在尝试使用gem install mygem安装gem,或使用gem update--system更新RubyGems,但由于以下错误而失败: ERROR: While executing gem ... (Gem::FilePermissionError) You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory. 有人知道如何解决这个问题吗 您没有写入/Library/Ruby/Gems/1

我正在尝试使用
gem install mygem
安装gem,或使用
gem update--system
更新RubyGems,但由于以下错误而失败:

ERROR:  While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.
有人知道如何解决这个问题吗

您没有写入/Library/Ruby/Gems/1.8目录的权限

就是说,你没有在那里写东西的权限

这是苹果安装的Ruby版本,供他们自己使用。如果你知道你在做什么,对它做一些小的修改是可以的,因为你不确定权限问题,我认为继续沿着这条路线走不是一个好主意

相反,我强烈建议您考虑使用或管理一个单独的Ruby,安装在主目录的沙箱中,您可以修改/fold/spindle/change,而不用担心弄乱Ruby系统


在两者之间,我使用rbenv,尽管我过去经常使用RVM。rbenv采取了一种更“不干涉”的方法来管理您的Ruby安装。RVM有很多特性,功能非常强大,但因此更具侵入性。在任何一种情况下,在开始安装之前,请阅读他们的安装文档数次。

错误的原因是您没有以终端上的root用户身份登录

如果您已经在终端类型中的mac上启用了root用户

$ su
如果没有root用户,则需要使用以下步骤启用它

  • 从Apple菜单中选择系统首选项
  • 从“视图”菜单中选择“用户和组”
  • 单击锁并作为管理员帐户进行身份验证
  • 单击登录选项
  • 单击右下角的“编辑…”或“加入…”按钮
  • 单击“打开目录实用程序…”按钮
  • 单击目录实用程序窗口中的锁
  • 输入管理员帐户名和密码,然后单击“确定”
  • 从“编辑”菜单中选择“启用根用户”
  • 在“密码”和“验证”字段中输入要使用的根密码,然后单击“确定”
  • 更多的在同一时间

    至少在我被困了几个小时后它对我有效

    你为什么不:

    sudo gem update --system
    

    您真的应该使用Ruby版本管理器

    在执行
    gem update
    命令时,正确地使用它可以防止并解决您的权限问题

    我推荐rbenv

    然而,即使使用Ruby版本管理器,也可能会收到相同的错误消息

    如果是这样,并且正在使用rbenv,只需验证
    ~/.rbenv/shimmes
    目录是否位于系统Ruby的路径之前

    $echo$PATH
    将显示加载路径的顺序

    如果发现垫片目录位于系统Ruby bin目录之后,请编辑
    ~/.bashrc
    文件,并将其作为最后一个导出路径命令:
    export PATH=$HOME/.rbenv/垫片:$PATH

    $ruby-v
    显示您正在使用的ruby版本

    这表明我目前正在使用Ruby的系统版本(通常不太好)

    $rbenv global 1.9.3-p448
    将我切换到一个新的预装版本(请参阅下面的参考资料)

    这表明我正在使用更新版本的Ruby(这可能不会导致Gem::FilePermissionError)

    您通常不需要在gem命令前面加sudo。如果您觉得有必要这样做,那么可能是配置错误

    有关rbenv的详细信息,请参见以下内容:


    对我来说,问题是由于使用了
    rbenv
    而忘记全局设置正确的版本

    因此,我必须将其设置为
    rbenv global xxx

    在我的例子中,我安装了
    2.0.0-p247
    ,因此我必须发出以下命令:

    rbenv global 2.0.0-p247
    rbenv rehash
    

    然后一切正常。

    我需要做一个
    rbenv-rehash
    ,这样它就会指向我当地的Gem库

    看起来您的gem管理器指向了系统库,因此,与其干扰权限,不如对您的管理器执行“重新设置”,使其指向本地。

    更老、更明智

    不要照我在这里说的做,只要知道在任何时候使用
    sudo
    都要小心。您可能希望使用类似于
    rbenv
    的方法来隔离您正在做的任何工作


    一条路

    我不知道您是否喜欢命令行,但这将使使用任何工具在系统中安装软件包的项目上工作变得轻而易举

    chown
    据我所知,代表所有权变更

    我来寻找这个答案的原因是
    gem install
    今天向我抛出了这个错误:

    ERROR:  While executing gem ... (Gem::FilePermissionError)
        You don't have write permissions into the /var/lib/gems/1.9.1 directory.
    
    这是使用
    chown
    的绝佳机会。你看,Ruby已经给了我们它需要访问的目录,而且它似乎是一个它将经常使用的目录

    在这种情况下,解决问题只需要知道三件事,但是
    chown
    功能强大得多,并且比我现在演示的要灵活得多。有关更多信息,请参阅底部的来源

    这两件事
  • 用户名
  • 目录
  • 如果您在shell中,那么很容易找到用户名。请看提示。我的看起来像:

    breadly@breadly-desktop:~\Desktop
    
    当前用户只是
    @
    前面的名称。我们从错误消息中知道目录,但您有两个选择。您可以使用
    。/gems/1.9.1
    将权限限制在当前版本,也可以使用
    。/gems
    为自己授予所有版本的gems的写入权限

    实际更改所有权的命令如下所示

    chown -R $(whoami) /absolute/path/to/directory
    
    -R
    被称为标志,
    -R
    标志通常告诉命令以递归方式或其他方式执行某些操作
    ERROR:  While executing gem ... (Gem::FilePermissionError)
        You don't have write permissions into the /var/lib/gems/1.9.1 directory.
    
    breadly@breadly-desktop:~\Desktop
    
    chown -R $(whoami) /absolute/path/to/directory
    
    echo "gem: --no-ri --no-rdoc" >> ~/.gemrc
    
    rbenv install 2.1.2 (or whatever version you prefer)
    rbenv global 2.1.2
    gem update --system
    
    rvm install 2.1.2
    rvm use 2.1.2
    gem update --system
    
    gem: -n/usr/local/bin
    
    $ rbenv global 1.9.3-p547
    $ gem update --system
    
    sudo gem uninstall cocoapods
    
    sudo gem install cocoapods
    
    sudo gem install cocoapods
    
    gem install mygem --user-install
    
    sudo chown -R `whoami` /Library/Ruby/Gems
    
    /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    
    brew install ruby
    
    sudo gem install compass
    
    sudo chown -R user /Library/Ruby/Gems/2.0.0