ホーム

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="http://hacknote.jp/archives/19804/"/]

Pocket
LinkedIn にシェア

エンジニアにおすすめできる本

Card image cap
リーダブルコード

より良いコードを書くためのシンプルで実践的なテクニック

Card image cap
Webを支える技術

HTTP,URI,HTML,そしてREST

Card image cap
誰でもPythonで作れる

儲かるAIとソフトウェアの作り方

Card image cap
プログラマが知るべき97のこと

現場で使える実践哲学のマスターピース

Card image cap
情熱プログラマー

時代を超えて。ソフトウェア開発者の幸せな生き方

Card image cap
アジャイルサムライ

プログラミング達人開発者への道

Card image cap
Rubyを作った男 まつもとゆきひろ

コードの世界 スーパー・プログラマになる14の思考法

ご提供 sponsor
 

Meee!(ミー)は、ビジネスからプライベート利用まで、個人のスキルを気軽に売り買いできるスキルマーケットです。カテゴリや居住地から、検索することが可能です。

 

ランゲージエクスチェンジは、ネイティブスピーカーと気軽にマッチングできる言語交換プラットフォームです。あなたの地元に住む外国人を探したり、留学や海外移住の前に、現地のネイティブスピーカーと繋がることもできます!

宣伝
 

りょすけトークchは、仕事や私生活をより豊にするYouTubeチャンネルです。文献(本、映画、論文)から役に立つ情報をまとめ、生涯にわたり役に立つ哲学をお届けしています。是非、チャンネル登録してみてね

-ホーム

Copyright© offブログ! , 2021 All Rights Reserved Powered by AFFINGER5.