新・リハビリ日記

技術メモとか

CentOS6.5環境にMiddlemanをインストール

Middlemanを使ってみようということで、Mac上の Vagrant + VirtualBox で CentOs6.5 をインストールし、そこでMiddlemanをセットアップしました。

CentOS6.5を Vagrant+VirtualBox でインストール

$ mkdir Middleman
$ vagrant init 
$ vim Vagrantfile

  // 14行目あたりに追加
  config.vm.box_url = "http://www.lyricalsoftware.com/downloads/centos65.box"

$ vagrant up

しばらく待てばCentOS6.5用のboxイメージが入るので入り終わったら

$ vagrant ssh

でログイン

gem install middleman を実行するためにruby環境を整える。

rbenv + ruby+build のインストール

最新版のrubyを入れるために rbenv + ruby+buildをインストール。それぞれのREADME読めばここではまることは殆ど無いと思います。

$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ . ~/.bash_profile
$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

後工程で必要となるライブラリをyumでインストール

openssl / openssl-devel は rubyのビルドで必要となり、libyaml は middleman インストール時に必要となるため、先に突っ込んどきます。また、CentOs6.5にはすでにruby1.8.3がインストールされていますが、rbenvで管理するため抜いちゃいます。

# sudo yum remove ruby
# sudo rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
# sudo yum install openssl openssl-devel
# sudo yum install libyaml

rubyのビルド

$ rbenv install 2.1.2

インストール完了後、デフォルトで利用するために

$ rbenv global 2.1.2

を実行

この状態のgemは古いため、最新版に更新

$ gem update --system
$ gem -v
2.2.2

Middlemanのインストール

$ gem install middleman

ひたすら待ちましょう

インストールが完了後 $ middleman を実行するとモリモリエラーがでましたが、

$gem install ejs
$gem install therubyracer
$gem gem install eco

あたりを実行すればいいと思います。

エラー情報

インストール実行中に出たエラー

BUILD FAILED

Inspect or clean up the working tree at /tmp/ruby-build.20140815022740.3291
Results logged to /tmp/ruby-build.20140815022740.3291.log
...
The Ruby openssl extension was not compiled. Missing the OpenSSL lib?

rubyのビルド時にopenssl / openssl-devel が入ってないと出るっぽい

$ gem install middleman
/home/vagrant/.rbenv/versions/2.1.2/lib/ruby/2.1.0/yaml.rb:4:in `<top (required)>':
It seems your ruby installation is missing psych (for YAML output).
To eliminate this warning, please install libyaml and reinstall your ruby.

libyaml が入ってないと出るっぽい

$ middleman

execjs/runtimes.rb:51:in `autodetect': Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)

gem install therubyracer で解決するっぽい

vagrantcloudからの利用

今回作成したboxファイルは vagrantcloud上の sandpit/Middleman にアップしています。 Vagrantfileでconfig.vm.box = "sandpit/Middleman"を指定すれば利用できます。