Найти тему
Пикабу

Dependency bloat

Решил я тут обновить свой рабочий Debian с 11 до 12 (bullseye -> bookworm) и обнаружил, что в новой версии NFS внезапно стал требовать Python:

$ apt-cache depends nfs-common | grep python.

Depends: python3.

NFS-Клиент, Карл!! Компонент для подключения к сетевым шарам, написанный на C, внезапно требует наличия в системе прикладного ЯП общего назначения! По запросу в гугле "nfs python dependency" выдаётся список ишью, в которых другие юзеры испытывают такое же точно недоумение.

Дальше веселее: дальнейшее исследование показало, что весь питон в этом пакете представлен ровно 1 вспомогательным файлом nfsconvert.py, цель которого - конвертировать старый многофайловый формат конфигурации /etc/default/nfs-* в новый монолитный формат /etc/nfs.conf. Т.е. весьма нехитрая обработка текстового конфига, которую можно сделать хоть на шелле хоть на перле, который, на минуточку, в отличие от Python является штатным компонентом пакетной системы в Debian. Но кто-то ****#!! @ ничего кроме своего питона не знает и кроме того считает, что python должен идти в поставке дистрибутива.

Эта зараза уже давно в дебиане, многие пакеты тащат с собой кучу зависимостей (в Depends, не в Suggests), которые нужны 2.5 анонимам в специфических случаях, но тем не менее входят в поставку. Чтобы не быть голословным:

$ apt-cache depends mplayer | grep python.

Depends: python3.

Медиаплееру нужен питон, а что вы думали? Это для python bindings, сам плеер написан на C++.

$ apt-cache depends mpd | grep smb.

Depends: libsmbclient-dev.

Крохотному консольному аудиоплееру на C++ нужна Samba (которая в свою очередь тащит Python). Т.е. система типа не умеет монтировать Windows шары в обычную директорию (очевидно, из-за того, что в ней не стоит самба) чтобы скормить из неё файлы в плеер, но вдруг нам захочется подключиться напрямую к Windows шаре с музыкой! Решение: надо просто притащить самбу зависимостью! Гениально! Также этот плеер тащит много всякой другой каки, вроде Sphynx (система для генерации доков, по размеру думаю сравнима со всеми остальными зависимостями вместе взятыми).

Из-за всего этого мне приходится у себя держать набор патченых сборок deb-пакетов с порезанными зависимостями, но их же тоже нужно обновлять и пересобирать, я из разработчика превращаюсь в мать его мейнтейнера дистрибутива. Проще конечно не заморачиваться и ставить все зависимости и экономить своё время, но мне честно говоря обидно за Debian, когда-то он был классическим гикодистром, при прямых руках его можно было сделать компактнее даже многих минималистичных дистров вроде Slackware, при этом не надо было знать ничего сверх базовых команд Apt.

Пост автора shinji2135.

Читать комментарии на Пикабу.