TypicalPackagingErrors/SonameUpdate
Материал из ALT Linux Wiki
< TypicalPackagingErrors(Различия между версиями)
(Import from freesource.info) |
Ilis (обсуждение | вклад) (→Обновление библиотеки) |
||
Строка 30: | Строка 30: | ||
PS: варианты изменения ABI без увеличения soname оставим на совести авторов таких либлиотек ;-) | PS: варианты изменения ABI без увеличения soname оставим на совести авторов таких либлиотек ;-) | ||
+ | |||
+ | [[Категория:TypicalPackagingErrors|{{SUBPAGENAME}}]] |
Текущая версия на 15:49, 13 марта 2009
Обновление библиотеки
Если библиотека обновляется, есть два культурных варианта при изменившемся soname --
- пересобираются все зависимые пакеты; или
- новая версия собирается в версионированный пакет, а вытеснение старой происходит по мере пересборки репозитория.
Есть нюанс, когда библиотека обновилась, но ABI не изменился. Тогда для снятия необходимости пересборки возможно добавление симлинка, соответствующего старому soname, на .so.$NEW. При этом необходим триггер:
> expat-2.0.0-alt2 с рекомендованными исправлениями отправлен в Sisyphus. > Однако я обнаружил проблему при обновлении с expat-1.95.8-alt2: старый > симлинк libexpat.so.0 почему-то не заменяется новым и все клиенты > перестают запускаться. После еще одного rpm -i --force симлинк встал на > место. Это явление известно давно и имеет простое объяснение. Достаточно мысленно разбить обновление libexpat на этапы: 1. все файлы нового пакета установлены; в этот момент libexpat.so.0 указывает на новую библиотеку; 2. ldconfig из %post нового пакета выполнен; в этот момент libexpat.so.0 снова указывает на старую библиотеку; 3. все файлы старого пакета удалены; в этот момент libexpat.so.0 является битой ссылкой. В результате ссылка остаётся битой. Что нам остаётся? %triggerpostun.
PS: варианты изменения ABI без увеличения soname оставим на совести авторов таких либлиотек ;-)