かもメモ

自分の落ちた落とし穴に何度も落ちる人のメモ帳

Ruby gem install bundler で Permission denied エラーになった

こんにちは。今日は6月6日、D-dayだった日です。そんな日にエラーを出したのでメモ。
rbenv で Ruby のバージョンを管理していて、rbenv でインストールした別の Ruby のバージョンを切り替えた後に gem install bundler しようとしたら Permission denied @ rb_sysopen のエラーが出てしまいました。

rbenv でインストールしたものにパーミッションがおかしいモノがある

一応 通常通り rbenv でインストールしたものが /Users/{user_name}/.rbenv/ 内にあるか確認します。

$ which ruby
/Users/{user_name}/.rbenv/shims/ruby
$ which gem
/Users/{user_name}/.rbenv/shims/gem
$ rbenv versions
  system
  2.5.1
* 2.5.5 (set by /Users/{user_name}/.rbenv/version)

rbenv でインストールしたものが使われています。
どこかで system のものと間違って sudo gem install などで sudo でインストールしたものがあり、ユーザーにパーミッションがないディレクトリ / ファイルが出来てしまっているのが原因な可能性が高そうです。(つまり自分のせい…)

rbenv のディレクトリのパーミッションをなおす

$ sudo chown -R {user_name}:staff /Users/{user_name}/.rbenv
パーミッションの確認
$ cd ~/User/.rbenv
$ ls -la
total 8
drwxr-xr-x   5 {user_name}  staff   160  6  9  2018 .
drwxr-xr-x+ 70 {user_name}  staff  2240  6  6 17:58 ..
drwxr-xr-x  75 {user_name}  staff  2400  6  6 18:37 shims
-rw-r--r--   1 {user_name}  staff     6  6  4 10:21 version
drwxr-xr-x   4 {user_name}  staff   128  5 27 15:25 versions

ユーザー名が表示されていればOK

gem のアップデートと bundler の再インストール、
$ gem update
$ gem install bundler

エラー無く実行されればOK 🎉

教訓

rbenv で新ストールした Ruby を使っている時は sudo gem install を使ってはいけない。


[参考]

スラスラ読める Rubyふりがなプログラミング (ふりがなプログラミングシリーズ)

スラスラ読める Rubyふりがなプログラミング (ふりがなプログラミングシリーズ)

D-dayといえば バンド・オブ・ブラザース 時々アマプラで見返してしまう。