2009-08-28 10 views
11

En bref, ma question est "pourquoi does $ libdir ne fonctionne pas sur mon installation PSQL".

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

donne une erreur

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

tout

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

fonctionne correctement.

La sortie de

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

semble être correct.

+0

Cela devrait fonctionner. Peut-être mélangez-vous différentes installations? –

Répondre

1

Edité en réponse originale car il était mal

Maintenant que je l'ai regardé code postgresql Je dois admettre que cette chaîne est censée être élargie depuis 2001 ;-). L'expansion est très limitée cependant. Il se développe seulement $libdir suivi du séparateur de répertoire. Cependant, votre sortie indique que la chaîne n'a pas été développée, car la chaîne signalée ici est la chaîne réellement utilisée pour le chargement de la bibliothèque.

Cela signifie que la substitution a échoué. En y regardant de plus près, je peux voir que l'expansion ne réussit que si le fichier cible existe réellement. En supposant que votre séparateur de répertoire est / et DLSUFFIX est .so et le fichier /usr/local/pgsql/lib/liblwgeom.so existe réellement, je ne moindre idée pourquoi diable il échoue ;-)

+0

Pourquoi dites-vous cela? Cela semble être une utilisation complètement standard. –

+0

Joe, votre question m'a pris par surprise, j'ai changé la réponse ;-) –

6

je me débattais avec cette erreur aussi. Je l'ai résolu en liant dans le répertoire lib PostGIS manuellement dans le fichier liblwgeom, comme ceci:

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

Je ne sais pas pourquoi PostGIS s'installe dans le répertoire « mauvais », ou pourquoi PostgreSQL recherche un fichier nommé liblwgeom lorsque Il semble que ce soit le même fichier que PostGIS appelle postgis-1.5.so

Tout ce que je sais, c'est que cela semble avoir résolu mon problème.

+0

Bien fait, j'ai fait 'ln -s /Library/PostgreSQL/9.1/lib/postgis-1.5.so /Library/PostgreSQL/9.1/ lib/postgresql/postgis-1.5' pour mon installation –