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
frustratedMartian
  • 301
  • 1
  • 2
  • 5

9 Answers9

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.
Legogris
  • 401
  • 3
  • 4
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
jviki
  • 31
  • 1
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.

ivcha
  • 121
  • 2
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 :)

frustratedMartian
  • 301
  • 1
  • 2
  • 5
1

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

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.

HexaCrop
  • 101
  • 2
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.

gregn3
  • 103
  • 3
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