Rubyはオープンソースのプログラミング言語なので、最新版のソースリストさえ入手すれば、rubyの実行モジュールをコンパイルして作ることが可能です。もしLinuxでRubyを使おうとしたら最新版で無かったら、自分で最新版をコンパイルしてみましょう。
しかしC++で書かれたソースリストコンパイルするにはハードルが高いかもしれません。そのような方のために簡単にコンパイルできる方法もあり、多くのエンジニアが利用しています。今回はRubyの最新版のソースコードの入手方法と、そのコンパイル方法について解説します。
Rubyの最新版を作るには
大抵のLinuxディストリビューションには標準でRubyが用意されています。しかしそのRubyを実行してみたら、かなり古いバージョンだったります。もしRubyの最新版を利用したい場合は自分でコンパイルして作成し、それを利用してください。
まずはRubyの最新版を作る方法を紹介します。
Rubyの最新版は何?
Rubyの最新版をコンパイルして使うなら、今の最新バージョンを知らなければなりません。Rubyは公開されて20年以上経つプログラミング言語ですが、まだ改良が続けられています。Rubyの最新バージョンを知りたい場合は、Rubyの公式サイトをチェックしてください。
Rubyの公式サイトのURL
オブジェクト指向スクリプト言語 Ruby
公式サイトにはリリース情報が掲載されています。ただし、2021年10月時点でメンテナンスされているバージョンは、3.0系、2.7系、2.6系の3つです。
最新機能を使いたい場合、最も新しい3.0系を使いますが、Ruby用に作られた全てのライブラリが対応している訳ではありません。例えばRuby on Rilasを使いたい場合は、2.7系が必要です。
ソースコードを入手する
Rubyはオープンソースのオブジェクト指向プログラミング言語ですが、オープンソースのためソースコードが公開され無償で利用できます。そして、そのソースコードを公式サイトからダウンロードのページから入手することが可能です。
Rubyのダウンロードサイト
ダウンロード
なお、Rubyのダウンロードにはソースコードをコンパイルする方法も紹介されています。そのため、オープンソースのソースコードをコンパイルできる方なら、このWebページを参考にして自分で作ることが可能です。
コンパイルするには環境が必要
LinuxならオープンソースのRubyをコンパイルすることが可能です。しかし、Webサーバー用として設定されたLinuxサーバーでRubyをコンパイルできるとは限りません。Rubyをコンパイルするには、必要となるパッケージを幾つもインストールする必要があります。
もし、Rubyをコンパイルする環境を作るのが面倒という方は、ぜひ、rbenvを利用してください。rbenvはRuby専用のパッケージ管理ツールで、コンパイルに必要な設定を自動化できる便利なツールです。
ソースコードをコンパイルする環境
バージョンを気にしなければCentOSやUbuntuといったLinuxディストリビューションの標準でRubyを利用できます。しかしそのようなLinuxなら何でもRubyをコンパイルできる訳ではありません。コンパイルに必要なパッケージのインストールが必要です。
次からLinuxでRubyをコンパイルするために必要なパッケージを紹介します。
C++の環境が必要
オープンソースの歴史は古く、1960年代から利用されてきました。そしてオープンソースのほとんどは、CコンパイラまたはC++コンパイラを使い、自分の環境に合わせてコンパイルしてそのツールを自作します。Rubyも同じで、Ruby用のソースコードからrubyコマンドを作るためには、C++によるコンパイル環境が必要です。
もしLinuxディストリビューションでRubyをコンパイルするなら、C++の開発環境をインストールしなければなりません。CentOSやUbuntuなどでRubyをコンパイルする場合は、少なくともgccパッケージが必要です。まずはgccコマンドが実行できることをチェックしてください。
makeなどの開発環境
gccコマンドをインストールすればオープンソースがコンパイルできる訳ではありません。オープンソースとして公開されているソースファイルをコンパイルするためには、makeコマンドが必要です。さらにディストリビューションによってはmakeで利用されるautoconf、bison、build-essentialなどのパッケージも必要です。
またrubyでgccを利用するには、名称に「-dev」が付いた開発用パッケージを組み込む必要があります。なお、Rubyをソースからコンパイルした場合、OSに組み込まれた開発用パッケージをチェックし、組み込み可能な機能のみRubyコマンドに組み込みます。
Rubyで利用する可能性がある機能については、そのLinuxの開発用パッケージもインストールしてください。なお、パッケージ名に「-dev」が付いているパッケージが開発用のライブラリです。
UbuntuでRubyをコンパイルするための必要なパッケージのインストール例
$ apt-get install \ autoconf bison build-essential \ libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm5 libgdbm-dev
もしエラーで止まったら
Rubyのコンパイルに必要なパッケージがインストールされていれば、ほとんどのLinuxのディストリビューションでそのままコンパイルできます。しかし、必要なパッケージがインストールされていない場合、エラーで中断することもあります。
もし、必要なパッケージがインストールされていないとconfigureコマンドを実行した際にエラーで停止します。この場合、エラーメッセージに必要なパッケージ名が表示されます。そのメッセージに従ってパッケージをインストールしてください。
rbenvを利用してコンパイルする
C言語やC++による開発に慣れている方ならオープンソースのコマンドを自分でコンパイルすることは難しくはありません。しかし、これからRubyを学ぼうとしているのに、C言語やC++の使い方を学ぶの本末転倒です。
そのような方は、ruby用のシステム管理ツールのrbenvを利用してください。次からrbnevコマンドを利用したRubyのコンパイルについて紹介します。
rbenvとは
rbenvは、プロジェクトによってRubyのバージョンを切り替えられるようにする仕組みです。利用可能なRubyを設定する際に、rbenv用のGitHubにコンパイル用の環境が一式用意されているので、それを導入して自動的にコンパイルしてRubyコマンドを作成してくれます。
GitHub – rbenv/rbenv: Groom your app’s Ruby environment
まずはgitコマンドを
rbenvを導入するにはGitHubを利用するためのgitコマンドを利用します。CentOSやUbuntuなどの広く使われているLinuxでは標準のパッケージとして用意されているので、まずはgitコマンドを導入してください。
gitコマンドのインストールコマンドの例(CentOS)
$ sudo yum -y install git
gitコマンドのインストールコマンドの例(Ubuntu)
$sudo apt-get install git
rbenvのインストール
gitコマンドが使えるようになったら、さっそくrbenvコマンドをインストールしてみましょう。次のコマンドでインストールできます。
rbenvインストールの例
$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
このコマンドがうまくいけば、ホームディレクトリに.rbenvが作られています。rbenvコマンドは、この下でRubyコマンドのコンパイルや実行環境を作成します。また、メッセージにしたがってシェルの環境にrbenv実行に必要な設定を追加してください。
rbenvでRubyをコンパイルする
rbenvコマンドが使えるようになったら、使いたいRubyがrbenvでインストールできるかをチェックしてみてください。なおrbenvで利用できるRubyの最新版もチェックも同じです。
$ rbenv install -l
バージョンをチェックしたら次のコマンドでインすトールしてください。なお、rbenvを利用してインストールすると自動的にRubyのソースコードからコンパイルしてRubyの実行モジュールを作成します。そのため、使っているパソコンたサーバーの性能によっては時間がかかるかもしれません。
$ rbenv install 2.7.4
まとめ
これまで紹介したようにオープンソースのプログラミング言語であるRubyのコマンドは、ソースコードから自分でコンパイルして作ることが可能です。CentOSなどのLinuxでは、OSは最新だとしても、最新のRubyが使える訳ではありません。最新のRubyを使いたい場合は自分でコンパイルしてみましょう。
ただしRubyのソースコードはC++で書かれているので、C++を扱ったことがない方にとってはハードルが高いかもしれません。そのためRubyの最新版を使いたい場合は、簡単なコマンドでコンパイルもやってくれるrbenvを利用してください。