libcrypt.so.1: cannot open shared object file when upgrading from Debian Buster to Bullseye

Having fun while upgrading Debian 10 to 11.

The Problem

The following error is thrown during a Debian upgrade from Buster to Bullseye:

/usr/bin/python3: error while loading shared libraries: libcrypt.so.1: cannot open shared object file: No such file or directory

The file /lib/x86_64-linux-gnu/libcrypt.so.1 used to be in package libc6 on Stretch and Buster until it was split off into a separate libcrypt in Bullseye (and in Sid).

When upgrading libc6 the system ends in a situation where libcrypt.so.1 is removed before a replacement from a new package is installed.

The Workaround

This is the repo file /etc/apt/sources.list:

deb [arch=amd64] http://ftp.uk.debian.org/debian/ bullseye main contrib non-free
deb-src http://ftp.uk.debian.org/debian/ bullseye main contrib non-free

deb [arch=amd64] http://security.debian.org/debian-security bullseye-security main contrib non-free
deb-src http://security.debian.org/debian-security bullseye-security main contrib non-free

deb [arch=amd64] http://ftp.uk.debian.org/debian/ bullseye-updates main contrib non-free
deb-src http://ftp.uk.debian.org/debian/ bullseye-updates main contrib non-free

deb [arch=amd64] http://deb.debian.org/debian bullseye-backports main contrib non-free
deb-src http://deb.debian.org/debian bullseye-backports main contrib non-free

And these are the steps that I used to resolve the problem:

$ cd /tmp
$ apt download libcrypt1
$ dpkg-deb -x libcrypt1_1%3a4.4.33-2_amd64.deb .
$ sudo cp -av lib/x86_64-linux-gnu/* /lib/x86_64-linux-gnu/
$ sudo chmod 1777 /tmp
$ sudo apt --fix-broken install

References

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=993755

22 thoughts on “libcrypt.so.1: cannot open shared object file when upgrading from Debian Buster to Bullseye

  1. This one helped, but it also created a new issue. By unpacking to /tmp/, the privileges of the /tmp were changed to 755, so afterwards apt-get update would complain that it cannot create new folders. The solution was to run
    sudo chmod 1777 /tmp
    after the whole operation, maybe you can add that for other users so they can just copy all the lines.

  2. What’s the solution when this happens on a linode instance in the cloud?
    I can’t get a login. Do I have to wipe my system and start over?

    • If you have a support plan with Linode, then your best bet is to contact them and ask for assistance. If you don’t, then you’ll likely need to restore from a backup and start over I’m afraid.

Leave a Reply

Your email address will not be published. Required fields are marked *