> У меня гента, так что о пересборках после смены второй цифры я
> некое представление имею :) Но вот сломать систему как-то не выходило.А я вот сталкивался с глюками, после обновления отдельных нижних gtk библиотек - приходилось пересобирать все библиотеки и приложения их использующие.
> Как делается - не знаю, я, честно гвооря, в детали не
> лез. Ноработает вполне приемлемо, включая апдейт libc. То есть это не
> проблема, к которой решения нет.
Все это существенно усложняет систему сборки - нужно сперва собрать toolchain, который потом пересоберет binutils/glibc/gcc.
> Впрочем, с вариантом "пересобирать, используя старую
> библиотеку, потом разом всё заменить" тоже особых проблем не вижу.
Canonical уже пришла к выводу, что надежнее и проще обновлять нижний уровень за один заход.
> Статическая линковка обычно ходит с тасканием библиотеки с собой - здесь да,
> попутал немного. С другой стороны - даже с просто статической сборкой
> в source-based мы имеем гору лишних пересборок, а в бинарных -
> свалившуюся с ровного места нагрузку не на авторов, так на маинтайнеров.
Для маинтайнеров это не проблема - эта операция может происходить полностью автоматически.
> Кроме того, лично мне очень не нравится идея параллельного наличия нескольких возможно
> несовместимых версий чего угодно (библиотеки, приложения - не важно) в
> системе без особых мер предосторожности - побиться можно отнюдь не тоько
> об abi а, например, о формат конфигов, или временых файлов, или
> ещё чего. Это всё лечится - но как бы не получить
> в итоге GoboLinux.
В целом согласен, но есть ряд ситуаций, когда это необходимо. Иногда нужно держать стабильную и нестабильную версию одновременно. Есть софт, который уже не обновляется или завязан за старые api библиотек. Да и просто при выходе новой версии библиотеки с новым api нужно либо ждать пока все нужные программы перейдут на него либо держать две версии.
Сразу вспоминаются gtk2/3 и qt4/5.
У каждого способа линковки есть свои сильные и слабые стороны. Как я отметил в самом начале, хорошим решением могло бы быть использование разделяемых широко используемых библиотек и статики для редких. Возможно стоит сделать исключение для glibc, так как в разделяемом виде ее сложно обновлять, а учитывая что из нее часто вызываются мелкие функции в цикле, то статическая линковка могла бы хорошо сказаться на производительности практически всех приложений (за счет inline/lto).