不能在 OS X“ El Capitan”上安装 gems

我不能安装和运行 fakes3的宝石上埃尔船长测试5。

我试过:

sudo gem install fakes3
ERROR:  While executing gem ... (Errno::EPERM)
Operation not permitted - /usr/bin/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.
109682 次浏览

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

然而,我们中的许多人只是想要一些刚好作为 gem 发布的二进制文件(例如 fakes3cocoapodsxcpretty...)。我绝对不想管理一个单独的红宝石。以下是一些更快捷的选择:

选项1: 继续使用 sudo

如果您希望这些工具在全球范围内安装,那么使用 sudo可能没有问题。

问题是这些二进制文件被安装到 /usr/bin中,/usr/bin是从 El Capitan 开始的 禁止入内。但是,您可以将它们安装到 /usr/local/bin中。那是 自酿的安装它的东西的地方,所以 可能吧已经存在了。

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

宝石将被安装到 /usr/local/bin和每个用户在您的系统可以使用他们,如果它在他们的 路径

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

下面将在 ~/.gem中安装 gem 并将二进制文件放在 ~/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

在我的例子中,我必须使用 酿酒重新安装 Ruby。这似乎解决了问题,因为我可以再次安装宝石。

brew install ruby

在此之后,您需要注销并重新登录,无论是以图形方式还是仅仅重新启动终端。

这是我使用过的解决方案:

注意: 这个修复是为了指南针,正如我在另一个 SO 问题上写的那样,但是我使用了相同的过程来恢复所有终端进程的功能,显然您正在安装的 gems 是不同的,但是过程是相同的。

我也有同样的问题。这是由于苹果公司实施了系统完整性保护(SIP)。你得先把它关掉。

在恢复模式下重启:

重新启动并保持 命令 + R直到你看到苹果的标志。

一旦启动,从顶部栏选择 工具 > 终端机

类型: csrutil disable

然后输入: reboot

一旦重启

打开终端备份并输入命令:

sudo gem uninstall bundler

sudo gem install bundler

sudo gem install compass

sudo gem install sass

sudo gem update --system

失败的单个宝石需要修复,因此对于每个宝石都需要做以下工作:

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

sudo gem pristine ffi --version 1.9.3

继续阅读需要修复的宝石清单。总的来说,你大约需要10分钟的时间来修理它,但是你会有终端指令来操作指南针。

截图

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

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

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

解决方案一:

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

这将修复对 /usr/local目录的权限,这将帮助 gem installbrew 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 update
$ brew upgrade

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

$ 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 对我来说很有用,但是之后我不得不重新安装我所有的 gems:

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 install Rome

安装指南针时出错: 错误: 未能构建 gem 本机扩展。

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

在‘ try _ do’中检查 ffi.h.../System/Library/Framework/Ruby.Framework/Versions/2.0/usr/lib/ruby/2.0.0/mkmf.rb: 434: 编译器未能生成可执行文件。(RuntimeError)

因此,我试图安装 sass: $sudo gem install sass

得到了同样的错误消息,经过一番搜索之后,我设法使用以下命令安装了 sass:

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

上面的工作为我安装电梯,但没有工作为安装指南针。我读到有人在某个地方打开了 xcode 的一个实例,然后又关闭了它,然后成功地运行了相同的命令,之后这个命令对他们有效。 我试图打开 xcode,但是收到一条消息提示说所安装的 xcode 版本与 El Capitan 不兼容。 因此,我更新了应用程序商店中的 xcode,重新运行了下面的命令,这次运行成功了:

$sudo gem install-n/usr/local/bin 羅盘

然后我就可以在里面运行指南针了

现在我所有的宝石都可以工作了,可以继续构建一些可爱的无礼的东西了:)

如果您试图安装的 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

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

如前所述,这个问题来自 MacOSX 自“ El Capitan”以来的安全功能。

使用默认的系统 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 可用,这个目录应该在您的路径中可用。根据 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

然后关闭并重新加载您的终端或重新加载您的 .bash_profile.bashrc(. ~/.bash_profile)

你可能有两个选择:

  1. 如果您已经安装了 ruby 和 ails,您可以首先尝试运行以下命令:
    rvm fix-permissions
    
  2. 您可以完全卸载 Ruby,并重新安装在您的 ~目录即您的主目录中。

如果你使用自制程序,命令是:

brew uninstall ruby

对于没有自制程序的 Rails 卸载命令如下:

rvm remove

这应该通过运行命令重新安装最新的 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

这告诉我,我必须下载纱线,我没有为它保存输出。基本上,如果与我的操作系统有关,我会按照提示执行任何操作。

D