dbTalk Databases Forums  

PlPERL and shared libraries on Suse

comp.databases.postgresql.general comp.databases.postgresql.general


Discuss PlPERL and shared libraries on Suse in the comp.databases.postgresql.general forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
Eric E
 
Posts: n/a

Default PlPERL and shared libraries on Suse - 10-22-2004 , 11:13 AM






Hi,
I have an installation of Postgres 7.4.2 on SuSE 9.1. This version
of SuSE comes with a binary for plperl and several other postgres
procedural languages. All the others, including plpgsql install without
a problem, but executing:
createlang -u postgres plperl template1
produces the result:
createlang: language installation failed: ERROR: could not load library
"/usr/lib/postgresql/plperl.so": libperl.so: cannot open shared object
file: No such file or directory

The file, however, is there:

# ls -l /usr/lib/postgresql/plperl.so
-rwxr-xr-x 1 root root 37097 Apr 5 2004 /usr/lib/postgresql/plperl.so

Some googling gave me the idea that it may be a problem with the way
perl was compiled - i.e, perl is not compiled for shared libraries. Can
anyone confirm this? If so, do I need to rebuild perl, or pl/perl, or
both? Are there any binaries that can resolve this? (yes not wanting
to compile plperl is plain old laziness, but I do have reservations
about recompiling the perl interpreter)

Any ideas would be helpful.

Thanks,

Eric

---------------------------(end of broadcast)---------------------------
TIP 5: Have you checked our extensive FAQ?

http://www.postgresql.org/docs/faqs/FAQ.html


Reply With Quote
  #2  
Old   
Steve Atkins
 
Posts: n/a

Default Re: PlPERL and shared libraries on Suse - 10-22-2004 , 11:47 AM






On Fri, Oct 22, 2004 at 12:13:12PM -0400, Eric E wrote:

Quote:
Hi,
I have an installation of Postgres 7.4.2 on SuSE 9.1. This version
of SuSE comes with a binary for plperl and several other postgres
procedural languages. All the others, including plpgsql install without
a problem, but executing:
createlang -u postgres plperl template1
produces the result:
createlang: language installation failed: ERROR: could not load library
"/usr/lib/postgresql/plperl.so": libperl.so: cannot open shared object
file: No such file or directory

The file, however, is there:

# ls -l /usr/lib/postgresql/plperl.so
-rwxr-xr-x 1 root root 37097 Apr 5 2004 /usr/lib/postgresql/plperl.so

Some googling gave me the idea that it may be a problem with the way
perl was compiled - i.e, perl is not compiled for shared libraries. Can
anyone confirm this? If so, do I need to rebuild perl, or pl/perl, or
both? Are there any binaries that can resolve this? (yes not wanting
to compile plperl is plain old laziness, but I do have reservations
about recompiling the perl interpreter)
The error message gives you the hint you need. The missing file isn't
plperl.so - it's libperl.so.

libperl.so is the dynamic library version of perl. It's not usually
installed by most people building perl. (It's also not neccesarily
needed by plperl.so, as libperl.a can be statically linked into
plperl.so, I believe).

I don't know SuSEs package system (I always install from source) but
there may well be another perl package that would provide libperl.so.
Failing that you'll either need to build a perl installation and tell
Configure to build libperl.so, or rebuild plperl.so. It's also
possible that you do have libperl.so somewhere, but it's not on
the standard library search path and not where plperl expects
to find it.

'ldd' is a useful command for tracking down this sort of problem.

Cheers,
Steve

---------------------------(end of broadcast)---------------------------
TIP 5: Have you checked our extensive FAQ?

http://www.postgresql.org/docs/faqs/FAQ.html



Reply With Quote
  #3  
Old   
Tom Lane
 
Posts: n/a

Default Re: PlPERL and shared libraries on Suse - 10-22-2004 , 11:55 AM



Eric E <whalesuit (AT) bonbon (DOT) net> writes:
Quote:
createlang: language installation failed: ERROR: could not load library
"/usr/lib/postgresql/plperl.so": libperl.so: cannot open shared object
file: No such file or directory

The file, however, is there:

# ls -l /usr/lib/postgresql/plperl.so
-rwxr-xr-x 1 root root 37097 Apr 5 2004 /usr/lib/postgresql/plperl.so
It's complaining that it can't find libperl.so (ie, the Perl interpreter)
not plperl.so. Do you have a libperl.so? Is it in your ldconfig search
path?

regards, tom lane

---------------------------(end of broadcast)---------------------------
TIP 3: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to majordomo (AT) postgresql (DOT) org so that your
message can get through to the mailing list cleanly



Reply With Quote
  #4  
Old   
Eric E
 
Posts: n/a

Default Re: PlPERL and shared libraries on Suse - 10-22-2004 , 02:18 PM



Hi Steve and Tom,
Thanks for the tip, I was clearly not reading the error message closely
enough.

I copied libperl.so into /lib, and now everything works.

Many thanks,

Eric

Steve Atkins wrote:

Quote:
On Fri, Oct 22, 2004 at 12:13:12PM -0400, Eric E wrote:


Hi,
I have an installation of Postgres 7.4.2 on SuSE 9.1. This version
of SuSE comes with a binary for plperl and several other postgres
procedural languages. All the others, including plpgsql install without
a problem, but executing:
createlang -u postgres plperl template1
produces the result:
createlang: language installation failed: ERROR: could not load library
"/usr/lib/postgresql/plperl.so": libperl.so: cannot open shared object
file: No such file or directory

The file, however, is there:

# ls -l /usr/lib/postgresql/plperl.so
-rwxr-xr-x 1 root root 37097 Apr 5 2004 /usr/lib/postgresql/plperl.so

Some googling gave me the idea that it may be a problem with the way
perl was compiled - i.e, perl is not compiled for shared libraries. Can
anyone confirm this? If so, do I need to rebuild perl, or pl/perl, or
both? Are there any binaries that can resolve this? (yes not wanting
to compile plperl is plain old laziness, but I do have reservations
about recompiling the perl interpreter)


The error message gives you the hint you need. The missing file isn't
plperl.so - it's libperl.so.

libperl.so is the dynamic library version of perl. It's not usually
installed by most people building perl. (It's also not neccesarily
needed by plperl.so, as libperl.a can be statically linked into
plperl.so, I believe).

I don't know SuSEs package system (I always install from source) but
there may well be another perl package that would provide libperl.so.
Failing that you'll either need to build a perl installation and tell
Configure to build libperl.so, or rebuild plperl.so. It's also
possible that you do have libperl.so somewhere, but it's not on
the standard library search path and not where plperl expects
to find it.

'ldd' is a useful command for tracking down this sort of problem.

Cheers,
Steve

---------------------------(end of broadcast)---------------------------
TIP 5: Have you checked our extensive FAQ?

http://www.postgresql.org/docs/faqs/FAQ.html


---------------------------(end of broadcast)---------------------------
TIP 8: explain analyze is your friend



Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.3
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.