Rootlessを無効にしなくてもOperation not permittedは解決できる

やりたいこと

gemでrubyをアップデート

gemでcocoapodsをインストール

 

詰まったところ

gemをインストールする際に

sudo(ルート権限)なのにパーミッションエラーになるという問題に直面

その原因がルートレス機能であると判明

ネットに出回っている記事の中に

「リカバリーモードでルートレスを無効にする」

という記事がGoogle検索の上位に表示される

でも、それってちょっと非推奨だよね

ちょっと探してみたら

ルートレスを解除しなくても全然解決できたので

わざわざルートレスを無効にしちゃう人が出ないように記事を書きます。

 

sudoしてるのにパーミッションエラー

 

アップデートしたい




sudo gem update --system


 

エラーログ





Updating rubygems-update
Fetching: rubygems-update-2.6.8.gem (100%)
ERROR: While executing gem ... (Errno::EPERM)
Operation not permitted - /usr/bin/update_rubygems
ranpuraitozeroichi-no-MacBook-Pro:~ lamplight02$ sudo gem update --system
Updating rubygems-update
ERROR: While executing gem ... (Errno::EPERM)
Operation not permitted - /usr/bin/update_rubygems


 

 

 

原因、(SIP:System Integrity Protection)「Rootless」

 

Rootlessという機能をなんとかしなければいけない。

Rootlessという機能は、簡単に説明すると

セキュリティを強化するために

sudoで/usr/bin/にはアクセスさせないぜ

という機能である



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


 

リカバリーモードを使わない解決方法

セキュリティ面を考えてルートレス機能があるわけで

それを無理やり無効にするのは

忍びない気がした

だから、他の方法で解決する方法を見つけた

sudo gem update –system -n /usr/local/bin

上記のコマンドでできる

 



sudo gem update --system -n /usr/local/bin
Updating rubygems-update
Successfully installed rubygems-update-2.6.8
Parsing documentation for rubygems-update-2.6.8
Installing ri documentation for rubygems-update-2.6.8
Installing darkfish documentation for rubygems-update-2.6.8
Parsing documentation for rubygems-update-2.6.8
Installing RubyGems 2.6.8
RubyGems 2.6.8 installed
Parsing documentation for rubygems-2.6.8
Installing ri documentation for rubygems-2.6.8

=== 2.6.8 / 2016-10-29

Bug fixes:

* Improve SSL verification failure message. Pull request #1751
  by Eric Hodel.
* Ensure `to_spec` falls back on prerelease specs. Pull request
  #1755 by André Arko.
* Update vendored Molinillo to 0.5.3. Pull request #1763 by
  Samuel Giddins.

=== 2.6.7 / 2016-09-26

Bug fixes:

* Install native extensions in the correct location when using the
  `--user-install` flag. Pull request #1683 by Noah Kantrowitz.
* When calling `Gem.sources`, load sources from `configuration`
  if present, else use the default sources. Pull request #1699
  by Luis Sagastume.
* Fail gracefully when attempting to redirect without a Location.
  Pull request #1711 by Samuel Giddins.
* Update vendored Molinillo to 0.5.1. Pull request #1714 by
  Samuel Giddins.

=== 2.6.6 / 2016-06-22

Bug fixes:

* Sort installed versions to make sure we install the latest version when
  running `gem update --system`. As a one-time fix, run
  `gem update --system=2.6.6`. Pull request #1601 by David Radcliffe.


------------------------------------------------------------------------------

RubyGems installed the following executables:
	/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/gem

Ruby Interactive (ri) documentation was installed. ri is kind of like man
pages for ruby libraries. You may access it like this:
  ri Classname
  ri Classname.class_method
  ri Classname#instance_method
If you do not wish to install this documentation in the future, use the
--no-document flag, or set it as the default in your ~/.gemrc file. See
'gem help env' for details.

RubyGems system software updated



 

同じようにcocoapodsもインストール

 

上記と同じような感じでcocoapodsも入れてしまおう

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

 


sudo gem install cocoapods -n /usr/local/bin/
Successfully installed xcodeproj-1.4.2
Fetching: fourflusher-2.0.1.gem (100%)
Successfully installed fourflusher-2.0.1
Fetching: gh_inspector-1.0.2.gem (100%)
Successfully installed gh_inspector-1.0.2
Fetching: cocoapods-1.1.1.gem (100%)
Successfully installed cocoapods-1.1.1
Parsing documentation for xcodeproj-1.4.2
Installing ri documentation for xcodeproj-1.4.2
Parsing documentation for fourflusher-2.0.1
Installing ri documentation for fourflusher-2.0.1
Parsing documentation for gh_inspector-1.0.2
Installing ri documentation for gh_inspector-1.0.2
Parsing documentation for cocoapods-1.1.1
Installing ri documentation for cocoapods-1.1.1
4 gems installed
ranpuraitozeroichi-no-MacBook-Pro:~




参考になる記事はこれ

コマンドの意味や、解決方法を説明してくれている

 

 


GUTE-URLS

Wordpress is loading infos from off

Please wait for API server guteurls.de to collect data from
off.tokyo/blog/2016/12/2...