Rubyのインストール方法

Contents


Rubyのインストール方法として、ebenv, RVM, パッケージインストール, ソースインストールを紹介します。

rubyのインストール手順 概要

www.ruby-lang.orgで紹介されているrubyのインストール方法は、rbenv, RVM, パッケージインストール、ソースインストールです。それぞれメリット・デメリットがありますので、要件に応じてインストール方法を選択する必要があります。

 rbenvRVMパッケージソースインストール
開発スピード×
運用しやすさ×
開発者/運用者向け開発者向け開発者向け運用者向け運用者向け

多くの場合は、開発者と運用者の利害関係は対立するものです。近年「5分でインストールします」という記事がよく見られますが、開発者の数十分のインストールの手間を惜しむために、後々の運用工数数千時間に繋がるというのはよくある話です。反面、当たるかどうか分からないスタートアップ開発に対して、入念な運用設計を求めるのは愚の骨頂です。

読者の方が所属する組織, プロジェクトの進むべき方向を考え、rubyの各インストール方法のメリット・デメリットを整理して頂ければと思います。管理人の私自身が出来ていない課題でもあるのですが、たとえインストール方法の選択が裏目に出たとしても、組織の多くの人が納得できる仕組み(例 : 説明責任, カリスマ性など)を作る事が大切だと思います。

chaos_001

ruby インストール方法の比較

各インストール方法の比較について説明します。パッケージインストール, ソースインストールは昔から存在する手法ですので、説明を省略します。ここでは、モダンなインストール方法 rbenv, RVMについて考察を行います。

ruby インストール方法の比較 – バージョン変更

rbenv, RVMは容易にrubyバージョン変更する事ができます。rubyは、非常にバージョン依存が強い言語です。あるライブラリを使用するためには、特定のrubyバージョンが必要になります。そのため、開発段階ではrubyバージョンを色々変更して施行錯誤するフェーズが必要になります。

このバージョン変更をRPMやソースインストールで行うのは非常に非効率です。rbenv, RVMを使用すれば、以下のようにコマンド一発でrubyのバージョン確認, 変更ができます。この機能は、開発フェーズでは大きな武器になるでしょう。

おそらく、運用担当者の中にはバージョン変更の有難みがピンと来ない人もいるでしょう。そのような方は、一度、gemfileの編集を自力で行ってみると、バージョン変更のメリットを肌感持って実感できると思います。

ruby インストール方法の比較 – root権限の要否

rbenv, RVMのインストールは、root権限が基本的に要りません。root権限が要らないという事は、開発者/運用者間のコミュニケーションコストを減らす事ができます。

なおRVMは、ユーザ単位のインストールとシステムインストールが可能です。システムインストールを行う場合は、root権限が必要になる事に注意して下さい。

ruby インストール方法の比較 – インターネット依存

インストールする際に、インターネット上のリポジトリを見ているかどうかは非常に大事な考慮ポイントです。インターネット上のリポジトリは非常に便利ですが、運用フェーズでは以下のようなデメリットを備えている事を考慮しなければなりません。

  • 古いバージョンのソースがいつの間にか無くなってしまい、環境の再構築ができなくなる。
  • 稀にリポジトリの障害が発生し、「なぜかインストールに失敗している」現象が発生する。
  • お堅いエンタープライズ系の企業は、そもそもとしてインターネットへの接続を認めない場合がある。

どのようなインストール構成を採用しても、上記のようなインターネット依存の問題から逃れる事はできません。しかし、rbenv, RVMを使用する場合は、上記問題の対応難易度が相対的に高い事を覚悟しなければなりません。

ruby インストール方法の比較 – 構成の単純さ

RPMインストールする場合や、デフォルト設定でソースインストールする場合は、rubyがどこにインストールするかは決まっております。1年もLinuxを触っていれば、どのにインストールされるかくらいは誰でも理解できるようになるでしょう。

一方、RVM, rbenvはディレクトリ構成が複雑です。RVMはインストールされるディレクトリが固定であるため、RVMの仕様を知っている人ならば何とか運用できるでしょう(私はやりたくないですが・・・)。しかし、rbenvは任意のディレクトリにインストールできてしまうため、メンテナンス不可能になるほどの複雑なインフラが出来上がってしまうリスクがあります。

rbenv インストール方法

rbenvはRVMの後発のツールで、容易にruby実行環境を切り替える事ができます。RVMに比べて高機能で自由度が高いです。ただし、自由度が高いという事は、構成が複雑になりやすい事の裏返しです事に注意して下さい。

rbenvは、ユーザ単位でも、システム単位でも使用する事ができます。rbenvのREADMEや多くのブログ記事は「ユーザ単位」の使用を前提としております。このサイトでは、「ユーザ単位」「システム単位」の両方の使い方を紹介します。

rbenv インストール方法 – ユーザ単位の環境構築

rbenv インストール方法 – ユーザ単位の環境構築 – rbenvのインストール

rbenvのインストールは非常に簡単です。rbenv.gitとruby-build.gitをGitHubよりダウンロードするだけでインストール完了です。ユーザ単位でrbenvを使用するならば、以下のようにホームディレクトリ配下に配置すると良いでしょう。以下手順例は、READMEに書かれている手順をそのまま踏襲しております。

rbenvは環境変数の設定を前提としております。以下のコマンドで環境変数を設定します。

環境変数の設定を自動的に行ないたい方は、.bash_profileなどに設定を記述しておくと良いでしょう。

rbenv インストール方法 – ユーザ単位の環境構築 – rubyのインストール

“rbenv install –list”と入力すると、インストール可能なrubyのバージョン一覧を表示する事ができます。

“ruby install”の後にバージョンを指定すると、指定したrubyをインストールします。

rubyのソースダウンロードとコンパイルを行ないますので、処理待ちの時間はかなり長めです。また、依存関係のエラーはログを見つつ適宜自己解決しなければなりません。以下は、rubyのコンパイルに失敗した例です。この例の場合はoepnssl-develのインストールで解消しましたが、エラーの解消方法はログを見つつ適宜判断が必要となります。

私のようにrubyのインストールが進んでいるのだか止まっているのか不安になってしまう方は、以下のようにインストールログをtailで眺めるとインストールの進捗を確認する事ができます。ログファイル名はインストールの最中には表示されませんが、/tmp以下を探せば見つかるはずです。

“rbenv versions”コマンドにより、インストール済のruby一覧を確認する事ができます。

rbenv インストール方法 – ユーザ単位の環境構築 – rbenvの設定

rbenvは複数バージョンのrubyを管理する仕組みです。rbenvでのrubyバージョン指定は、shell, local, globalの3種類のスコープが存在します。

 設定箇所説明
shell${RBENV_VERSION}現在のshellに対してのみrubyバージョン設定が有効になります。
local.ruby-versionユーザ単位でrubyバージョン指定を行ないます。
global~/.rbenv/versionrbenv全体に対してrubyバージョン指定を行ないます。rbenvを複数ユーザで共用する場合は、globalに対する設定を検討すると良いでしょう。

rubyバージョンを指定する際の構文は以下の通りです。

バージョン指定の設定を削除するには、–unsetを指定します。

システムに対してインストールされたrubyを使用したい場合は、systemを指定します。

使用例および動作確認は以下の通りです。

rbenv インストール方法 – システム単位の環境構築

システム単位、すなわち複数ユーザでrubyを使用する方法を説明します。ホームディレクトリではなく、システム全体を意味するどこか適当な場所(例 : /usr/local, /optなど)にrbenvを配置します。

環境変数を設定します。設定例は以下の通りです。特にREADMEに記載がありませんが、システム全体に対してrbenvをインストールする場合は、環境変数RBENV_ROOTの設定が必要になる事に注意して下さい。理由は、Tips rbenv: no such command install' で後述します。

~/.bash_profile, /etc/bashrc, /etc/skel/.bash_profileなど、どこに設定すべきかは非常に悩ましい問題でありますが、読者の方が所属する組織の事情に合わせて設定場所を適宜変更して下さい。

上記以外の設定はユーザ単位の設定と同じですので、説明を省略します。

RVM インストール方法

RVMは、rbenv同様に複数バージョンのrubyを使用する事ができるツールです。rbenvと異なり、コンパイル済のファイルをダウンロードします。rbenvと比べると、RVMはインストールの待ち時間が少なくコンパイルエラーと格闘する必要がないのが利点です。

このサイトでは、「ユーザ単位」「システム単位」の両方の使い方を紹介します。

RVM インストール方法 - ユーザ単位の環境構築

RVM インストール方法 - ユーザ単位の環境構築 - RVMのインストール

RVMのインストールは非常に簡単です。以下のようにインストールスクリプトを実行するだけでインストール完了です。なお、一般ユーザで実行した場合がユーザ単位のインストールになり、rootユーザで実行した場合はシステム単位のインストールになります。

ユーザ単位のインストールを行なうと~/.rvm/bin/rvmにRVMに、システム単位のインストールを行なうと/usr/local/rvm/bin/rvmに、RVMがインストールされます。インストールと同時に~/.bashrcや/etc/profile.d/rvm.shが編集され、RVMへのPATHが自動的に設定されます。

インストール時に出力された説明通り、sourceコマンドを手動で入力するかコンソールを再オープン(再ログイン)するかでRVMへのPATHを設定して下さい。PATHを設定した後、"rvm -v"コマンドによりRVMがインストールされた事を 確認します。

RVM インストール方法 - ユーザ単位の環境構築 - rubyのインストール

"rvm list known"コマンドでインストール可能なruby一覧を表示させます。RVMは単にMRI(Matz's Ruby Interpreter)のバージョンを指定するだけ でなく、Ruby Enterprise Editioなどのその他のruby runtimeも選択する事も可能です。

"rvm install"コマンドでrubyのインストールを行います。以下は3種類のrubyをインストールする例です。

RVM インストール方法 - ユーザ単位の環境構築 - rubyの使い方

”ruby use”コマンドでデフォルトで使用するRubyのバージョンを定義する事ができます。"--default"を使用するとデフォルトで使用するRubyのバージョンを指 定できます。

インストールされているRubyおよび現在使用しているRubyバージョンは、"rvm list"で確認できます。

RVM インストール方法 - ユーザ単位の環境構築 - gemset

RVMには複数バージョンのgem ( ruby サードパーティ ライブラリ )を管理する仕組みがあります。以下、RVMのgem管理の仕組みであるgemsetについて説明します。なお、今日(2014/10/04)では、gemを管理する仕組みはbundlerの方が多数派です。よっぽどの理由がない限りは、多数の方が知っているbundlerを使用する事をお勧めします。

複数種類のgemを管理するには、gemsetを定義します。"rvm gemset create"コマンドでgemsetを定義できます。

どのgemsetを使用するかは、"rvm use"コマンドを用いてruby versionとgemsetを指定します。

gemsetの使用例を挙げます。以下のように設定すればrails2系とrails3系を共存させる事ができます。

RVM インストール方法 - システム単位の環境構築

システム全体に対してRVMをインストールするには、rootユーザでインストールスクリプトを実行します。それ以外の操作は、ユーザ単位の設定と同じ。

ruby パッケージインストール

コンパイル済のパッケージをインストールするには、yum, rpm等のコマンドを使用します。コマンド実行例は以下の通りです。

インストール方法が非常に簡単で、構成管理も非常に容易です。運用担当者には一番うれしい構成です。

しかし、OS標準でインストールされるパッケージは古めで、Ruby on RailsなどのWEBアプリケーション開発を行なうには非常に無理があります。もし、WEBアプリケーション開発を行なうならば、自作RPM, ソース インストール, RVMなどを検討すると良いでしょう。

ruby ソース インストール

rubyのソースコードをダウンロードし、展開します。

”./configure --help”でコンパイルオプション一覧を確認します。Featureの有効無効やインストール先を変更など、どのような設定変更が可能であるかを確認する事ができます。

お決まりのconfigure makeで、インストールを行ないます。

rubyのインストールが完了した事を確認します。

Tips

rbenv: no such command install’

“rbenv install”コマンド実行時に、rbenv: no such command `install’と怒られる事があります。

これは、install プラグインが見つからないためです。rbenvはプラガブルな構成になっており、標準で提供されるコマンドとプラグインによって追加されるコマンドがあります。このエラーメッセージが表示される事例のひとつは、installコマンドを提供するプラグインのインストール漏れです。以下のコマンドでプラグインをインストールして下さい。

また、READMEで示されたディレクトリ以外にrbenvをインストールする場合も、このエラーメッセージが発生しえます。特にREADMEに書かれていませんが、プラグインは環境変数RBENV_ROOTを基点に探されます。環境変数RBENV_ROOTを設定する事によってエラーを解消できます。

rbenv – passenger 設定

rbemvでインストールしたRubyを用いてpassengerを使用するには、rbenv/versions配下のバイナリを指定した設定ファイルを作成して下さい。passenger-install-apache2-moduleコマンド実行時のガイドメッセージに従ってapacheの設定を行なえば、特にハマるポイントはないと思います。

RVM – passenger 設定

RVMでインストールしたRubyを用いてpassengerを使用するには、rvm/gems配下のバイナリを指定した設定ファイルを作成して下さい。passenger-install-apache2-moduleコマンド実行時のガイドメッセージに従ってapacheの設定を行なえば、特にハマるポイントはないと思います。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする