読者です 読者をやめる 読者になる 読者になる

VgrantでインストールしたUbuntu ServerにRuby On Railsをインストール

Vagrantで導入した仮想マシン(ubuntu12.04 minimal server)にRuby On Railsをインストールする

環境

ホストOS

$ cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=12.04
DISTRIB_CODENAME=precise
DISTRIB_DESCRIPTION="Ubuntu 12.04.4 LTS"

vagrant

$ vagrant -v
Vagrant 1.6.3

Virtualbox

$ VBoxManage -v
4.3.14r95030

box(Ubuntu-Server-12.10-amd64-Minimal.box)

http://goo.gl/wxdwM

sshでログイン

$ ssh vagrant ssh

アップデート

リポジトリが古くなっているので、下記のコマンドを実行し修正

$ sudo sed -i -e 's/archive.ubuntu.com\|security.ubuntu.com/old-releases.ubuntu.com/g' /etc/apt/sources.list
$ sudo sed -i -e 's/br.old-releases.ubuntu.com/old-releases.ubuntu.com/g' /etc/apt/sources.list
$ sudo apt-get update; sudo apt-get upgrade -y

不要なパッケージを削除

インストールされているパッケージ一覧を取得

$ dpkg -l
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name           Version      Architecture Description
+++-==============-============-============-=================================
ii  accountsservic 0.6.21-6ubun amd64        query and manipulate user account
ii  adduser        3.113+nmu1ub all          add and remove users and groups
ii  ruby-stable    1.9.3-p362-1 amd64        Interpreter of object-oriented sc

よく見ると、ruby-stable 1.9.3-p362-1 amd64が入っているのでアンインストール

$ dpkg -P ruby-stable
(Reading database ... 51181 files and directories currently installed.)
Removing ruby-stable ...
dpkg: warning: while removing ruby-stable, directory '/usr/lib/ruby/site_ruby/1.9.1' not empty so not removed
dpkg: warning: while removing ruby-stable, directory '/usr/lib/ruby/gems/1.9.1/specifications' not empty so not removed
dpkg: warning: while removing ruby-stable, directory '/usr/lib/ruby/gems/1.9.1/gems' not empty so not removed
dpkg: warning: while removing ruby-stable, directory '/usr/lib/ruby/gems/1.9.1/doc' not empty so not removed
dpkg: warning: while removing ruby-stable, directory '/usr/lib/ruby/gems/1.9.1/cache' not empty so not removed
Processing triggers for man-db ...

ディレクトリが削除出来なかったため、手動で削除

$ sudo rm -rf /usr/lib/ruby/site_ruby/1.9.1 /usr/lib/ruby/gems/1.9.1/specifications /usr/lib/ruby/gems/1.9.1/gems /usr/lib/ruby/gems/1.9.1/doc /usr/lib/ruby/gems/1.9.1/cache

必要なパッケージをインストール

$ sudo apt-get install git -y
$ git clone git://github.com/sstephenson/rbenv.git ~/.rbenv
$ sudo apt-get install libsqlite3-dev libcurl4-openssl-dev -y
$ sudo apt-get install zlib1g-dev libssl-dev libreadline6-dev libyaml-dev libxml2-dev libxslt-dev -y
$ sudo apt-get install g++ -y

初期化コマンドを記述しておく

$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(rbenv init -)"' >> ~/.bashrc

ターミナル再起動

ruby-buildのインストール

$ git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

rbenvで特定バージョンのrubyをインストール

$ rbenv install 2.0.0-p481
$ rbenv rehash

使用するバージョンの指定

$ rbenv global
system

現在はシステム標準のrubyが割り当てられているので変更する

$ rbenv global 2.0.0-p481
$ rbenv global
2.0.0-p481
$ rbenv rehash

gemをインストールした後のrbenv rehashを自動化する このままではgemをインストールまたはアンインストールするたびにrbenv rehashする必要があります。 これを自動化してくれるrbenv-rehashというgemがあります(https://github.com/ryansouza/rbenv-rehash)

$ gem i rbenv-rehash

Ruby On Railsのインストール

gemがインストールされていなかったら適宜しましょう gemが自動で作成するri rdocドキュメントを無効化する

$ echo 'install: --no-rdoc --no-ri' >> ~/.gemrc
$ echo 'update:  --no-rdoc --no-ri' >> ~/.gemrc

railsのインストール(version 4.0.5)

$ sudo gem install rails --version 4.0.5
Successfully installed rails-4.0.5
23 gems installed

できたと思ってバージョン確認

$ rails -v
The program 'rails' can be found in the following packages:
 * rails
 * ruby-railties-3.2
Try: sudo apt-get install <selected package>

gem listを確認

$ gem list

*** LOCAL GEMS ***


rails (4.0.5)
railties (4.0.5)
rake (0.9.6)
rbenv-rehash (0.3)
rdoc (4.0.0)
rest-client (1.6.7)

ちゃんとrailsがあるの Gemをアップデート

$ gem update --system
$ rbenv rehash
$ update_rubygems
-bash: /usr/bin/update_rubygems: /usr/bin/ruby: bad interpreter: No such file or directory

リンクを貼ってみる

sudo ln -sf `which ruby` /usr/bin

もう一度アップデート

$ update_rubygems
RubyGems 2.4.1 installed
Parsing documentation for rubygems-2.4.1
Installing ri documentation for rubygems-2.4.1

=== 2.4.1 / 2014-07-17

Bug fixes:

* RubyGems can now be updated on Ruby implementations that do not support
  vendordir in RbConfig::CONFIG.  Issue #974 by net1957.


------------------------------------------------------------------------------

RubyGems installed the following executables:
    /home/vagrant/.rbenv/versions/2.0.0-p481/bin/gem

Ruby Interactive (ri) documentation was installed. ri is kind of like man 
pages for ruby libraries. You may access it like this:
  ri Classname
  ri Classname.class_method
  ri Classname#instance_method
If you do not wish to install this documentation in the future, use the
--no-document flag, or set it as the default in your ~/.gemrc file. See
'gem help env' for details.

できたみたいだけど、まだrailsは実行できない
パスが通ってないからだと思い、findでrailsなどがあるディレクトリを検索

$ sudo find / -type f -name rails
/home/vagrant/local/ruby/gems/bin/rails
/home/vagrant/local/ruby/gems/gems/rails-4.0.5/guides/code/getting_started/bin/rails
/home/vagrant/local/ruby/gems/gems/sass-rails-4.0.3/test/fixtures/sass_project/script/rails
/home/vagrant/local/ruby/gems/gems/sass-rails-4.0.3/test/fixtures/alternate_config_project/script/rails
/home/vagrant/local/ruby/gems/gems/sass-rails-4.0.3/test/fixtures/engine_project/test/dummy/bin/rails
/home/vagrant/local/ruby/gems/gems/sass-rails-4.0.3/test/fixtures/engine_project/script/rails
/home/vagrant/local/ruby/gems/gems/sass-rails-4.0.3/test/fixtures/scss_project/script/rails
/home/vagrant/local/ruby/gems/gems/railties-4.0.5/lib/rails/generators/rails/app/templates/bin/rails
/home/vagrant/local/ruby/gems/gems/railties-4.0.5/bin/rails

先程.bashrcに記述したexport文を以下の用にする

export PATH="$HOME/.rbenv/bin:$HOME/local/ruby/gems/bin:$PATH"

仮想マシンから抜けて、再度ログインしてrails -vを実行

$ exit
$ sudo vagrant ssh
$ rails -v
Rails 4.0.5

やっとできた。
しかし、この方法だと今後問題が出てきそうなので、適宜追記していくことになるかも…