【Linux/Ruby】UbuntuにRubyをコンパイルしてみる

2016年3月7日Ruby,環境構築

こんにちは、しきゆらです

今回は、Windows環境の中に仮想環境としてUbuntu15.10をインストールし、そこにRubyをコンパイルしてみたいと思います

前回の記事で、Windows環境でemacsを使ってコーディングできる環境を作ったわけですが、結局Rubyのgemやら、emacsの中のPathが微妙に変、という不満が積もり積もって

結局Windows上で環境整えるより、Linux上で環境を整えたほうがこの先楽なのでは・・・?

と思ったので仮想環境上にUbuntuをインストールしました

では、必要となる依存ライブラリから見て行きます


Rubyの依存ライブラリ

必要となるものと、Ubuntuのパッケージ名は以下の通り

[table id=1 /]

これらのパッケージをaptを使ってインストール後、Rubyのソースコードをダウンロードして展開し、その中に入ります

wget https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.0.tar.gz
tar zxvf ruby-2.3.0.tar.gz
cd ruby-2.3.0

 

あとは、configureやってコンパイルすればいいんですが、今回はインストールするディレクトリを「/usr/local」に行います

こちらのサイトによると、「/usr/local」は自分でコンパイルしたものを置いておくディレクトリのようです

ちなみに、ソースコードは「/usr/local/src」以下に置くようです

 

今回はバージョン管理するもの(rbenvなど)を使わないので「/usr/local」へインストールします

./configure --prefix=/usr/local --enable-shared
make
sudo make install

コンパイル中に、「It will not be installed.」とでたら、対応するライブラリを入れてもう一度やり直すといいと思います

インストール後、

ruby -v #=>ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux]

 

と出力されれば完了です

 

今回はtk8.6を使いましたが、どうやらデフォルトではライブラリを見つけてもそれを使わないようです

私はコンパイル後に、「ruby-2.3.0/ext/tk」の中で

ruby extconf.rb -- --with-tcltkversion=8.6 \
--with-tcl-lib=/usr/lib/x86_64-linux-gnu \
--with-tk-lib=/usr/lib/x86_64-linux-gnu \
--with-tcl-include=/usr/include/tcl8.6 \
--with-tk-include=/usr/include/tcl8.6 \
make
sudo make install

とやりました

ここまでで、tkが使えるようになります

 

さらに、

cd tkutil/
ruby extconf.rb
make
sudo make install

とすることで、tkextlibも使えるようになりました

 


調べてみると、こちらのサイトではconfigure時にオプションで渡すと一回で済むようです

とりあえず

  • 初めてコンパイルする場合は上記サイトの方法で
  • コンパイル済みのものにtkを追加で入れる場合は私の方法で

いけると思います


 

その他、拡張tkの中には、ここまでの状態では一部使えないものがあるようです

sudo apt-get install libtk-img tk-tile bwidge tk-table

をインストールすることで、いくつかのものは利用できるようになります

(tkextlibのimg, bwidget, tile, tktableが使えるようになります)

 

その他使いたいTkがあって、それがrequireした時にエラー出る場合は

対応するライブラリをaptでインストールすれば利用できるようになるはずです

 

Posted by しきゆら