Библиотеки могут потенциально использоваться многими программами, из-за чего несовместимое изменение интерфейса любой библиотеки требует большого объёма работы по адаптации её клиентов. Для упрощения процесса переезда и уменьшения количества сломанных в каждый конкретный момент времени пакетов библиотеки различных несовместимых версий должны уметь сосуществовать на одной машинке.
Библиотека должна быть упакована в пакет, имя которого меняется, когда меняется версия разделяемой библиотеки. Обычно используются конструкции вида lib%name%soversion, где %soversion — версия библиотеки. Если же библиотека и так содержит цифру в конце своего имени, допустимо именовать пакет в виде lib%name-%soversion.
Пакеты с development-частями библиотек должны быть поименованы lib%name%soversion-devel, если планируется поддерживать несколько development-версий для разных версий библиотек (что далеко не всегда оправданно, см. http://lists.altlinux.org/pipermail/devel/2006-December/039664.html) или lib%name-devel для последней версии библиотеки.
Таким образом, именование пакетов вида lib%name%soversion и lib%name-devel позволит избавиться от проблем с обновлениями пакетов, когда они не пересобраны с новой библиотекой.
В зависимости от действий/политики upstream, %soversion в имени пакета может иметь разный вид. К примеру, для QT достаточно major-версии soname, т.к. libqt4 обратно не совместима с libqt3, а в случае с некоторыми другими библиотеками может понадобиться полное указание soname, например openssl097 и openssl098. С другой стороны, openssl 0.9.8i обратно совместим с 0.9.8a, поэтому дальнейшей детализации не нужно.
Не секрет, что сейчас в Сизифе подобным образом запакованы очень немногие библиотеки. Предположим, что библиотека libfoo обновилась и в ней сменился soname с N на M.
При сборке новой версии пакета libfoo предлагается сделать следующее:
1. Переименовать пакет libfoo в libfooM
2. Добавить в пакет libfooM Provides: libfoo = %version-%release
Старые библиотеки должны быть перемещены в группу 'System/Legacy Libraries' при появлении в Сизифе новой версии. В исключительных случаях разрешается иметь более одной версии библиотеки не в Legacy (скажем, для qt3 и qt4, которые по сути являются различными библиотеками, а не разными версиями одной).
Когда библиотека из группы 'System/Legacy Libraries' не требуется ни одним пакетом из Сизифа, одна должна быть удалена из него. Пакеты из группы 'System/Legacy Libraries' (и, соответственно, пакеты, зависящие от них) объявляются непригодными к выпуску в стабильной версии Sisyphus.