私は初心者です。あなたがまったく愚かだと思うことを言ったり、したりしているのなら、すみません。わざとやっていません。
開始方法:gemをインストールしたかったのですが、次のエラーメッセージが表示されました。
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /Library/Ruby/Gems/2.3.0 directory
どういうわけか、私のシステムはまだMacOSに付属のRubyバージョンを使用しているため、この権限エラーが発生します。Homebrewを使用してインストールした新しくインストールされたバージョン2.6.1を使用する必要があります。 。
それで、インターネットの調査で、私はrvmをインストールし、Ruby 2.6.1をデフォルトにしようとしました。
~rvm --default use 2.6.1
Required Ruby-2.6.1 is not installed.
したがって、rvmはRuby 2.6.1がインストールされていません。しかし、homebrewはそれを主張しますisインストールされています:
~brew upgrade Ruby
Error: Ruby 2.6.1 already installed
自作Rubyをアンインストールし、rvm経由でRubyを再度インストールする必要がありますか?
まず第一に、あなたが言うこともすることも愚かに聞こえることはありません。私たちは皆、ある時点で初心者でした。
MacがHomebrewによってインストールされたRubyバージョンを自動的に認識しなかった理由は、デフォルトでは、コンピュータが特定のディレクトリで実行可能プログラムのみを検索するためです。ディレクトリのリストと順序コンピュータが検索するものはPATH
と呼ばれます。ターミナルでecho $PATH
と入力すると、ディレクトリのリストがコロンで区切られて表示されます。デフォルトでは、新しいmacOSインストールでは、リストは次のようになります。
/usr/bin:/bin:/usr/sbin:/sbin
Homebrewのインストール中に、新しいディレクトリ/usr/local/bin
が作成され、PATH
の先頭に追加されます。ただし、HomebrewでRubyをインストールすると、Rubyは/usr/local/opt/Ruby/bin
にインストールされ、PATH
に自動的に追加されません。これは言及されているのでわかります。 Rubyインストールの最後にHomebrewによって。確かに、メッセージは初心者にとってあまり意味がないかもしれません:
If you need to have Ruby first in your PATH run:
echo 'export PATH="/usr/local/opt/Ruby/bin:$PATH"' >> ~/.bash_profile
自作バージョンのRubyはPATH
になかったので、gem install [some gem]
と入力すると、コンピューターは最初に/usr/local/bin
でgem
というプログラムを探しましたが、見つかりませんでした。次にそれを探しました。 /usr/bin
にあり、システムgem
(macOSに付属するgem
のバージョン)がインストールされている場所であるため、これが見つかりました。
現在のターミナルセッションで使用されている特定のプログラムのバージョンを知りたい場合は、which
コマンドを使用できます。例えば:
which Ruby
which gem
これにより、コンピュータが最初にプログラムを見つけた場所がわかります。
正しいRubyバージョンを使用しているかどうかを確認するために使用できる別のコマンドは次のとおりです。
Ruby -v
このコマンドを実行した場合:
echo 'export PATH="/usr/local/opt/Ruby/bin:$PATH"' >> ~/.bash_profile
次に、変更を有効にするために新しいターミナルウィンドウまたはタブを開いた(またはsource ~/.bash_profile
を実行した)場合、Homebrew RubyディレクトリがPATH
の最初になります。つまり、コンピュータは最初にそこにgem
、そしてそれはRubyのHomebrewバージョンを使用したでしょう。
上記のコマンドを説明するために、一重引用符の間のすべてを取り、それ(>>
)をユーザーのルートディレクトリ(.bash_profile
)の~/
というファイルに追加します。新しいターミナルウィンドウまたはタブを開くたびに、.bash_profile
が読み取られ、そこで定義されているものがすべて使用されます。
同様に、RVMがRuby 2.6.1がHomebrewによってインストールされたことを認識できなかった理由は、RVMとHomebrewが2つの別々の場所にRubyお互いを知りません。RVMを最初にインストールしたとき、バージョン2.6.0をインストールしました。2.6.1をインストールしなかった理由はわかりませんが、過去にRVMを使用したときにインストールしなかったことを思い出します。常に最新バージョンをインストールするわけではありません。私は個人的にchruby
とRuby-install
を使用してRubyバージョンを管理することを好みます。
RVM、chruby、rbenvなどのツールの良いところは、同じコンピューターに複数のバージョンのRubyをインストールでき、一方から他方に簡単に切り替えることができることです。自作、一方、一度に管理できるRubyのバージョンは1つだけです。
Homebrewを使用してRubyをアンインストールしました。brew uninstall Ruby
次に、RVMを使用してRubyをインストールしてみました。rvm install Ruby
それはAlready installed Ruby-2.6.0. To reinstall use:
rvm reinstall Ruby-2.6.0
そこで、RVMで再インストールすることにしました。これでようやく問題が修正され、gemをインストールすることができました。ただし、RubyのHomebrewインストールで問題が発生した理由はまだわかりません。