Проблемы с использованием "brew link" для переключения между PostgreSQLs

Я хочу запустить приложение Rails на Heroku, поэтому я установил PostgreSQL на мою машину Snow Leopard с помощью Homebrew. В настоящее время brew устанавливает 9.1.2 в /usr/local/Cellar/postgresql. После некоторых исследований я обнаружил, что бесплатная, общая версия Heroku требует 8.3.x. Хотя homebrew-alt не имеет 8.3, он имеет 8.4, поэтому я загрузил его и установил в /usr/local/Cellar/postgresql 8. Затем я подтвердил, что я могу создавать и запускать базы данных для каждой версии. Думая, что я могу использовать "brew [link | unlink] для переключения назад и вперед, я запускал" brew unlink postgresql8 ", а затем" brew link postgresql ". Однако выполнение последней команды приводит к этой ошибке:

Связывание/usr/local/Cellar/postgresql/9.1.2... Ошибка: невозможно связать postgresql Другая версия уже связана:/usr/local/Cellar/postgresql/9.1.2

Есть ли способ сделать это (переключиться туда и обратно), или я не понимаю, как предполагается использовать связь brew/unlink?

Кстати, "brew list" показывает "postgresql" и "postgresql8", поэтому я не думаю, что это так, что я должен сказать "brew ссылка postgresql9".

Спасибо.

Ответ 1

Используйте brew switch, который является расширением, поставляемым с Homebrew. В вашем случае вы можете использовать 8.4, запустив

$ brew switch postgresql 8.4

Ответ 2

Спасибо, мипади! Это сделал трюк. Осталось только одно, что мне нужно было сделать. Команда 'brew switch предполагает, что все версии postgresql установлены в /usr/local/Cellar/postgresql. Это было не так с версией 8.4.8, поскольку она была установлена ​​в /usr/local/Cellar/postgresql8. Следовательно, мне пришлось создать символическую ссылку, чтобы указать на эту более старую версию:

cd /usr/local/Cellar/postgresql
ln -s ../postgresql8/8.4.8 8.4.8

Естественно, также имеет смысл хранить кластеры базы данных в отдельных каталогах:

/usr/local/var/postgres/8.4.8
/usr/local/var/postgres/9.1.2