“Чистый” Linux: ещё один великолепный миф?

Алексей Федорчук

2009-08-05

Тема настоящей заметки сформировалась в ходе моего общения с Fedora и обсуждения этого дистрибутива на POSIX.ru.

Как известно, установка "абсолютно чистой", то есть полностью лишённой неиспользуемых компонентов, системы — вековая мечта линуксоидов всех стран и народов, столь же трепетная, как и сборка системы, идеально оптимизированной под "железо". Кстати, оба этих стремления тесно связаны друг с другом. В устремлённости к светлому будущему их можно сравнить только с идеей построения коммунизма в мировом масштабе.

Сопоставимы они с коммунистической идеей и степенью недостижимости. А в настоящей заметке я попробую показать, что построение "чистой" системы не только практически невозможно, но и имеет не много смысла.

Возьмём типовой пример построения собственной системы — установку с диска Debian netinstall, или Ubuntu в режиме CLI only (то есть без Иксов и каких бы то ни было сред), или Fedora в текстовом режиме, или Archlinux с установкой по FTP, или с диска Zenwalk Core... да примеры таких "полуфабрикатных" дистрибутивов можно умножать без счёта. Казалось бы, получив в свое распоряжение Base Linux, более или менее свободный от "избыточных" компонентов, мы имеем полную возможность доустанавливать только нужные пакеты, особенно имея дело с Deb based системами, допускающими очень дробное деление авторских пакетов.

Теоретически да. Но теоретически она лошадь, как говорил дед Щукарь, а практически она падает. Так и тут: у нас есть полная возможность установить Иксы в минимально необходимом объёме, то есть без лишних видеодрайверов или драйверов устройств ввода. В наших силах поставить любой нужный менеджер окон или базовые компоненты интегрированный среды без излишеств вроде kdeeducation или kdetoys. И, казалось бы, обрести чистоту и счастье.

Но не тут-то было. Как только мы начинаем ставить пользовательские приложения типа офисных пакетов и графических редакторов, как с удивлением обнаруживаем, что в систему тихой сапой проникли и cups, и samba, и sane — и это даже при физическом отсутствии принтеров, сканеров, разделяемых Windows-ресурсов. Проникли просто как зависимости — потому что майнтайнеры пакетов считают, что Openoffice.org не сможет выполнять свою работу без возможности печатать, GIMP — без возможности сканировать, и так далее. Я уж не говорю об изобилии локализаций — почему-то считается, что пользователь интегрированной графической среды должен, в порядке крепления международной солидарности, обязательно использовать тамильский или зулусский язык.

В некоторых случаях (например, с Fedora) от лишних локализаций удаётся избавиться только путём утраты некоторой функциональности — если и не жизненно необходимой, то весьма желательной (например, потери шрифтов Dejavu). В других случаях, как с Debian или Arch, от всего балласта избавиться таки можно — но тут платой будут затраты времени, абсолютно несоизмеримые с выигрышем дискового пространства. И в итоге возникает вопрос: а стоит ли заниматься этим вообще? Тем более, что нет никаких гарантий от восстания из пепла удалённых компонентов после первого же существенного обновления системы.

Предвижу возражение: всё сказанное относилось к пакетным дистрибутивам. Но ведь есть ещё и дистрибутивы Source Based, где пользователь может скомпилировать только то, что ему действительно нужно, посредством опций конфигурирования избавившись от всех ненужных зависимостей. Как давний пользователь FreeBSD и один из первых дженедужников Советского Союза могу ответить на это только ржунимагуем испацтуло. Потому как это и есть величайшая из иллюзий соурсбейзников.

Потому что мало того, что сборка системы и приложений из исходников требует наличия полного комплекта стандартного сборочного инструментария в виде gcc, binutils etc., которые пользователю в обыденной жизни, далёкой от разработки и майнтайнинга, могут быть без надобности. Нет, установка какой-либо безобидной утилиты может потребовать и инструментария абсолютно нестандартного, более никогда не понадобящегося.

Так какая, простите, разница — несёт ли наша система в качестве балласта cups и sane или кучу средств разработки? Тем более, что вполне можно представить ситуацию, когда функции печати или сканирования вдруг действительно понадобятся. А вот представить себе, что пользователь ощутит необходимость в использовании языка Ada самого по себе — я не могу даже теоретически. Не говоря уже о двух или трёх параллельных версиях autoconf и automake, необходимых при сборке Gentoo со stage1.

Конечно, и от всего сборочного инвентаря можно избавиться по завершении установки Source Based системы. Однако он неизбежно потребуется при первом же её обновлении — а ведь лёгкость поддержания системы в актуальном состоянии есть вторая главная иллюзия дженедужнегов иже с ними.

Что же до избавления от лишних зависимостей при компиляции — начал мучительно вспоминать, а какие из зависимостей "мягких" мне действительно мешали по жизни? "Падежей припомнил только два" — сборка links и mc с поддержкой gpm при запуске в чистой консоли. Да, действительно, мешала: так и не привык нажимать Shift для использования в них мыши по её прямому Юниксовому назначению — как устройства ввода, а не указателя-позиционерщика.

Правда, тут же начал припоминать: а когда я последний раз запускал хоть одну из этих программ в чистой консоли, помимо терминального окна? Не припомнил... В Иксовых же терминалах поддержка gpm для программ такого рода отнюдь не лишняя.

Подведу итог: достижение "чистоты" системы, служащей пользовательским десктопом, возможно путём:

  • жёсткого ограничения функциональности,
  • отказа от всех "мягких" зависимостей,
  • возможно, даже статической линковки, и, как следствие,
  • практически отказа от обновления системы штатными средствами данного дистрибутива.
После чего система перестаёт быть пользовательским десктопом в расхожем понимании этого термина. Превращаясь во что? Правильно, в элегантные шорты. То есть — тот самый пресловутый узкофункциональный АРМ, о необходимости которого время от времени напоминают непринадлеженцы к любым информационно-политическим партиям. Но это совсем другая история.

А завершая историю нынешнюю, вернусь к первому абзацу заметки и процитирую Михаила Рудаченко aka Ali. О том, что привычка бороться с излишними зависимостями на пользовательском десктопе —

... вредная. Ну зачем с ними бороться? Диск нынче дёшев, а емкость растет быстрее размера пакетов.

И в этом аспекте кардинальный недостаток пакетов rpm-формата — отсутствие вариативных зависимостей — превращается где-то в достоинство. Избавляя от мозго... полоскания в тех случаях, когда таковое явно излишне. Но оставляя достаточно простора для творческого индивидуализма при необходимости. Что надеюсь проиллюстрировать в ближайшее время.