I’ve got 999 999 problems
На выходных подвернулась шабашка: поставить линукс на машину одного знакомого. Выбор дистрибутива оставили за мной.
Первый попробованный дистрибутив встал без проблем, но отказался обновляться, так как разработчики забили на проект года четыре назад, актуальных зеркал не осталось, а в репозитории схожих дистрибутивов пакеты поименованы не должным образом, из-за чего большинство зависимостей не может быть удовлетворено.
Ставлю следующий дистрибутив. Его особенность в том, что при установке необходимо подключение к инету, иначе пакетный менеджер откажется обновлять систему, так как не будет знать, что у него установлено, а что нет. Никакие -db-upgrade и -force при этом не помогают. Установка нормально доходит до загрузчика, после начинаются чудеса: скрипт инсталляции считает, что файлы GRUB уже скопированы, но их нет. Пляски с бубном продолжаются до глубокой ночи, затем всё следующее утро. В процессе выясняется: если выставить более высокий приоритет для локальной копии дистрибутива, то загрузчик ставится без проблем, но при этом возвращается проблема с обновлениями. В поисках решения проблемы очень долго лазил по вики-страницам, пока очередная ссылка не закинула на страницу новостей основного сайта сообщества. Последняя новость гласила о том? что буквально день назад GRUB Legacy был удалён из основных репозиториев. Проблема была решена установкой другого загрузчика.
Пару месяцев назад с этим же дистрибутивом был ещё один эпик-фейл: попытка установки на машину с аппаратным RAID (легендарным Mylex 960, способным рулить 32 SCSI-устройствами). Инсталляционный скрипт наотрез отказывался признавать существование на машине жёстких дисков, хотя вручную все разделы нормально монтировались. После долгого изучения release notes нашёл уведомление о том, что все жёсткие диски теперь рассматриваются исключительно как /dev/sd**, соответственно, в сторону /dev/rd/c0d0 никто и не смотрел.
Очередная машинка, другой слакоподобный дистрибутив. Всё поставлено, вроде как работает. В последний момент замечаю, что часы идут как-то не так. Вернее, когда система загружена, время тикает, когда же выключена, время не считается. Не сбрасывается к дате выпуска BIOS материнки, а именно продолжает считаться с того момента, когда машина была выключена. Очередное копание в мануалах даёт понимание о том, что в линуксе hardware clock и system clock — это вещи абсолютно самостоятельные и общаются между собой исключительно из-под палки, роль которой играет один из скриптов rc.d. Только вот почему его выполнение оказалось не прописано в rc.conf?
И это только маленькая часть тех фич, косяков и причуд, которые я смог вспомнить за последние полгода. Линуксоиды могут сколько угодно рассказывать о прелестях своих открытых чудо-систем, но, по-моему, ни один из бесплатных дистрибутивов даже и близко не приблизился к тому уровню безглючности, который когда-то обеспечивали AIX, IRIX и другие закрытые системы.
Основная проблема современных дистрибутивов в том, что декларируется возможность решить задачу миллионом способов, но по факту всё будет работать, если действовать исключительно так, как разработчик конкретной версии системы написал в мануале. О том, что все остальные 999 999 способов (некоторые из которых являются единственно верными для других версий системы) не работают, как правило, не говорится нигде.