web-dev-qa-db-ja.com

RVMはインストールされた新しいRubyバージョン(以前はHomebrewを使用してインストールされていました)を見つけることができません

私は初心者です。あなたがまったく愚かだと思うことを言ったり、したりしているのなら、すみません。わざとやっていません。

開始方法: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を再度インストールする必要がありますか?

1
Hanneke L

まず第一に、あなたが言うこともすることも愚かに聞こえることはありません。私たちは皆、ある時点で初心者でした。

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/bingemというプログラムを探しましたが、見つかりませんでした。次にそれを探しました。 /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を使用したときにインストールしなかったことを思い出します。常に最新バージョンをインストールするわけではありません。私は個人的にchrubyRuby-installを使用してRubyバージョンを管理することを好みます。

RVM、chruby、rbenvなどのツールの良いところは、同じコンピューターに複数のバージョンのRubyをインストールでき、一方から他方に簡単に切り替えることができることです。自作、一方、一度に管理できるRubyのバージョンは1つだけです。

0
monfresh

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インストールで問題が発生した理由はまだわかりません。

0
Hanneke L