Установка RVM, Ruby 1.9.2, Ruby on Rails 3.0.1 на Ubuntu + решение проблемы с гемом mysql2

// Май 13th, 2011 // Ruby, Ruby on Rails, RVM

Ruby 1.9.2 ubuntuВ этой статье я опишу идеологически правильную установку Rails 3.0.1 и сопутствующего добра на Ubuntu. Вообще я стараюсь ставить весь софт из пакетов, но в данном случае, для лучшего контроля версий сделаю исключение.

Сразу хочу ответить на вопрос, зачем я это делаю. В сети много материалов по установке Rails, про RVM тоже есть. Однако везде есть какие-либо неточности, и из простого руководства статья превращается в квест «собери сам». Хочется надеяться, что эта статья такой не станет. Итак поехали!

Установка RVM на Ubuntu

RVM (Ruby Version Manager) - программа для управления версиями руби, и его гемов (расширений), одним из которых является Rails.

1. Ставим RVM через CURL

sudo aptitude install build-essential bison openssl libreadline5 libreadline-dev curl git-core zlib1g zlib1g-dev libssl-dev vim libsqlite3-0 libsqlite3-dev sqlite3 libreadline-dev libxml2-dev git-core subversion autoconf

bash < <( curl https://rvm.beginrescueend.com/releases/rvm-install-head )

2. Открываем файл /home/имя_вашего_юзера/.bashrc и в начале файла
меняем строку:

[ -z "$PS1" ] && return

на

if [[ -n "$PS1" ]]; then

Затем в конце файла добавляем эти строки:

if [[ -s $HOME/.rvm/scripts/rvm ]] ; then source $HOME/.rvm/scripts/rvm ; fi

fi

3. Проверяем установку RVM:

rvm notes

Установка RVM для всех пользователей

Этот вариант подходит для серверов. Для примера будем ставить RVM для всех пользователей (и в частности для юзера andrey).

1. Заходим под root. Ставим RVM через CURL

andrey@comp$ su
root@comp# aptitude install build-essential bison openssl libreadline5 libreadline-dev curl git-core zlib1g zlib1g-dev libssl-dev vim libsqlite3-0 libsqlite3-dev sqlite3 libreadline-dev libxml2-dev git-core subversion autoconf

root@comp# bash < <( curl https://rvm.beginrescueend.com/releases/rvm-install-head )

2. Для каждого юзера, который будет работать с rvm (в т.ч. и root) делаем следующее

andrey@comp$ echo '[[ -s "/usr/local/rvm/scripts/rvm" ]] && . "/usr/local/rvm/scripts/rvm" # Load RVM function' >> ~/.bash_profile

2. Открываем файл /home/имя_вашего_юзера/.bashrc и в начале файла
меняем строку:

[ -z "$PS1" ] && return

на

if [[ -n "$PS1" ]]; then

Затем в конце файла добавляем эти строки:

if [[ -s /usr/local/rvm/scripts/rvm ]] ; then source /usr/local/rvm/scripts/rvm ; fi

fi

3. Выходим из терминала. Запускаем заново. Проверяем установку RVM:

rvm notes

Тут есть такой нюанс. Если вы сделаете такую последовательность команд.

andrey@comp$ su
root@comp# rvm notes

то вы проверите установку rvm для юзера andrey, а не root, как могло бы показаться. Для точнйо проверки делайте так:

andrey@comp$ ssh localhost -l root
root@comp# rvm notes

Установка Ruby 1.9.2 через RVM

Тут история такова, что в некоторых мануалах рекомендуют ставить из head (rvm install 1.9.2-head), однако у меня установить его таким образом не получилось. Были ошибки типа этой:

ruby-1.9.2-head - #compiling
ERROR: Error running 'make ', please read /home/andrey/.rvm/log/ruby-1.9.2-head/make.log
ERROR: There has been an error while running make. Halting the installation.

А в логах — ошибки компиляции:

long-long  -fPIC -I. -I.ext/include/x86_64-linux -I./include -I. -DRUBY_EXPORT   -o dmyversion.o -c dmyversion.c
echo executable host ruby is required.  use --with-baseruby option.; false -I. ./tool/compile_prelude.rb ./prelude.rb miniprelude.c
executable host ruby is required. use --with-baseruby option.
make: *** [miniprelude.c] Ошибка 1

Так что ставим без head.

ВАЖНОЕ ЗАМЕЧАНИЕ! Если вы будете ставить гемы от пользователя root, то они будут доступны всем остальным пользователям (начиная со следующего их входа в систему).

1. Устанавливаем ruby и делаем симлинки

rvm install 1.9.2
rvm --default 1.9.2

2. Проверяем

$ ruby -v
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-linux]

Установка Rails 3.0.7

Последняя на данный момент версия Rails — 3.0.7 (хотя и есть 3.1, но она пока в бете). Ставится Rails очень просто:

gem install rails

Смотрим версию:

$ rails -v
Rails 3.0.7

Если резюмировать, то установка через RVM на порядок проще, чем через пакеты. Ну и собственно пакеты в репозитарии отстают по версиям.

Решение проблемы с геомом mysql2

После вышеприведённой установки, при наличии MySQL 5.5/Percona 5.5 в системе Rails-приложение с геомо mysql2 запускаться не будет. При запуске (rails server) возвращает примерно такие ошибки:

andrey@z11:~/1/app$ rails server
/home/andrey/.rvm/gems/ruby-1.9.2-p180/gems/mysql2-0.2.7/lib/mysql2.rb:8:in `require': Incorrect MySQL client library version! This gem was compiled for 5.5.10 but the client library is 5.1.55. (RuntimeError)
	from /home/andrey/.rvm/gems/ruby-1.9.2-p180/gems/mysql2-0.2.7/lib/mysql2.rb:8:in `'
	from /home/andrey/.rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.13/lib/bundler/runtime.rb:68:in `require'
	from /home/andrey/.rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.13/lib/bundler/runtime.rb:68:in `block (2 levels) in require'
	from /home/andrey/.rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.13/lib/bundler/runtime.rb:66:in `each'
	from /home/andrey/.rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.13/lib/bundler/runtime.rb:66:in `block in require'
	from /home/andrey/.rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.13/lib/bundler/runtime.rb:55:in `each'
	from /home/andrey/.rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.13/lib/bundler/runtime.rb:55:in `require'
	from /home/andrey/.rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.13/lib/bundler.rb:120:in `require'
	from /home/andrey/1/app/config/application.rb:7:in `'
	from /home/andrey/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.7/lib/rails/commands.rb:28:in `require'
	from /home/andrey/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.7/lib/rails/commands.rb:28:in `block in '
	from /home/andrey/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.7/lib/rails/commands.rb:27:in `tap'
	from /home/andrey/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.7/lib/rails/commands.rb:27:in `'
	from script/rails:6:in `require'
	from script/rails:6:in `'

Проблема решается принудительной установкой версии 0.2.6 гема mysql2.

rails new app -d mysql
cd ./app

Далее в Gemfile прописываем вместо

gem 'mysql2'

следующее

gem 'mysql2', '0.2.6'

Затем, как обычно:

bundle install
rails server

Начиная с версии 0.2.7 работать перестает, а < 0.2.7 всё ок.

Удаление RVM

При первой установке я поставил RVM для своего юзера(andrey) и потом уже не смог поставить его для root. Чтобы переустановить RVM, мне пришлось сначала его удалить. Делается это так:

rvm implode

Не забудьте проверить файлы .bashrc, .profile и .bash_profile files.

А также удалить /etc/rvmrc file, or one в домашнем каталоге ~/.rvmrc.
Подробности тут.

Литература

http://www.christopherirish.com/2010/08/25/how-to-install-rvm-on-ubuntu-10-04/

http://fominov.ru/2010/09/ustanovka-ruby-1-9-2-i-rails-3-s-pomoshhyu-rvm-na-ubuntu-10-04/




coded by nessus
Ruby 1.9.2 ubuntu







Смотрите также:

Спасибо!


Если вам помогла статья, или вы хотите поддержать мои исследования и блог - вот лучший способ сделать это:


16 Responses to “Установка RVM, Ruby 1.9.2, Ruby on Rails 3.0.1 на Ubuntu + решение проблемы с гемом mysql2”

  1. Еще вот полезная фишка по работе с RVM. Допустим, у нас есть приложение blog.

    Делаем:

    $ cd blog/

    Затем создаем гемсет для нашего приложения (для удобства имя такое же, как у приложения):
    $ rvm gemset create blog

    Потом:
    $ nano .rvmrc

    и в файле прописываем и сохраняем:

    rvm use 1.9.2@blog

    Затем делаем:

    $ cd ./

    Появится сообщение от RVM. Пишем там ‘yes’. Вот, теперь при переходе в папку нашего приложение через консоль будет автоматически использоваться Ruby 1.9.2 с гемсетом blog. Очень удобно.

    • Install ruby 1.9.2 rvm google.com Андрей Токарчук:

      Нет. Ерунда какая-то. Потом при перемещении такой папки в неё нельзя войти.

  2. Rvm ubuntu Kir:

    Отличная статья!
    1.9.2-head может не устанавливаться, потому что head-версия это самая новая из репозитариев. Просто 1.9.2 конечно, лучше и стабильней

  3. Ruby 1.9.2 ubuntu Dexel:

    А что же о безопасности ОС ?
    В баш вставляем обращение через CURL наружу, не ведомо что прийдёт в ответ?
    Не слишком ли жирно потерять с десяток заказчиков, проекты которых храняться на сервере и за одних рельсов?
    Наверное проще крест поставить на этом Rails…
    Дико извиняюсь.

    • Rvm ubuntu google.com Андрей Токарчук:

      Да всё правильно. Но лучшего решения на данный момент нет.

    • Ruby 1.9.2 ubuntu ya.ru Kirill:

      Уважаемый Dexel, описываю вам классическую схему деплоя Rails-приложения.
      Для каждого приложения на сервере создается отдельный пользователь. Устанавливается rvm-per-user, unicorn и его воркеры с приложением запускаются от имени пользователя приложения. nginx под www-data использует сокет юникорна для обслуживания сайта. Никаких рутов, все безопасно

  4. Додрфй день, по совету знакомых решил освоить Ruby,
    пока раотаю в winXP, перепробовал много RubyInstalers,
    при попытке запустить простенькую программу возникают проблемы, уже потратил кучу времени,пожалуйста помогите проскочить проблем уили нужно просто перейти на линукс. Спасибо Николай

  5. Rvm ubuntu alexey:

    здравствуйте! У меня возникла такая проблема- при выполнении команды — bash < <( curl https://rvm.beginrescueend.com/releases/rvm-install-head )

    возникает сообщение об ошибке — bash: ошибка синтаксиса около неожиданной лексемы `&’

    подскажите пожалуйста в каком направлении копать?

    • Установка rails ubuntu google.com Андрей Токарчук:

      Это косяк сайта, он символы перекодирует. &ampl = &
      Весь список см. вот тут.

      • Спасибо, с этим разобрался — иеперь вопрос в следующем — при выполнении sudo aptitude install build-essential bison openssl libreadline5 libreadline-dev curl git-core zlib1g zlib1g-dev libssl-dev vim libsqlite3-0 libsqlite3-dev sqlite3 libreadline-dev libxml2-dev git-core subversion autoconf
        Выдается ошибка 404 файлы не найдены. Система у меня Рунта. Жду Вашей помощи.

  6. Ubuntu Установка ruby 1.9.2 Павел:

    Здравствуйте! Все команды выполняются нормально, но после завершения, при попытке ввести команду rvm notes, система говорит, что команда rvm не найдена. ОС — Ubuntu 11.04. Буду очень благодарен за помощь.

Комментировать