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

Опублікував Сергій Макаренко 29-08-2013 об 12:36

Я вже кілька тижнів щільно так катую OS X Mavericks Developer Preview і хочу переїхати на неї з OS X Mountain Lion як тільки вона буде доступна для купівлі в Mac App Store. По-перше, в новій операційній системі купа нововведень. По-друге, є проблема, яка мені доставляє немало клопотів і вирішення якої я поки не знайшов. Тому я зараз вирішую для себе питання, пов'язані з переїздом. І одне з таких питань наступне: а чи буде нормально працювати поточна версія Octopress без вдосконалень в новому середовищі OS X Mavericks.

Ось це я і перевірив, а в цій публікації результатами цієї перевірки я поділюся з вами. Так от. Як ви знаєте, OS X Mavericks вже постачається з версією Ruby 2.0. Перевірка версії дає такий вивід:

ruby 2.0.0p247 (2013-06-27 revision 41674) [universal.x86_64-darwin13]

Спробувавши просто топорно встановити менеджер Bundler для керування gem-ами я отримав таке повідомлення:

Fetching: bundler-1.3.5.gem (100%)
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.

Не сподобалося мені, що інсталлер хоче засадити в теку /Library/ і я вирішив повернутися до старого дідівського способу, тобто за допомогою RVM.

Після команди rvm install ruby-1.9.2-p320 мені RVM люб'язно повідомив про те, що Ruby 1.9.3 для OS X 10.9 немає:

Searching for binary rubies, this might take some time.
No binary rubies available for: osx/10.9/x86_64/ruby-1.9.2-p320.
Continuing with compilation. Please read 'rvm help mount' to get more information on binary rubies.
Checking requirements for osx.
Installing macports…

І для того, щоб встановити його потрібно спочатку поставити MacPorts. Але RVM це зробить без зайвих запитань. Вам буде потрібно кілька разів ввести пароль адміністратора. Ось це і весь клопіт під час інсталяції. Весь лог виводу можна подивитись тут. Окрім того, все це можна зробити без Xcode 5 (в клієнтських версіях OS X немає програми make та інших програмних засобів, які необхідні для встановлення програм з бінарних пакетів). Вам OS X Mavericks просто запропонує встановити Command Line Developer Tools for OS X Mavericks.

Command Line Developer Tools for OS X Mavericks

З встановленням Bandler не виникло ніяких складнощів. А от із виконанням команди bundle install виникли певні проблеми. Вивід команди був такий:

Fetching gem metadata from http://rubygems.org/.......
Fetching gem metadata from http://rubygems.org/..
Installing rake (0.9.2) 
Installing RedCloth (4.2.8) 
Installing posix-spawn (0.3.6) 
Installing albino (1.3.3) 
Installing blankslate (2.1.2.4) 
Installing chunky_png (1.2.1) 
Installing fast-stemmer (1.0.0) 
Installing classifier (1.3.3) 
Installing fssm (0.2.7) 
Installing sass (3.1.5) 
Installing compass (0.11.5) 
Installing directory_watcher (1.4.0) 
Installing ffi (1.0.9) 
Installing haml (3.1.2) 
Installing kramdown (0.13.3) 
Installing liquid (2.2.2) 
Installing syntax (1.0.0) 
Installing maruku (0.6.0) 
Installing jekyll (0.11.0) 
Installing rubypython (0.5.1) 
Installing pygments.rb (0.1.3) 
Installing rack (1.3.2) 
Installing rb-fsevent (0.4.3.1) 
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

    /Users/user_name/.rvm/rubies/ruby-1.9.2-p320/bin/ruby extconf.rb 
creating Makefile
extconf.rb:21:in `<main>': Only Darwin systems greater than 8 (Mac OS X 10.5+) are supported (RuntimeError)


Gem files will remain installed in /Users/user_name/.rvm/gems/ruby-1.9.2-p320/gems/rb-fsevent-0.4.3.1 for inspection.
Results logged to /Users/user_name/.rvm/gems/ruby-1.9.2-p320/gems/rb-fsevent-0.4.3.1/ext/gem_make.out

An error occurred while installing rb-fsevent (0.4.3.1), and Bundler cannot continue.
Make sure that `gem install rb-fsevent -v '0.4.3.1'` succeeds before bundling.

Вирішується вона теж досить просто. В файлі Gemfile знаходимо таке:

gem 'rb-fsevent'

І міняємо на таке:

gem 'rb-fsevent', '>= 0.9'

Зберігаємо зміни і знову виконуємо команду bundle install. Все. Особисто мені не подобається, що для того, щоб встановити в OS X Mavericks Ruby 1.9.3 потрібно додатково встановити MacPorts, які, свою чергу, потребують встановлення Java для OS X.

Завантаження Java для OS X

Встановлена Java для OS X

Особисто мені для роботи Java взагалі не потрібна і я не люблю цю діряву технологію. Тому, сподіваюся, що незабаром вийде Ruby для OS X 10.9. Або я знайду якийсь альтернативний спосіб встановлення Ruby 1.9.3 без інсталювання MacPorts {% emoji wink %}.


Оновлено 15 вересня 2013 р.: альтернативне рішення я в решті решт знайшов, але воно підійде не всім. Якщо ви вже користуєтеся Octopress в системі OS X Mountain Lion, то для того, щоб з блогом можна було працювати в OS X Mavericks достатньо з домашньої теки вашого користувача в OS X Mountain Lion скопіювати приховані теки .rvm та .gem до домашньої теки вашого користувача в OS X Mavericks. Важливо, щоб ім'я користувача в обох системах було однаковим, в інакшому випадку буде так, як зазначив в коментарях до цього посту Олег Сердюков:

When you compile Ruby using the normal ./configure && make, the resulting binary is not portable between machines for a number of reasons. Hard-Coded Paths. External Dependencies.

Здесь скорее всего сработало то, что пути не изменились, ты переносил в то же самое место и в rvm уже были все зависимости.

Олег Сердюков

Для поточних користувачів Octopress це буде класним способом перенесення сарців свого блогу без непотрібної метушні і встановлення MacPorts та не православної Java. Тому перед переїздом заархівуйте потрібні теки і насолоджуйтеся безболісним і швидким переїздом.