Bug #2139
Updating [libidn2] breaks [libre/systemd] may lead to unbootable system
90%
Description
Tonight I pacman -Suy 'd and there was an update for libidn2 from Arch. This immediately broke [libre/systemd] causing most systemd commands to error out with "can't find libidn2.so.0"
I was able to work around it with:
sudo ln -s /usr/lib/libidn2.so /usr/lib/libidn2.so.0
This will most likely result in a borked system if the user forces a reboot without fixing it first.
- libre/systemd NEEDS a rebuild
- A warning of the issue and workaround instruction should be put in prevalent places until rebuild happens.
History
Updated by daniel_- over 5 years ago
The workaround isn't working for me, it still states on boot
error while loading share libraries: libidn2.so.0 cannot open shared object file: no such file or directory
Interestingly, later it states (/dev/sda1 is my root)
error device '/dev/sda1' not found. skipping fsck. mounting '/dev/sda1' on real root mount: /new_root: no filesystem specified
In the emergency shell I am dropped into I have no keyboard input. How significant this is to the problem at hand, no idea.
The symlink was done inside a chroot, the current state of the symlinks
libidn2.so->libidn2.so.4.0.0 libidn2.so.0->libidn2.so
Updated by daniel_- over 5 years ago
Additionally I had downgraded libidn2 to version 2.0.5-1, have since gone back to 2.1.0-1 in a blind hope to bypass the problem (this was after the workaround initially not working, however)
Updated by freemor over 5 years ago
My system with the work around I did works and reboots fine. All I did was the single ls -s stated above
this results in:
[freemor@freelap ~]$ ls -lh /usr/lib/libidn2* lrwxrwxrwx 1 root root 16 Jan 13 15:20 /usr/lib/libidn2.so -> libidn2.so.4.0.0* lrwxrwxrwx 1 root root 19 Jan 15 23:08 /usr/lib/libidn2.so.0 -> /usr/lib/libidn2.so* lrwxrwxrwx 1 root root 16 Jan 13 15:20 /usr/lib/libidn2.so.4 -> libidn2.so.4.0.0* -rwxr-xr-x 1 root root 118K Jan 13 15:20 /usr/lib/libidn2.so.4.0.0*
on my system. which I am posting the BR and Update from.
Updated by infertux over 5 years ago
This will most likely result in a borked system if the user forces a reboot without fixing it first.
Can confirm, my battery ran out shortly after this update and my laptop powered down. Then Parabola would kernel panic upon reboot.
ln -s /usr/lib/libidn2.so /usr/lib/libidn2.so.0
Thankfully, I was able to boot from a live USB and this fixed it for me, thanks @freemor.
Updated by GNUtoo over 5 years ago
I've pushed x86_64 binaries, I'll push i686 binaries real soon, then ARM
Updated by bill-auger over 5 years ago
then there are several other dependents - these probably all need to be rebuilt:
$ sudo pacman -Sii libidn2 | grep Required Required By : bind-tools dnsmasq getdns gmime3 gnutls iputils knot libpsl mutt s-nail systemd-common wget whois
also eli offered a custom script that can identify any built package that links to it, regardless of the metedata https://github.com/eli-schwartz/dotfiles/blob/master/bin/pkg-list-linked-libraries
Updated by freemor over 5 years ago
bind-tools dnsmasq getdns gmime3 gnutls iputils knot libpsl mutt s-nail wget whois <- All come from Arch repos and thus are probably rebuilt already or are in the process of.
systemd-common is at par2 so was rebuilt when oaken-source rebuilt systemd
Updated by GNUtoo over 5 years ago
I've updated systemd by moving the libre-testing version to libre.
So far with this version:- i686 doesn't build due to a failing test (#2143)
- armv7h does build find but I've some issues uploading it:
$ librerelease -l -> libre libsystemd-240.34-3.parabola1-armv7h.pkg.tar.xz systemd-240.34-3.parabola1-armv7h.pkg.tar.xz systemd-common-240.34-3.parabola1-armv7h.pkg.tar.xz systemd-debug-240.34-3.parabola1-armv7h.pkg.tar.xz systemd-libsystemd-240.34-3.parabola1-armv7h.pkg.tar.xz systemd-libudev-240.34-3.parabola1-armv7h.pkg.tar.xz systemd-nss-myhostname-240.34-3.parabola1-armv7h.pkg.tar.xz systemd-nss-mymachines-240.34-3.parabola1-armv7h.pkg.tar.xz systemd-nss-resolve-240.34-3.parabola1-armv7h.pkg.tar.xz systemd-nss-systemd-240.34-3.parabola1-armv7h.pkg.tar.xz systemd-resolvconf-240.34-3.parabola1-armv7h.pkg.tar.xz systemd-sysvcompat-240.34-3.parabola1-armv7h.pkg.tar.xz systemd-udev-240.34-3.parabola1-armv7h.pkg.tar.xz -> sources parabola/systemd-240.34-3.parabola1-armv7h.src.tar.gz $ librerelease ==> Running HOOKPRERELEASE... $ ssh -fN -p 1863 gnutoo@repo.parabola.nu ==> Signing package... -> Created signature file /home/gnutoo/packages/staging/libre/systemd-240.34-3.parabola1-armv7h.pkg.tar.xz.sig. ==> Signing package... -> Created signature file /home/gnutoo/packages/staging/libre/systemd-debug-240.34-3.parabola1-armv7h.pkg.tar.xz.sig. ==> Signing package... -> Created signature file /home/gnutoo/packages/staging/libre/systemd-nss-myhostname-240.34-3.parabola1-armv7h.pkg.tar.xz.sig. ==> Signing package... -> Created signature file /home/gnutoo/packages/staging/libre/systemd-common-240.34-3.parabola1-armv7h.pkg.tar.xz.sig. ==> Signing package... -> Created signature file /home/gnutoo/packages/staging/libre/systemd-libudev-240.34-3.parabola1-armv7h.pkg.tar.xz.sig. ==> Signing package... -> Created signature file /home/gnutoo/packages/staging/libre/systemd-nss-resolve-240.34-3.parabola1-armv7h.pkg.tar.xz.sig. ==> Signing package... -> Created signature file /home/gnutoo/packages/staging/libre/systemd-nss-systemd-240.34-3.parabola1-armv7h.pkg.tar.xz.sig. ==> Signing package... -> Created signature file /home/gnutoo/packages/staging/libre/systemd-udev-240.34-3.parabola1-armv7h.pkg.tar.xz.sig. ==> Signing package... -> Created signature file /home/gnutoo/packages/staging/libre/systemd-libsystemd-240.34-3.parabola1-armv7h.pkg.tar.xz.sig. ==> Signing package... -> Created signature file /home/gnutoo/packages/staging/libre/systemd-resolvconf-240.34-3.parabola1-armv7h.pkg.tar.xz.sig. ==> Signing package... -> Created signature file /home/gnutoo/packages/staging/libre/systemd-sysvcompat-240.34-3.parabola1-armv7h.pkg.tar.xz.sig. ==> Signing package... -> Created signature file /home/gnutoo/packages/staging/libre/systemd-nss-mymachines-240.34-3.parabola1-armv7h.pkg.tar.xz.sig. ==> Signing package... -> Created signature file /home/gnutoo/packages/staging/libre/libsystemd-240.34-3.parabola1-armv7h.pkg.tar.xz.sig. ==> Signing package... -> Created signature file /home/gnutoo/packages/staging/sources/parabola/systemd-240.34-3.parabola1-armv7h.src.tar.gz.sig. ==> 224M to upload ==> Uploading packages... building file list ... 31 files to consider libre/libsystemd-240.34-3.parabola1-armv7h.pkg.tar.xz 2.60K 100% 1.82MB/s 0:00:00 (xfr#1, to-chk=29/31) libre/libsystemd-240.34-3.parabola1-armv7h.pkg.tar.xz.sig 566 100% 552.73kB/s 0:00:00 (xfr#2, to-chk=28/31) libre/systemd-240.34-3.parabola1-armv7h.pkg.tar.xz 2.54M 100% 100.81MB/s 0:00:00 (xfr#3, to-chk=27/31) libre/systemd-240.34-3.parabola1-armv7h.pkg.tar.xz.sig 566 100% 23.03kB/s 0:00:00 (xfr#4, to-chk=26/31) libre/systemd-common-240.34-3.parabola1-armv7h.pkg.tar.xz 624.33K 100% 19.85MB/s 0:00:00 (xfr#5, to-chk=25/31) libre/systemd-common-240.34-3.parabola1-armv7h.pkg.tar.xz.sig 566 100% 18.42kB/s 0:00:00 (xfr#6, to-chk=24/31) libre/systemd-debug-240.34-3.parabola1-armv7h.pkg.tar.xz 12.03M 100% 37.01MB/s 0:00:00 (xfr#7, to-chk=23/31) libre/systemd-debug-240.34-3.parabola1-armv7h.pkg.tar.xz.sig 566 100% 1.78kB/s 0:00:00 (xfr#8, to-chk=22/31) libre/systemd-libsystemd-240.34-3.parabola1-armv7h.pkg.tar.xz 482.13K 100% 1.46MB/s 0:00:00 (xfr#9, to-chk=21/31) libre/systemd-libsystemd-240.34-3.parabola1-armv7h.pkg.tar.xz.sig 566 100% 1.75kB/s 0:00:00 (xfr#10, to-chk=20/31) libre/systemd-libudev-240.34-3.parabola1-armv7h.pkg.tar.xz 77.43K 100% 239.28kB/s 0:00:00 (xfr#11, to-chk=19/31) libre/systemd-libudev-240.34-3.parabola1-armv7h.pkg.tar.xz.sig 566 100% 1.75kB/s 0:00:00 (xfr#12, to-chk=18/31) libre/systemd-nss-myhostname-240.34-3.parabola1-armv7h.pkg.tar.xz 34.96K 100% 107.71kB/s 0:00:00 (xfr#13, to-chk=17/31) libre/systemd-nss-myhostname-240.34-3.parabola1-armv7h.pkg.tar.xz.sig 566 100% 1.74kB/s 0:00:00 (xfr#14, to-chk=16/31) libre/systemd-nss-mymachines-240.34-3.parabola1-armv7h.pkg.tar.xz 115.70K 100% 355.31kB/s 0:00:00 (xfr#15, to-chk=15/31) libre/systemd-nss-mymachines-240.34-3.parabola1-armv7h.pkg.tar.xz.sig 566 100% 1.74kB/s 0:00:00 (xfr#16, to-chk=14/31) libre/systemd-nss-resolve-240.34-3.parabola1-armv7h.pkg.tar.xz 114.07K 100% 349.20kB/s 0:00:00 (xfr#17, to-chk=13/31) libre/systemd-nss-resolve-240.34-3.parabola1-armv7h.pkg.tar.xz.sig 566 100% 1.73kB/s 0:00:00 (xfr#18, to-chk=12/31) libre/systemd-nss-systemd-240.34-3.parabola1-armv7h.pkg.tar.xz 114.46K 100% 349.29kB/s 0:00:00 (xfr#19, to-chk=11/31) libre/systemd-nss-systemd-240.34-3.parabola1-armv7h.pkg.tar.xz.sig 566 100% 1.73kB/s 0:00:00 (xfr#20, to-chk=10/31) libre/systemd-resolvconf-240.34-3.parabola1-armv7h.pkg.tar.xz 2.90K 100% 8.83kB/s 0:00:00 (xfr#21, to-chk=9/31) libre/systemd-resolvconf-240.34-3.parabola1-armv7h.pkg.tar.xz.sig 566 100% 1.72kB/s 0:00:00 (xfr#22, to-chk=8/31) libre/systemd-sysvcompat-240.34-3.parabola1-armv7h.pkg.tar.xz 8.18K 100% 24.87kB/s 0:00:00 (xfr#23, to-chk=7/31) libre/systemd-sysvcompat-240.34-3.parabola1-armv7h.pkg.tar.xz.sig 566 100% 1.72kB/s 0:00:00 (xfr#24, to-chk=6/31) libre/systemd-udev-240.34-3.parabola1-armv7h.pkg.tar.xz 935.81K 100% 2.71MB/s 0:00:00 (xfr#25, to-chk=5/31) libre/systemd-udev-240.34-3.parabola1-armv7h.pkg.tar.xz.sig 566 100% 1.68kB/s 0:00:00 (xfr#26, to-chk=4/31) sources/parabola/systemd-240.34-3.parabola1-armv7h.src.tar.gz 216.80M 100% 264.52kB/s 0:13:20 (xfr#27, to-chk=1/31) sources/parabola/systemd-240.34-3.parabola1-armv7h.src.tar.gz.sig 566 100% 552.73kB/s 0:00:00 (xfr#28, to-chk=0/31) ==> Removing files from local staging directory removed 'libre/systemd-nss-mymachines-240.34-3.parabola1-armv7h.pkg.tar.xz.sig' removed 'libre/systemd-240.34-3.parabola1-armv7h.pkg.tar.xz' removed 'libre/systemd-debug-240.34-3.parabola1-armv7h.pkg.tar.xz' removed 'libre/systemd-nss-myhostname-240.34-3.parabola1-armv7h.pkg.tar.xz' removed 'libre/systemd-common-240.34-3.parabola1-armv7h.pkg.tar.xz' removed 'libre/systemd-libsystemd-240.34-3.parabola1-armv7h.pkg.tar.xz.sig' removed 'libre/systemd-common-240.34-3.parabola1-armv7h.pkg.tar.xz.sig' removed 'libre/systemd-libudev-240.34-3.parabola1-armv7h.pkg.tar.xz' removed 'libre/systemd-nss-resolve-240.34-3.parabola1-armv7h.pkg.tar.xz' removed 'libre/systemd-debug-240.34-3.parabola1-armv7h.pkg.tar.xz.sig' removed 'libre/systemd-resolvconf-240.34-3.parabola1-armv7h.pkg.tar.xz.sig' removed 'libre/systemd-nss-systemd-240.34-3.parabola1-armv7h.pkg.tar.xz' removed 'libre/systemd-udev-240.34-3.parabola1-armv7h.pkg.tar.xz' removed 'libre/systemd-240.34-3.parabola1-armv7h.pkg.tar.xz.sig' removed 'libre/systemd-nss-myhostname-240.34-3.parabola1-armv7h.pkg.tar.xz.sig' removed 'libre/systemd-nss-resolve-240.34-3.parabola1-armv7h.pkg.tar.xz.sig' removed 'libre/libsystemd-240.34-3.parabola1-armv7h.pkg.tar.xz.sig' removed 'libre/systemd-nss-systemd-240.34-3.parabola1-armv7h.pkg.tar.xz.sig' removed 'libre/systemd-libsystemd-240.34-3.parabola1-armv7h.pkg.tar.xz' removed 'libre/systemd-resolvconf-240.34-3.parabola1-armv7h.pkg.tar.xz' removed 'libre/systemd-sysvcompat-240.34-3.parabola1-armv7h.pkg.tar.xz' removed 'libre/systemd-udev-240.34-3.parabola1-armv7h.pkg.tar.xz.sig' removed 'libre/systemd-nss-mymachines-240.34-3.parabola1-armv7h.pkg.tar.xz' removed 'libre/systemd-libudev-240.34-3.parabola1-armv7h.pkg.tar.xz.sig' removed 'libre/systemd-sysvcompat-240.34-3.parabola1-armv7h.pkg.tar.xz.sig' removed 'libre/libsystemd-240.34-3.parabola1-armv7h.pkg.tar.xz' removed 'sources/parabola/systemd-240.34-3.parabola1-armv7h.src.tar.gz.sig' removed 'sources/parabola/systemd-240.34-3.parabola1-armv7h.src.tar.gz' ==> Running db-update on repos ==> WARNING: file already exists: sources/parabola/systemd-240.34-3.parabola1-armv7h.src.tar.gz.sig removed 'sources/parabola/systemd-240.34-3.parabola1-armv7h.src.tar.gz' ==> ERROR: Package libre/libsystemd-239.370-1.par2-x86_64.pkg.tar.xz already exists in another repository ==> Removing left over lock from [libre] (x86_64) ==> Removing left over lock from [libre] (i686) ==> Removing left over lock from [libre] (armv7h) ==> Removing left over lock from [libre] (ppc64le) ==> ERROR: An unknown error has occurred. Exiting... User defined signal 1
Updated by bill-auger about 5 years ago
- Status changed from open to fixed
that librerelease report looks fine to me - the error shows that you had a x86_64 package mixed in - that was probably non-fatal
anyways, i think we solved the libidn2 issue - so ill close this BR
Updated by bandali about 5 years ago
The issue (or a similar one) seems to have resurfaced with the latest libidn2 update:
$ journalctl -xe journalctl: error while loading shared libraries: libidn2.so.4: cannot open shared object file: No such file or directory
Also affects things like suspending, and likely hibernation and start up as well.
My temporary workaround:
sudo ln -s /usr/lib/libidn2.so /usr/lib/libidn2.so.4
Updated by bill-auger about 5 years ago
- Status changed from fixed to unconfirmed
sure love the sensible versioning scheme
libidn2-2.1.0-1:
/usr/lib/libidn2.so
/usr/lib/libidn2.so.4
/usr/lib/libidn2.so.4.0.0*
libidn2-2.1.1-2:
/usr/lib/libidn2.so
/usr/lib/libidn2.so.0
/usr/lib/libidn2.so.0.3.4
Updated by xrchz about 5 years ago
- Status changed from unconfirmed to confirmed
I can confirm the issue reported by bandali above, and that it leads to an unbootable system.
I just recovered my system following bandali's fix from a recovery shell.
Updated by eschwartz about 5 years ago
https://git.archlinux.org/svntogit/packages.git/commit/trunk?h=packages/libidn2&id=d8492a52cbead40e1c88704ed13dd7b8a9bda661
https://git.archlinux.org/svntogit/packages.git/commit/trunk?h=packages/curl&id=670c217480b9262f1577c401ddf899b249ba0348
https://git.archlinux.org/svntogit/packages.git/commit/trunk?h=packages/systemd&id=bac19afd64db3d53646fca6782a06057a9e221aa
As of now, many arch packages depend on libidn2.so which is provided by libidn, and makepkg will automatically create soname-versioned dependency links to prevent partial updates. The recent soname changes by upstream are too ridiculous it seems.
So the parabola systemd package can be updated to parallel the archlinux systemd package, as can any other parabola-specific packages which are breaking because of libidn2.
Updated by bill-auger about 5 years ago
i have added the 'libidn2.so' dependency to the 'systemd-common' split package
[i686]
libidn2 2.1.1-2 for i686 is still in [staging] - a 'systemd' package with the 'libidn2.so' dependency, built against the libidn2 in [staging] (2.1.1) is in [libre-testing] now (240.95-1.parabola5)
[x86_64]
a re-build for x86_64 was published earlier today without the libidn2 soname dep - that has also been rebuilt in [libre-testing] (240.95-1.parabola2) - it just needs to be verified
[armv7h]
libidn2 2.1.1 is already in archarm - but systemd is FTBS for arm because curl, gnutls, and libpsl conflict with the new libidn2 - i tried again using a repo backup from 2019-02-09 - that allowed the build, but then failed during the check() function - GNUtoo rebuilt it on ARM hardware - that is in [libre] now (240.95-1.parabola3)
Updated by GNUtoo about 5 years ago
This is fixed now.
I did:
Pacman -Syuu systemctl
And that worked on armv7h i686, x86_64
I also verified that no workaround symlink was there with:
# pacman -Q -l libidn2 | grep "/usr/lib/libidn2\.so\." ls -l /usr/lib/libidn2.so*
While I'm at it, here are the versions:
armv7h: libidn2.so.0.3.5
i686: libidn2.so.4.0.0
x86_64: libidn2.so.0.3.5
Updated by bill-auger about 5 years ago
i left this ticket open for a reason - the moment arch32 moves the new libidn2 out of staging, this BR will be completely relevant again immediately, until the systemd 240.95-1.parabola5 that is built against the new libidn2 is moved to libre - that was in [libre-testing] but it appears that someone deleted it?
Updated by bill-auger about 5 years ago
- % Done changed from 100 to 90
- Assignee changed from GNUtoo to bill-auger
- Status changed from fixed to in progress
Updated by bill-auger about 5 years ago
update:
[i686]
libidn2 for i686 is still in [staging] - it has now been upgraded to libidn2-2.1.1-2.2
a rebuilt 'systemd' package with the 'libidn2.so' dependency, built against the next libidn2 is in [libre-testing] now (systemd-240.95-2.par2)
as soon as the next libidn2 comes out of [staging], we should be able to simply `db-move` systemd-240.95-2.par2 from [libre-testing] to [libre], and all should go smoothly
Updated by bill-auger over 4 years ago
- Status changed from in progress to fixed
yep this hurdle has passed