$libdir in SQL-Funktion wird nicht gefunden

Hallo liebes Forum,

ich versuche schon das gesamte Wochenende eine Applikation (pgrouting) zu installieren, ohne Erfolg :confused:

Folgendes: Auf meinem Debian Etch System habe ich aus dem Quellcode von postgresql-8.3.7.tar.gz PostgreSQL erfolgreich installiert, ebenfalls den räumlichen Aufsatz PostGIS (läuft alles wunderbar).

Ich möchte dort nun Funktionen für ein Routing einlesen.

Die Funktion sieht z.B. so aus:

CREATE OR REPLACE FUNCTION shortest_path(sql text, source_id integer,
        target_id integer, directed boolean, has_reverse_cost boolean)
        RETURNS SETOF path_result
        AS '$libdir/librouting'
        LANGUAGE 'C' IMMUTABLE STRICT;

Entscheidend ist $libdir/librouting.

Ich bekomme nach dem Einlesen immer wieder:

psql:/usr/share/postlbs/routing_core.sql:53: ERROR: could not access file “$libdir/librouting”: Datei oder Verzeichnis nicht gefunden

Letztlich müssen zwei Bibliotheken gefunden werden:

librouting_dd.so
librouting.so

Diese Bibliotheken liegen in:

/home/anonymous/pgrouting/trunk/lib/librouting_dd.so
/home/anonymous/pgrouting/trunk/lib/librouting.so
/usr/lib/librouting_dd.so
/usr/lib/librouting.so


In der /etc/ld.so.conf.d steht auch:



 /lib/i486-linux-gnu 
  /usr/lib/i486-linux-gnu 
  /usr/lib 
  /home/anonymous/CGAL-3.3.1 
  /usr/local/lib 
  /usr/local 
  /usr/local/pgsql/bin/pg_config 
  /home/anonymous/pgrouting/lib 
  /usr/local/pgsql/lib

Ein ldconfig wurde zudem ausgeführt. Kein Erfolg :frowning:



Ich frage mich nun: Wie finde ich heraus welcher Pfad in den SQL-Funktionen als $libdir erkannt wird?
Ich möchte versuchen das Problem statisch zu lösen (oder hat jemand noch eine andere Idee)?
Bin mit meinem Latein ziemlich am Ende…

Danke im Voraus, Kai

Mein schlaues Buch sagt dafür:

pg_config --libdir

Mit der ld.so.conf hat das ganze allerdings nichts zu tun. Dort würde ich übrigends niemals Verzeichnisse aus /home angeben, weil die dort gesuchten Bibliotheken von allen Programmen des Betriebssystems verwendet werden. Damit öffnest du einem Angreifer ein schönes Scheunentor.

Vielen Dank für die Antwort.
Das Problem konnte nun behoben werden, pg_config wurde hier nicht korrekt ausgeführt.
Es war zunächst ein

export PATH="$PATH:/usr/local/pgsql/bin"

nötig (in dem Pfad liegt pg_config).

Danke nochmals, Kai

Nun, wer Software selbst nach /usr/local installiert, sollte auch wissen, dass und wie $PATH angepasst wird :wink: