Настоящим постом мне хотелось бы уведомить вас о том, что неделю назад я снес FreeBSD со своего ноутбука Asus X51L, тем самым окончательно избавившись от этой ОС в своей жизни. Теперь я счастливый убунтовод и пользователь Android. Под катом перечислены причины, которые вынудили меня отказаться от FreeBSD.
Дополнение: С момента публикации этой заметки мир стал намного лучше. В частности, производители ноутбуков стали пихать в свои продукты меньше проприетарного говна, веб стал более открытым и безо всяких этих Flash, у проприетарных Skype и Dropbox появились достойные открытые аналоги — Mumble и Syncthing , систему пакетов FreeBSD существенно улучшили, и ОС больше не тормозит после аварийного рестарта из-за прогона fsck в фоне. Более того, я осознал свою ошибку касательно Perl, и скрипты теперь пишу на Python , а также подучил английский язык . Некоторые подробности обо всем этом вы найдете в заметке Использование FreeBSD на десктопе, версия 2.0 .
Начнем с поддержки железа. Моя попытка установить PC-BSD на Asus Eee PC 1215P не увенчались успехом , а Ubuntu встала безо всяких танцев с бубнами и подцепила все железо. Аналогичная история с Portege Z930-DKS , за тем исключением, что на него я уже и не пытался поставить FreeBSD. В итоге был получен зоопарк из операционных систем, что в силу понятных причин очень грустно.
К сожалению, аргумент «нужно выбирать железо под софт, а не наоборот» слабо утешает. На практике мало кто обладает временем или желанием выяснять, какое железо поддерживается ОС, а какое не поддерживается. Мне только что доставили ультрабук и я должен настроить его до конца обеденного перерыва. Мне все равно, Linux там будет или FreeBSD. Я просто хочу, чтобы через пол часа все, ну или почти все, работало. Кроме того, иногда железо выбирают за нас. Сервера заказывали не вы, а ваш коллега, компьютер был подарен друзьями и тп.
Размер сообщества. Скажем, мы выбираем ноутбук. Идем на Хабр и создаем в разделе QA вопрос в стиле «а у кого есть ноутбук примерно с такими характеристиками и чтобы на нем работала Ubuntu?». Скоро мы получим названия несколько моделей. Остается только пробить по Яндекс.Маркету, какие из них сейчас можно купить. Или, вместо того, чтобы идти на Хабр, можно просто посмотреть, на чем работают коллеги. Как вы понимаете, все это не прокатит в случае с FreeBSD. Другой пример. Допустим, вы решили нанять нового админа. В каком случае будет проще найти кандидата с нужным опытом — когда на ваших серверах используется Linux или когда используется FreeBSD?
Софт. Ок, мы можем поплясать с бубном и установить LibreOffice, Skype и Flash . Если мы достаточно умны, то даже не станем танцевать с бубнами, а просто воспользуемся PC-BSD . Но как быть, например, с Dropbox? Или свежими версиями компиляторов всяких там Go или D? Или играми? Да и тот же Flash под FreeBSD настолько глючен, что мне пришлось изобретать свои костыли для просмотра видео на YouTube и прослушивания музыки во Вконтакте . К сожалению, на все случаи жизни такими костылями не запасешься. Взять хотя бы панорамы на Яндекс.Картах.
Кстати, о костылях. Писал я их на Perl и с ним во FreeBSD тоже все плохо. По умолчанию в этой системе Perl идет без поддержки нитей, а поддержка эта часто бывает нужна. Поэтому приходится собирать Perl из портов. Но это еще полбеды. Допустим, мы поставили Perl 5.16. А затем решили установить некий пакет, который зависит от Perl. И что вы думаете? Он счастливо потянет за собой Perl 5.12 без поддержки нитей и поставит его вместо вашего Perl 5.16. Поддержки нитей нет, все установленные CPAN-модули отвалились. Проблему может решить perlbrew , но он не шибко удобен. И вообще, получается, это уже будет костыль, необходимый для работы костылей?
Система портов и пакетов . Она ни на что не годится. Нет, в целом все ОК, но только до тех пор, пока вы просто устанавливаете программы, вам не нужны самые свежие их версии и вы никогда не собираетесь их обновлять. Но на практике однажды вы решите обновиться. Допустим, вы даже оказались достаточно умны, чтобы следить за обновлениями файла /usr/ports/UPDATING (неслыханное дело для убунтоводов!) и пользоваться portmaster. Однако во время обновления выясняется, например, что один из портов был помечен устаревшим. Что делать? Можно, конечно, попробовать его удалить вместе со всеми пакетами, которые от него зависят, обновится, а затем вновь поставить требуемые пакеты. Допустим, вы даже осилили первую часть этой процедуры, но во время обновления был обнаружен еще один устаревший пакет. Fffuuu!
А ведь еще попадаются порты, которые не удается собрать, и никто в официальной рассылке не может объяснить, почему так, а также напрочь устаревшие пакеты (часто так бывает с компиляторами), и пакеты, которые вроде работают, но проявляют ужасные глюки. Из последних вспоминается qBitTorrent, который ничего не скачивал, Opera, которая портила текст постов при их редактировании в WordPress, Chromium, который падал, если на ночь оставить вкладку с Twitter открытой, mplayer, который вешал систему при просмотре криво сжатого фильма, а также оконный менеджер i3 , который рисовал какой-то мусор по границе окон.
Часто нужного софта нет в пакетах, в результате чего приходится собирать его из портов, что в случае с каким-нибудь OpenOffice или xelatex занимает очень много времени и может даже оказаться невозможным, если у вас, скажем, недостаточно оперативной памяти. Кстати, чтобы xelatex появился в портах, тоже нужно потанцевать с бубном . А иногда нужного софта нет даже в портах, в результате чего приходится собирать его и часть его зависимостей из исходников. В линуксах все намного, намного проще .
Плюс всякие мелкие косяки. После аварийного рестарта во FreeBSD запускается проверка файловой системы, из-за которой операционка долго и сильно тормозит. Часто приходится вручную прописывать в .bashrc export LANG = "ru_RU.UTF-8"
, хотя, казалось бы, 21-ый век на дворе. Плохие шрифты. Во всяком случае, во FreeBSD мне не удалось настроить Chromium так, чтобы в редакторе постов WordPress использовались нормальные шрифты, а в Ubuntu они нормальные «из коробки». Также, например, bash в Ubuntu умеет дополнять команды git’а, а во FreeBSD не умеет, нужно донастраивать.
В Ubuntu, конечно, тоже есть косяки. Не всякое железо подцепляется, а то, что подцепляется, не всегда работает хорошо. Да и с пакетами иногда возникают проблемы. Но косяков этих намного, намного меньше, чем во FreeBSD. А из двух зол, как известно, выбирают меньшее.
P.S. И нет, я все еще не горю желанием пробовать Мак 🙂