Summary: | Плохо отрабатывает откат на "меньший" SONAME | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | Evgenii Terechkov <evg> |
Component: | glibc-core | Assignee: | placeholder <placeholder> |
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus |
Severity: | minor | ||
Priority: | P2 | CC: | at, glebfm, ldv, mike, placeholder, vvk, wrar |
Version: | unstable | ||
Hardware: | all | ||
OS: | Linux |
Description
Evgenii Terechkov
2008-03-15 06:31:34 MSK
Эта проблема относится не к glib2, а к rpm, я подозреваю. Точно такую же беду я схлопотал на откате gnome-panel, симлинки повисли в воздухе. Проблема даже не в rpm, а в /sbin/postun_ldconfig из пакета glibc-core. ldconfig в этом случае вызывается только если пакет удаляется. Предыдущий вызов ldconfig из %post проходит при наличии двух версий библиотеки и симлинк проставляется на бОльший SONAME. В случае когда SONAME уменьшается в пакете надо рисовать триггеры. Когда откат н астарый пакет идёт руками, надо вызывать ldconfig вручную. Это такая фича. P.S. В пакетах xscreensaver и vim-* я решил эту проблему, когда "post" скрипты запускаются после удаления файлов старой версии пакета, но с библиотеками такой хак не прокатит. Можно как-то автоматизировать и стандартизировать процедуру "починки"? ldv? (In reply to comment #3) > Можно как-то автоматизировать и стандартизировать процедуру "починки"? ldv? Можно выкинуть эту оптимизацию из postun_ldconfig, тогда пи откатах библиотек не надо будет вызывать ldconfig вручную, ценой двукратного увеличения числа вызовов ldconfig при любом обновлении библиотек. Не надо нам такой цены. (In reply to comment #5) > Не надо нам такой цены. Угу... возможно, разумным хаком могло бы быть откладывание в той ветке оптимизации, где ldconfig не выполняется, его на одноразовую post mortem часть? ldv: можно так сделать, как Миша предлагает? А то в Сизифе иногда либы откатывать надо :-) С внедрением в librpm posttrans filetriggers появился ещё один вариант решения проблемы, который мне кажется более предпочтительным: Превратить post_ldconfig и postun_ldconfig в ссылки на ldconfig, а в самом ldconfig сделать проверку на RPM_INSTALL_NAME, т.е. просто деактивировать ldconfig, запускаемый скриптами пакетов. Fixed in glibc-core-2.9-alt1 by disabling all kinds of ldconfig when RPM_INSTALL_NAME is set. Угу, filetriggers rulez. |