Странное поведение psql в OS X Lion

Заметил, что при переходе на OS X 10.7 Lion испортилась работа разных горячих клавиш в консольной psql. Например не работал поиск по истории команд CTRL-R и некоторые другие комбинации клавиш.

Обновление операционной системы совпало с окончательным переходом с Macports на Homebrew. Поэтому первым делом я начал грешить на библиотеку readline из homebrew. Тем более в OS X есть свой аналог этой GNUшной библиотеки libedit. И brew устанавливает readline в режиме keg-only. Т.е. в отдельной директории, не проставляя никаких внешних ссылкок на нее.

Некоторое время спустя, убедившись, что на первый взгляд все на местах и слинковано с правильными библиотеками, заметил, что сам бинарник psql лежит в /usr/bin/psql. Также в директории /usr/bin/ находится весь набор postgres утилит (pg_dump, pg_dumpall и т.д.). Ну само собой, первая мысль настоящего хардкорного юниксоида: “Какая с… насрала мне в… душу”.

Все оказалось намного интереснее. Теперь база данных PostgreSQL 9.0.4 является частью операционной системы OS X Lion. Не уверен нравится мне это или нет. Чувства по этому поводу двойственные.

Хорошо это или плохо, но нужно исправлять ситуацию и приводить все к нормальному виду. Как всегда для этого есть несколько вариантов.

  • Запускаем psql с полным путем /usr/local/bin/psql
  • Прописываем путь /usr/local/bin/ в начало переменной $PATH для себя
  • Прописываем путь /usr/local/bin/ в начало переменной $PATH для всей системы

Решив поиграть в камикадзе, пошел последним путем. Для этого в файле /etc/paths перенес путь /usr/local/bin на самый верх. Если вы не умеете загружаться в безопасных режимах и чинить всякие шалости вашей операционки, лучше этого не делать. Мало ли какая важная ерундовина зависит именно от системных версий программ, которые она найдет не в /usr/bin, а в /usr/local/bin и упадет. Безопаснее исправить PATH где-нибудь у себя в ~/.profile и не волноваться на счет системных сервисов.

В итоге, все снова работает как должно: поиск по истории, автодополнение таблиц, полей и другие приятные мелочи, что позволяют смотреть на пользователей mysql с жалостью.