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

やりたいこと

gemでrubyをアップデート

gemでcocoapodsをインストール

 

詰まったところ

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

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

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

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

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

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

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

ちょっと探してみたら

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

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

 

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

 

アップデートしたい

[ruby]

sudo gem update –system

[/ruby]

 

エラーログ

[ruby]

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

[/ruby]

 

 

 

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

 

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

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

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

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

という機能である

[ruby]

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

[/ruby]

 

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

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

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

忍びない気がした

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

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

上記のコマンドでできる

 

[ruby]

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

[/ruby]

 

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

 

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

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

 

[ruby]

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:~

[/ruby]

参考になる記事はこれ

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

 

[urlpreviewbox url=”https://off.tokyo/blog/2016/12/20/pod-setup/”/]

 

[urlpreviewbox url=”https://hacknote.jp/archives/19804/”/]

藤沢瞭介(Ryosuke Hujisawa)
  • りょすけと申します。18歳からプログラミングをはじめ、今はフロントエンドでReactを書いたり、AIの勉強を頑張っています。off.tokyoでは、ハイテクやガジェット、それからプログラミングに関する情報まで、エンジニアに役立つ情報を日々発信しています!

未整理記事