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

Bug#259302: Patch update against base-files 3.1



Kurt Roeckx <Q@ping.be> writes:

> On Sun, Dec 05, 2004 at 06:14:24PM +0100, Santiago Vila wrote:
>> On Sun, 5 Dec 2004, Kurt Roeckx wrote:
>> 
>> > On Sun, Dec 05, 2004 at 04:39:06PM +0100, Santiago Vila wrote:
>> > >
>> > > Could you please provide details about the problem of having the
>> > > symlinks in glibc?
>> > >
>> > > Is it that glibc has a versioned Replaces: base-files and dpkg removes
>> > > the symlink in base-files before installing the one from glibc,
>> > > creating a big window during which /lib64 does not exist at all?
>> >
>> > glibc (libc6) does not replace base-files.  Why should it?
>> 
>> Because otherwise the upgrade from an already running amd64 system
>> (which has a modified base-files containing the symlink) would result
>> in dpkg complaining about a file conflict. A Replaces field would
>> allow dpkg to move the ownership of the symlink from base-files to
>> libc in a clean way. However, it there is a time window during which
>> /lib64 does not exist at all it will not work that way.
>
> I've patched the latest glibc to to provide the symlink.  This is
> what I get:
> apt-get upgrade
> Reading Package Lists... Done
> Building Dependency Tree... Done
> The following packages will be upgraded:
>   libc6 libc6-dev
> 2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
> Need to get 0B/8813kB of archives.
> After unpacking 135kB of additional disk space will be used.
> Do you want to continue? [Y/n] y
> (Reading database ... 10369 files and directories currently installed.)
> Preparing to replace libc6-dev 2.3.2.ds1-18 (using .../libc6-dev_2.3.2.ds1-19_amd64.deb) ...
> Unpacking replacement libc6-dev ...
> Preparing to replace libc6 2.3.2.ds1-18 (using ..././libc6_2.3.2.ds1-19_amd64.deb) ...
> Unpacking replacement libc6 ...
> dpkg - warning, overriding problem because --force enabled:
>  trying to overwrite `/lib64', which is also in package base-files

Does libc6 replace base-files?

> Setting up libc6 (2.3.2.ds1-19) ...
> Current default timezone: 'Europe/Brussels'.
> Local time is now:      Sun Dec  5 23:19:17 CET 2004.
> Universal Time is now:  Sun Dec  5 22:19:17 UTC 2004.
> Run 'tzconfig' if you wish to change it.
>
> Setting up libc6-dev (2.3.2.ds1-19) ...
>
> (Note that is a patched 2.3.2.ds1-19, didn't change the version
> number yet.)
>
> At that point the /lib64 symlink it owned by the libc6 package.
>
> Now I just need to be sure how to package this properly so
> nobody has problems updating libc6 and base-files at the
> same time.  Any hint welcome.
>
>
> Kurt

I was thinking about that and noticed some problem. I haven't checked
the docs or source yet so this is from memory:

When dpkg updates base-files and libc6 at the same time (and
even when base-files predepends on libc6) the following happens:

- base-files and libc6 control.tar.gz is unpacked and preinst is run.

- base-files and libc6 data.tar.gz each are unpacked and obsolete
files are removed. The order can be either way and if base-files is
first we are screwed.

- libc6 is configured.

- base-files is configured.

So the problem is the second step. Is my memory right there or does
dpkg first unpack all debs and only then remove obsolete files?

I fear removing the /lib64 from base-files.list in preinst could be
neccessary. Just till every amd64 user has updated.

MfG
        Goswin

PS: Can you put the libc6 on alioth sopmewhere. No point in rebuilding
it again just to test some more.



Reply to: