鳩のだんなのブログ

主にLinuxに関する話題を書いていきます。ソフトウェアの設定方法や使い方などが中心になります。

Ruby環境のインストール

正月休み中に新しいFedora 29環境の整備を完了させることができず、のんびりと進めています。

私はよく省力化のためにRubyスクリプトを書くのですが、 新しいFedora 29の環境でもこれらのスクリプトを使用したいので、 Ruby環境を用意していきます。

Ruby環境の管理ソフトウェア「rbenv」のインストール

rbenvをインストールする理由について

パッケージのリポジトリから配信されているRubyのパッケージはバージョンが固定的に決まっており、 それ以外のバージョンを使用する場合にはRubyを自分でビルドする必要があります。 ただ、自分でビルドしてインストールしたものはパッケージ管理システムが管理してくれなくなるため、 自分で管理する必要があります。

rbenvはインストールしたRuby環境を管理してくれるツールです。 複数の異なるバージョンのRubyを管理し、それら複数のRuby環境のうち使用するものを切り替えたりすることができます。 また、プラグインruby-build」をインストールすることでビルドとインストールも行うことができるようになります。

rbenvをインストールする前の事前準備

rbenvはGitHubの開発リポジトリから入手するため、事前に「git」をインストールしておく必要があります。 また、ruby-installによってRubyをビルドするには コンパイラgcc」とRubyが内部的に利用しているライブラリの開発パッケージ「readline-devel」、「openssl-devel」も インストールしておく必要があります。

# dnf install git readline-devel openssl-devel

「rbenv」のインストール

gitを使用して開発リポジトリからrbenvを入手して任意の場所に配置します。 公式のマニュアルでは「~/.rbenv」に配置することを推奨しているようです。 併せてrbenvのプラグインの「build-install」も入れておきます。

その後、配置したrbenvのコマンドを実行できるように環境変数「PATH」に rbenvの実行コマンドを配置しているディレクトリのパスを追加します。

$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile

このあと、シェルを再起動するか「source ~/.bash_profile」を実行すると rbenvのコマンドが使用できるようになります。

参考: rbenv/README.md at master · rbenv/rbenv · GitHub

「rbenv」のアップデート

インストールした「rbenv」をアップデートするには インストール下ディレクトリ「~/.rbenv」で「git pull」を実行します。 「rbenv」をアップデートすることで インストールすることができるRuby環境に最新の環境が追加されます。

cd ~/.rbenv
git pull
cd ~/.rbenv/plugins/ruby-build
git pull

Ruby環境のインストール

インストール可能なバージョンの確認

コマンド「rbenv install --list」でインストール可能なバージョンの一覧を確認することができます。 この一覧の中からインストールするバージョンを選びます。

$ rbenv install --list

Ruby環境のビルドとインストール

今回はバージョン「2.6.0」のRuby環境をインストールするので コマンド「rbenv install 2.6.0」を実行します。 これで、Rubyソースコードのダウンロード、ビルド、rbenvが管理する環境へのインストールが行われます。

rbenv install 2.6.0

rbenv管理下にインストールされたバージョン一覧を確認する。

rbenv管理下にインストールされたバージョン一覧を確認するには「rbenv versions」を実行します。 下の例では一つしか無いからわかりにくいですがアスタリスク「*」がついているものが現在使用中の環境になります。

[pigeon@localhost ~]$ rbenv versions
* 2.6.0 (set by /home/pigeon/.rbenv/version)

使用するRuby環境を選択する

rbenvでは使用するRuby環境を自由に切り替えうることができます。 rbenv管理下にインストールされたRuby環境のうち使用するRuby環境を選択するには「rbenv global」を使用します。 例えば、先の例の2.6.0を使用するRuby環境として選択する場合には以下のようにコマンドを実行します。

$ rbenv global 2.6.0

ここで、globalというキーワードが入っていますが、 このコマンドによる設定はそのユーザーにおける大域的(global)な設定であり、 他のユーザーまで影響を及ぼすものではありません。 (rbenvのインストール先がユーザーのホームディレクトリ以下であるということからも解ると思いますが)

globalの対としてlocalがあるわけですが、 rbenvにおいてlocalは「そのディレクトリで使用するRuby環境」を指定します。 特定のバージョンでしか動作しないRubyアプリケーションがある場合には、 そのアプリケーションが存在するディレクトリで局所的(local)に使用するRuby環境を指定する場合のような使い方をします。 実際に「rbenv local」を実行するとどうなるかというと、 そのディレクトリに「.ruby-version」というファイルが作成されて、 その中に使用するバージョンが保存されるようになっています。

$ rbenv local 2.6.0

使用するRuby環境を設定したあとは 単に「ruby」や「gem」などとコマンドを使用するだけで、 指定した環境のコマンドが実行されます。