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

Bug#779294: /usr/bin/python: /lib/i386-linux-gnu/libc.so.6: version `GLIBC_2.15' not found (required by /usr/bin/python)



reassign 779294 python2.7
thanks

On 2015-02-26 18:33, Matthias Klose wrote:
> On 02/26/2015 06:01 PM, Andreas Beckmann wrote:
> > during a test with piuparts I noticed a failure to upgrade from 'wheezy'.
> > 
> > I'm not exactly sure which package to blame.
> > This happened on i386, I cannot reproduce it on amd64.
> > The package being tested was lsb-desktop, but it can probably show up
> > elsewhere as well.
> > 
> >>From the attached log (scroll to the bottom...):
> > 
> >   (Reading database ... 18847 files and directories currently installed.)
> >   Preparing to replace libpython2.7 2.7.3-6+deb7u2 (using .../libpython2.7_2.7.8-11_i386.deb) ...
> >   Unpacking replacement libpython2.7:i386 ...
> >   Preparing to replace python2.7 2.7.3-6+deb7u2 (using .../python2.7_2.7.8-11_i386.deb) ...
> >   Unpacking replacement python2.7 ...
> >   Preparing to replace python2.7-minimal 2.7.3-6+deb7u2 (using .../python2.7-minimal_2.7.8-11_i386.deb) ...
> >   Unpacking replacement python2.7-minimal ...
> >   dpkg: warning: unable to delete old directory '/etc/python2.7': Directory not empty
> >   Selecting previously unselected package libpython2.7-minimal:i386.
> >   Unpacking libpython2.7-minimal:i386 (from .../libpython2.7-minimal_2.7.8-11_i386.deb) ...
> >   Preparing to replace debconf 1.5.49 (using .../debconf_1.5.55_all.deb) ...
> >   /usr/bin/python: /lib/i386-linux-gnu/libc.so.6: version `GLIBC_2.15' not found (required by /usr/bin/python)
> >   dpkg: warning: subprocess old pre-removal script returned error exit status 1
> >   dpkg: trying script from the new package instead ...
> >   /usr/bin/python: /lib/i386-linux-gnu/libc.so.6: version `GLIBC_2.15' not found (required by /usr/bin/python)
> >   dpkg: error processing /var/cache/apt/archives/debconf_1.5.55_all.deb (--unpack):
> >    subprocess new pre-removal script returned error exit status 1
> >   /usr/bin/python: /lib/i386-linux-gnu/libc.so.6: version `GLIBC_2.15' not found (required by /usr/bin/python)
> >   dpkg: error while cleaning up:
> >    subprocess installed post-installation script returned error exit status 1
> >   Processing triggers for man-db ...
> >   Errors were encountered while processing:
> >    /var/cache/apt/archives/debconf_1.5.55_all.deb
> > 
> > This looks a bit like python was unpacked before the new glibc.
> 
> debconf calls pycompile (and python).  It looks like this kind of thing can
> happen with any binary which needs the new glibc, and in this case it hits python.

The real problem is that python2.7-minimal uses symbols from glibc 2.15,
while it doesn't declare a dependency on them. This is due to a bug in
the Depends/Pre-Depends mangling in debian/rules.
dh_shlibdeps create the following debian/python2.7-minimal.substvars:

| misc:Depends=
| shlibs:Depends=libc6 (>= 2.15), libc6 (>= 2.3.6-6~), zlib1g (>= 1:1.2.0)

Note that libc6 is listed twice. This is not a problem given that
dpkg-gencontrol later merge them. However the order is sometimes
changing, so one might get the following file instead:

| misc:Depends=
| shlibs:Depends=libc6 (>= 2.3.6-6~), libc6 (>= 2.15), zlib1g (>= 1:1.2.0)

This file is later mangled by the following code from debian/rules:

| dep=`sed -n '/^shlibs:Depends/s/.*\(libc6[^,]*\).*/\1/p' debian/python2.7-minimal.substvars`; \
| echo "shlibs:Pre-Depends=$dep" >> debian/python2.7-minimal.substvars
| sed -i '/^shlibs:Depends/s/libc6[^,]*[, ]*//' debian/python2.7-minimal.substvars

Depending on the above order, dep might equal "libc6 (>= 2.15)" or
"libc6 (>= 2.3.6-6~)". In the latter case, the dependency is incorrect,
leading to the reported bug.

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


Reply to: