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

Re: FWD: Debian's Perl installation



On Tue, Feb 17, 2004 at 10:49:58PM -0500, Joey Hess wrote:
>----- Forwarded message from kynn@panix.com -----                       
>Anyone know the answer to the first question?

>  bill => /home/knight/build/perl-5.8.2/perl: relocation error:
>  bill => /usr/lib/perl/5.8.2/auto/NDBM_File/NDBM_File.so: undefined symbol:
>  bill => Perl_Gthr_key_pt
>
>    ben => Whomever installed your previous version of perl should be
>    ben => shot :).
>
>      bill => I guess that'd be me.  My only defense is that I used
>      bill => Debian's apt-get installation utility, which is entirely
>      bill => hands-off (at least in my hands).  As far as I can tell,
>      bill => all the decisions as to where to put things are built
>      bill => into the downloaded package.

>  Is this a bug in the Debian testing perl-5.8.2 distribution?

I don't think so.  You can't just rebuild perl with a different ABI,
drop it into the system and expect things not to break.

I'm guessing that he built perl from the Debian source packages after
removing -Dusethreads from debian/config.debian, but didn't have all the
build-depends installed (libgdbm-dev specifically).  The test he
mentioned uses AnyDBM_File which tries NDBM_File...  since he's got the
standard @INC it was picking up the one from /usr/lib and breaking.

>    ben => I'd suggest moving the whole auto directory into an
>    ben => arch-specific subdirectory
>
>
>  This sounds like good advice to me.  Is there any good reason why
>  the Debian installation doesn't do it this way?

archlib is typically /usr/lib/perl5/<ver>/<arch>-<os><stuff> (stuff
being things like "-thread-multi").

Our directory layout moves the arch independant stuff to /usr/share,
making the <arch>-<os> subdirectory redundant (since these are implicit
in the packaging).

As far as <stuff> goes, there are a bunch of package dependencies which
make assumptions on the ABI:

 apt-cache showpkg perlapi-5.8.0 perlapi-5.8.1 perlapi-5.8.2 perlapi-5.8.3

these would break whether <stuff> was there (file not found) or not
(relocation error as above).

In short, if you want a non-standard perl (version, ABI, whatever)
install to /usr/local.

--bod



Reply to: