> Пакетный менеджер не контролирует ПОЛНОЕ состояние системы, например рантайм данные программ.
> Поэтому консистентный откат с нового состояния на старое после обновления -
> вилами по воде писан.Если на пальцах, транзакция - это когда пакетник устанавливает пакеты определённым набором, и только после того, как всё установились успешно, позволяет программам модифицировать "рантайм данные". В случае неудачи происходит откат к прежнему состоянию и программы продолжают работать, будто бы их новые версии не устанавливались вовсе.
> Пакетный менеджер вообще ничего не делает с
> рантайм данными программ и достаточно ограниченно трогает конфиги.
Точнее, существующие реализации пакетников не обеспечивают должным образом? Какие-то справляются лучше, какие-то хуже.
> И если при
> апгрейде "вверх" приличные программы и пакеты еще как-то обеспечивают обычно совместимость
> при изменении форматов конфигов или рантайм данных, то вот "вниз" это
> никто имплементит. И при попытке откатить новую версию до старой можно
> получить чудный выбор между неработающей новой версией и неработающей старой. Потому
> что старая версия оказывается не умеет понимать новые форматы конфигов или
> рантайм данных которые уже апгрейднули под новую версию, а потом -
> передумали, но...
Это вполне способен решать пакетник, если задаться такой целью. На примере браузера - сохраняется копия профиля, при неудаче установки происходит откат. Правда, мне тут не ясно - а в какой момент стало понятно, что транзакцию надо откатывать? Точнее, а зачем было запускать браузер, если он не установился.
> Представляете, пакетный менеджер не трекеает какие файлы при своей работе создают программы
> (/vad/lib, ~/* и тому подобное) и насколько оно там (не) совместимо
> по версиям программ. И если надо было гарантированый откат - это
> про полный снапшот состояния системы было, а не эти жалкие потуги.
Я даже представляю, что надо сделать, что бы пакетник это "трекал". И догадываюсь, почему никто не реализовал. Беда в том, что эта причина мало кому понравится. :)