Пару недель не устанавливал обновления, накопилось чуть больше сотни.
Устанавливаются с помощью алиаса в .bashrc
:
... alias osupgrade="yaourt -Syua --noconfirm" ...
Содержание
Ошибка
Работает без проблем (yaourt
всё-равно под капотом дёргает pacman
для пакетов из официального репозитория) уже почти два года, но сегодня апгрейд остановился с ошибками:
[simterm]
... (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!
[/simterm]
Проверяем зависимости пакета package-query
:
[simterm]
$ ldd /usr/bin/package-query ... libalpm.so.11 => not found ...
[/simterm]
Но файлы библиотеки есть:
[simterm]
$ 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
[/simterm]
Только версии libalpm.so.12.0.0, а не 11, соответственно и имена файлов разные.
Решение #1 (неправильное) – symlink
Первым, что приходит в голову – это добавить симлинк на время установки обновлений, но это костыль, который применять, особенно к системным библиотекам, плохая идея.
Тем не менее – можно сделать:
[simterm]
$ sudo ln -s /usr/lib/libalpm.so.12 /usr/lib/libalpm.so.11
[/simterm]
Решение #2 (правильное) – сборка пакета с makepkg
Значит – надо переустановить package-query
, удаляем:
[simterm]
$ 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
[/simterm]
Добавляем dd
(см. pacman
), что бы игнорировать зависящие пакеты:
[simterm]
$ 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 ...
[/simterm]
Загружаем package-query
с Github:
[simterm]
$ git clone https://aur.archlinux.org/package-query.git $ cd package-query/
[/simterm]
Собираем его и устанавливаем (-i
, --install
):
[simterm]
$ 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 ...
[/simterm]
Проверяем ldd
:
[simterm]
$ ldd /usr/bin/package-query | grep libalpm.so libalpm.so.12 => /usr/lib/libalpm.so.12 (0x00007fb7b6cab000)
[/simterm]
Повторяем апгрейд:
[simterm]
... (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!
[/simterm]
Вывод
А вывод простой – пора таки поменять в алиасе yaourt
на yay
, ибо yaourt
, как у нему ни привык, но уже не актуален.
Готово.