【Linux/Ruby】Ubuntuに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でインストールすれば利用できるようになるはずです