gemのPermission deniedの解消

普通に考えてそりゃそうだというような問題。

$ gem install rails
Fetching: concurrent-ruby-1.0.5.gem (100%)
ERROR: While executing gem … (Errno::EACCES)
Permission denied @ rb_sysopen – /opt/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/cache/concurrent-ruby-1.0.5.gem

gemをユーザー権限で実行しようとした場合、rootでインストールしたgemは基本使えないことになっております。なので、これを使えるようにする手順です。

調査

gemもrbenvも使える状況であることが前提となります。

$ which gem
/opt/rbenv/shims/gem
$ rbenv versions
* 2.5.1 (set by /opt/rbenv/version)
$ which ruby
/opt/rbenv/shims/ruby
$ rbenv install -l 
Available versions:
  1.8.5-p52
  1.8.5-p113
....
  2.5.1
....

普通に使えそうです。

gem install rails でハマった話

要約すると、「/Users/(ユーザ名)/.rbenv/versions」配下にあるものは本来ユーザーアカウントの権限のものだが、何らかの時にsudoをつけてgem installを行うことでファイルへ書き込みする権限を失ってしまうことがある、とのこと。

ユーザー専用のRubyをrbenvで再インストール

Ruby on Railsの環境構築でインストールした手順をユーザー権限でもう一度行うような感じになります。ここでは2.5.1を入れます。(これもまたクソみたいに時間かかります。)

$ rbenv install 2.5.1
rbenv: /opt/rbenv/versions/2.5.1 already exists
continue with installation? (y/N) y
Downloading ruby-2.5.1.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.1.tar.bz2
Installing ruby-2.5.1...
....

gem installでpermission deniedされました
rubyコンパイル時にエラー

Last update: 2018.08.18 (土)