Как ArchLinux обрабатывает конфликты зависимостей?
В традиционной модели выпуска все пакеты в выпуске компилируются с помощью одной и той же версии компилятора для одних и тех же версий библиотек, и группа выпуска тщательно выбирает версии программного обеспечения, которые хорошо сочетаются друг с другом, чтобы избежать конфликтов.
В исходном дистрибутиве с непрерывным выпуском, таком как Gentoo, вы создаете каждый пакет самостоятельно для версий библиотеки, установленных в вашей системе, и в случае, если два пакета зависят от разных версий одной и той же библиотеки, вы можете установить эти разные версии в разные слоты. Таким образом, у вас есть разумный механизм, чтобы избежать конфликтов.
Недавно я обнаружил ArchLinux, еще один дистрибутив с скользящей моделью выпуска, и он основан на бинарных пакетах. Это также, кажется, не поддерживает слоты.
Теперь я озадачен. Что произойдет с ArchLinux, если я попытаюсь установить пакет, который зависит от версии библиотеки, отличной от той, которую я установил? Я вынужден обновить библиотеку? Но что произойдет, если два пакета зависят от разных версий библиотеки?
Я просмотрел различные вики-страницы ArchLinux на pacman, но не нашел закулисного объяснения.
1 ответ
Зависимости с явной версией редки в Arch; большинство пакетов просто ожидают установки последней версии зависимости. (Пользователь не должен выполнять выборочные обновления, но должен сохранять все установленные пакеты в их последней версии.)
В редких случаях, когда требуются две версии с разными ABI, более старые версии могут быть предоставлены в виде пакетов с разными именами - например, libpng
(самый последний), libpng14
(1.4), libpng12
(1.2).