После обновления с 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 на Pi версии 1:
# uname -an
4.9.62-1-ARCH #1 SMP Fri Nov 17 13:42:55 UTC 2017 armv6l GNU/Linux
решение1
Предложенные ранее решения не были актуальны или не работали для меня. По какой-то причине обновление пакета icu
с 59.1-2 до 60.1-1 привело к разрыву связи, и многие программы (включая pacman) после этого завершились с этой ошибкой. На моей стороне нет прерванного pacman.
Если у вас в кэше все еще есть предыдущий пакет, вы можете попробовать это, что сработало у меня:
- Найдите кэшированную версию пакета (например, у меня была
/var/cache/pacman/pkg/icu-59.1-2-x86_64.pkg.tar.xz
). - Извлеките его:
mkdir -p ~/pkg/tmp && tar xJvf /var/cache/pacman/pkg/icu-59.1-2-x86_64.pkg.tar.xz -C ~/pkg/tmp
- Скопируйте библиотеки в папку lib:
sudo cp ~/pkg/tmp/usr/lib/libicu*.59 /usr/lib/
- Продолжить обновление:
sudo pacman -Syu
- Теперь вы можете удалить только что извлеченные файлы.
решение2
Вы также можете использовать переменную LD_LIBRARY_PATH для загрузки библиотек icu из другого места. Таким образом, вы можете избежать любых копий в /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
решение3
В случае, если у вас есть исполняемый файл, которому нужна эта конкретная версия библиотеки (как это было в моем случае), естьпакет aurдля этой конкретной версии.
решение4
Проблема решена с помощью pacman -Sc, а затем pacman -Syyu. Не уверен, почему это решило проблему.