On Mon, Jun 12, 2023 at 09:45:15AM -0400, Greg Wooledge wrote:
> I think I might try grabbing an older-than-buster version of debootstrap
> out of snapshot.debian.org and see if I can manage to reproduce something.
> But don't count on my success.

I've succeeded in *partially* reproducing this error, but not fully.
My resulting state simply has usrmerge failing with the OP's error
message, and each subsequent instance of /usr/lib/usrmerge/convert-usrmerge
giving the same error again.  I do not get the GLIBC errors, nor do I
get an unusable system.

Here's what I did:

1) Start from my bookworm amd64 system.
2) Install bullseye using debootstrap into /stuff/bullseye-base.
3) Copy that directory to /stuff/bullseye-with-old-debootstrap.
4) Chroot into bullseye-with-old-debootstrap and apt-get install debootstrap.
5) Download 
http://snapshot.debian.org/archive/debian/20180603T165432Z/pool/main/d/debootstrap/debootstrap_1.0.101_all.deb
 from outside the chroot.
6) Chroot into bullseye-with-old-debootstrap and dpkg -i 
debootstrap_1.0.101_all.deb
7) Chroot into bullseye-with-old-debootstrap and debootstrap bullseye into 
/bullseye2.
8) Move bullseye-with-old-debootstrap/bullseye2 to /stuff/bullseye-unmerged.
9) Verify that bullseye-unmerged has separate /bin and /lib directories.
10) Copy /stuff/bullseye-unmerged to /stuff/bullseye-upgrade-test.
11) Chroot into bullseye-upgrade-test and copy 
/lib/x86_64-linux-gnu/libz.so.1.2.11 to /usr/lib/x86_64-linux-gnu/ and make 
/usr/lib/x86_64-linux-gnu/libz.so.1 -> libz.so.1.2.11
12) Chroot into bullseye-upgrade-test and edit sources.list and apt-get update 
and apt-get install usrmerge.

And the resulting output:

===========================================================================
[...]
Setting up usrmerge (35) ...

FATAL ERROR:
Both /lib/x86_64-linux-gnu/libz.so.1.2.11 and 
/usr/lib/x86_64-linux-gnu/libz.so.1.2.11 exist.

You can try correcting the errors reported and running again
/usr/lib/usrmerge/convert-usrmerge until it will complete without errors.
Do not install or update other Debian packages until the program
has been run successfully.

E: usrmerge failed.
dpkg: error processing package usrmerge (--configure):
 installed usrmerge package post-installation script subprocess returned error 
exit status 1
Processing triggers for libc-bin (2.36-9) ...
Errors were encountered while processing:
 usrmerge
E: Sub-process /usr/bin/dpkg returned an error code (1)
root@unicorn:/# perl -e 'print "hello world\n"'
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = (unset),
        LC_ALL = (unset),
        LC_TIME = "C",
        LANG = "en_US.utf8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
hello world
root@unicorn:/# /usr/lib/usrmerge/convert-usrmerge
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = (unset),
        LC_ALL = (unset),
        LC_TIME = "C",
        LANG = "en_US.utf8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

FATAL ERROR:
Both /lib/x86_64-linux-gnu/libz.so.1.2.11 and 
/usr/lib/x86_64-linux-gnu/libz.so.1.2.11 exist.

You can try correcting the errors reported and running again
/usr/lib/usrmerge/convert-usrmerge until it will complete without errors.
Do not install or update other Debian packages until the program
has been run successfully.

root@unicorn:/# perl -e 'print "hello world\n"'
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = (unset),
        LC_ALL = (unset),
        LC_TIME = "C",
        LANG = "en_US.utf8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
hello world
root@unicorn:/# /usr/lib/usrmerge/convert-usrmerge
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = (unset),
        LC_ALL = (unset),
        LC_TIME = "C",
        LANG = "en_US.utf8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

FATAL ERROR:
Both /lib/x86_64-linux-gnu/libz.so.1.2.11 and 
/usr/lib/x86_64-linux-gnu/libz.so.1.2.11 exist.

You can try correcting the errors reported and running again
/usr/lib/usrmerge/convert-usrmerge until it will complete without errors.
Do not install or update other Debian packages until the program
has been run successfully.

root@unicorn:/# 
===========================================================================

The minimal debootstrap system has libidn2 (which is in /usr/lib/x*)
but not libidn, so I wasn't able to reproduce the OP's setup faithfully.
I figured using a copy of libz (which is in /lib/x*) might suffice.

Has anyone else ever run into this before, or have any insight into how
the OP's system became unusable as a result?

Reply via email to