如何安装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用户,则需要使用以下步骤启用它
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
功能强大得多,并且比我现在演示的要灵活得多。有关更多信息,请参阅底部的来源
这两件事
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