LoginSignup
698
487

More than 1 year has passed since last update.

gem installでpermissionエラーになった時の対応方法

Last updated at Posted at 2018-11-25

おもむろにgemをインストールした際に以下のようなエラーに遭遇しました。

$ gem install foreman
Fetching: thor-0.19.4.gem (100%)
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /Library/Ruby/Gems/2.3.0 directory.

エラーログをみるとYou don't have write permissionsと書いてあります。

上記のようなエラーの原因ですが、結論からいうと、システムのrubyを利用しているため、権限不足でgemのインストールができない可能性が高いです。

ルート権限でシステムのRubyにインストールをしてもいいのですが、開発環境ではrbenvでrubyを管理することをおすすめします。

以下では、今回遭遇したエラーをrbenvでRubyを管理することで解決するまでの手順について説明をします。

現状確認

まずはgemやrubyがどのパスを指しているのか現状の確認をします。
以下の結果からわかるように/usr/binというシステムのパスを指していることがわかります。

$ which gem
/usr/bin/gem
$ which ruby
/usr/bin/ruby

rbenvでrubyを管理する

rbenvでrubyを管理するための手順について説明します。

まずはrbenvのインストールをします。

$ brew update
$ brew install rbenv ruby-build

rbenvで管理されているrubyのバージョンを確認します。
以下のように、現在のrubyはsystemを利用していることがわかります。

$ rbenv versions
* system (set by /Users/toshiharu.nishina/.rbenv/version)

rbenvの管理下にrubyをインストールします。
インストールできるrubyのバージョンは以下のコマンドで確認ができます。

$ rbenv install -l

今回は最新のRuby安定版である2.5.3(2018年11月現在)をインストールします。

$ rbenv install 2.5.3

インストール後もう一度以下のコマンドを叩いてみます。
先ほどインストールされた2.5.3というバージョンが新しく追加されていることがわかります。

$ rbenv versions
* system (set by /Users/toshiharu.nishina/.rbenv/version)
  2.5.3

2.5.3をglobalで利用するように変更します。
なお、アプリごとにrubyのバージョンを変更したい場合はrbenv localコマンドを利用します。

$ rbenv global 2.5.3

上記コマンドを実行後、rbenvで管理されたrubyに変更されます。

$ rbenv versions
  system
* 2.5.3 (set by /Users/toshiharu.nishina/.rbenv/version)

rbenvにパスを通すため、シェルの設定ファイル(.bashrcや.zshrc)に以下を追加します。

[[ -d ~/.rbenv  ]] && \
  export PATH=${HOME}/.rbenv/bin:${PATH} && \
  eval "$(rbenv init -)"

設定後確認

シェルを再起動後、もう一度gemとrubyのパスを確認してみます。
はじめはシステムのパスを指していましたが、以下のようにrbenvのパスを指していることがわかります。

$ which ruby
/Users/toshiharu.nishina/.rbenv/shims/ruby
$ which gem
/Users/toshiharu.nishina/.rbenv/shims/gem

rbenvでrubyを管理することで、もともとエラーになっていたgem install foremanを実行することができるようになりました。

さいごに

今回紹介したrbenvについては『複数のバージョン管理も楽々!rbenvを利用したruby管理方法チュートリアル』で詳細解説をしていまのでぜひご覧になってください!

ツイッター(@nishina555)でもプログラミングに関する情報発信をしているのでフォローしてもらえるとうれしいです!

698
487
10

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
698
487