Vagrantを使ってElixirをシンプルに導入してみる
新しい言語を使ってみるときって、環境が汚れるのが気になりますよね。ならない?なるってことで・・・。
私はにわかGentoo使いで、わりと環境にはなんでも突っ込んでみる質なのですが、それで導入して使わなくなったものが(多分)やたらあります。ツールとかもしかり。
言語の場合、学習が終わったらしばらく使わない、とかも普通にありますし、単純に興味だけで触ってみたい、ということもあります。
そういう時に便利なのがVagrantだろう、ということで、Gentoo環境でVagrantの導入 & BoxにElixirの導入、までをやってみました。Vagrantのもっとイカした使いかたとかは他の方の記事を読めばいくらでもありそうなので、ここでは割愛です。
Vagrantの導入
GentooでのVagrantの導入は、いつものとおりemergeからインストールです。
sudo emerge vagrant
ただ、結構な数について、package.accept_keywordsに追加しないとならないと思います。しなくてもいい人もいるかもしれません。
話は変わりますが、以前から、/etc/portage/package.*を編集することに対して、なんかいい方法は無いもんか、と思っていましたが、flaggieというものがそれをやってくれるそうです。使ってみましたが結構楽になります。よろしければ是非。
話は戻って、vagrantの導入ですが、私はffi-1.1.5がどうしても入ってくれませんでした・・・。rubygems/builderが読み取れない、ということでしたが、gemsの場所が悪かったんでしょうか。しばらくrubyやってないんでよくわからなくなってきましたが・・・。とりあえずffi-1.4.0を導入して事なきを得ました。
さて、導入できたら、Vagrant公式ページがいいかんじのチュートリアルになってますので、http://docs.vagrantup.com/v2/getting-started から、基本を学びます。私もついでに学びます。
ここでは特にこだわりは無いので、precise32をそのまま使います。VirtualBoxは事前に入れておかないとこの先進めませんので、入れていない方は是非どうぞ。カーネルの再コンパイルが必要になる場合があります。
mkdir -p vagrant/elixir vagrant init vagrant box add precise32 http://files.vagrantup.com/precise32.box vagrant up
事前にvboxusersグループに自身を追加して〜などやっておく必要があります。あとVBoxManageへのパス通しも。VBoxManageについては、vagrantもアドバイスをくれるので、わかりやすいです。
Provisioningの設定
Vagrantでは、起動時に自動的にProvisioningしてくれる機能がありますので、これを利用します。Chefとかを利用することもできるようですが、そこまで大掛りである必要は無いので、そのままshellを使います。
ここまでで、Vagrantfileは次のようになります。
VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| # Every Vagrant virtual environment requires a box to build off of. config.vm.box = "precise32" config.vm.provision :shell, :path => "bootstrap.sh" end
bootstrap.shが、provisioningするときに利用されるshellになります。今回はelixirを使いたいので、以下のような中身にしました。
#!/usr/bin/env bash echo "deb http://binaries.erlang-solutions.com/debian raring contrib" >> /etc/apt/sources.list wget -O - http://binaries.erlang-solutions.com/debian/erlang_solutions.asc | sudo apt-key add - apt-get update apt-get install make apt-get install -y esl-erlang mkdir work cd work wget https://github.com/elixir-lang/elixir/archive/v0.10.3.tar.gz tar xf v0.10.3.tar.gz cd elixir-0.10.3 make install
これでelixirが使えるようになりました。いくつか外部に依存していますが、これはしょうがないでしょう。