2009年7月12日日曜日

[開発環境]VMWare + Ubuntu 8.04 に Rails 開発環境

VMWare 上の Ubuntu 8.04 にRails開発環境を作成したメモです。

環境
(OS) Windows Vista Home Premium
(VMWara) VMWare Workstation 6.5.2

Ubuntu の VMイメージ入手
なにはともあれ、仮想マシンを用意します。
最新バージョンのUbuntu 9.04のインストールイメージをダウンロードして、VMイメージを作成したのですが、起動してくれない・・・。orz
解決方法がわからなかったため、仕方なくこちらで配布されている仮想マシンUbuntu 8.04 LTSを入手してインストールしました。

インストール後、
$ sudo apt-get upgrade
$ sudo apt-get update
で最新へアップデート。

Vmware Toolsインストール
VMWare のメニューから VM->VMWare Toolsのインストールを選択すると、CD-Rがマウントされます。CDに含まれる VMWareTools-version-xxxx.tar.gz を好きな場所にコピーして、
$ tar xzf VMWareTools-version-xxxx.tar.gz

解凍してできたディレクトリに入り、
$ ./vmware-install.pl
を実行します。
実行すると、次のようなエラーが発生。

The following VMware kernel modules have been found on your system that were
not installed by the VMware Installer. Please remove them then run this
installer again.

vmhgfs
vmxnet
vmmemctl
vmblock

I.e. - 'rm /lib/modules/2.6.24-18-generic/misc/.{o,ko}'

Execution aborted.

# open-vm-tools とかいうパッケージが入っていたんだろうか。。。

そのままでもよかったのかもしれないのですが、とりあえず純正品をインストールしておこうと、言われるままに
$ sudo rm /lib/modules/2.6.24-18-generic/misc/vmhgfs.ko
$ sudo rm /lib/modules/2.6.24-18-generic/misc/vmxnet.ko
$ sudo rm /lib/modules/2.6.24-18-generic/misc/vmmemctl.ko
$ sudo rm /lib/modules/2.6.24-18-generic/misc/vmblock.ko

そして再度
$ ./vmware-install.pl
を実行しました。

Rubyインストール
入手したVMイメージにはrubyが入っていなかったため、最初からクリーンインストールすることができました。
Ruby公式サイトから1.9の最新安定版(現時点では1.9.1-p129)をダウンロードして、以下の手順でインストール。

$ ./configure --prefix /usr/lib/ruby/ruby-1.9.1
$ ./make
$ sudo make install

RubyGemsインストール
Rubyのライブラリ管理ツールRubyGemsをインストールします。最新版はここからダウンロードできます。ダウンロード・展開したら、以下コマンドでインストール。

$ sudo ruby setup.rb configure
$ sudo ruby setup.rb make
$ sudo ruby setup.rb install

Railsインストール
$ gem install rails

とすると、ここで

/usr/lib/ruby/ruby-1.9.1/lib/ruby/site_ruby/1.9.1/rubygems/package.rb:10:in `require': no such file to load -- zlib (LoadError)
from /usr/lib/ruby/ruby-1.9.1/lib/ruby/site_ruby/1.9.1/rubygems/package.rb:10:in `'
from /usr/lib/ruby/ruby-1.9.1/lib/ruby/site_ruby/1.9.1/rubygems/format.rb:9:in `require'
from /usr/lib/ruby/ruby-1.9.1/lib/ruby/site_ruby/1.9.1/rubygems/format.rb:9:in `'
from /usr/lib/ruby/ruby-1.9.1/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:11:in `require'
from /usr/lib/ruby/ruby-1.9.1/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:11:in `'
from /usr/lib/ruby/ruby-1.9.1/lib/ruby/site_ruby/1.9.1/rubygems/dependency_installer.rb:3:in `require'
from /usr/lib/ruby/ruby-1.9.1/lib/ruby/site_ruby/1.9.1/rubygems/dependency_installer.rb:3:in `'
from /usr/lib/ruby/ruby-1.9.1/lib/ruby/site_ruby/1.9.1/rubygems/commands/install_command.rb:4:in `require'
from /usr/lib/ruby/ruby-1.9.1/lib/ruby/site_ruby/1.9.1/rubygems/commands/install_command.rb:4:in `'
from /usr/lib/ruby/ruby-1.9.1/lib/ruby/site_ruby/1.9.1/rubygems/command_manager.rb:167:in `require'
from /usr/lib/ruby/ruby-1.9.1/lib/ruby/site_ruby/1.9.1/rubygems/command_manager.rb:167:in `rescue in load_and_instantiate'
from /usr/lib/ruby/ruby-1.9.1/lib/ruby/site_ruby/1.9.1/rubygems/command_manager.rb:159:in `load_and_instantiate'
from /usr/lib/ruby/ruby-1.9.1/lib/ruby/site_ruby/1.9.1/rubygems/command_manager.rb:88:in `[]'
from /usr/lib/ruby/ruby-1.9.1/lib/ruby/site_ruby/1.9.1/rubygems/command_manager.rb:144:in `find_command'
from /usr/lib/ruby/ruby-1.9.1/lib/ruby/site_ruby/1.9.1/rubygems/command_manager.rb:131:in `process_args'
from /usr/lib/ruby/ruby-1.9.1/lib/ruby/site_ruby/1.9.1/rubygems/command_manager.rb:102:in `run'
from /usr/lib/ruby/ruby-1.9.1/lib/ruby/site_ruby/1.9.1/rubygems/gem_runner.rb:58:in `run'
from /usr/lib/ruby/ruby-1.9.1/bin/gem:21:in `
'

とエラーが発生しました。
/usr/lib を確認すると、libz は入っている様子・・・。
調べてみるとどうも、zlib ではなく zlib 開発ツールが必要なのだそうです。

[技術メモ]gemでzlib起因のエラー

を参考に
$ sudo apt-chache search zlib
でライブラリを探すと、 zlib1g-dev というそれらしきパッケージがありました。

$ sudo apt-get install zlib1g-dev
でライブラリインストール後、Rubyを再ビルドして

$ gem install rails

を実行すると無事Railsのインストールが完了しました。

Railsアプリ作成
$ rails app

Railsアプリ起動
$ <アプリdir>/script/server
でアプリサーバを起動すると、ここでエラーが発生。

/usr/lib/ruby/ruby-1.9.1/lib/ruby/gems/1.9.1/gems/rails-2.3.2/lib/initializer.rb:269:in `rescue in require_frameworks': no such file to load -- openssl (RuntimeError)
from /usr/lib/ruby/ruby-1.9.1/lib/ruby/gems/1.9.1/gems/rails-2.3.2/lib/initializer.rb:266:in `require_frameworks'
from /usr/lib/ruby/ruby-1.9.1/lib/ruby/gems/1.9.1/gems/rails-2.3.2/lib/initializer.rb:134:in `process'
from /usr/lib/ruby/ruby-1.9.1/lib/ruby/gems/1.9.1/gems/rails-2.3.2/lib/initializer.rb:113:in `run'
from /home/moco/workspace/ruby/rails/app/config/environment.rb:9:in `'
from /usr/lib/ruby/ruby-1.9.1/lib/ruby/gems/1.9.1/gems/activesupport-2.3.2/lib/active_support/dependencies.rb:156:in `require'
from /usr/lib/ruby/ruby-1.9.1/lib/ruby/gems/1.9.1/gems/activesupport-2.3.2/lib/active_support/dependencies.rb:156:in `block in require'
from /usr/lib/ruby/ruby-1.9.1/lib/ruby/gems/1.9.1/gems/activesupport-2.3.2/lib/active_support/dependencies.rb:521:in `new_constants_in'
from /usr/lib/ruby/ruby-1.9.1/lib/ruby/gems/1.9.1/gems/activesupport-2.3.2/lib/active_support/dependencies.rb:156:in `require'
from /usr/lib/ruby/ruby-1.9.1/lib/ruby/gems/1.9.1/gems/rails-2.3.2/lib/commands/server.rb:84:in `'
from script/server:3:in `require'
from script/server:3:in `
'

openssl ライブラリが見つからない?openssl は Ruby標準添付のはずなのに・・・。

そもそもUbuntuにopenssl開発用ライブラリが入っていなかったのが原因でした。

opensslライブラリインストール
まず、libssl-devをインストールします。
$ sudo apt-get install libssl-dev

次に、Rubyインストール時に使用したRubyソースディレクトリ中に含まれるopensslライブラリをインストールし直します。
/ext/openssl にて、次のコマンドを実行。

$ ruby extconf.rb
$ make
$ sudo make install

インストールできたか確認してみます。

$ irb
irb(main):001:0> require 'openssl'
=> true

無事、インストールできたようです。

Railsアプリ起動(再)
$ <アプリdir>/script/server

http://localhost:3000/ をブラウザで開くと、


Welcome ページが表示されました。

Emacs での開発環境設定
Emacs での Ruby & Rails 開発環境を整えます。

ruby-mode用emacs-lisp
Rubyソースディレクトリに含まれる emacs-lisp ファイルを好きな場所 ( ~/emacs/site-lisp/ruby にしました) にコピーします。

$ cp /misc/*.el ~/emacs/site-lisp/ruby

rails用emacs-lisp
http://rubyforge.org/projects/emacs-rails/ から emacs-rails を入手し、含まれる .el ファイル一式を好きな場所 (~/emacs/site-lisp/rails にしました) にコピーします。

$ cp emacs-rails/*.el ~/emacs/site-lisp/rails

併せて、
rails.el まとめ
を参考に find-recursive.el と snippet.el も入手して好きな場所 (~/emacs/site-lisp にしました) にコピーします。

~/.emacs を作成し、以下を追加してemacs環境が完成です。

;; site-lisp
(add-to-list 'load-path (expand-file-name "~/emacs/site-lisp"))

;; for Ruby
(add-to-list 'load-path (expand-file-name "~/emacs/site-lisp/ruby"))

(autoload 'ruby-mode "ruby-mode"
"Mode for editing ruby source files" t)
(setq auto-mode-alist
(append '(("\\.rb$" . ruby-mode)) auto-mode-alist))
(setq interpreter-mode-alist (append '(("ruby" . ruby-mode))
interpreter-mode-alist))
(autoload 'run-ruby "inf-ruby"
"Run an inferior Ruby process")
(autoload 'inf-ruby-keys "inf-ruby"
"Set local key defs for inf-ruby in ruby-mode")
(add-hook 'ruby-mode-hook
'(lambda ()
(inf-ruby-keys)))

;; for Ruby on Rails
(add-to-list 'load-path (expand-file-name "~/emacs/site-lisp/rails"))
(setq auto-mode-alist (cons '("\\.rhtml$" . html-mode) auto-mode-alist))
(require 'rails)
(define-key rails-minor-mode-map "\C-c\C-p" 'rails-lib:run-primary-switch)
(define-key rails-minor-mode-map "\C-c\C-n" 'rails-lib:run-secondary-switch)
(defun try-complete-abbrev (old)
(if (expand-abbrev) t nil))
(setq hippie-expand-try-functions-list
'(try-complete-abbrev
try-complete-file-name
try-expand-dabbrev))

0 件のコメント:

コメントを投稿