Почему при обновлении одной динамической библиотеки обновляется множество пакетов?

Я не понимаю. Каждый раз, как приходит обновление на Ubuntu, обновляется куча пакетов с одним и тем же описанием, например, исправлено переполнение буфера при таких-то условиях. Смотришь описание пакета, в котором находится библиотека с исправленной ошибкой, и видишь, что он вроде как содержит динамическую библиотеку. Но если библиотека динамическая, то достаточно обновить только ее! В этом же весь смысл динамических библиотек -- чтобы можно было исправлять ошибки, перекомпилировав только одну библиотеку и раздав новую версию всем желающим. Почему же тогда исправление в библиотеке требуется перекомпиляция чуть ли не всех зависимых от нее программ? На кой тогда эти динамические библиотеки?

Дополнение
Тут в комментариях уже несколько раз промелькнула мысль о зависимостях. Я понимаю, что одни программы зависят от других и это правильно. Но ведь софт можно ставить не только из пакетов, верно? К тому же пакеты может никто не обновлять. Вот, например, не столь давно приходили обновления в библиотеке поддержки TLS. Означает ли это, что те программы, чьи пакеты не обновлялись, по прежнему уязвимы? Нет, иначе это был бы абсурд. А если не видно разницы, то зачем обновление во внутренностях одной библиотеки, не затрагивающее ее API и ABI, порождает каскадное обновление других программ и библиотек? Ведь в коде этих программ ничего не изменилось, после сборки у них вероятно даже хеш совпадет.

Зависимости это хорошо, но ведь все в этом мире от чего-то да зависит. Когда приходит обновление libc++, например, я что-то не вижу обновлений десятков тысяч установленных пакетов, а ведь практически каждая программа (ну даже пусть 10%, хотя конечно же, явно больше) зависит от это библиотеки. Тем не менее еще ни разу не видел, чтобы больше десятка пакетов обновлялись из-за обновления libc++.

Тогда зачем остальные это делают? Это может кто нибудь объяснить?
  • Вопрос задан
  • 2550 просмотров
Пригласить эксперта
Ответы на вопрос 4
MpaK999
@MpaK999
Буду!
Простое объяснение это зависимости.
Ответ написан
Комментировать
difiso
@difiso
В параллельной вселенной я космонавт
Возможно исправление ошибки потребовало использования функционала, который имеется в только в новой версии библиотеки, что в свою очередь привело к необходимости ее обновления.
Ответ написан
bk0011m
@bk0011m
Системный администратор
На убунте вы ставите софт из пакетов. Которые кто-то любезно собрал. Но дело в том, что сборка пакетов идет на компьютере, где установлены определенные библиотеки и прочий софт. Соответственно при сборке пакет создается именно под этот софт и библиотеки. И если у вас версии не совпадают, то система пытается их обновить. Собственно это и есть зависимости от определенных версий.
Ответ написан
opium
@opium
Просто люблю качественно работать
Вы наверно обновляете её как apt-get upgrade
А надо что то типо apt-get install
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы