Налаштування оточення для роботи з Octopress в OS X Lion

Опублікував Сергій Макаренко 24-07-2012 об 21:51

Я доволі давно думав про те, щоб змінити движок свого блогу. Два роки мені вірою і правдою служив Wordpress, але з часом деякі його вади мене почали все більше і більше дратувати. Наприклад через деякий час після початку його використання він почав здаватись мені важким, а той функціонал, що він його мав, зайвим. Або постійна затримка локалізації свіжих версій Wordpress (яка, до того ж, ще й зроблена через одне місце). Про постійні оновлення плагінів взагалі промовчу. Спочатку я придивлявся на движок «Егея». Але потім відмовився від ідеї його використання почитавши відгуки в інтернетах. І ось тиждень тому я почув про Octopress. Він мені здався більш ніж мінімалістичним і я вирішив роздивитись його більш уважно. Поклацати живі сайти в мене теж була можливість тому що незадовго до цього на нього перейшли мої знайомі — Павло Урусов та Олег Сердюков.

Пробував я його близько тижня. Це пов'язане з тим, що для його роботи потрібно встановити спеціальну версію Ruby (в OS X стоїть 1.8.7). А я, зазвичай, дуже обережно відношусь до встановлення Open Source програмного забезпечення. Так би мовити уважно відношусь до чистоти своєї системи. До того ж я не люблю дублювати вже вбудований в систему софт, а намагають по максимуму використовувати його можливості. І, власне, тиждень я шукав максимально зручний для себе патерн встановлення додаткових Open Source програм та безболісного їх видалення у разі відмови від Octopress. Скажу, що в процесі дізнався дуже багато цікавого і ці надбані знання стануть темою подальших публікацій тут. Але це потім. Зараз я коротко опишу чому мені сподобався Octopress і як я вирішив його використовувати.

По-перше, мене підкорила його гнучкість в плані вимог до комп'ютера, на якому його можна було використовувати. Повторю, що для роботи з ним потрібен лише Ruby 1.9.2 і все. Суть Octopress полягає в тому, що генерація блогу відбувається на машіни користувача, а файли сайту потім зручним для вас способом складаються в корньову теку Apache на сервері. Тобто фактично на сервері лежить статичний html. По-друге, Octopress не потребує внаслідок такої схеми роботи бази даних. Коротше мені сподобалась ідея легкого движка без необхідності використання БД. Це мене автоматично позбавляло головного болю при міграції з Snow Leoprad Server на Mountain Lion Server тому що дозволило б не вирішувати проблему роботи Wordpress з PostgreSQL бо MySQL на ньому немає.

Встановлення Command Line Tools

Модель роботи з Octopress я обрав таку. На сервері в мене буде встановлений Apache, а генерувати блог я буду на своєму компі. Сказано зроблено. Для налаштування отчення нам знадобиться: Xcode, RVM, Ruby 1.9.2 та rsync. По Xcode шуруємо в Mac App Store, rsync вже є в складі OS X Lion. Після того, як ми завантажимо Xcode з Mac App Store потрібно буде встановити Command Line Tools для того, щоб було чим компілювати з сарців RVM та Ruby. Для цього заходимо в налаштунки (⌘+,) та обираємо пункт «Викачане». Там тицяєм кнопку «Встновити» і чекаємо на результат. Після цього нам залишається встановити лише RVM та Ruby 1.9.2. Поставимо спочатку RVM. Увага! Всі команди, які будуть зазначені нижче ми вводимо з консолі під своїм обліковим записом без використання команди sudo. Для встановлення останньої версії RVM використаємо таку команду:

curl -L https://get.rvm.io | bash -s stable

Чекаємо на виконання команди. По її завершенню, якщо все пройїшло без помилок з'явиться такий надпис:

# In case of any issues read output of 'rvm requirements' and/or 'rvm notes'

Installation of RVM in /Users/%user_name%/.rvm/ is almost complete:

* To start using RVM you need to run `source /Users/%user_name%/.rvm/scripts/rvm`
in all your open shell windows, in rare cases you need to reopen all shell windows.

# %user_name%,
#
#   Thank you for using RVM!
#   I sincerely hope that RVM helps to make your life easier and more enjoyable!!!
#
# ~Wayne


rvm 1.14.6 (stable) by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [https://rvm.io/]

Далі робимо так, як розумні люди просять і виконуємо команду:

source /Users/%user_name%/.rvm/scripts/rvm

Все, RVM встановлено. Тепер черга за Ruby. Тут невеличке зауваження. Справа в тому, що в Xcode використовується LLVM версія компілятора GCC. І якщо просто запустити встановлення Ruby командою:

rvm install 1.9.2

То отримаєте ось такий матюх:

Extracting yaml-0.1.4.tar.gz to /Users/serhiy_makarenko/.rvm/src
Configuring yaml in /Users/serhiy_makarenko/.rvm/src/yaml-0.1.4.
Compiling yaml in /Users/serhiy_makarenko/.rvm/src/yaml-0.1.4.
Installing yaml to /Users/serhiy_makarenko/.rvm/usr
The provided compiler '/usr/bin/gcc' is LLVM based, it is not yet fully supported by ruby and gems, please read `rvm requirements`.

Це пов'язано з тим, що в нас встановлено LLVM компілятор, яким зібрати Ruby не можна. Для того, щоб цого уникнути ми скомпілюємо потрібну нам версію Ruby за допомогою Clang, що є фронт-ендом для мов програмування C, C++, Objective-C і Objective-C++, який використовує для оптимізації і кодогенераціі фреймворк LLVM. Для цього напишемо:

rvm install 1.9.2 --with-gcc=clang

В процесі установки можете отримати такі повідомлення:

clang: error: unsupported option '--with-libyaml'
Building 'ruby-1.9.2-p320' using clang - but it's not (fully) supported, expect errors.

Якщо вам Ruby не потрібен для розробки а лише використовуватиметься для роботи з Octopress, то на ці попередження можна просто забити бо в цьому разі помилки ні на що не впливатимуть. Після того, як процес встановлення буде завершено перевіряємо чи все встало так, як потрібно за допомогою команди ruby -v. Якщо все було зроблено правильно то відповідь має бути такою:

ruby 1.9.2p320 (2012-04-20 revision 35421) [x86_64-darwin11.4.0]

Все, тепер все готово для роботи з Octopress і залишилось тільки слідкувати за вказівками на сайті.

Видалення RVM та Ruby з системи

Якщо раптом вам захочиться видалити RVM і встановлені за допомогою нього версії Ruby достатньо виконати таку послідовність команд.

Ця видалає встановлену версію Ruby (в нашому випадку 1.9.2):

rvm remove 1.9.2

А після неї цю, для видалення самого RVM:

rvm implode

Після цього потрібно виконати скрип, текст якого наведено нижче:

#!/bin/bash
/usr/bin/sudo rm -rf $HOME/.rvm $HOME/.rvmrc /etc/rvmrc /etc/profile.d/rvm.sh /usr/local/rvm /usr/local/bin/rvm
/usr/bin/sudo /usr/sbin/groupdel rvm
/bin/echo "RVM is removed. Please check all .bashrc|.bash_profile|.profile|.zshrc for RVM source lines and delete 
or comment out if this was a Per-User installation."

Він видалить рештки RVM з вашої системи. Після цього залишається відредагувати файл /etc/profile і видалити з нього цью строку:

[[ -s "/etc/profile.d/rvm.sh" ]] && . "/etc/profile.d/rvm.sh" # Load RVM function

І видаліть те ж саме з файлу ~/.bash_login або ~/.bash_profile. Все, RVM і його сліди повністю видалено з вашої системи.

P.S. Перевірив. Вищевказанний спосіб без проблем працює на OS X Mountain Lion.