MacOS 10.13.xでコマンドgem install bundler
を使用すると、エラーはYou don't have write permissions for the /Library/Ruby/Gems/2.3.0 directory.
になります。
$ gem install bundler
Fetching: bundler-1.16.2.gem (100%)
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /Library/Ruby/Gems/2.3.0 directory.
自分の質問に回答したのか、それがあなたが推奨する解決策なのか、オンラインで検索したときに見つけたのかはわかりません。どちらの方法でも、Sudo
を使用してgemをインストールすることはお勧めしません。元に戻すことができない可能性がある問題が発生する可能性があるためです。
このアクセス許可エラーが発生する理由は、macOSがMacにインストールされているRubyバージョンを変更できないためです。Macにプレインストールされているオープンソースツールの特定のバージョンApple=のみが管理することを意図しています。アクセス権エラーは理由があります。Sudo
で上書きしたくない場合。
良い知らせは、Macに付属しているバージョンと干渉しない別のバージョンのRubyをインストールできることです。それが完了すると、PATH
が新しいRubyバージョンの場所がPATH
の最初になるように更新されました。PATH
はディレクトリのリストを参照し、コンピュータはそれらを検索して実行可能プログラムを見つけます。ターミナルでecho $PATH
と入力すると、コロンで区切られたディレクトリのリストが表示されます。次のようになります:
/usr/bin:/bin:/usr/sbin:/sbin
つまり、gem install bundler
と入力すると、コンピューターは/usr/bin
でgem
というプログラムを最初に検索します。これにより、Appleが提供するバージョンのRuby生きている、それはあなたにその許可エラーを与える。
Rubyの新しいバージョンをインストールした後、新しいRuby=の場所がリストの最初になるようにPATH
を更新すると、コンピューターは最初にそこを探します。 gem install bundler
を実行すれば動作します。
MacにRubyをインストールする方法はいくつかあります。私が推奨する最良の方法であり、そこにあるさまざまなインストール手順でもっと広く普及したいと思っているなら、 自動化されたスクリプト は、適切なRuby環境のセットアップ(PATH
の更新を含む)を行います。これにより、不適切な指示が原因でエラーが発生する可能性が大幅に減少します。ユーザーに一連のことを手動で行わせ、必要なすべての手順を理解するのはユーザーに任せます。
あなたが取ることができる他のルートは、すべてを手動で行い、最善を期待して余分な時間を費やすことです。まず、 Homebrew をインストールします。これにより、他のツールやmacOSアプリを簡単にインストールできます。
次に、Rubyの個別のバージョンをインストールする最も一般的な4つの方法は次のとおりです。
brew install Ruby
をインストールし、echo 'export PATH="/usr/local/opt/Ruby/bin:$PATH"' >> ~/.bash_profile
を実行してPATH
を更新し、次にsource ~/.bash_profile
を実行しますchruby および Ruby-install -私の個人的な推奨事項と、前述のスクリプトによって自動的にインストールされる推奨事項。これらはHomebrewでインストールできます。
rbenv -Homebrewでインストールできます
非システムバージョンのRubyを使用していることを確認するには、次のコマンドを実行します。
which Ruby
/usr/bin/Ruby
以外のはずです
Ruby -v
2.3.7以外のはずです。今日の2.6.1は最新のRubyバージョンです。
この新しいバージョンのRubyがインストールされたら、次はバンドルをインストールできます。
gem install bundler
前述のように、MacではシステムRubyはrootが所有しているため、Sudoを使用してそのバージョンに対してインストールを行うのは安全ではありません。そうすると、すべてのgemがrootとして実行され、セキュリティの悪夢になります。 しないでください
以前の回答はコマンドラインfooのビットを想定しており、追加された詳細は誰かに役立つかもしれないので、私の手順を説明します。
古いシステム提供のRubyを実行していることを再確認します
which Ruby
/usr/bin/Ruby
(それがシステムパスです)
Ruby -v
Ruby 2.3.7
(旧バージョン)
brew install Ruby
または brewを最初にインストール
その最後に、インストールは言う:
/usr/local/Cellar/Ruby/2.6.3
それをパスに表示するfirst
PATH=/usr/local/Cellar/Ruby/2.6.3/bin:$PATH
再確認
which Ruby
/usr/local/Cellar/Ruby/2.6.3/bin/Ruby
バージョンを再確認
Ruby --version
Ruby 2.6.3p62
パスの更新を永続的にします(そうしないと、Rubyを使用するたびにパスを更新する必要があります)
echo PATH=/usr/local/Cellar/Ruby/2.6.3/bin:$PATH >> ~/.bash_profile
Sudo gem install -n /usr/local/bin bundler