[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: