Re: FWD: Debian's Perl installation
On Tue, Feb 17, 2004 at 10:49:58PM -0500, Joey Hess wrote:
>----- Forwarded message from firstname.lastname@example.org -----
>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.