Arch Linux: package-query: error while loading shared libraries: libalpm.so.11

Автор: | 10/26/2019
 

Пару недель не устанавливал обновления, накопилось чуть больше сотни.

Устанавливаются с помощью алиаса в .bashrc:

...
alias osupgrade="yaourt -Syua --noconfirm"
...

 

Ошибка

Работает без проблем (yaourt всё-равно под капотом дёргает pacman для пакетов из официального репозитория) уже почти два года, но сегодня апгрейд остановился с ошибками:

...
(20/21) Updating the desktop file MIME type cache...
(21/21) Updating the MIME type database...
package-query: error while loading shared libraries: libalpm.so.11: cannot open shared object file: No such file or directory
==> ERROR: unable to update
package-query: error while loading shared libraries: libalpm.so.11: cannot open shared object file: No such file or directory
==> ERROR: unable to update
package-query: error while loading shared libraries: libalpm.so.11: cannot open shared object file: No such file or directory
==> ERROR: unable to update
package-query: error while loading shared libraries: libalpm.so.11: cannot open shared object file: No such file or directory
==> ERROR: unable to update
package-query: error while loading shared libraries: libalpm.so.11: cannot open shared object file: No such file or directory
No database errors have been found!

Проверяем зависимости пакета package-query:

ldd /usr/bin/package-query
...
libalpm.so.11 => not found
...

Но файлы библиотеки есть:

ls -l /usr/lib/libalpm.so*
lrwxrwxrwx 1 root root     17 Oct 22 05:06 /usr/lib/libalpm.so -> libalpm.so.12.0.0
lrwxrwxrwx 1 root root     17 Oct 22 05:06 /usr/lib/libalpm.so.12 -> libalpm.so.12.0.0
-rwxr-xr-x 1 root root 223616 Oct 22 05:06 /usr/lib/libalpm.so.12.0.0

Только версии libalpm.so.12.0.0, а не 11, соответственно и имена файлов разные.

Решение #1 (неправильное) — symlink

Первым, что приходит в голову — это добавить симлинк на время установки обновлений, но это костыль, который применять, особенно к системным библиотекам, плохая идея.

Тем не менее — можно сделать:

sudo ln -s /usr/lib/libalpm.so.12 /usr/lib/libalpm.so.11

Решение #2 (правильное) — сборка пакета с makepkg

Значит — надо переустановить package-query, удаляем:

sudo pacman -R package-query
checking dependencies...
error: failed to prepare transaction (could not satisfy dependencies)
:: removing package-query breaks dependency 'package-query>=1.8' required by yaourt

Добавляем dd (см. pacman), что бы игнорировать зависящие пакеты:

sudo pacman -Rdd package-query
Packages (1) package-query-1.9-3
Total Removed Size:  0.09 MiB
:: Do you want to remove these packages? [Y/n] y
...

Загружаем package-query с Github:

git clone https://aur.archlinux.org/package-query.git
cd package-query/

Собираем его и устанавливаем (-i, --install):

makepkg -si
...
==> Installing package package-query with pacman -U...
loading packages...
resolving dependencies...
looking for conflicting packages...
Packages (1) package-query-1.10-1
Total Installed Size:  0.07 MiB
:: Proceed with installation? [Y/n] y
...

Проверяем ldd:

ldd /usr/bin/package-query | grep libalpm.so
libalpm.so.12 => /usr/lib/libalpm.so.12 (0x00007fb7b6cab000)

Повторяем апгрейд:

...
(1/3) Arming ConditionNeedsUpdate...
(2/3) Updating icon theme caches...
(3/3) Updating the desktop file MIME type cache...
No database errors have been found!

Вывод

А вывод простой — пора таки поменять в алиасе yaourt на yay, ибо yaourt, как у нему ни привык, но уже не актуален.

Готово.