无法在 OS X "El Capitan" 上安装 gems
Can't install gems on OS X "El Capitan"
我无法在 El Capitan Beta 5 上安装和 运行 fakes3
gem。
我试过了:
sudo gem install fakes3
ERROR: While executing gem ... (Errno::EPERM)
Operation not permitted - /usr/bin/fakes3
然后我尝试用 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.
免责声明: @theTinMan 和其他 Ruby 开发人员经常指出在安装 gem 时不要使用 sudo
并指向事物喜欢 RVM。在进行 Ruby 开发时,这是绝对正确的。继续使用它。
然而,我们中的许多人只想要一些恰好作为 gem 分发的二进制文件(例如 fakes3
、cocoapods
、xcpretty
…)。我绝对不想费心去管理一个单独的 ruby。以下是您更快的选择:
选项 1:继续使用 sudo
如果您希望全局安装这些工具,使用 sudo
可能没问题。
问题是这些二进制文件安装到 /usr/bin
中,off-limits since El Capitan. However, you can install them into /usr/local/bin
instead. That's where Homebrew install its stuff, so it probably 已经存在。
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 开发人员文档。)
您必须将 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
就我而言,我不得不使用 Brew 重新安装 Ruby。这似乎已经解决了问题,因为我可以再次安装 gems。
brew install ruby
在此之后,您需要注销并重新登录,可以图形方式登录,也可以只重新启动终端。
这是我用过的解决方案:
注意:这个修复是针对指南针的,因为我在另一个 SO 问题上写了它,但是我使用了相同的过程来恢复所有终端进程的功能,显然你安装的 gem 是不同的,但是过程是一样的。
我遇到了同样的问题。这是由于 Apple 实施了系统完整性保护 (SIP)。你必须先禁用那个...
以恢复模式重启:
重新启动并按住 Command + R 直到看到苹果徽标。
一旦启动 select Utilities > Terminal 从顶部栏。
类型:csrutil disable
然后输入:reboot
重启后
打开终端备份并输入命令:
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
继续浏览需要修复的宝石列表。总而言之,您需要大约 10 分钟的时间来修复它,但您将拥有指南针工作的终端命令。
看起来升级到 OS X El Capitain 时,/usr/local 目录以多种方式修改:
- 用户权限被重置(这也是使用 Homebrew 的人的问题)
- 二进制文件和 symlinks 可能已被删除或更改
[编辑] 还有一个初步的事情要做:升级 Xcode...
#1 的解决方案:
$ sudo chown -R $(whoami):admin /usr/local
这将修复 /usr/local
目录的权限,这将有助于 gem install
和 brew install|link|...
命令正常工作。
#2 的解决方案:
Ruby 基于问题
确保您已修复 /usr/local
目录的权限(参见上面的 #1)
首先尝试使用 :
重新安装您的 gem
sudo gem install <gemname>
请注意,它将安装指定 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
基于 Brew 的问题
更新 brew 并升级您的配方
$ brew update
$ brew upgrade
您可能还需要手动重新link其中一些
$ brew link <formula>
我不喜欢用 sudo 安装东西。
一旦开始使用 sudo 就停不下来了..
尝试授予 Gems 目录权限。
sudo chown -R $(whoami) /Library/Ruby/Gems/2.0.0
sudo gem install -n /usr/local/bin cocoapods
试试这个。它肯定会起作用。
重新安装 RVM 对我有用,但之后我不得不重新安装所有的 gem:
rvm implode
\curl -sSL https://get.rvm.io | bash -s stable --ruby
rvm reload
那是因为 OS X "El Capitan" 的新安全功能。
尝试添加 --user-install
而不是使用 sudo:
$ gem install *** --user-install
例如,如果你想安装 fake3,只需使用:
$ gem install fake3 --user-install
sudo chown -R $(whoami):admin /usr/local
这将归还权限(Homebrew 在此处安装 ruby)
我 运行 安装 El Capitan 后遇到同样的问题,我尝试将 sass 和指南针安装到 symfony 项目中,以下命令返回以下错误:
$ sudo gem 安装指南针
错误:安装指南针时出错:
错误:无法构建 gem 本机扩展。
/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': 编译器生成可执行文件失败。 (运行时错误)
所以我随后尝试安装 sass:
$ sudo gem 安装 sass
收到相同的错误消息,经过一些谷歌搜索后,我设法使用以下命令安装了 sass:
$ sudo gem install -n /usr/local/bin sass
以上对我安装 sass 有效,但对安装指南针无效。我读到有人在某个地方打开了 xcode 的实例,然后再次关闭它,然后成功地 运行 相同的命令,之后对他们有用。
我试图打开 xcode,但系统提示我安装的 xcode 版本与 El Capitan 不兼容。
因此,我随后从应用商店更新了 xcode,重新 运行 以下命令,这次 运行 成功:
$ sudo gem install -n /usr/local/bin 指南针
然后我能够 运行 $ compass init
现在我的 gem 都在工作了,可以继续构建一些可爱的 sass 东西 :)
如果您尝试安装的 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
应该return这个错误:
xcode-select: error: command line tools are already installed, use "Software Update" to install updates
我不得不 rm -rf ./vendor
然后 运行 再 bundle install
。
如前所述,问题来自 Mac OSX 的安全功能,因为 "El Capitan"。
使用默认系统 Ruby,安装过程发生在用户不可用的 /Library/Ruby/Gems/2.0.0
目录中并给出错误。
您可以使用命令
查看您的 Ruby 环境参数
$ gem env
有一个安装目录和一个用户安装目录。要使用用户安装目录而不是默认安装目录,您可以使用 --user-install
参数代替使用 sudo
,这绝不是推荐的做法。
$ gem install myGemName --user-install
过程中应该不会再有任何配股了。然后将 gem 安装在用户目录中:~/.gem/Ruby/2.0.0/bin
但是要使安装的 gem 可用,该目录应该在您的路径中可用。根据 Ruby’s faq,您可以将以下行添加到您的 ~/.bash_profile
或 ~/.bashrc
if which ruby >/dev/null && which gem >/dev/null; then
PATH="$(ruby -rubygems -e 'puts Gem.user_dir')/bin:$PATH"
fi
然后关闭并重新加载您的终端或重新加载您的 .bash_profile
或 .bashrc
(. ~/.bash_profile
)
您可能有两个选择:
- 如果您已经安装了 ruby 和 rails,您可以先尝试 运行ning 命令:
rvm fix-permissions
- 您可以完全卸载 ruby,然后在您的
~
目录(即主目录)中重新安装。
如果您使用的是自制软件,则命令为:
brew uninstall ruby
对于 rails 在没有自制程序的情况下卸载命令是:
rvm remove
这应该通过 运行ning 命令重新安装最新的 ruby:
curl -L https://get.rvm.io | bash -s stable --rails<br>
Mac 出厂安装了 2.6.3,这是必需的...如果没有 运行 此命令:
rvm install "ruby-2.6.3"
然后:
gem install rails
最后你会收到一些错误消息,说你必须添加一些其他的包...
只要确保您在安装时位于主 ~
目录中,这样权限就不会成为问题,但以防万一...
我又是运行:
rvm fix-permissions
和:
rvm debug
告诉我必须下载 yarn,我没有保存它的输出。基本上,如果它与我的 OS.
有关,我会按照提示告诉我的去做。
-D
我无法在 El Capitan Beta 5 上安装和 运行 fakes3
gem。
我试过了:
sudo gem install fakes3
ERROR: While executing gem ... (Errno::EPERM)
Operation not permitted - /usr/bin/fakes3
然后我尝试用 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.
免责声明: @theTinMan 和其他 Ruby 开发人员经常指出在安装 gem 时不要使用 sudo
并指向事物喜欢 RVM。在进行 Ruby 开发时,这是绝对正确的。继续使用它。
然而,我们中的许多人只想要一些恰好作为 gem 分发的二进制文件(例如 fakes3
、cocoapods
、xcpretty
…)。我绝对不想费心去管理一个单独的 ruby。以下是您更快的选择:
选项 1:继续使用 sudo
如果您希望全局安装这些工具,使用 sudo
可能没问题。
问题是这些二进制文件安装到 /usr/bin
中,off-limits since El Capitan. However, you can install them into /usr/local/bin
instead. That's where Homebrew install its stuff, so it probably 已经存在。
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 开发人员文档。)
您必须将 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
就我而言,我不得不使用 Brew 重新安装 Ruby。这似乎已经解决了问题,因为我可以再次安装 gems。
brew install ruby
在此之后,您需要注销并重新登录,可以图形方式登录,也可以只重新启动终端。
这是我用过的解决方案:
注意:这个修复是针对指南针的,因为我在另一个 SO 问题上写了它,但是我使用了相同的过程来恢复所有终端进程的功能,显然你安装的 gem 是不同的,但是过程是一样的。
我遇到了同样的问题。这是由于 Apple 实施了系统完整性保护 (SIP)。你必须先禁用那个...
以恢复模式重启:
重新启动并按住 Command + R 直到看到苹果徽标。
一旦启动 select Utilities > Terminal 从顶部栏。
类型:csrutil disable
然后输入:reboot
重启后
打开终端备份并输入命令:
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
继续浏览需要修复的宝石列表。总而言之,您需要大约 10 分钟的时间来修复它,但您将拥有指南针工作的终端命令。
看起来升级到 OS X El Capitain 时,/usr/local 目录以多种方式修改:
- 用户权限被重置(这也是使用 Homebrew 的人的问题)
- 二进制文件和 symlinks 可能已被删除或更改
[编辑] 还有一个初步的事情要做:升级 Xcode...
#1 的解决方案:
$ sudo chown -R $(whoami):admin /usr/local
这将修复 /usr/local
目录的权限,这将有助于 gem install
和 brew install|link|...
命令正常工作。
#2 的解决方案:
Ruby 基于问题
确保您已修复 /usr/local
目录的权限(参见上面的 #1)
首先尝试使用 :
重新安装您的 gemsudo gem install <gemname>
请注意,它将安装指定 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
基于 Brew 的问题
更新 brew 并升级您的配方
$ brew update
$ brew upgrade
您可能还需要手动重新link其中一些
$ brew link <formula>
我不喜欢用 sudo 安装东西。 一旦开始使用 sudo 就停不下来了..
尝试授予 Gems 目录权限。
sudo chown -R $(whoami) /Library/Ruby/Gems/2.0.0
sudo gem install -n /usr/local/bin cocoapods
试试这个。它肯定会起作用。
重新安装 RVM 对我有用,但之后我不得不重新安装所有的 gem:
rvm implode
\curl -sSL https://get.rvm.io | bash -s stable --ruby
rvm reload
那是因为 OS X "El Capitan" 的新安全功能。
尝试添加 --user-install
而不是使用 sudo:
$ gem install *** --user-install
例如,如果你想安装 fake3,只需使用:
$ gem install fake3 --user-install
sudo chown -R $(whoami):admin /usr/local
这将归还权限(Homebrew 在此处安装 ruby)
我 运行 安装 El Capitan 后遇到同样的问题,我尝试将 sass 和指南针安装到 symfony 项目中,以下命令返回以下错误:
$ sudo gem 安装指南针
错误:安装指南针时出错: 错误:无法构建 gem 本机扩展。
/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': 编译器生成可执行文件失败。 (运行时错误)
所以我随后尝试安装 sass: $ sudo gem 安装 sass
收到相同的错误消息,经过一些谷歌搜索后,我设法使用以下命令安装了 sass:
$ sudo gem install -n /usr/local/bin sass
以上对我安装 sass 有效,但对安装指南针无效。我读到有人在某个地方打开了 xcode 的实例,然后再次关闭它,然后成功地 运行 相同的命令,之后对他们有用。 我试图打开 xcode,但系统提示我安装的 xcode 版本与 El Capitan 不兼容。 因此,我随后从应用商店更新了 xcode,重新 运行 以下命令,这次 运行 成功:
$ sudo gem install -n /usr/local/bin 指南针
然后我能够 运行 $ compass init
现在我的 gem 都在工作了,可以继续构建一些可爱的 sass 东西 :)
如果您尝试安装的 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
应该return这个错误:
xcode-select: error: command line tools are already installed, use "Software Update" to install updates
我不得不 rm -rf ./vendor
然后 运行 再 bundle install
。
如前所述,问题来自 Mac OSX 的安全功能,因为 "El Capitan"。
使用默认系统 Ruby,安装过程发生在用户不可用的 /Library/Ruby/Gems/2.0.0
目录中并给出错误。
您可以使用命令
查看您的 Ruby 环境参数$ gem env
有一个安装目录和一个用户安装目录。要使用用户安装目录而不是默认安装目录,您可以使用 --user-install
参数代替使用 sudo
,这绝不是推荐的做法。
$ gem install myGemName --user-install
过程中应该不会再有任何配股了。然后将 gem 安装在用户目录中:~/.gem/Ruby/2.0.0/bin
但是要使安装的 gem 可用,该目录应该在您的路径中可用。根据 Ruby’s faq,您可以将以下行添加到您的 ~/.bash_profile
或 ~/.bashrc
if which ruby >/dev/null && which gem >/dev/null; then
PATH="$(ruby -rubygems -e 'puts Gem.user_dir')/bin:$PATH"
fi
然后关闭并重新加载您的终端或重新加载您的 .bash_profile
或 .bashrc
(. ~/.bash_profile
)
您可能有两个选择:
- 如果您已经安装了 ruby 和 rails,您可以先尝试 运行ning 命令:
rvm fix-permissions
- 您可以完全卸载 ruby,然后在您的
~
目录(即主目录)中重新安装。
如果您使用的是自制软件,则命令为:
brew uninstall ruby
对于 rails 在没有自制程序的情况下卸载命令是:
rvm remove
这应该通过 运行ning 命令重新安装最新的 ruby:
curl -L https://get.rvm.io | bash -s stable --rails<br>
Mac 出厂安装了 2.6.3,这是必需的...如果没有 运行 此命令:
rvm install "ruby-2.6.3"
然后:
gem install rails
最后你会收到一些错误消息,说你必须添加一些其他的包...
只要确保您在安装时位于主 ~
目录中,这样权限就不会成为问题,但以防万一...
我又是运行:
rvm fix-permissions
和:
rvm debug
告诉我必须下载 yarn,我没有保存它的输出。基本上,如果它与我的 OS.
有关,我会按照提示告诉我的去做。-D