无法在OS X上安装gem“El Capitan”

我无法在El Capitan Beta 5上安装并运行fakes3 gem。

我试过了:

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

然后我试着用椰子树的方式做。 它适用于椰子树,但不适用于假货3。

 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. 

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

然而,我们中的许多人只是想要一些二进制文件,而这些二进制文件就像是一个gem(例如fakes3cocoapodsxcpretty …)。 我绝对不想pipe理一个单独的ruby。 这里是你更快的select:

选项1:继续使用sudo

使用sudo可能是好的,如果你想这些工具全球安装。

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

 sudo gem install fakes3 -n/usr/local/bin 

Gems将被安装到/usr/local/bin并且系统中的每个用户都可以在他们的PATH中使用它们。

选项2:安装在你的主目录下(没有sudo)

下面将在~/.gem安装gems并将二进制文件放入~/bin (然后添加到PATH )。

 gem install fakes3 --user-install -n~/bin 

将其设为默认值

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

 gem: -n/usr/local/bin 

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

要么

 gem: --user-install -n~/bin 

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

提示:您也可以使用--no-document来跳过生成Ruby开发者文档。)

在我的情况下,我不得不使用Brew重新安装Ruby。 这似乎已经解决了问题,因为我可以再次安装gem。

 brew install ruby 

在此之后,您需要注销并以graphics方式重新login,或者重新启动terminal。

这是因为OS X“El Capitan”的新安全function。 尝试添加--user-install而不是使用sudo:

 $ gem install *** --user-install 

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

 $ gem install fake3 --user-install 
 sudo gem install -n /usr/local/bin cocoapods 

尝试这个。 它肯定会工作。

你必须更新Xcode到最新的(v7.0.1),一切将正常工作。

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

 sudo gem install -n /usr/local/bin GEM_NAME_HERE 

例如:

 sudo gem install -n /usr/local/bin fakes3 sudo gem install -n /usr/local/bin compass sudo gem install -n /usr/local/bin susy 

看起来像升级到OS X El Capitain时,/ usr / local目录被多种修改:

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

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

解决scheme#1:

 $ sudo chown -R $(whoami):admin /usr/local 

这将修复/usr/local目录的权限,这将帮助gem installbrew install|link|...命令正常工作。

解决scheme#2:

基于Ruby的问题

确保你已经修复了/usr/local目录的权限(见上面的#1)

首先尝试重新安装你的gem使用:

 sudo gem install <gemname> 

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

如果您不想面对向后兼容性问题,我build议您先确定要获取哪个版本的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 

基于Brew的问题

更新brew并升级你的公式

 $ brew update $ brew upgrade 

您可能还需要手动重新链接其中的一部分

 $ brew link <formula> 

如前所述,这个问题来自于“El Capitan”以来Mac OSX的安全function。

使用默认的系统Ruby,安装过程发生在/Library/Ruby/Gems/2.0.0目录中,该目录对用户不可用,并且出现错误。

您可以使用该命令查看您的Ruby环境参数

 $ gem env 

有一个安装目录和一个用户安装目录。 要使用用户安装目录而不是默认安装目录,可以使用--user-install参数来代替使用sudo ,这从来不是推荐的方式。

 $ gem install myGemName --user-install 

在这个过程中不应该有任何权利问题。 然后将gems安装到用户目录: ~/.gem/Ruby/2.0.0/bin

但为了使安装的gem可用,这个目录应该在你的path中可用。 根据Ruby的常见问题解答 ,你可以在你的~/.bash_profile~/.bashrc

 if which ruby >/dev/null && which gem >/dev/null; then PATH="$(ruby -rubygems -e 'puts Gem.user_dir')/bin:$PATH" fi 

然后closures并重新加载您的terminal或重新加载您的.bash_profile.bashrc. ~/.bash_profile

这是我用过的解决scheme:

注意:这个修补程序是针对指南针的,因为我在另一个SO问题上编写了它,但是我已经使用相同的过程来恢复所有terminal进程的function,显然,您正在安装的gem是不同的,但是过程是相同的。

我遇到过同样的问题。 这是由于苹果正在实施系统完整性保护(SIP)。 你必须先禁用那个…

在恢复模式下重新启动:

重新启动并按住Command + R直到看到苹果标志。

一旦启动,从顶栏中select实用程序>terminal

键入: csrutil disable

然后input: reboot

一旦重新启动

打开terminal备份并input命令:

sudo gem uninstall bundler

sudo gem install bundler

sudo gem install compass

sudo gem install sass

sudo gem update --system

失败的个别gem需要固定,因此每个gem都做以下工作:

在我的机器上,这是第一个依赖不工作,所以我列出了它

sudo gem pristine ffi --version 1.9.3

继续查看需要修复的gem列表。 在所有你正在寻找约10分钟来解决它,但你会有指南针的terminal命令工作。

截图

重新安装RVM为我工作,但之后我必须重新安装所有的gem:

 rvm implode \curl -sSL https://get.rvm.io | bash -s stable --ruby rvm reload 

如果你正在尝试安装的gem需要xml库,那么试试这个:

 sudo gem install -n /usr/local/bin <gem_name> -- --use-system-libraries --with-xml2-include=/usr/include/libxml2 --with-xml2-lib=/usr/lib/ 

具体来说,我在OS X El Capitan上安装nokogiri gem v 1.6.8时遇到了一个问题

这最后为我工作:

 sudo gem install -n /usr/local/bin nokogiri -- --use-system-libraries --with-xml2-include=/usr/include/libxml2 --with-xml2-lib=/usr/lib/ 

为了确保你已经安装了libxml2和libxslt,你可以这样做:

 brew install libxml2 libxslt brew install libiconv 

然后检查以确保您安装了xcode命令行工具:

 xcode-select --install 

应该返回这个错误:

 xcode-select: error: command line tools are already installed, use "Software Update" to install updates 

我不喜欢用sudo安装东西。 一旦你开始sudo你不能停止..

尝试授予Gems目录的权限。

 sudo chown -R $(whoami) /Library/Ruby/Gems/2.0.0 
 sudo chown -R $(whoami):admin /usr/local 

这将给权限回来(家酿在那里安装ruby)

在安装El Capitan之后,我遇到了同样的问题,我尝试将sass和compass安装到symfony项目中,以下命令返回以下错误:

$ sudo gem install compass

错误:安装指南针时出错:错误:无法构buildgem原生扩展。

 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb 

检查ffi.h … /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/mkmf.rb:434:in`try_do':编译器未能生成可执行文件。 (RuntimeError)

所以我然后试着安装sass:$ sudo gem install sass

得到了相同的错误消息,一些谷歌search后,我设法安装sass使用以下命令:

$ sudo gem install -n / usr / local / bin sass

上面的工作与我安装sass,但没有安装指南针的工作。 我读了某个地方的人打开了一个xcode的实例,然后再次closures它,然后成功地运行了相同的命令,之后为他们工作。 我试图打开xcode,但提示消息说安装的xcode版本与El Capitan不兼容。 于是我从app store更新了xcode,重新运行了下面的命令,这次成功运行:

$ sudo gem install -n / usr / local / bin compass

那时我可以运行$ compass init

我现在有我所有的gem工作,可以继续build立一些可爱的sass的东西:)

我必须rm -rf ./vendor然后再次运行bundle install

  1. 通过重新启动进入恢复HD,同时保持⌘R。
  2. 打开terminal(从“实用程序”菜单中)。
  3. 在terminal中运行以下命令:

    csrutil禁用

  4. 重新开始。

注意:已经在https://apple.stackexchange.com/questions/204312/cant-install-bundler-using-gem