Today I installed updates on my two arch machines, both running SLiM + XFCE4, using `pacman -Syu`. The update on one machine worked like a charm, but broke the other.
When booting and trying to login with SLiM, the screen goes black and I'm back at SLiM. The log shows this:
xfce4-session: error while loading shared libraries: libicule.so.50: cannot open shared object file: No such file or directory
Of course there is no such file, because I installed icu 51.1-1 and there is only libicule.so.51 in /usr/lib/.
I tried to re-download and re-install icu and xfce4-session in rescue mode, or creating a symlink for libicule.so.50 pointing to the new, but nothing changed. I always drop back to SLiM. On the second system there is no error, I installed the new icu package, rebooted and logged in as usual.
I downgraded to icu 50.1.2-1 and I can login again. But it seems that some other applications are breaking now. (vim e.g.)
Any ideas how to fix this?
Last edited by Corubba (2013-03-28 14:30:59)
Today I tried to update icu along with lib32-icu, but the result was the same. Still looking for libicule.so.50.
I have run `ldconfig -v` to check the symlinks, and it uses the v51 library.
And it seems not be to be a XFCE related problem, when installing v51 I can't even start vim because it also wants v50. So it has to be something other.
On both systems, the LD_LIBRARY_PATH variable is blank. When running `ldd /usr/bin/xfce4-session`, it get the same result as running it. One machine said "not found" because looking for v50, the other is using v51 and all okay.
Maybe some problem with the dynamic linker? I'm not very familiar with libraries and linking stuff.
Last edited by Corubba (2013-03-28 11:20:37)
could be that you now have a mix of packages build against icu 50 and icu 51 .
Find atleast 2 packages (more is better) that don't work with whatever icu version you have installed now, then run for all.
compare the outputs and look for dependencies they have in common in the dep tree between them and icu.
Booting with apg Openrc, NOT systemd.
Automounting : not needed, i prefer pmount
Aur helpers : makepkg + my own local repo === rarely need them
Thanks for the tip. pactree is a pretty nice tool.
I used this short snippet to get all AUR packets, that depend on icu:
for PACKET in $(pactree -rlu icu | sort); do yaourt -Q | grep "local/$PACKET "; done
And looked for these packages in the reverse dep-tree `pactree -r icu`. Voila, all depend on harfbuzz-git. I rebuild that package, rebooted and I'm still able to login with icu v51 installed.
With that knowledge, it now makes sense that the harfbuzz lib has thrown a "unknown symbol" error when I symlinked v50 libs to the v51 ones.
Thanks for the help.
Last edited by Corubba (2013-03-28 14:08:47)
I had the same problem today.
I re-installed "harfbuzz and lib32-harfbuzz" and it solved the problem!