0

postgresql-simpleとりわけパッケージを使用するスタックプロジェクトをセットアップしようとしています。しようとするとstack build、すべての依存関係がpostgresql-simple問題なくインストールされますが、スタックpostgresql-simple自体のインストールに問題があります。次のエラーが表示されます。

C:project> stack build --extra-include-dirs="C:\PostgreSQL\8.4\include" --extra-lib-dirs="C:\PostgreSQL\8.4\lib"

... omitted ...

*****************
--extra-include-dirs=C:\PostgreSQL\8.4\include
*****************
--extra-include-dirs=C:\Users\User\AppData\Local\Programs\stack\x86_64-windows\msys2-20150512\mingw32\include 
--extra-include-dirs=C:\Users\User\AppData\Local\Programs\stack\x86_64-windows\msys2-20150512\mingw64\include 
*****************
--extra-lib-dirs=C:\PostgreSQL\8.4\lib
***************************** 
--extra-lib-dirs=C:\Users\User\AppData\Local\Programs\stack\x86_64-windows\msys2-20150512\mingw32\lib 
--extra-lib-dirs=C:\Users\User\AppData\Local\Programs\stack\x86_64-windows\msys2-20150512\mingw64\lib
Process exited with code: ExitFailure 1
Logs have been written to: C:\Users\User\Desktop\draftkings\NFAccuracy\.stack-work\logs\postgresql-libpq-0.9.1.1.log

Configuring postgresql-libpq-0.9.1.1...
Setup.hs: Missing dependency on a foreign library:
* Missing C library: pq
This problem can usually be solved by installing the system package that
provides this library (you may need the "-dev" version). If the library is
already installed but in a non-standard location then you can use the flags
--extra-include-dirs= and --extra-lib-dirs= to specify where it is.

ファイル内のパスも指定しようとしましたがstack.yaml、同じエラーです。

...\mingw64\libライブラリとインクルード ファイルを postgres インストールから前述のフォルダーとフォルダーに手動でコピーしようとしました...\mingw64\include。同じエラー。

私は自分のフォルダにファイルを持ってlibpq.dllいます。libpq.libC:\PostgreSQL\8.4\lib

明らかな何かが欠けているように感じますが、これを機能させることができず、何が間違っているのかわかりません。どんな助けでも大歓迎です。

アップデート

2 つの重要な詳細について言及するのを忘れていました。

まず、C:\PostgreSQL\8.4\binPATH に追加しました。私の知る限り、これは期待どおりに機能しますpg_config。欠落に関するエラーを過ぎて、現在のエラーになったためです。

lib次に、とディレクトリを PATH に追加しようとしましたincludeが、エラーは変わりませんでした。

また、Postgres のインストールはそれ自体で正常に動作することにも言及する必要があります。

4

2 に答える 2

1

ある種のバージョンの不一致がありました。

Postgres 8.4 の代わりに 9.4 をインストールするpostgresql-simpleと、私が試みていた方法でパッケージをビルドできました。

私のスタックプロジェクトは、私の介入なしに、resolver: 'lts-3.7'この提供されたバージョン0.4.10.0postgresql-simpleパッケージをプロジェクトに使用するようにデフォルト設定されました。より詳細な回答があればよかったのですが、このバージョンpostgresql-simple(かなり最近) が PostgreSQL 9.4 (これも最近) で正常に動作するということしかわかりません。

ありがたいことに、Haskell を使用してpostgresql-simplePostgres 9.4 ライブラリに対してビルドすると、Postgres 8.4 である「リモート」(virtualbox) データベースとの通信に問題はありません。

他の人がこの有用な情報を見つけない限り、私は自分の質問に建設的ではないというフラグを立てたいと思っています。

于 2015-10-23T05:56:56.587 に答える
1

Snowdrift プロジェクトが PostgreSQL を使用し、Windows 上の Stack でビルドしていることは知っています。サイトにビルドガイドがあります。1つの違いは、彼らが言及していることです:

パスに PostgreSQL の bin ディレクトリを追加します。C:\Program Files (x86)\PostgreSQL\9.4\bin

それをPATHに追加してみて、それが修正されるかどうかを確認できますか?

于 2015-10-15T04:35:57.367 に答える