Bug 14917 - Плохо отрабатывает откат на "меньший" SONAME
Summary: Плохо отрабатывает откат на "меньший" SONAME
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: glibc-core (show other bugs)
Version: unstable
Hardware: all Linux
: P2 minor
Assignee: placeholder@altlinux.org
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-03-15 06:31 MSK by Evgenii Terechkov
Modified: 2008-11-21 16:13 MSK (History)
7 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Evgenii Terechkov 2008-03-15 06:31:34 MSK
В ходе разборок после массового обновления пакетов откатил glib2 с 2.16.1-alt1
на 2.15.6-alt1. При этом обнаружил, что перестал работать mc (возможно, не
только он), жалуясь на ненаденность библиотеки, к которой слинкован.

Выяснилось, что симлинки в каталоге /lib/, принадлежащие пакету, битые:
указывают не на *.so.0.1506*, а на *.so.0.1600* (rpm -V glib2 подтвердил, выведа
8 строки с модификатором "L"). После ручного разруливания работоспособность mc
восстановилась.

Не знаю, кто именно виноват - новый glib2 или старый, но, надеюсь, в будущих
версиях это будет учтено и поправлено (если ещё не).
Steps to Reproduce:
1.apt-get install glib2=2.16.1-alt1
2.apt-get install glib2=2.15.6-alt1
3.mc
Actual Results:  
lib not found

Expected Results:  
mc runs
Comment 1 Alexey Rusakov 2008-03-15 08:49:37 MSK
Эта проблема относится не к glib2, а к rpm, я подозреваю. Точно такую же беду я
схлопотал на откате gnome-panel, симлинки повисли в воздухе.
Comment 2 Sir Raorn 2008-03-15 09:49:55 MSK
Проблема даже не в rpm, а в /sbin/postun_ldconfig из пакета glibc-core.

ldconfig в этом случае вызывается только если пакет удаляется.  Предыдущий вызов
ldconfig из %post проходит при наличии двух версий библиотеки и симлинк
проставляется на бОльший SONAME.

В случае когда SONAME уменьшается в пакете надо рисовать триггеры.  Когда откат
н астарый пакет идёт руками, надо вызывать ldconfig вручную.  Это такая фича.

P.S. В пакетах xscreensaver и vim-* я решил эту проблему, когда "post" скрипты
запускаются после удаления файлов старой версии пакета, но с библиотеками такой
хак не прокатит.
Comment 3 Evgenii Terechkov 2008-03-15 16:54:55 MSK
Можно как-то автоматизировать и стандартизировать процедуру "починки"? ldv?
Comment 4 Dmitry V. Levin 2008-03-15 17:47:14 MSK
(In reply to comment #3)
> Можно как-то автоматизировать и стандартизировать процедуру "починки"? ldv?

Можно выкинуть эту оптимизацию из postun_ldconfig, тогда пи откатах библиотек не
надо будет вызывать ldconfig вручную, ценой двукратного увеличения числа вызовов
ldconfig при любом обновлении библиотек.
Comment 5 Andrey Rahmatullin 2008-03-16 14:35:39 MSK
Не надо нам такой цены.
Comment 6 Michael Shigorin 2008-03-16 18:23:21 MSK
(In reply to comment #5)
> Не надо нам такой цены.
Угу... возможно, разумным хаком могло бы быть откладывание в той ветке
оптимизации, где ldconfig не выполняется, его на одноразовую post mortem часть?
Comment 7 Evgenii Terechkov 2008-06-13 15:36:08 MSD
ldv: можно так сделать, как Миша предлагает? А то в Сизифе иногда либы откатывать надо :-)
Comment 8 Dmitry V. Levin 2008-11-14 01:50:24 MSK
С внедрением в librpm posttrans filetriggers появился ещё один вариант решения проблемы, который мне кажется более предпочтительным:
Превратить post_ldconfig и postun_ldconfig в ссылки на ldconfig,
а в самом ldconfig сделать проверку на RPM_INSTALL_NAME, т.е. просто деактивировать ldconfig, запускаемый скриптами пакетов.
Comment 9 Dmitry V. Levin 2008-11-21 04:35:43 MSK
Fixed in glibc-core-2.9-alt1 by disabling all kinds of ldconfig when RPM_INSTALL_NAME is set.
Comment 10 Evgenii Terechkov 2008-11-21 16:13:44 MSK
Угу, filetriggers rulez.