На днях вышла очередная версия OSX 10.10 Yosemite, и если для обычных пользователей маков вопрос «обновляться или нет» не стоит, то разработчики подобным вопросом вполне могут задаться. Редкий большой апдейт прошлых лет не приносил нам тех или иных проблем с софтом, библиотеками и консолью. Не может похвастаться отсутствием проблем и нынешнее обновление.
Одним из лучших советов тут конечно было бы подождать месяц-другой и только затем обновляться — избавит от многих проблем и потери времени. Но ждать не хочется, а посему после обновления у вас гарантированно всё сломается (речь далее в основном идёт о ruby и rails): будут выскакивать seg fault'ы, не будут собираться некоторые гемы, возникнут проблемы со скриптами в консоли.
Исправление некоторых проблем нагуглить будет легко, а для некоторых предлагают лишь хаки в виде задания дополнительных параметров компиляции и переменных окружения.
У автора ушла большая часть выходного на полное обновление системы и настройку рабочего окружения, в результате чего родилась описанная ниже инструкция. Если вы рубист, разрабатывает на маке и собираетесь обновляться, то следование следующим пунктам вам очень поможет сэкономить время.
- Первым делом после обновления OSX запустите Xcode, установите обновления и согласитесь с новой лицензией.
- Xcode почему-то в апсторе доступен только 6.0.1, хотя для нормальной работы в Yosemite требуется 6.1, поэтому скачайте и установите Xcode 6.1 по этой ссылке, после чего в консоли выполните
xcode-select --install
- В Yosemite сделали что-то с консолью, из-за чего переменные окружения в текущей сессии терминала и переменные окружения при выполнении скриптов/программ различаются, а если точнее, то изменения, внесённые в PATH в ~/.bashprofile или ~/.zshrc не будут подхватываться. В чём проблема, я не знаю, но на практике оказываются как бы 2 переменные PATH: та, которая содержит изменения из вашего ~/.bashrc, и та, которая в систему по дефолту.
Из-за этого в консоли начинают происходить множество косяков, о которых жалуются повсюду в интернетах. Чтобы избежать непонятных проблем, в настройках консоли нужно явно прописать login shell "/usr/bin/login -f имя_вашего_пользователя".
- Далее следует обновить homebrew, который у вас работать не будет из-за прописанной в нём 1.8 версии руби.
cd /usr/local git pull
- Следующим пунктом будет установка gcc и его зависимостей, если он у вас раньше не стоял
brew install gcc
- Пора обновлять пакеты homebrew.
brew upgrade
- Что-то может быть до сих пор не так, поэтому убедитесь, что brew doctor не выдаёт никаких проблем.
- Обновляем pow, т.к. в Yosemite выпилили какие-то deprecated api, используемые в старом pow'е.
curl get.pow.cx | sh
- Теперь можно переустановить руби
rvm reinstall 2.1.3
- И последним пунктом будет постгрес, если вы его конечно используете. В Yosemite он у вас он перестанет запускаться, и чтобы его починить, создайте три каталога
mkdir /usr/local/var/postgres/pg_tblspc mkdir /usr/local/var/postgres/pg_twophase mkdir /usr/local/var/postgres/pg_stat_tmp touch /usr/local/var/postgres/pg_tblspc/.keep touch /usr/local/var/postgres/pg_twophase/.keep touch /usr/local/var/postgres/pg_stat_tmp/.keep
После произведённых выше манипуляций bundle install в вашем проекте наконец-то должен корректно отработать и без ошибок собрать все гемы.
Приятной работы.
P.S. Дополнения из комментариев:
- Перед обновлением OSX выполните brew update && brew upgrade
- По поводу п.3 — переменные окружения нужно перенести в ~/.profile.
Автор: morr