LoginSignup

エンジニア転職をうまく進めるためのポイントとは?PR

1000件以上のユーザー転職事例をもとに解説!

698
488

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
488
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
nishina555

@nishina555(nishina)

Webデベロッパーです。現在は業務委託で仕事をしています。サーバーサイドがメイン。Rails/React/Redux/Node/GraphQL/AWS。大学院時代は自然言語処理の研究を行っていました。記事に関する質問は内容によってはお答え致しかねますのでご了承ください。

Comments

asm
@asm

rbenvのインストールをsudo付きでやってしまったのか
sudo rbenv install {version}とやったのかはわからないけど
rbenv管理下のフォルダのオーナーがrootになってる事例も見たことあります。

2
nishina555
@nishina555(nishina)

@asm
なるほど、そういったケースもあるんですね。
rbenvでrubyを管理していてもroot権限でしか利用ができなければパーミッションエラーが起きてしまうってことですね。
共有ありがとうございます!

1
koh_y1
@koh_y1

Macでsassがインストールできずにどん詰まりしていましたがこちらで解決しました。ありがとうございます。

1
nishina555
@nishina555(nishina)

@koh_y1 ご丁寧にありがとうございます。参考になったようでよかったです!

1
nishina555
@nishina555(nishina)

@alt 編集リクエストありがとうございました。 consoleよりもzshを指定したほうがシンタックスハイライト的に良さそうだったので、zshを指定するように修正しました。

2
inusukiii
@inusukiii

sassコマンドを入力したら

Ignoring ffi-1.9.23 because its extensions are not built. Try: gem pristine ffi --version 1.9.23

とエラーが出てしまい。

Try: ~~のコマンドもパーミッションエラーで受け付けてもらえなかったので、こちら参考になりました。

むしろ、rbenvでinstallまだしていなかったんだな。。

1
nishina555
@nishina555(nishina)

@missyyy フィードバックありがとうございます。問題解決したようでよかったです。

1
19970307taishi
@19970307taishi

冒頭の「システムのRuby」とはどういった意味でしょうか。

0
Harxki
@Harxki(Haruki)

パスを追記してシェル再起動してもシステムのrubyとgemを参照してしまうんですが、どうしたら良いですか?

0
nishina555
@nishina555(nishina)

@HomMarkHunt ありがとうございます。
今まで全然気が付かれていなかったみたいですね。編集リクエスト助かりました。

記事参考になりました、ありがとうございます
ちいさなtypo見つけたので修正しておきます
by HomMarkHunt 2022/06/17 23:11

1

Let's comment your feelings that are more than good

Being held Article posting campaign

そうだ!TestRailを使ってみよう!!

~
View details

markdown AIを使った記事を投稿しよう!

~
View details
698
488

Login to continue?

Login or Sign up with social account

Login or Sign up with your email address