log

Debian Squeeze インストールから Rails 3.1 を動かすまで

毎回忘れるので備忘録として。

条件としてはこんな感じ。

OS インストールと VMware Tools インストール

インストールは省略。パッケージのチェックをすべて外すこと。

インストール終わってログインしたら VMware Tools インストールに必要なものを入れる。

# apt-get install make gcc linux-headers-2.6.32-5-686

入れ終わったら VMware Fusion 側でメニューから [仮想マシン]→[VMware Tools のインストール]を選択する。

# mount /dev/cdrom
# cd /tmp
# tar zxpf /media/cdrom/VMwareTools-8.4.7-416484.tar.gz
# umount /dev/cdrom
# cd vmware-tools-distrib
# ./vmware-install.pl

rvm には必須じゃないけど個人的に必要なコマンドを入れる

とりあえず ssh と sudo と zsh とついでに vim を入れる

# apt-get install ssh sudo zsh-beta vim

/etc/sudoers 書き換えて一般ユーザに sudo 権限持たせる

# vim /etc/sudoers
# User privilege specification
root ALL=(ALL) ALL
yono ALL=(ALL) ALL # 追加

sudo 権限持たせたので以降は一般アカウントで作業

# su - yono

ログインシェルを変更する

$ chsh 
パスワード:
yono のログインシェルを変更中
新しい値を入力してください。標準設定値を使うならリターンを押してください
ログインシェル [/bin/bash]: /bin/zsh-beta

一旦抜けてログインし直す。以降は zsh での作業となる。

rvm インストール

rvm インストールに最低限必要なコマンドを入れる

% sudo apt-get install curl git

http://beginrescueend.com/rvm/install/ に従い、rvm をインストール

% bash < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer )

インストール完了時に「Ruby 処理系入れるならこのパッケージをインストールしろ」的なメッセージが出るのでコピペして実行(apt-get のコマンドがそのまま表示される)。

$HOME/.zshrc に以下の記述を加えて読み込む

% vim ~/.zshrc
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"
% source ~/.zshrc

ruby 1.9.2 をインストール

最新版は 1.9.3 だが今回は 1.9.2 を入れる。 ついでに gemset も作っておく

% rvm install 1.9.2
% rvm use 1.9.2
% rvm gemset create rails3
% rvm gemset use rails3

–no-ri –no-rdoc をデフォルトにする

毎回 gem install 時にオプションで付けるのを忘れるので、.gemrc に記述しておく。

% vim ~/.gemrc
gem: --no-ri --no-rdoc

rails をインストール

rails と、ついでに sqlite3 を apt で入れとく

% gem install rails
% sudo apt-get install libsqlite3-dev

プロジェクトを作成

sample プロジェクトを作って実行してみる。

% rails new sample -d sqlite3
% cd sample
% rails s

すると、以下のようなエラーが出る

/home/yono/.rvm/gems/ruby-1.9.2-p290@rails3/gems/execjs-1.2.12/lib/execjs/runtimes.rb:47:in `autodetect': Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)
from /home/yono/.rvm/gems/ruby-1.9.2-p290@rails3/gems/execjs-1.2.12/lib/execjs.rb:5:in `<module:ExecJS>'
from /home/yono/.rvm/gems/ruby-1.9.2-p290@rails3/gems/execjs-1.2.12/lib/execjs.rb:4:in `<top (required)>'
from /home/yono/.rvm/gems/ruby-1.9.2-p290@rails3/gems/coffee-script-2.2.0/lib/coffee_script.rb:1:in `require'
from /home/yono/.rvm/gems/ruby-1.9.2-p290@rails3/gems/coffee-script-2.2.0/lib/coffee_script.rb:1:in `<top (required)>'
from /home/yono/.rvm/gems/ruby-1.9.2-p290@rails3/gems/coffee-script-2.2.0/lib/coffee-script.rb:1:in `require'
from /home/yono/.rvm/gems/ruby-1.9.2-p290@rails3/gems/coffee-script-2.2.0/lib/coffee-script.rb:1:in `<top (required)>'
from /home/yono/.rvm/gems/ruby-1.9.2-p290@rails3/gems/coffee-rails-3.1.1/lib/coffee-rails.rb:1:in `require'
from /home/yono/.rvm/gems/ruby-1.9.2-p290@rails3/gems/coffee-rails-3.1.1/lib/coffee-rails.rb:1:in `<top (required)>'
from /home/yono/.rvm/gems/ruby-1.9.2-p290@global/gems/bundler-1.0.21/lib/bundler/runtime.rb:68:in `require'
from /home/yono/.rvm/gems/ruby-1.9.2-p290@global/gems/bundler-1.0.21/lib/bundler/runtime.rb:68:in `block (2 levels) in require'
from /home/yono/.rvm/gems/ruby-1.9.2-p290@global/gems/bundler-1.0.21/lib/bundler/runtime.rb:66:in `each'
from /home/yono/.rvm/gems/ruby-1.9.2-p290@global/gems/bundler-1.0.21/lib/bundler/runtime.rb:66:in `block in require'
from /home/yono/.rvm/gems/ruby-1.9.2-p290@global/gems/bundler-1.0.21/lib/bundler/runtime.rb:55:in `each'
from /home/yono/.rvm/gems/ruby-1.9.2-p290@global/gems/bundler-1.0.21/lib/bundler/runtime.rb:55:in `require'
from /home/yono/.rvm/gems/ruby-1.9.2-p290@global/gems/bundler-1.0.21/lib/bundler.rb:122:in `require'
from /home/yono/sample/config/application.rb:7:in `<top (required)>'
from /home/yono/.rvm/gems/ruby-1.9.2-p290@rails3/gems/railties-3.1.3/lib/rails/commands.rb:52:in `require'
from /home/yono/.rvm/gems/ruby-1.9.2-p290@rails3/gems/railties-3.1.3/lib/rails/commands.rb:52:in `block in <top (required)>'
from /home/yono/.rvm/gems/ruby-1.9.2-p290@rails3/gems/railties-3.1.3/lib/rails/commands.rb:49:in `tap'
from /home/yono/.rvm/gems/ruby-1.9.2-p290@rails3/gems/railties-3.1.3/lib/rails/commands.rb:49:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'

調べてみると JavaScript エンジンが必要とのことらしい(JavaScriptエンジンをインストールする - 祈れ、そして働け 〜 Ora et labora)。

というわけで、therubyracer を Gemfile に追記して bundle 実行。

% vim Gemfile
gem 'therubyracer'

% bundle

改めて rails s を実行すると今度は正常に起動した。