Вы задаете настолько глупые и нубские вопросы, что даже отвечать не охота. Тем более, что вы все равно упретесь, не признаете очевидных фактов и сведете все к фанатизму. Но попробую.Depencency hell, ок котором мы говорили, имеет место только в бинарных дистрах. Почему? Из-за жестко прибитых депендов.
Обновилась библиотека jpeg.6 до jpeg.7, и надо вам поставить новенький пакет который требует jpeg.7. Что делать? Старные пакеты явно требуют 6, и с 7 работать не будут. Новый требует 7 и не будет работать с 6. Поставить их вместе нельзя, потому что они конфликтуют. Достаточно, на самом деле, всего лишь сохранить сошку от 6 - старые приложения ее будут использовать и дальше. Но увы, депенды прибиты гвоздями, пакетный менеджер при таком раскладе сходит с ума.
Это и есть ваш dependency hell - фактически, искусственно созданная проблема.
В source based же, обновляется порт jpeg. Юзеры делают portupgrade jpeg, при этом старая сошка сохраняется, установленный софт счастливо использует ее, а новый линкуется с новой. При желании, можно пересобрать все на новую. Можно не пересобирать. Все гибко донельзя.
А то, что вы написали - как обычно, не в кассу. Если в библиотеке ломают API, патчить придется весь софт который ее использует. Это делают как в бинарных дистрибутивах, так и в source-based. Только разработчики (особенно X, это вы очень мимо ее сюда приплели) умные, и API не ломают - это совсем не сложно, достаточно не удалять методы и аргументы, а новые аргументы добавлять в конец и с дефолтным значением. Все. ABI же ломается регулярно, потому что для поломки ABI достаточно изменить поле в любой внутренней структуре или сигнатуру любой функции.
> Угу, как у вас все просто, если загнать себя в некие рамки
Это как раз отсутствие рамок - я могу обновить только то, что мне нужно, не перекачивая и переустанавливая при этом полсистемы.