MacOS インストール時の Gem::FilePermissionError

Mac で Discourse(開発用)をインストールしようとした際、以下のエラーが発生します。

ERROR:  While executing gem ... (Gem::FilePermissionError)
    /Library/Ruby/Gems/2.6.0 ディレクトリへの書き込み権限がありません。

これを解決する方法を教えてください。
よろしくお願いいたします。

「いいね!」 1

Discourse のインストールスクリプトを実行しましたか?

macOS Catalina を使用していますか?その場合、Discourse がシステムバージョンの Ruby を使用しようとしていることが問題のようです。これを避けるために、rbenv などのツールを使用して Ruby のバージョンを設定することをお勧めします。

「いいね!」 1

macOS Catalina を使用しています。そのスクリプトを実行しましたが、おそらく既にインストールされていたため、途中で失敗しました。

which rbenv の出力を貼り付けていただけますか?

カスタムの .bashrc または .zshrc はお持ちですか?

「いいね!」 1

/usr/local/bin/rbenv

正直よくわかりません。ないと思うのですが、もしかしたらあるかもしれません。

Discourseディレクトリにcdして、which rubyの出力を共有してください。

「いいね!」 1

おっと、気づきませんでした。実行したら /usr/bin/ruby になりました。

はい、Discourse でシステム Ruby を使用しているため、その問題が発生しています。

echo $PATH と入力して PATH 変数を確認してください。/Users/<your username>/.rbenv/bin/Users/<your username>/.rbenv/shims がリストされているはずです。

もしリストされていない場合は、シェル設定ファイル .bashrc または .zshrc に追加してください。ZSH の場合は、以下のように追加します:export PATH=/path/number/1:/path/number/2:$PATH

リストされている場合は、順序を確認してください。チェーンの後方にある場合、システム Ruby よりも先に読み込まれていない可能性が高く、Discourse でシステム Ruby が使用されています。上記と同じ方法で、パスをチェーンの前方に移動できます。

「いいね!」 3

@david さんが開発環境の設定に Ruby のバージョンチェックを追加したと思っていたのですが? :thinking:

それはテーマ CLI のためのものだったと思います。

「いいね!」 2

ここに同様のチェックを追加する方法はありますか?

DiscourseではRubyのバージョン互換性を既に確認していると思います。ここで問題となっているのは、macOSにバンドルされているシステムレベルのRuby向けに、当社のDiscourseバンドルがGemをインストールできない点です。詳細については誤っている可能性もありますが、これはAppleがmacOS Catalinaで変更を加えたことに起因するものだと考えています。私も同様の問題に直面し、原因を特定するために相当なトラブルシューティングが必要でした。

「いいね!」 1
  1. OPと同じエラーが発生しました。

  2. これを読んでください:

  1. これは実際にはファイル権限のエラーではなく、インストーラーが間違った場所を見ていたのではないかと考えました。

  2. ターミナルを再起動すると.zshrcファイルが再読み込みされることを知っていたので、ターミナルを閉じて開き直しました。

  3. インストールスクリプトを再度実行したところ、このエラーは発生しなくなりました。

この問題は、インストールプロセス中に戦略的に配置されたターミナルのリフレッシュで解決できますか? :thinking: