Project

General

Profile

Bug #2139

Updating [libidn2] breaks [libre/systemd] may lead to unbootable system

freemor - over 5 years ago - . Updated over 4 years ago.

Status:
fixed
Priority:
broken
Assignee:
% Done:

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

#1

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

#2

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)

#3

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.

#4

Updated by daniel_- over 5 years ago

System boots now after running

mkinitcpio -p linux-libre

#5

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.

#6

Updated by GNUtoo over 5 years ago

I've pushed the fix in git but we also need to build it.

#7

Updated by GNUtoo over 5 years ago

I've pushed x86_64 binaries, I'll push i686 binaries real soon, then ARM

#8

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

#9

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

#10

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
    
#11

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

#12

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
#13

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

#14

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.

#15

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.

#16

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)

#17

Updated by bill-auger about 5 years ago

  • Status changed from confirmed to in progress
#18

Updated by bill-auger about 5 years ago

  • % Done changed from 0 to 90
#19

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

#20

Updated by GNUtoo about 5 years ago

  • % Done changed from 90 to 100
#21

Updated by GNUtoo about 5 years ago

  • Assignee set to GNUtoo
#22

Updated by GNUtoo about 5 years ago

  • Status changed from in progress to fixed
#23

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?

#24

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
#25

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

#26

Updated by Anonymous over 4 years ago

Still work in progress?

#27

Updated by bill-auger over 4 years ago

  • Status changed from in progress to fixed

yep this hurdle has passed

Also available in: Atom PDF