2009-08-28 13 views
11

Tóm lại, câu hỏi của tôi là "tại sao không $ libdir làm việc trên cài đặt PSQL của tôi".

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

mang lại một lỗi

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

khi

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

hoạt động chính xác.

Kết quả của

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

dường như là chính xác.

+0

Điều này sẽ hiệu quả. Có lẽ bạn đang trộn các cài đặt khác nhau? –

Trả lời

1

Sửa ra câu trả lời ban đầu cho nó đã sai

Bây giờ mà tôi đã nhìn lên mã postgresql Tôi phải thừa nhận rằng chuỗi này là nghĩa vụ phải được mở rộng từ năm 2001 ;-). Việc mở rộng là rất hạn chế mặc dù. Nó chỉ mở rộng $libdir theo sau là dấu tách thư mục. Tuy nhiên, đầu ra của bạn chỉ ra rằng chuỗi không được mở rộng, bởi vì chuỗi được báo cáo ở đây là chuỗi thực sự được sử dụng để tải thư viện.

Điều đó có nghĩa là thay thế không thành công. Nhìn vào nó gần hơn tôi có thể thấy rằng việc mở rộng chỉ thành công nếu tập tin mục tiêu thực sự tồn tại. Giả sử phân cách thư mục của bạn là /DLSUFFIX.so và file /usr/local/pgsql/lib/liblwgeom.so thực sự tồn tại, tôi không có đầu mối mờ nhạt tại sao các địa ngục nó không thành công ;-)

+0

Tại sao bạn lại nói vậy? Điều này dường như là cách sử dụng hoàn toàn tiêu chuẩn. –

+0

Joe, câu hỏi của bạn khiến tôi ngạc nhiên, tôi đã thay đổi câu trả lời ;-) –

6

tôi vật lộn với lỗi này là tốt. Tôi giải quyết nó bằng cách liên kết trong lib PostGIS bằng tay để các tập tin liblwgeom, như thế này:

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

Tôi không có ý tưởng tại sao PostGIS tự cài đặt trong thư mục 'sai', hay tại sao PostgreSQL tìm kiếm một tập tin có tên liblwgeom khi có vẻ như cùng một tệp mà PostGIS gọi postgis-1.5.so

Tất cả những gì tôi biết là dường như đã khắc phục được sự cố của tôi.

+0

Thật tuyệt vời, tôi đã làm 'ln -s /Library/PostgreSQL/9.1/lib/postgis-1.5.so /Library/PostgreSQL/9.1/ lib/postgresql/postgis-1.5' để cài đặt của tôi –