Пытаюсь обновить систему, получаю ошибку: не удалось подготовить транзакцию (не удалось удовлетворить зависимости).
Вот что я получаю:
~> sudo pacman -Syu
:: Synchronising package databases...
gremlins is up to date
system is up to date
world is up to date
galaxy-gremlins is up to date
galaxy is up to date
lib32 is up to date
extra is up to date
community is up to date
multilib is up to date
:: Starting full system upgrade...
:: Replace libcanberra-pulse with gremlins/libcanberra? [Y/n] n
resolving dependencies...
looking for conflicting packages...
error: failed to prepare transaction (could not satisfy dependencies)
:: installing expat (2.4.1-1) breaks dependency 'expat=2.3.0' required by lib32-expat
:: installing libcap (2.50-1) breaks dependency 'libcap=2.49' required by lib32-libcap
:: installing libelf (0.185-1) breaks dependency 'libelf=0.184' required by lib32-libelf
:: installing libcanberra (0.30+2+gc0620e4-4) breaks dependency 'libcanberra=0.30+2+gc0620e4-3' required by libcanberra-pulse
Затем я пытаюсь удалить пакет expat
, но получаю сообщение: «Внимание: в списке удаления есть запрещенные пакеты!»
Я посмотрел на этовеб-страница, но здесь они могут удалить проблемный пакет, а я не могу, так как expat
он является частью ядра.
Что мне делать в этот момент?
решение1
Пакеты в lib32
репозитории, представляющие собой 32-разрядные версии различных библиотек и т. п., зависят от своих 64-разрядных аналогов той же версии.
У вас есть нестабильные репозитории тестирования, такие как gremlins
и galaxy-gremlins
, которые предоставляют более новые версии пакетов, таких как expat
. Но у вас нет lib32-gremlins
репозитория, поэтому вы не получаете те же обновления для 32-битных аналогов этих пакетов, т. е. вы можете оставаться на старых (стабильных) пакетах. И поскольку стабильные 32-битные пакеты, такие как , lib32-expat
зависят от 64-битных пакетов-аналогов из стабильных репозиториев, возникает конфликт, в котором вы можете либо оставить свою систему старой (чтобы удовлетворить зависимости старых 32-битных пакетов), либо установить более новые 64-битные пакеты (что нарушит зависимости 32-битных пакетов, то есть вы можете сделать это, только удалив их).
В качестве альтернативы вы можете включить lib32-gremlins
репозиторий, который предоставляет 32-разрядные версии пакетов в 64-разрядных тестовых репозиториях, или отключить все тестовые репозитории — любое из этих двух действий синхронизирует ваши 64-разрядные и 32-разрядные репозитории, а зависимости можно будет разрешить с помощью последних доступных пакетов.