Пару недель не устанавливал обновления, накопилось чуть больше сотни.
Устанавливаются с помощью алиаса в .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
, как у нему ни привык, но уже не актуален.
Готово.