19

After update with pacman -Syuq:

# pacman -Sc

pacman: error while loading shared libraries: libicuuc.so.59: cannot open shared object file: No such file or directory

# find / -name libicuuc.so.* 2>/dev/null
/usr/lib/libicuuc.so.60.1
/usr/lib/libicuuc.so.60

Arch Linux in a Pi version 1:

# uname -an
4.9.62-1-ARCH #1 SMP Fri Nov 17 13:42:55 UTC 2017 armv6l GNU/Linux
3
  • Same problem here, appeared today. For me libicuuc.so.59. I have to go through command line to boot and many programs do not work anymore
    – zakrapovic
    Nov 28, 2017 at 15:54
  • Also missing libicui18n.so.59 probably related
    – zakrapovic
    Nov 28, 2017 at 16:00
  • I actually solved my problem with pacman -Sc followed by pacman -Syuu
    – zakrapovic
    Nov 28, 2017 at 16:05

9 Answers 9

30

Previously proposed solutions were not relevant or did not work for me. For some reason upgrading the icu package from 59.1-2 to 60.1-1 made linkage break and many programs (including pacman) failed with this error after. No interrupted pacman on my side.

If you still have the previous package in your cache, you can try this, which worked for me:

  1. Locate cached version of package (for example, mine was /var/cache/pacman/pkg/icu-59.1-2-x86_64.pkg.tar.xz).
  2. Extract it: mkdir -p ~/pkg/tmp && tar xJvf /var/cache/pacman/pkg/icu-59.1-2-x86_64.pkg.tar.xz -C ~/pkg/tmp
  3. Copy libs to your lib folder: sudo cp ~/pkg/tmp/usr/lib/libicu*.59 /usr/lib/
  4. Proceed with update: sudo pacman -Syu
  5. You can now remove the files you just extracted.
4
  • 3
    Thanks, this worked for me. But how should I safe remove copied libicu*.59 files? rm /usr/lib/libicu*.59 ?
    – Skatox
    Dec 11, 2017 at 3:25
  • This worked for me as well. Thanks, have an upvote. Jan 18, 2018 at 3:01
  • I had the same problem with icu 68, and your solution worked just fine. thanks man! May 5, 2021 at 14:07
  • Thanks, you saved my life! Now I know the method of dealing with broken shared libraries.
    – chi chow
    Jul 8, 2021 at 9:07
3

You can also use the LD_LIBRARY_PATH variable to load the icu libraries from a different location. In this way, you can avoid any copies to /usr/lib:

$ mkdir -p ~/pkg/tmp
$ tar xJvf /var/cache/pacman/pkg/icu-59.1-2-x86_64.pkg.tar.xz -C ~/pkg/tmp
$ su
# LD_LIBRARY_PATH=`pwd`/pkg/tmp pacman -U /var/cache/pacman/pkg/icu-59.1-2-x86_64.pkg.tar.xz
1
  • It was LD_LIBRARY_PATH=`pwd`/pkg/tmp/usr/lib in my case.
    – v_2e
    Feb 10, 2018 at 4:51
2

In case you have an executable that needs that particular version of the library (as it happened in my case), there is an aur package for that specific version.

1

I researched the problem and found about the /var/log/pacman.log. I read the log and found that the problem was:

...
[2017-11-28 04:34] [ALPM] upgraded libmariadbclient (10.1.28-1 -> 10.1.29-1)
[2017-11-28 04:34] [ALPM] transaction interrupted

The update was interrupted, hence the linkage problem.

I then downloaded the firmware from here. I extracted the missing library:

$ gunzip ArchLinuxARM-rpi-latest.tar.gz
$ tar -tf ArchLinuxARM-rpi-latest.tar |grep libicuuc.so.59
./usr/lib/libicuuc.so.59.1
./usr/lib/libicuuc.so.59
$ tar -xf ArchLinuxARM-rpi-latest.tar ./usr/lib/libicuuc.so.59.1
$ tar -xf ArchLinuxARM-rpi-latest.tar ./usr/lib/libicuuc.so.59

libicuuc.so.59 was a symlink to libicuuc.so.59.1, so I moved libicuuc.so.59.1 to /usr/lib/libicuuc.so.59.

Running pacman I got the error that libicudata.so.59 was missing. I extracted the missing library to /usr/lib and pacman was working :).

I then updated the system with pacman -Syuq and checked with ldd /usr/bin/pacman that all libraries were present. I moved the v59 libraries from /usr/lib and checked that pacman was working.

Reboot with fingers crossed... successfully!!!

pacman -Sc and go to bed with a smile :)

1

Solved the problem with pacman -Sc followed by pacman -Syyu Not sure why it solved the problem.

0
1

In your system lib32-icu is not installed. Just install lib32-icu from pacman and all problem will be solved.

sudo pacman -S lib32-icu
0

I solved this problem with the help of the following link; here

According to this article downgrading is a bad idea and what you should probably do is rebuild the package that uses the above missing dependancy. Downgrading may affect multiple packages.

0

/usr/lib/chromium/chromium: error while loading shared libraries: libicuuc.so.65: cannot open shared object file: No such file or directory

# ln -s /usr/lib/libicuuc.so.67.1 /usr/lib/libicuuc.so.65

Quick and dirty.

0

Download (HTTP): https://github.com/unicode-org/icu/releases/download/release-70-1/icu4c-70_1-src.tgz.   Then

tar -xf icu4c-70_1-src.tgz &&
cd icu4c-70_1-src/source &&
./configure --prefix=/usr &&
make &&
sudo make install

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .