奮闘・HDBC-postgresqlを動かすための調査(その2)

というところまでが前回。
調査を続けます。

Googleさんに「mach-o, but wrong architecture」で検索をかけた結果がこちら
おお、同じ現象が、それも日本語のサイトが真っ先に出てくるではありませんか。

あんのたんのブログ : mach-o, but wrong architecture. を解決する
ありがたいことです。

さてこのサイトによると「x86_64、i386両対応の「ユニバーサルバイナリ」のライブラリをビルドしてやる必要がある」とあります。
今回がこの件に当てはまるかどうかは分からないのですが、試す価値はありそうな気がします。

というわけでPostgreSQLを再インストールすることにします。

PostgreSQLの再インストール

まずはPostgreSQLサーバのアンインストール。

sudo port uninstall postgresql83-server

次にPostgreSQLクライアント(?)がをアンインストール。

sudo port uninstall postgresql83

ちなみに先にクライアントをアンインストールしようとすると、postgresql83-serverに依存してるからそっちを先にアンインストールするように、と叱られます。

最後にPostgreSQLクライアントをインストール。大事なのは+universalオプションです。なお今回は8系の最新であるpostgresql84をインストールしました。

sudo port install postgresql84 +universal

インストールは問題なく成功。

ghciでconnectPostgreSQL関数を動かしてみる

Prelude> :m Database.HDBC.PostgreSQL
Prelude Database.HDBC.PostgreSQL> connectPostgreSQL ""

さて結果は・・・

Loading package bytestring-0.9.1.10 ... linking ... done.
Loading package array-0.3.0.2 ... linking ... done.
Loading package containers-0.4.0.0 ... linking ... done.
Loading package transformers-0.2.2.0 ... linking ... done.
Loading package mtl-2.0.1.0 ... linking ... done.
Loading package old-locale-1.0.0.2 ... linking ... done.
Loading package old-time-1.0.0.6 ... linking ... done.
Loading package deepseq-1.1.0.2 ... linking ... done.
Loading package text-0.11.0.6 ... linking ... done.
Loading package time-1.2.0.3 ... linking ... done.
Loading package convertible-1.0.11.0 ... linking ... done.
Loading package utf8-string-0.3.7 ... linking ... done.
Loading package HDBC-2.3.1.0 ... linking ... done.
Loading package parsec-3.1.1 ... linking ... done.
Loading package HDBC-postgresql-2.3.2.0 ... can't load .so/.DLL for: pq (dlopen(libpq.dylib, 9): image not found)

うーん、ダメだ!
というわけで調査は続く。