среда, 2 ноября 2011 г.

Ruby+PostgreSQL+FreeBSD: как установить gem pg & postgres на FreeBSD

Проблема

Собственно, PostgreSQL и RubyGems ставятся [из портов] предельно просто:

# cd /usr/ports/databases/postgresql84-server && make install clean
# cd /usr/ports/devel/ruby-gems && make install clean

После данных манипуляций можно ставить гемы pg и postgres, но... они не ставятся, ругаясь примерно таким образом:

checking for pg_config... yes
Using config values from /usr/local/bin/pg_config
checking for libpq-fe.h... yes
checking for libpq/libpq-fs.h... yes
checking for PQconnectdb() in -lpq... no
checking for PQconnectdb() in -llibpq... no
checking for PQconnectdb() in -lms/libpq... no
Can't find the PostgreSQL client library (libpq)
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Решение

Чего-то гему не хватает... не хватает библиотечки libpq, которая в этих ваших линуксах идёт отдельным пакетом, а в FreeBSD находится в /usr/ports/databases/posgresql84-contrib. Понять её отсутствие можно, если ставить гемы чисто по-рубийному — gem install pg, но порт /usr/ports/databases/rubygem-pg по непонятным причинам (как это допустила FreeBSD Ports Team?!) не тянет зависимость posgresql84-contrib. Сухой итог:

# cd /usr/ports/databases/postgresql84-contrib && make install clean
после чего можно ставить гемы pg&postgres любым удобным способом без малейших проблем.

P.S.

84 в /usr/ports/databases/postgresql84-* — это версия PostgreSQL 8.4, там же в портах есть куча портов с другими номерами, всё вышеописанное справедливо для них.