Проблемы с $ libdir на PostgreSQL - PullRequest
12 голосов
/ 28 августа 2009

Короче говоря, мой вопрос: «почему $ 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

представляется правильным.

Ответы [ 2 ]

6 голосов
/ 20 июня 2011

Я тоже боролся с этой ошибкой. Я решил это, связав в 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 устанавливает себя в «неправильный» каталог, или почему PostgreSQL ищет файл с именем liblwgeom, когда он выглядит так же, как PostGIS вызывает postgis-1.5.so

Все, что я знаю, это то, что, похоже, это решило мою проблему.

1 голос
/ 31 августа 2009

Отредактировал исходный ответ, поскольку он был неправильным

Теперь, когда я посмотрел код postgresql, я должен признать, что эта строка должна расширяться с 2001 года ;-). Расширение очень ограничено, хотя. Расширяется только $libdir с последующим разделителем каталогов. Тем не менее, ваши выходные данные показывают, что строка не была развернута, потому что сообщаемая строка здесь является строкой, фактически используемой для загрузки библиотеки.

Это означает, что замена не удалась. Если присмотреться ближе, я вижу, что расширение будет успешным, только если целевой файл действительно существует. Предполагая, что ваш разделитель каталогов / и DLSUFFIX это .so, а файл /usr/local/pgsql/lib/liblwgeom.so действительно существует, я не имею ни малейшего понятия, почему, черт возьми, он терпит неудачу;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...