hilite
@hilite (Hilite Mocha)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

【Rails】bundle install時のBundler::PermissionError

Q&A

Closed

【解決したいこと】

bundle install で gem の'pg'をインストールしたいです。
renderでデプロイ予定で、本番環境ではPostgreSQLを使用したいため。

Ruby 2.6.8
bundler 2.4.6

renderでデプロイするにあたり、まずpostgresqlをbrewでinstallしました。
versionは以下の通りです。

% psql --version
psql (PostgreSQL) 14.7 (Homebrew)

最近、bundlerのversionを2.1.4 -> 2.4.6にしたからなのか
以前開発したアプリケーションではbundle installできていたのに、
なぜか今回はできない・・・。

エラーは以下の通りです。

Bundler::PermissionError: There was an error while trying to create
`/Users/myname/.rbenv/versions/2.6.8/lib/ruby/gems/2.6.0/extensions/x86_64-darwin-21/2.6.0/pg-1.4.5`.It is likely that you need
to grant executable permissions for all parent directories and write permissions for `/Users/myname/.rbenv/versions/2.6.8/lib/ruby/gems/2.6.0/extensions/x86_64-darwin-21/2.6.0`.

どうも書き込み権限がなさそうな意味だと思うので、下記コマンドで権限を確認しました。

% ls -l /Users/myname/.rbenv/versions/2.6.8/lib/ruby/gems/2.6.0/extensions/x86_64-darwin-21/2.6.0
total 0
drwxr-xr-x  5 root  staff  160  1 29 19:37 bcrypt-3.1.18
drwxr-xr-x  5 root  staff  160  1 29 19:39 bindex-0.8.1
drwxr-xr-x  5 root  staff  160  2  1 10:52 bootsnap-1.15.0
drwxr-xr-x  5 root  staff  160  2  1 10:53 bootsnap-1.16.0
drwxr-xr-x  5 root  staff  160  1 29 19:40 byebug-11.1.3
drwxr-xr-x  6 root  staff  192  1 29 19:40 date-3.3.3
drwxr-xr-x  6 root  staff  192  1 29 19:41 ffi-1.15.5
drwxr-xr-x  6 root  staff  192  1 29 19:41 kgio-2.11.4
drwxr-xr-x  6 root  staff  192  1 29 19:39 msgpack-1.6.0
drwxr-xr-x  6 root  staff  192  2  1 10:53 mysql2-0.5.5
drwxr-xr-x  6 root  staff  192  2  1 10:51 nio4r-2.5.8
drwxr-xr-x  6 root  staff  192  2  1 10:53 puma-3.12.6
drwxr-xr-x  6 root  staff  192  2 10 18:59 puma-6.0.2
drwxr-xr-x  6 root  staff  192  1 29 19:45 racc-1.6.2
drwxr-xr-x  6 root  staff  192  2  1 10:54 raindrops-0.20.0
drwxr-xr-x  5 root  staff  160  2  1 10:54 redcarpet-3.6.0
drwxr-xr-x  6 root  staff  192  2  1 10:54 unicorn-5.4.1
drwxr-xr-x  5 root  staff  160  2  1 10:52 websocket-driver-0.7.5

【仮説】
私の仮説としては、やはり『w』が抜けていて書き込み権限がないことが原因?だと思うのですが、
ここからどうやって権限を設定するのかわからない状態です。
または仮説そのものが間違っている?

初学者でまだこの辺りを理解できていない状態です・・・。
どなたかご指導頂けないでしょうか?

よろしくお願い致します。

0

2Answer

初心者が、基本も学ばず意味も理解せずsudoを乱用してファイルシステムの所有者がめちゃくちゃ。

1Like

Comments

  1. @hilite

    Questioner

    コメントありがとうございます。以前、謝ってsudoコマンド使ってしまいました。おっしゃる通り、理解できていない状態にあったと思います。学習し直します。

/Users/myname/.rbenv 以下のファイルは所有ユーザーが myname になっているべきですが、 root になっています。どこかのタイミングで sudo bundle install ...sudo gem install ... のように sudo をつけてコマンドを実行されたのではないでしょうか。基本的に rbenv を使っていれば sudo を使う必要はありません。

修復するにはファイルの所有ユーザーを myname に一括変更します。 chown -R myname /Users/myname/.rbenv を実行してください。

1Like

Comments

  1. @hilite

    Questioner

    コメントありがとうございます!
    ご指摘の通り、以前に謝ってsudoをつけて実行したことがあったと思います。
    私はsudoの意味や正しい使い方を学び直す必要があると感じています。

    ご教授いただいたコマンドを実行したところ、以下のようになりました。(一部抜粋)
    ```
    chown: /Users/myname/.rbenv/versions/2.6.8/lib/ruby/gems/2.6.0/gems/bcrypt-3.1.18: Operation not permitted
    ```
    その後、改めてbundle install を実行しましたが、全く同じエラー文が出てきました。
    再度、『ls -l』で所有者の確認をしたところ、rootのまま変わっていませんでした。
    自分が学習するべき話ですが、もしもお力を借りれるのであればコメントよろしくお願い致します。
  2. 失礼しました、 sudo chown ... で実行してください。 root が所有しているファイルを変更するには sudo をつけて root ユーザーとして chown する必要があるからです。
  3. @hilite

    Questioner

    ありがとうございます!
    早速やってみたところroot -> mynameに変更できていました。そしてbundle installで'pg'をinstallすることができました。ありがとうございます。
    また、自分の勉強不足を反省して今後に活かしていきます。

Your answer might help someone💌