web-dev-qa-db-ja.com

OS X "El Capitan"にgemをインストールできない

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.
180
Himanshu Yadav

免責事項:@theTinManや他のRuby開発者は、gemをインストールするときにSudoを使わないことをしばしば指摘し、 RVM のようなものを指摘します。 Ruby開発をするときそれは絶対に本当です。さあ、それを使ってください。

しかし、私たちの多くは、たまたまバイナリをgemとして配布したいと思っています(例:fakes3cocoapodsxcpretty…)。私は間違いなく別のRubyを管理することに煩わされたくはありません。ここにあなたのより速いオプションがあります:

オプション1:Sudoを使い続ける

これらのツールをグローバルにインストールしたい場合は、Sudoを使用しても問題ありません。

問題はこれらのバイナリが/usr/binにインストールされていることです。これはEl Capitanから off-limits です。ただし、代わりにそれらを/usr/local/binにインストールすることができます。それが Homebrew がそのものをインストールするところです、それでそれはおそらく 既に存在します。

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

Gemは/usr/local/binにインストールされ、あなたのシステム上のすべてのユーザーは PATH に入っていればそれを使うことができます。

オプション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

ヒント:Ruby開発者向けドキュメントの生成をスキップするために--no-documentを投入することもできます。)

329
nschum

私の場合は、 Brew を使用してRubyを再インストールする必要がありました。私は再びgemをインストールできるので、これで問題は解決したようです。

brew install Ruby

その後、ログアウトしてログインする必要があります。グラフィカルに、または単に端末を再起動してください。

これはOS Xの新しいセキュリティ機能 "El Capitan"が原因です。 Sudoの代わりに--user-installを追加してみてください。

$ gem install *** --user-install

たとえば、fake3をインストールしたい場合は、次のようにします。

$ gem install fake3 --user-install
37
Shao Wenbin
Sudo gem install -n /usr/local/bin cocoapods

これを試して。それは間違いなく動作します。

24

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
18
astrasleepz

OS X El Capitainにアップグレードすると、/ usr/localディレクトリは複数の方法で変更されます。

  1. ユーザーのアクセス許可がリセットされます(これは自作を使用しているユーザーにとっても問題です)。
  2. バイナリとシンボリックリンクが削除または変更された可能性があります。

[編集]やるべき予備的なこともあります:Xcodeをアップグレードしてください...

#1の解決策:

$ 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>
10
foobar

言われているように、問題は「El Capitan」以来のMac OSXのセキュリティ機能から来ます。

デフォルトのシステムRubyを使用すると、インストールプロセスは/Library/Ruby/Gems/2.0.0ディレクトリで行われますが、これはユーザーには利用できず、エラーが発生します。

Ruby環境のパラメータは、次のコマンドで確認できます。

$ gem env

INSTALLATION DIRECTORYとUSER INSTALLATION DIRECTORYがあります。デフォルトのインストールディレクトリではなくユーザーインストールディレクトリを使用するには、Sudoを使用するのではなく--user-installパラメータを使用します。これは推奨される方法ではありません。

$ gem install myGemName --user-install

その過程で権利の問題はもうないはずです。その後、gemはユーザディレクトリにインストールされます。~/.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

3
emchateau

RVMを再インストールすることは私のために働きました、しかし私はその後私の宝石の全てを再インストールしなければなりませんでした:

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

あなたがインストールしようとしている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
1

これが私が使用した解決策です。

注:私が別のSO質問で書いたように、この修正はコンパス用ですが、同じプロセスを使用してすべての端末プロセスに機能を復元しています。しかし、プロセスは同じです。

私は同じ問題を抱えていました。これはアップルがシステムインテグリティ保護(SIP)を実装しているためです。あなたはまずそれを無効にする必要があります...

リカバリモードで再起動します:

Appleロゴが表示されるまで Command + R を再起動して押したままにします。

起動したら、トップバーから 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

失敗した個々の宝石は修正する必要があるので、それぞれについて次のようにします。

私のマシンでは、これが機能していない最初の依存関係だったので、リストしました

Sudo gem pristine ffi --version 1.9.3

修復する必要がある宝石のリストを進めます。全部であなたはそれを直すために約10分を見ています、しかしあなたはコンパスが働くための端末コマンドを持つでしょう。

スクリーンショット

1
jbalesteri

私はEl Capitanをインストールした後に同じ問題に遭遇しました、私はsymfonyプロジェクトにsassとcompassをインストールしようとしました、以下のコマンドは以下のエラーを返しました:

$ 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 install sass

私が次のコマンドを使用してsassをインストールすることに成功したいくつかのグーグルの後、同じエラーメッセージを得ました:

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

上記はsassをインストールすることで私のために働きましたが、コンパスをインストールするためには動きませんでした。私はどこかに誰かがxcodeのインスタンスを開いてからそれを再び閉じた後に同じコマンドをうまく実行したことを読みました。 xcodeを開こうとしましたが、インストールされているxcodeのバージョンがEl Capitanと互換性がないというメッセージが表示されました。それで、私はそれからapp storeからxcodeを更新して、今回は首尾よく走った以下のコマンドを再走らせました:

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

私は$ compass initを実行することができました

私は今、私のすべての宝石を動かしていて、そしていくつかのすばらしいsassものを造ることに進むことができます:)

0
Barry Poore

rm -rf ./vendorにしてからbundle installをもう一度実行しなければなりませんでした。

0
VoA