Icu Testing Update 2023-12-20 broke nodejs

Hi everyone!

Problem Description

If I’m not missing something, the testing update from dec 20 broke nodejs.
More specifically, the update to icu did.
When I execute node/npm/npx I get

node: error while loading shared libraries: libicui18n.so.73: cannot open shared object file: No such file or directory

icu has been updated to 74 in the mentioned update, so to me it looks like a rebuild of node was maybe missed?

Related Problems

The same problem is described in the thread linked above for another package, but there the (permanent) workaround was to just remove the package :smiley:

Here is another, similar issue, but it only affected an AUR package in that case (which users must rebuild themselves anyway).

Workaround

Install icu73-bin from the AUR.

This is not really a good workaround, at least it wasn’t in my case. Please see below for the actual solution.

Your mirror is probably outdated…

sudo pacman-mirrors --geoip
sudo pacman -Syyuu

As you see everywhere the same:

Name           : nodejs
Version        : 21.5.0-1
Repository     : extra
Build Date     : Fri 29 Dec 2023 18:50:09 
Packager       : Felix Yan <felixonmars@archlinux.org>
Branch         : unstable
Name           : nodejs
Version        : 21.5.0-1
Repository     : extra
Build Date     : Fri 29 Dec 2023 18:50:09 
Packager       : Felix Yan <felixonmars@archlinux.org>
Branch         : testing
Name           : nodejs
Version        : 21.5.0-1
Repository     : extra
Build Date     : Fri 29 Dec 2023 18:50:09 
Packager       : Felix Yan <felixonmars@archlinux.org>
Branch         : stable
Name           : nodejs
Version        : 21.5.0-1
Repository     : extra
Build Date     : Fri 29 Dec 2023 18:50:09 
Packager       : Felix Yan <felixonmars@archlinux.org>
Branch         : archlinux
Name           : icu
Version        : 74.2-1
Repository     : core
Build Date     : Sat 16 Dec 2023 07:50:41 
Packager       : Andreas Radke <andyrtr@archlinux.org>
Branch         : unstable
Name           : icu
Version        : 74.2-1
Repository     : core
Build Date     : Sat 16 Dec 2023 07:50:41 
Packager       : Andreas Radke <andyrtr@archlinux.org>
Branch         : testing
Name           : icu
Version        : 74.2-1
Repository     : core
Build Date     : Sat 16 Dec 2023 07:50:41 
Packager       : Andreas Radke <andyrtr@archlinux.org>
Branch         : stable
Name           : icu
Version        : 74.2-1
Repository     : core
Build Date     : Sat 16 Dec 2023 07:50:41 
Packager       : Andreas Radke <andyrtr@archlinux.org>

My package build dates for nodejs and icu are the same:

pamac info nodejs

Name                  : nodejs
Version               : 21.5.0-1
Description           : Evented I/O for V8 javascript
URL                   : https://nodejs.org/
Licenses              : MIT
Repository            : extra
Installed Size        : 68,5 MB
Groups                : --
Depends On            : brotli openssl zlib icu libuv libnghttp2 c-ares
Optional Dependencies : npm: nodejs package manager [Installed]
Provides              : --
Replaces              : --
Conflicts With        : --
Packager              : Felix Yan <felixonmars@archlinux.org>
Build Date            : Fri 29 Dec 2023 18:50:09
Validated By          : MD5 Sum  SHA-256 Sum  Signature

pamac info icu

Name                  : icu
Version               : 74.2-1
Description           : International Components for Unicode library
URL                   : https://icu.unicode.org
Licenses              : custom:icu
Repository            : core
Installed Size        : 42,3 MB
Groups                : --
Depends On            : gcc-libs glibc sh
Optional Dependencies : --
Required By           : bind boost-libs brltty electron24 electron25 freerdp gspell harfbuzz-icu haskell-text-icu lib32-icu libcdr libe-book libical libmspub libqalculate libqxp libreoffice-still libvisio libxml2 libzmf
                        manjaro-settings-manager nodejs-lts-gallium python-pyicu qt6-5compat qt6-base r raptor smbclient texlive-bin thunderbird tracker3 webkit2gtk webkit2gtk-4.1 xerces-c
Optional For          : tesseract xfsprogs
Provides              : libicudata.so=74-64 libicui18n.so=74-64 libicuio.so=74-64 libicutest.so=74-64 libicutu.so=74-64 libicuuc.so=74-64
Replaces              : --
Conflicts With        : --
Packager              : Andreas Radke <andyrtr@archlinux.org>
Build Date            : Sat 16 Dec 2023 07:50:41
Install Date          : Fri 05 Jan 2024 11:30:40
Install Reason        : Installed as a dependency for another package
Validated By          : Signature
Backup files          : --

I ran the commands to update the mirrorlist etc you provided anyway:

 core                                                                                                              144,7 KiB  2,36 MiB/s 00:00 [########################################################################################] 100%
 extra                                                                                                               8,6 MiB  20,4 MiB/s 00:00 [########################################################################################] 100%
 community                                                                                                          29,0   B  2,18 KiB/s 00:00 [########################################################################################] 100%
 multilib                                                                                                          143,5 KiB  6,09 MiB/s 00:00 [########################################################################################] 100%
:: Starting full system upgrade...
 there is nothing to do

So to me it looks like an outdated mirror is not the problem.

Edit/Update

If I remember correctly, when I installed node, I directly installed npm, because it has node as a dependency anyway.
I just found out that I have nodejs-lts-gallium installed, and not the package just named nodejs.
Running pamac install nodejs asked me to replace the lts variant (because they obviously are in conflict), and now it works and I don’t need icu73-bin from AUR.
Now this makes total sense because node gallium is version 16 and that’s not maintained anymore

Conclusion

User Error :smiley:
Thanks @megavolt for pointing me in the right direction though!

1 Like

This topic was automatically closed 3 hours after the last reply. New replies are no longer allowed.