「インストール - Ruby」の版間の差分

(ページの作成:「== 概要 == <br><br> == Rubyのインストール == ==== パッケージ管理システムからインストール ==== sudo zypper install ruby <br> ==== ソースコードからインストール ==== Rubyのビルドに必要なライブラリをインストールする。<br> sudo zypper install gcc gcc-c++ autoconf bison gperf libopenssl-devel libopenssl-1_1-devel libyaml-devel zlib-devel \ readline-devel libedit-devel gmp-devel libff…」)
 
30行目: 30行目:


== RbEnvのインストール ==
== RbEnvのインストール ==
==== RbEnvとは ====
RbEnvとは、Unix系システム上のRuby環境をシームレスに管理するツールである。<br>
同一PC上で複数のRubyのバージョンを切り替えたり、作業中の各プロジェクトが常に正しいRubyバージョンで動作させるために使用される。<br>
<br>
==== RbEnvの仕組み ====
RbEnvが環境変数<code>PATH</code>に追加した後、ruby、gem、bundler等のRuby関連の実行ファイルを起動する時、まず、<code>rbenv</code>コマンドが実行される。<br>
次に、<code>rbenv</code>コマンドは、現在のプロジェクトディレクトリをスキャンして、<u>.ruby-version</u>ファイルを探す。<br>
<u>.ruby-version</u>ファイルが見つかった場合、そのディレクトリ内で使用するRubyのバージョンを決定する。<br>
最後に、<code>rbenv</code>コマンドは、/<RbEnvのルートディレクトリ>/versionsディレクトリ下にインストールされているRubyの中から、該当のバージョンを探す。<br>
<br>
以下の例では、プロジェクトのRubyのバージョンを選んでいる。<br>
cd <Rubyのプロジェクト>
rbenv local 3.2.2
<br>
上記のように、プロジェクトディレクトリに<u>.ruby-version</u>ファイルが作成または更新されて、選択したRubyのバージョンになる。<br>
別のディレクトリにある別のプロジェクトでは、全く別のバージョンのRubyを使用することができる。<br>
<br>
最後に、RbEnvの仕組みのほとんど全ての場面では、bashやzsh等で記述されたプラグインを使用してカスタマイズすることができる。<br>
<br>
ただし、RbEnvのシンプルさには利点もあるが、欠点も存在する。<br>
* オーバーヘッドが大きい
*: RbEnvは、Rubyへの呼び出しをすべてインターセプトするため、Rubyの実行時間に〜50[ms]のオーバーヘッドが追加されることがある。
*: これは、Rubyのほとんどの使い方では気にならないが、速度が要求される場面では摩擦を引き起こす可能性がある。
*: <br>
* 厳密性
*: RbEnvのプロジェクト間のバージョン分離が厳密であるため、グローバルな(システムレベルの)Rubyツールを保持し、それをプロジェクト内から呼び出すことが困難であると感じる場合がある。
*: 同様に、あるRubyのバージョンを使用しているプロジェクトから、別のRubyのバージョンを使用しているスクリプトに"shell out"することができない。
*: <br>
* ユーザのホームディレクトリにインストールされたgemを認識できない
*: RbEnvは<code>--user-install</code>オプションを付加してインストールしたGem、つまり、~/.gemディレクトリや~/.local/share/gemディレクトリにインストールされたGemの実行ファイルを検出できない。
*: 解決策は、RbEnvが管理するプロジェクトで、これらのGemに依存しないようにする、または、適切な~/.local/share/gem/<エンジン名>/<バージョン>/binディレクトリを手動でPATHに追加することである。
<br>
==== RbEnvのインストールと設定 ====
<code>git clone</code>コマンドを実行して、RbEnvのGithubからダウンロードする。<br>
cd <任意のディレクトリ>
git clone https://github.com/rbenv/rbenv.git RbEnv
または
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
<br>
RbEnvの環境変数を設定する。<br>
# ログインシェルがBashの場合
vi ~/.profile  または  vi ~/.bash_profile  または  vi ~/.bashrc
# ログインシェルがZshの場合
vi ~/.zshrc
 
# ログインシェルがFishの場合
vi ~/.config/fish/config.fish
<br>
<syntaxhighlight lang="sh">
# ログインシェルがBashの場合
export RBENV_ROOT="<RbEnvのインストールディレクトリ>"
eval "$($RBENV_ROOT/bin/rbenv init - bash)"
# ログインシェルがZshの場合
export RBENV_ROOT="<RbEnvのインストールディレクトリ>"
eval "$($RBENV_ROOT/bin/rbenv init - zsh)"
# ログインシェルがFishの場合
set -Ux RBENV_ROOT <RbEnvのインストールディレクトリ>
status --is-interactive; and $RBENV_ROOT/bin/rbenv init - fish | source
</syntaxhighlight>
<br>
再ログインまたはPCを再起動する。<br>
<br>
==== インストール可能なRubyのバージョン ====
==== インストール可能なRubyのバージョン ====
  # LTS版のみ確認
  # LTS版のみ確認
40行目: 107行目:
<code>rbenv install</code>コマンドは、rbenvには付属していないが、ruby-buildプラグインによって提供されている。<br>
<code>rbenv install</code>コマンドは、rbenvには付属していないが、ruby-buildプラグインによって提供されている。<br>
Rubyをインストールする前に、ビルド環境に必要なツールやライブラリが揃っていることを確認する必要がある。<br>
Rubyをインストールする前に、ビルド環境に必要なツールやライブラリが揃っていることを確認する必要がある。<br>
<br>
Rubyのビルドに必要なライブラリをインストールする。<br>
# RHEL
sudo dnf install patch bzip2 make autoconf gcc gdbm-devel ncurses-devel readline-devel zlib-devel openssl-devel libyaml-devel libffi-devel
# SUSE
sudo zypper install patch bzip2 make automake gcc rust zlib-devel gdbm-devel ncurses-devel readline-devel libffi-devel libopenssl-devel libyaml-devel
<br>
もし、<code>rbenv install</code>コマンドが見つからない場合は、ruby-buildをプラグインとしてインストールすることができる。<br>
git clone https://github.com/rbenv/ruby-build.git /<RbEnvのインストールディレクトリ>/plugins/ruby-build
<br>
また、<code>rbenv install</code>コマンドの代わりに、/<RbEnvのインストールディレクトリ>/versionsディレクトリのサブディレクトリとして、<br>
手動でRubyをダウンロードしてビルド・インストールすることもできる。<br>
<br>
このディレクトリのエントリは、ファイルシステム上の他の場所にインストールされたRubyのバージョンへのシンボリックリンクにもなる。<br>
<br>
==== Ruby gemsのインストール ====
プロジェクトのRubyバージョンを選択する。<br>
rbenv local <バージョン>
<br>
その後、通常の手順でGemをインストールする。<br>
gem install bundler
<br>
Gemがインストールされている場所を確認する。<br>
gem env home
# 例
/<RbEnvのインストールディレクトリ>/versions/<バージョン>/lib/ruby/gems/...
<br>
<u>※注意</u><br>
<u>スーパーユーザとして、Gemをインストールすべきではない。</u><br>
<u>通常、Rubyのバージョンはホームディレクトリにインストールされるため、ユーザが書き込み可能である。</u><br>
<u>Gemをインストールする際にパーミッションエラーが表示される場合は、"system"のRubyのバージョンがグローバルのままになっている可能性がある。</u><br>
<u><code>rbenv global <バージョン></code>コマンドを実行して、再度試すこと。</u><br>
<br>
==== Rubyのバージョンのアンインストール ====
RbEnvを使用してインストールしたRubyのバージョンは、/<<code>環境変数RBENV_ROOT</code>>/versionsディレクトリに存在する。<br>
もし、使用しなくなったRubyのバージョンを削除する場合は、該当するバージョンのディレクトリを削除するだけでよい。<br>
<br>
また、特定のRubyのバージョンのディレクトリを見つける場合は、以下に示すコマンドを実行する。<br>
rbenv prefix
または
rbenv prefix <バージョン>
<br>
ruby-buildプラグインには、削除処理を自動化する<code>rbenv uninstall</code>コマンドが存在する。<br>
<br><br>
<br><br>