12

要するに、私の質問は「なぜ$libdirが私のPSQLインストールで機能しないのか」です。

CREATE FUNCTION st_box2d_in(cstring) RETURNS box2d
    AS '$libdir/liblwgeom', 'BOX2DFLOAT4_in'
    LANGUAGE c IMMUTABLE STRICT;

エラーが発生します

could not access file "$libdir/liblwgeom": No such file or directory

その間

CREATE FUNCTION st_box2d_in(cstring) RETURNS box2d
    AS '/usr/local/pgsql/lib/liblwgeom', 'BOX2DFLOAT4_in'
    LANGUAGE c IMMUTABLE STRICT;

正しく動作します。

の出力

% pg_config --pkglibdir
/usr/local/pgsql/lib

正しいようです。

4

2 に答える 2

6

私もこのエラーに苦労しました。次のように、PostGIS lib を手動で liblwgeom ファイルにリンクすることで解決しました。

ln -s /usr/lib/postgis/1.5.1/postgres/8.4/lib/postgis-1.5.so 
    /usr/lib/postgresql/8.4/lib/liblwgeom

PostGISが「間違った」ディレクトリにインストールされる理由、またはliblwgeomPostGISが呼び出すファイルと同じように見えるときにPostgreSQLが名前付きのファイルを探す理由がわかりませんpostgis-1.5.so

私が知っているのは、それが私の問題を解決したようだということだけです。

于 2011-06-20T08:27:55.217 に答える
1

間違っていたため、元の返信を編集しました

postgresql コードを調べたので、この文字列は 2001 年以降に展開されることになっていることを認めなければなりません ;-)。ただし、拡張は非常に限られています。$libdirディレクトリセパレーターが続くだけで展開されます。それでも、ここで報告された文字列は実際にライブラリの読み込みに使用された文字列であるため、出力は文字列が展開されなかったことを示しています。

つまり、置換が失敗したということです。よく見ると、ターゲットファイルが実際に存在する場合にのみ展開が成功することがわかります。あなたのディレクトリセパレーターが/DLSUFFIXあり.so、ファイル/usr/local/pgsql/lib/liblwgeom.soが実際に存在すると仮定すると、なぜそれが失敗するのか、私にはかすかな手がかりがありません;-)

于 2009-08-31T13:46:08.597 に答える