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

Re: Bug#887629: libc6: bad upgrade path: libexpat1 unpacked and python3 called before libc6 unpacked



On 2018-01-18 20:38, Julian Andres Klode wrote:
> On Thu, Jan 18, 2018 at 06:41:52PM +0100, Aurelien Jarno wrote:
> > control: reassign -1 apt,dpkg
> > control: affects -1 libc6
> > control: affects -1 libexpat1
> > 
> > On 2018-01-18 15:53, Andreas Beckmann wrote:
> > > Package: libc6
> > > Version: 2.26-2
> > > Severity: serious
> > > User: debian-qa@lists.debian.org
> > > Usertags: piuparts
> > > 
> > > Hi,
> > > 
> > > during a test with piuparts I noticed your package fails to upgrade from
> > > 'stretch'.
> > > It installed fine in 'stretch', then the upgrade to 'buster' fails.
> > > 
> > > >From the attached log (scroll to the bottom...):
> > > 
> > > [...]
> > >   Preparing to unpack .../libexpat1-dev_2.2.5-3_i386.deb ...
> > >   Unpacking libexpat1-dev:i386 (2.2.5-3) over (2.2.0-2+deb9u1) ...
> > >   Preparing to unpack .../libexpat1_2.2.5-3_i386.deb ...
> > >   Unpacking libexpat1:i386 (2.2.5-3) over (2.2.0-2+deb9u1) ...
> > 
> > $ apt-cache show libexpat1
> > Package: libexpat1
> > Source: expat
> > Version: 2.2.5-3
> > Installed-Size: 429
> > Maintainer: Laszlo Boszormenyi (GCS) <gcs@debian.org>
> > Architecture: i386
> > Depends: libc6 (>= 2.25)
> > 
> > So libexpat1 correctly depends on libc6 (>= 2.25), which is not
> > even unpacked at that point.
> > 
> > > [...]
> > >   Preparing to unpack .../3-libglib2.0-dev_2.54.3-1_i386.deb ...
> > >   /usr/bin/python3: /lib/i386-linux-gnu/libc.so.6: version `GLIBC_2.25' not found (required by /lib/i386-linux-gnu/libexpat.so.1)
> > >   dpkg: warning: subprocess old pre-removal script returned error exit status 1
> > >   dpkg: trying script from the new package instead ...
> > >   dpkg: error processing archive /tmp/apt-dpkg-install-wfemKS/3-libglib2.0-dev_2.54.3-1_i386.deb (--unpack):
> > >    there is no script in the new version of the package - giving up
> > >   /usr/bin/python3: /lib/i386-linux-gnu/libc.so.6: version `GLIBC_2.25' not found (required by /lib/i386-linux-gnu/libexpat.so.1)
> > 
> > This failure is normal given libexpat1 requires the new libc which has
> > not been unpacked yet.
> 
> Yeah, well, it needs to Pre-Depend on it then I guess, if it's being used
> in preinst actions. The thing is that Depends only after postinst ordering,
> not unpack ordering.

Well it's not the preinst script, but the prerm script. The problem is
unpacking libexpat1 before libc6 breaks libexpat1 and not usable
anymore.

From what I understand from the debian-policy, a prerm script might
consider that all the dependencies have been at least unpacked when
called:

| "The package whose prerm is being called will be at least
| “Half-Installed”. All package dependencies will at least be
| “Half-Installed” and will have previously been configured and not
| removed. If there was no error, all dependencies will at least be
| “Unpacked”, but these actions may be called in various error
| states where dependencies are only “Half-Installed” due to a
| partial upgrade.

-- 
Aurelien Jarno                          GPG: 4096R/1DDD8C9B
aurelien@aurel32.net                 http://www.aurel32.net


Reply to: