Re: Cannot open Opcode.so after upgrade from perl-5.6.0-21 to perl-5.6.1-3
On Mon, Jun 11, 2001 at 03:02:34PM +0600, Romanenko M.A. wrote:
>I successfully upgraded from perl-5.6.0-21 to perl-5.6.1-3, but when I try
>to install
>plperl in postgresql-7.1.2-1 I got an error message:
>
>postgres@mogutlor:~/dumps$ createlang plperl template1
>ERROR: Load of file /usr/lib/postgresql/lib/plperl.so failed:
>/usr/lib/perl/5.6.0/auto/Opcode/Opcode.so: cannot open shared object file:
>No such file or directory
>createlang: language installation failed
>Please, tell me:
>1 is this wrong configuration of my system, perl-package or
>postgresql-package
> bug?
It would appear that the upstream developers had some difficulty getting
Opcode loaded via the standard DynaLoader mechanism given this comment
in plperl.c:
* We cannot use the DynaLoader directly to get at the Opcode
* module (used by Safe.pm). So, we link Opcode into ourselves
* and do the initialization behind perl's back.
as a result, Opcode.so is linked to pgperl.so at build time, which
circumvents the normal run-time @INC search, hardcoding via -rpath the
location of that object as found at build time... which of course
causes the problems you've seen when the perl version changes.
>2 is creating the softlink is enough, or it can get me into trouble later?
It should suffice as a work around for the moment.
As I've absolutely no idea what the developers were trying to achive, I
can't suggest an alternative. I've copied this response to the
maintainer who may know, or forward upstream.
Regards,
--
Brendan O'Dea bod@compusol.com.au
Compusol Pty. Limited (NSW, Australia) +61 2 9810 3633
Reply to: