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

Re: possible problem with new perl, libc6 on Sep 23rd

On Fri, Sep 24, 1999 at 01:46:18AM -0700, Darren/Torin/Who Ever... wrote:
> So, if you're getting a Perl binary that's 0600, it's either you, apt-get,
> or dpkg.

More specifically it is dpkg doing the breaking, but it's perl's fault on
how it is setting everything up.

You will note that these two binaries are in the perl package itself

[collinbm@virtue(11:07am)-~]%l tmp/usr/bin/
total 1052
-rwxr-xr-x   2 collinbm collinbm   534844 Sep 22 03:32 perl-5.005.dist*
-rwxr-xr-x   2 collinbm collinbm   534844 Sep 22 03:32 perl5.00503*

However after configuration, perl-5.005.dist is hardlinked to
perl-5.005, and then subsequently removed. So in actuallity we have a
binary (/usr/bin/perl-5.005) that is not under control of the package
system directly (bad idea IMO). Note also that this means that perl-5.005
is a hardlink to perl5.00503 (which is under package control).

Now when dpkg first unpacks a package, it replaces binaries by first,
chmod 600 on the binary (I'm not sure why, but it does), then unlinking
it. When dpkg does this to perl5.00503, it means it also changes
perl-5.005 (since they are hardlinked) and then unlinked, which leaves
perl-5.005 mode 600, and still sitting there (since dpkg knows nothing
about it.

It is left like this until perl is configured and the postinst script
takes care of moving perl-5.005.dist to perl-5.005.

Why does perl need to do all this hardlink magic and also leave us with a
binary that dpkg knows nothing about?!


Reply to: