Techioz Blog

Mac でのデフォルトの Ruby インストールのアップグレード

概要

ここで見た例のほとんどは、rvm または brew 用です。 Ruby がプリインストールされているようです (どのパッケージ マネージャーが担当するかは不明です)。別の言葉で言えば、brew または RVM によってインストールされません。

Location: /usr/bin/ruby
OS Version: 13.4
Current Ruby version: 2.6.3
Need: 2.7.0

このデフォルトのバージョンをアップグレードする方法はありますか?他の手段で Ruby をインストールすると競合が発生するのではないかと心配しています。

解決策

概要: システム Ruby は使用しないでください。これまで。

システムの Ruby インストールの一部を上書きする方法を尋ねています。そんなことしたらダメ。 Apple が提供するシステム Ruby インストールは、システム自体と「レガシー ソフトウェア」で使用するためのものです。ユーザーは使用できません。

macOS Catalina のリリース ノートの一部として、Apple による次の公式声明を参照してください。

さらに悪いことに、RubyGem はインストール プロセス中に任意のコードを実行する可能性があります。 sudo を使用して RubyGem をインストールすると (Ruby システムを上書きするにはこれを行う必要があります)、その Gem が完全な管理者権限でコンピュータ上で任意のコードを実行できるようになります。

では、どうするのが正しいのでしょうか?

正しい方法は、アクセスできるディレクトリに独自の Ruby をインストールし、システムの代わりにそのインストールを使用することです。

これを行うにはさまざまな方法があります。個人的には、Homebrew をパッケージ マネージャーとして使用しています。ただし、私は Ruby 式を直接使用しません。代わりに、rbenv 式を使用して rbenv をインストールして Ruby インストールを管理し、ruby-install 式を使用して Ruby 実装をインストールするために Ruby-install をインストールします。

次に、rbenv install を使用して特定の Ruby 実装の特定のバージョンをインストールし、rbenv global を使用してデフォルトで使用するバージョンを設定し、gem install を使用してこの特定のバージョンの RubyGems をインストールします。

しかし、それはあくまで一つの方法です。 Ruby は、Homebrew、MacPorts、または Fink を使用してインストールできます。 Ruby を自分でコンパイルすることもできます。 Ruby-install または Ruby-build を使用できます。 RVM または asdf を使用できます。これらはいずれも手動でインストールすることも、Homebrew、MacPorts、または Fink を通じてインストールすることもできます。

それはあなたとあなたの要件次第です。これらはすべて同じではありません。たとえば、ruby-install と Ruby-build は Ruby をインストールするためのものです。 chruby と rbenv は、複数の Ruby インストール間を切り替えるためのものです。 RVM はこれら両方のことを行います。 Ruby-install がインストールされている場合は、rbenv でもインストールできます。 asdf は、複数のプログラミング言語の複数の実装をインストールして切り替えることができます。つまり、RVM と同じことができますが、Ruby だけではありません。 Erlang、Python、PHP、Swift、SML/NJ、Chez Scheme、SBCL、Zig、Raku、Scala、Rust、LFE、Perl、Java、PowerShell、.NET、Elixir、Lua、PureScript、Elm、D、Lean もサポートしています、Crystal、Kotlin、Haskell、Logtalk、Groovy、OCaml、Mercury、Go、Nim、Haxe、Idris、Io、Julia など多数。