无法在OS X"El Capitan"上安装宝石

Him*_*dav 182 ruby macos rubygems

我无法fakes3在El Capitan Beta 5上安装和运行gem.

我试过了:

sudo gem install fakes3
ERROR:  While executing gem ... (Errno::EPERM)
    Operation not permitted - /usr/bin/fakes3
Run Code Online (Sandbox Code Playgroud)

然后我尝试用cocoapods方式做.它适用于cocoapods,但不适用于fakes3.

mkdir -p $HOME/Software/ruby
export GEM_HOME=$HOME/Software/ruby
gem install cocoapods
[...]
1 gem installed
gem install fakes3
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.
Run Code Online (Sandbox Code Playgroud)

nsc*_*hum 333

免责声明: @ theTinMan和其他Ruby开发人员经常指出sudo在安装gem时不要使用,而是指向像RVM这样的东西.在进行Ruby开发时,这是绝对正确的.继续使用它.

然而,我们许多人只是想一些二进制碰巧被分配作为宝石(例如fakes3,cocoapods,xcpretty...).我绝对不想打扰管理一个单独的红宝石.以下是您更快捷的选择:

选项1:继续使用sudo

sudo如果您希望全局安装这些工具,则使用可能很好.

问题是这些二进制文件被安装到了/usr/bin,这是自El Capitan以来的禁区.但是,您可以将它们安装到其中/usr/local/bin.这就是Homebrew安装它的东西,所以它可能已经存在了.

sudo gem install fakes3 -n/usr/local/bin
Run Code Online (Sandbox Code Playgroud)

将安装Gems /usr/local/bin,系统中的每个用户都可以使用它们,如果它们在PATH中.

选项2:安装在您的主目录中(不带sudo)

以下将安装gems ~/.gem并将二进制文件放入~/bin(您应该将其添加到您的PATH).

gem install fakes3 --user-install -n~/bin
Run Code Online (Sandbox Code Playgroud)

将其设为默认值

无论哪种方式,您都可以将这些参数添加到您的~/.gemrc身上,这样您就不必记住它们:

gem: -n/usr/local/bin
Run Code Online (Sandbox Code Playgroud)

echo "gem: -n/usr/local/bin" >> ~/.gemrc

要么

gem: --user-install -n~/bin
Run Code Online (Sandbox Code Playgroud)

echo "gem: --user-install -n~/bin" >> ~/.gemrc

(提示:您也可以--no-document跳过生成Ruby开发人员文档.)

  • 对于选项#2加1,如果你只想要那些没有单独Ruby的二进制文件,这是一个可行且安全的选择.我们的主目录是添加宝石的理想场所,对PATH的快速调整使它们可以访问.我不推荐选项#1,因为*某人*最终将覆盖一个宝石并破坏他们的系统Ruby或Apple使用它的内置代码,然后他们会问另一个关于如何修复它的问题. (2认同)

Fra*_*ull 107

就我而言,我不得不使用Brew重新安装Ruby .这似乎已经解决了问题,因为我可以再次安装宝石.

brew install ruby
Run Code Online (Sandbox Code Playgroud)

在此之后,您需要注销并以图形方式重新登录,或者只是重新启动终端.

  • PS你需要注销并重新登录(通过终端)或者'gem install`仍然会失败. (7认同)
  • 为我工作.我有OSX EL Capitan (2认同)

小智 38

这是因为OS X"El Capitan"的新安全功能.尝试添加--user-install而不是使用sudo:

$ gem install *** --user-install
Run Code Online (Sandbox Code Playgroud)

例如,如果要安装fake3,只需使用:

$ gem install fake3 --user-install
Run Code Online (Sandbox Code Playgroud)


Fem*_*att 25

sudo gem install -n /usr/local/bin cocoapods
Run Code Online (Sandbox Code Playgroud)

试试这个.它肯定会起作用.

  • 当然不。 (3认同)

ast*_*epz 19

你必须将Xcode更新到最新版本(v7.0.1),一切都会正常工作.

如果在安装最新的Xcode之后仍然无法工作,请尝试以这种方式安装gem:

sudo gem install -n /usr/local/bin GEM_NAME_HERE
Run Code Online (Sandbox Code Playgroud)

例如:

sudo gem install -n /usr/local/bin fakes3
sudo gem install -n /usr/local/bin compass
sudo gem install -n /usr/local/bin susy
Run Code Online (Sandbox Code Playgroud)


foo*_*bar 10

看起来在升级到OS X El Capitain时,/ usr/local目录以多种方式进行修改:

  1. 用户权限被重置(对于使用Homebrew的人来说这也是一个问题)
  2. 二进制文件和符号链接可能已被删除或更改

[编辑]还有一个初步的事情要做:升级Xcode ......

#1解决方案:

$ sudo chown -R $(whoami):admin /usr/local
Run Code Online (Sandbox Code Playgroud)

这将修复/usr/local目录上的权限,这将有助于两者gem installbrew install|link|...命令正常工作.

解决方案#2:

基于Ruby的问题

确保您已修复/usr/local目录的权限(请参阅上面的#1)

首先尝试使用以下方法重新安装宝石:

sudo gem install <gemname>
Run Code Online (Sandbox Code Playgroud)

请注意,它将安装指定gem的最新版本.

如果您不想面对向后兼容性问题,我建议您首先确定要获取哪个gem的版本,然后使用-v version.请参阅下面的示例,以确保系统不会获得新版本的capistrano.

$ gem list | grep capistrano
capistrano (3.4.0, 3.2.1, 2.14.2)
$ sudo gem install capistrano -v 3.4.0
Run Code Online (Sandbox Code Playgroud)

基于Brew的问题

更新brew并升级您的公式

$ brew update
$ brew upgrade
Run Code Online (Sandbox Code Playgroud)

您可能还需要手动重新链接其中一些

$ brew link <formula>
Run Code Online (Sandbox Code Playgroud)