Mac OSX で PostgreSQL の dblink をソースからインストール、構築する
MacPorts などによらずにソースから dblink を導入、構築する方法。
意外と難しかったので記録に残しておく。
Mac OS X 10.6.4 と postgresql-8.4.2 で確認。
ビルド、インストール
ここ の手順で、 /usr/local 配下に postgresql-8.4.2 をビルド・インストール済みである前提。
dblink のソースは、 postgresql-8.4.2 のソースに contrib として含まれている。まず、postgresql をビルドしたソースディレクトリに移動して、dblink モジュールのビルド実行。
$ cd /usr/local/postgresql-8.4.2/contrib/dblink $ ls -l total 160 -rw-r--r--@ 1 testnoda admin 489 11 11 2007 Makefile -rw-r--r--@ 1 testnoda admin 59923 9 13 2009 dblink.c -rw-r--r--@ 1 testnoda admin 2431 6 10 2009 dblink.h -rw-r--r--@ 1 testnoda admin 5606 6 10 2009 dblink.sql.in drwxr-xr-x@ 3 testnoda admin 102 12 10 2009 expected drwxr-xr-x@ 3 testnoda admin 102 12 10 2009 sql -rw-r--r--@ 1 testnoda admin 1816 4 5 2008 uninstall_dblink.sql $ make
ビルドが終わると dblink.so ができているので、 root になった後 make install 実行。
$ sudo su Password: # pwd /usr/local/postgresql-8.4.2/contrib/dblink # ls -l total 360 -rw-r--r--@ 1 testnoda admin 489 11 11 2007 Makefile -rw-r--r--@ 1 testnoda admin 59923 9 13 2009 dblink.c -rw-r--r--@ 1 testnoda admin 2431 6 10 2009 dblink.h -rw-r--r-- 1 testnoda admin 46132 9 19 19:57 dblink.o -rwxr-xr-x 1 testnoda admin 43960 9 19 19:57 dblink.so -rw-r--r-- 1 testnoda admin 5568 9 19 19:57 dblink.sql -rw-r--r--@ 1 testnoda admin 5606 6 10 2009 dblink.sql.in drwxr-xr-x@ 3 testnoda admin 102 12 10 2009 expected drwxr-xr-x@ 3 testnoda admin 102 12 10 2009 sql -rw-r--r--@ 1 testnoda admin 1816 4 5 2008 uninstall_dblink.sql # make install # cd /usr/local/pgsql/lib/ # ls -l dblink.so -rwxr-xr-x 1 root admin 43960 9 19 18:33 dblink.so # exit $
構築
次は dblink.sql を実行してデータベースに dblink を登録するが、ソースフォルダにある dblink.sql を使うとエラーが出て登録できない。
$ su - postgres Password: $ cd /usr/local/postgresql-8.4.2/contrib/dblink/sql $ ls -l total 32 -rw-r--r--@ 1 testnoda admin 12891 Jun 7 2009 dblink.sql $ /usr/local/pgsql/bin/createdb local $ /usr/local/pgsql/bin/psql local -f dblink.sql SET SET SET : : : psql:dblink.sql:375: ERROR: function dblink_connect_u(text, text) does not exist \set ORIGINAL_USER :USER \c - dblink_regression_test psql:dblink.sql:378: \connect: could not create socket: Too many open files $ /usr/local/pgsql/bin/dropdb local $
データベースに正しく登録するためには、 pgsql フォルダにインストールされているほうの dblink.sql を使用する。
$ whoami postgres $ /usr/local/pgsql/bin/createdb local $ cd /usr/local/pgsql/share/contrib/ $ ls dblink.sql plr.sql uninstall_dblink.sql $ /usr/local/pgsql/bin/psql local -f dblink.sql SET CREATE FUNCTION CREATE FUNCTION : : : CREATE FUNCTION CREATE FUNCTION CREATE FUNCTION $