101

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.

GNU/Linux

1.2K постов15.6K подписчиков

Правила сообщества

Все дистрибутивы хороши.

Будьте людьми.

Вы смотрите срез комментариев. Показать все
53
Автор поста оценил этот комментарий

Я, возможно, кому-то открою секрет, но в Open Source проектах можно не только говорить на весь интернет, какие разработчики лица нетрадиционной ориентации, но и самому влиять на их развитие. Если можете переписать python-скрипт на что-то иное - перепишите и отправьте ментору, чтобы избавиться от лишней зависимости. Я полагаю, что он был написан на том, на чём умели, и хорошо, что он вообще есть. Многие при выпуске новой версии ломают формат конфигурации и переноси из старых конфигов как хочешь.

apt-cache depends mplayer | grep python
Depends: python3

Только что у себя проверил - не требует. Возможно у вас какой-то репозиторий дополнительно подключён, у которого такие зависимости кривые. Пруф https://packages.debian.org/bookworm/mplayer

apt-cache depends mpd | grep smb
Depends: libsmbclient-dev

Здесь вообще что-то странное. -dev пакеты - это заголовочные файлы и дополнительные файлы для разработки. У обычных программ не должно быть зависимостей от -dev пакетов, если эти программы не связаны с разработкой. Опять же, в стандартном репозитории требуется только сама библиотека, а не файлы для разработки, которая с собой всю samba не тянет. Пруф https://packages.debian.org/bookworm/mpd

Итого: один реальный пример, который вместо того, чтобы обсасывать, можно было бы на личном примере помочь исправить (и потом запилить отличный пост, как Вы можете собственными руками делать Open Source проекты лучше), и два надуманных или получившихся по причине кривых рук.

ещё комментарии
ещё комментарии
Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества