Кто из "продвинутых пользователей" (а иногда - и среди некоторых сисадминов-новичков, специализирующихся на другом) не слышал о линуксе? Слышали, знают, где-то даже "игрались". Но очень многие полноценно не пользовались линуксом как основной или, как минимум, как второй ОС. И вот, когда доходит до дела, возникает вопрос, какой дистрибутив выбрать?
Те, кто ещё "не в теме", просто слышали где-то о Linux, могут спросить: "А что, их несколько? И что такое дистрибутив вообще?".
Нет, эта статья - не о том, что такое Linux, что включает в себя ядро (нежизнеспособное без программного окружения), что такое дистрибутивы. Это статья о выборе. И выбор огромен! Посмотрите на сайт distrowatch.com - сотня дистрибутивов выстроены по популярности, а можно найти и ещё. И множество статей в Дзене и много где ещё, что вот такой-то дистрибутив - отличный, самый лучший и т.п. На поверку зачастую оказывается, что, несмотря на всю красивость, там чего-то не хватает. Поэтому, ставя перед собой задачу выбрать дистрибутив (и не плеваться, что Linux не подходит - а кто-то, наоборот, как в басне "Мартышка и очки"), надо понимать в первую очередь, зачем ставится этот дистрибутив. Попробую обобщить вопросы и дать несколько советов. На всякий случай, во избежание ненужных вопросов: знаком с линуксом с 1999, второй ОС (а иногда и первой, сейчас я пишу из-под него) он где-то с 2002-2003, пытался делать много что. Но разработчиком linux и приложений под него фактически не являюсь, поскольку... Не являюсь программистом на Си-подобных языках, скажем так. Короче, дистрибутивы повидал, потестировал.
Итак, предположим, Вы ответили для себя на вопрос "зачем". В зависимости от этого ответа, выбор дистрибутивов резко сузится.
1. "Чтобы поиграться"
Выбирайте много дистрибутивов, всяких и разных. Все они хороши по-своему, знакомьтесь, пока не надоест. Единственный нюанс: по умолчанию многие дистрибутивы при установке хотят стать первой и единственной ОС на ПК, что не всем и не всегда подходит (потеря данных). В связи с этим, начинать знакомство стоит, всё-таки, в виртуальной машине (VirtualBox, VMWare). Более того, в Windows 10 встроена подсистема WSL (а теперь и WSL2, которая по сути - виртуальная машина). Но это не для новичков: лучше сначала поближе познакомиться с системой, а потом найти её интегрированной в привычную Windows. Тем более, что встроенное решение не предполагает запуска графических приложений (не говоря уж об окружении рабочего стола), для всего этого нужно ставить отдельно X-сервер.
С другой стороны, запуск Linux под виртуальной машиной - это нечто совсем другое. Не та скорость, не те возможности, нет работы с реальным оборудованием, нет полноценного графического ускорения (ну, почти). Короче, только для знакомства, ну и для специфических задач. А так потом стоит что-то поставить второй ОС.
2. "Чтобы открывалось всё, что открывается в Windows"
Желание, конечно, хорошее, но трудноосуществимое.
Да, в Linux есть эмулятор (или "не-эмулятор", а "бинарный транслятор", не суть) Windows - Wine. Он достаточно хорошо проработан и иногда, особенно при хорошей настройке, позволяет добиваться удивительных вещей. Вплоть до того, что в ряде случаев я запускал приложения Windows под Windows (!!!), запуская их в эмуляторе Linux через wine (кстати, WSL-1 такого практически не позволит, WSL-2 - пожалуйста, равно и VirtualBox), тогда как запуск напрямую не удавался. Это случалось из-за версии Windows (либо слишком новая и что-то под ней не идёт или идёт до неработоспособности криво, либо, наоборот, старая, в которой что-то важное уже не запускается, либо приложение очень древнее).
Но это - всё-таки, скорее, исключение, чем правило. В большинстве случаев Windows, всё-таки, запускает приложения под Windows лучше, чем Wine. Посмотрев на приложение, можно примерно прикинуть, получится ли его запустить или вряд ли:
1. Простые программы Win32 безо всяких .NET, графики, макросов офиса, защиты от копирования - скорее всего, будут работать под Wine как под Windows вообще без проблем и без настройки.
2. Простые игры, использующие DirectX, скорее всего, запустятся, но могут потребовать донастройки через winecfg, а то и через winetricks. Если игра более или менее распространённая, можно найти требуемые настройки в базе данных на сайте winehq.org.
3. Более или менее "продвинутые" игры - 50:50 - либо запустятся после серьёзной настройки и при выборе строго определённой версии Wine (лучше всего это сделать с помощью PlayOnLinux: даже если Вы там не найдёте нужной игры, можно создать для неё "бутылку" и настраивать вручную вплоть до выбора версии Wine), либо нет или "криво" до неиграбельности. Кстати, любимая проблема таких игр: после слёта сбивать разрешение рабочего стола, так что придётся перезапускать "иксы" (графическую подсистему в юниксах), если исправить разрешение не позволяется.
4. "Навороченные" приложения и игры, использующие взаимодействие с компонентами ОС и офиса, защиту от взлома (несмотря на наличие у Вас безусловной лицензии на запуск хоть на 10 машинах), собственный драйвер для чего-то - скорее всего, не запустятся, или запустятся, потеряв функциональность.
5. Приложения для работы с системой (Total/Double/Unreal Commander, CPU-z и т.п.) могут запуститься, но функциональность их будет ограничена эмуляцией ОС.
В любом случае, надо смотреть базу данных приложений (AppDB), настраивать - и понимать, что эмуляция - это, всё-таки, эмуляция. Что-то запустится, что-то - нет. И почти всегда, если есть нативные аналоги, использовать лучше их. Единственное, хотел бы остановиться на офисе.
В Linux (равно и в Windows) есть пакет LibreOffice. Это - очень неплохой пакет, способный открывать офисные документы - в ряде случаев, даже тогда, когда MS Office считает их безнадёжно повреждёнными. Большой потери функциональности не будет, если использовать вместо Word - LO Writer, вместо Excel - LO Calc и т.д. Но если стоит задача перейти на LibreOffice, то это должны сделать все и сразу. Будет тяжело, но это - самый безболезненный способ. Вы без проблем откроете старые документы, подкорректируете сбившееся (слегка) форматирование - и забудете о платном MS Office навсегда. Но вот если Вы вдруг решите перейти у себя дома, а Ваши коллеги на работе будут продолжать пользоваться MS Office, периодически присылая Вам крупные документы (а не заявления на одной странице), требуя от Вас лёгких правок - лучше не надо так делать. Как вариант - если Вы собираетесь с одним документом дома работать в LibreOffice, а на работе - в MS Office, так тоже нельзя. Дело в том, что каждое открытие документа в другой среде портит форматирование, на которое опирается первая. Особенно это заметно в MS Office, и в случае таблиц и формул. И каждый раз минут по 10 (на 20-30-страничный текст с таблицами и формулами) надо уделять внимание восстановлению нормального форматирования. Вывод простой: если в Linux надо работать с документами из "мира Microsoft", то там надо ставить MS Office. Это вполне возможно... Но реально - максимум MS Office 2010 (лучше через PlayOnLinux, если не рассматривать платные варианты эмуляторов), причём с активацией будут сложности. Вплоть до практической невозможности её начать (а не то что пройти).
Теперь ближе к теме: эмуляторы Wine и PlayOnLinux Вы можете найти почти в любом дистрибутиве. Короче, этот вопрос в большинстве случаев не стоит перед Вами при выборе дистрибутива.
3. "Чтобы всё работало и на слабых/старых ПК"
Если Вы задаётесь таким вопросом, надо определиться, насколько Ваш ПК слаб и/или стар. Если речь идёт о процессоре CoreDuo с гигабайтом (а то и больше!) оперативки - лучше не "заморачиваться". Любимый Вами (по другим параметрам) дистрибутив на нём запустится, потом можно будет просто заменить "тяжеловесные" приложения и среды и работать оптимально. Если же речь о куда большей древности, или же о процессоре без поддержки определённых инструкций - тут могут возникнуть сложности. В условиях критического недостатка оперативной памяти (64 Мб и меньше) живёт дистрибутив DSL (Damn Small Linux), но он очень давно не обновлялся; есть Tiny Core Linux и другие. Но это - именно для особенных машин - свои особенные системы. В промежуточной ситуации подойдёт дистрибутив на базе чего-нибудь известного, например, тот же Lubuntu.
Но разговор о запуске ПО на старых ПК - это отдельная, очень сложная тема.
4. "Чтобы было всё, что мне надо, и сразу из коробки"
Хороший вопрос. А что Вам надо? Разработчики могут подобрать набор для "среднестатистического" пользователя, но каждый человек таковым не является. И есть ещё один нюанс: патентное законодательство. В разных странах оно разное. В некоторых странах (и в России тоже) патенты на ПО не выдаются и (в теории) не работают (на практике мы знаем, как действуют США со своим законодательством), поэтому разработчикам можно "расслабиться" и включить "скомпрометированное" патентами ПО. Раньше это были отдельные кодеки MP3, механизм сглаживания шрифтов и т.п. - для универсальных дистрибутивов это было доступно только после согласия и скачивания. Сейчас, когда патент на MP3 истёк, таких проблем стало меньше. Но есть проблема немного другого плана: некоторые дистрибутивы не включают по умолчанию "несвободные компоненты". Что значит "несвободные"? Первая ассоциация - платные. Ну логично: мы же скачиваем дистрибутив, не платя. Но речь как раз не о платном ПО под линукс (его мало, но оно есть; впрочем, в дистрибутивах его нет, разве что "обёртки"), а о ПО с закрытым исходным кодом. Его можно копировать, использовать бесплатно - а вот декомпилировать - нельзя. И менять - тоже. Это драйверы видеокарт (прежде всего, NVidia, для AMD/ATI тоже есть коммерческий драйвер, но с ним столько хлопот, что лучше обойтись свободным, тем более, что по производительности он не сильно хуже). В некоторых дистрибутивах со "свободностью" просто перебор (намёк на Debian ясен?), поэтому там надо приложить усилия, чтобы получить доступ к удобному ПО, часть кода которого недостаточно свободна. Особенно это касается, опять же, драйверов.
Но в большинстве случаев вопрос "из коробки" не является критичным. Мы же - продвинутые пользователи (как минимум), если решились ставить Linux, докачать что-то из интернета - не проблема. А "непродвинутым" самостоятельно делать это не стоит априори.
5. "Чтобы все настройки можно было сделать не из командной строки, как в Windows"
Ну, во-первых, если Вы хотите работать с линкусом всерьёз и надолго, то "командную строку", а, точнее, основные команды Unix shell, надо учить. Во-вторых, в Windows тоже очень многое можно сделать через командную строку, а уж через PowerShell - и подавно.
Но если так надо... В общем, графические интерфейсы не очень-то рассчитаны на настройку системы Linux. Вот графического окружения - это да, зачастую (но не везде и не всегда) оно настраивается через "центр управления". Отдельные дистрибутивы движутся в этом направлении дальше (например, основанные на Mandriva: OpenMandriva, ROSA и отмежевавшаяся от них Magea). Кое-какие попытки настроек есть и в Ubuntu. Кое-чего можно добиться, установив отдельные утилиты. Но нужно понимать, что это всё - попытка решить самые распространённые, "штатные" задачи. В нештатной ситуации поможет только shell и прямая правка конфигурационных файлов. Такие вот правила в мире Unix-ов. Другое дело, что нештатных ситуаций может и не быть, а раз установленная система может работать годами (периодически только следует подчищать домашний каталог).
6. "Чтобы обновления поменьше донимали меня, но 'дыры' закрывались"
Тогда выберите Debian Stable, а ещё лучше - oldstable. Функционал обновляться не будет, "ломаться" - практически тоже, но обновления безопасности приходят, ставятся легко... Относительно легко. Как вариант, можно выбрать Ubuntu LTS, желательно хотя бы через полгода после выхода.
7. "Чтобы всё было новым и актуальным, я не хочу переставлять систему каждый год"
Противоположный вариант. Яркий пример - Arch Linux (и основанный на нём Manjaro, но он обновляется чуть медленнее). Здесь может возникнуть серьёзная проблема: в погоне за самыми новыми версиями, разработчики не успевают тестировать всё ПО на взаимную совместимость. В итоге, регулярно что-то ломается (особенно если Ваши интересы в чём-то отличаются от интересов большинства). С этим как-то мирятся, как-то - борются. Короче, жить на "переднем крае" - та ещё морока. Но для кого-то она стоит того (лично я сейчас как раз в Arch'е, хотя периодически и подумываю уйти туда, где постабильнее).
8. "Чтобы весь софт, существующий под линукс, был бы доступен в данном дистрибутиве"
Самый важный вопрос. К сожалению, не все linux-новички готовы его задать. И не все готовы понять его важность.
Дело в том, что, в отличие от Windows, где все программы устанавливаются так, как считают нужным (указывая только ссылку на деинсталлятор), в мире дистрибутивов Linux есть определённое правило, по которому все приложения реализуются в виде пакетов (чем-то похоже на андроид, но, скорее, тот взял этот принцип от дистрибутивов).
Тем не менее, большинство разработчиков разрабатывает софт самостоятельно, не задумываясь о пакетах (а как они задумаются, если дистрибутивов масса!). В итоге, задача разработчиков дистрибутива (как основных, так и т.н. сообщества) - помещать практически весь сколь бы то ни было значимый софт для Linux в пакеты, разрешая все зависимости одного ПО от другого и учитывая особенности дистрибутива (что где должно лежать). А потом - поддерживать актуальность всего. Непростая задача, чувствуете?
Нет, каждый может наплевать на систему пакетов и установить софт напрямую, скомпилировав из исходников (а то и установив какой-то бинарник). Но это считается некорректным путём. Почему? Потому что в файловой системе появляются файлы, не учтённые менеджером пакетов (помимо домашнего каталога пользователя, вот там можно держать сколько угодно неучитываемых приложений). Хотя, если уж очень хотите - можно установить это редкое приложение в каталог /opt, а ссылки сделать в /usr/local/bin, а не /usr/bin (большинство дистрибутивов linux, в отличие от FreeBSD, не пишут в /usr/local почти ничего, хотя оставляют возможность для этого). Более грамотным вариантом будет сделать пакет-обёртку самому, но не все и не всегда с этим справятся.
В любом случае, лучше, чтобы такие пакеты уже где-то были. А ещё лучше - чтобы они были не "где-то как-то" (что сплошь и рядом встречается в Windows, приводя к скачиванию вредоносного ПО вместе, а то и вместо нужного приложения), а в т.н. репозитории, т.е., уже прошли хотя бы первичную проверку сообщества, что это именно то, как называется, ну и будет работать под этим дистрибутивом.
Прежде чем говорить о выборе дистрибутива, надо решить вопрос с системами пакетов. На самом деле, дистрибутивов множество, но семейств пакетов - куда меньше.
1. Семейство RPM
1.1 RedHat+Fedora
Изначально была серия систем RedHat Linux. Все пакеты в ней базировались на менеджере rpm (сейчас yum, но суть та же). Раньше - де-факто - стандарт Linux (не бесспорный, но, пожалуй, да). Потом этот дистрибутив расщепился на серверную часть (RedHat Enterprise Linux и его сторонний "клон" - CentOS) и систему для ПК (Fedora Core). Вторая часть серьёзно потеряла популярность.
1.2. Mandriva и потомки
Во времена RedHat Linux на его пакетном менеджере базировалась система Mandrake. Весьма неплохая система на то время. Да, формат пакетов тот же, но совместимость с RedHat была неполной. Тем не менее, стороннее ПО в виде RPM зачастую ставилось. Потом объединились Mandrake и Сonnectiva, получилась Mandriva - какое-то время этот дистрибутив просуществовал так, потом произошли серьёзные изменения. Впрочем, об этом можете почитать сами. Популярность ОС оставляет желать лучшего, хотя репозитории отнюдь не самые маленькие.
2. Семейство DEB
2.1. Debian Linux
Относительно распространённая серия дистрибутивов, отличающаяся жёстким разделением свободного и несвободного (multiverse) ПО, а также тем, что работа ведётся над четырьмя ветками:
- Unstable aka Sid - туда попадают самые новые пакеты. На самом деле, не такие они уж и новые и нестабильные, как встречаются в других дистрибутивах, но 100 % стабильности и совместимости никто не гарантирует.
- Testing - пакеты из unstable в какой-то момент берутся для глубокого тестирования совместимости, стабильности и безопасности. Предполагается, что через год-другой (иногда - третий) из этих пакетов выйдет следующая версия дистрибутива.
- Stable - по окончании тестирования ветка testing замораживается, а потом превращается в stable. Ветка поддерживается, исправления безопасности вносятся.
- Oldstable - то, во что превращается ветка stable после того, как ветка testing стала stable. Да, это происходит нечасто. Эта ветка всё ещё поддерживается, на неё приходят обновления безопасности.
- Неподдерживаемые ветки.
2.2. Ubuntu
На базе пакетов дебиана, но с некоторым перебором под общим руководством первого космического туриста Шаттлворта разработана и разрабатывается серия систем Ubuntu (Ubuntu - cейчас с DE Gnome3, Kubuntu - с KDE, Xubuntu - c XFCE и т.д.). Разумеется, все эти системы имеют единый репозиторий пакетов, поэтому совместимы друг с другом, разница - с какого окружения рабочего стола начинать работать. Совместимость с пакетами Debian - частичная, с веткой Unstable. И, кстати, репозитории Ubuntu как бы не шире Debian, обо всяких мандривах я не говорю. Есть сторонние репозитории; также можно ставить отдельные сторонние пакеты без репозиториев (но это как и во всём вышеперечисленном).
2.3. Linux Mint
На базе репозиториев Ubuntu (LMDE - Debian) с добавлением особого оформления и настройки разработали довольно красивую систему. Фактически, она имеет свой маленький репозиторий, а за всем, чего в нём не находится, обращается к Ubuntu или Debian. Выбор между Linux Mint и Ubuntu - дело вкуса. Да, кстати, они разработали и разрабатывают окружение рабочего стола Cinnamon - на кодовой базе Gnome 3 c классическим интерфейсом, похожим на Windows 7. Спасибо им за это. Сейчас Cinnamon можно поставить и в другие ОС. Из недостатков - базируются на достаточно старом коде (Ubuntu LTS). Но для кого-то это - достоинство.
3. Slackware
К своему стыду, скажу, что эта система прошла "мимо меня". У них специфические пакеты (обычные tar.gz), в своё время система имела много приверженцев. Сейчас практически умерла.
4. Arch Linux
Система пакетов тоже чем-то похожа на slackware, обычные архивы в виде .tar.xz, включают в себя дерево каталогов (по отношению к /), а также информационные файлы. Особенность я уже говорил: пакеты очень быстро обновляются. В связи с этим, база пакетов не такая уж и большая, как, скажем, у Ubuntu, но у Arch Linux есть AUR. Он включает в себя набор PKGBUILD'ов от самого разного ПО. По одному этому файлу (+иногда небольшие патчи) можно одной командой собрать (т.е., скачать, настроить, откомпилировать и запаковать в пакет) пакет. В основном, в AUR находятся ссылки на исходные коды, т.е., сборка займёт определённое время, но для "тяжёлых" и распространённых пакетов есть бинарные варианты. Равно и для приложений с закрытым кодом. Зачастую такие приложения есть только в виде rpm и deb, но это не проблема, поскольку deb-файл распаковывается и переделывается в tar.xz. Официально с AUR надо работать вручную (искать, качать пакеты, распаковывать и давать команду makepkg, а потом устанавливать командой pacman -U), но на практике есть средства автоматизации, которые запрещены в основном репозитории...
Другой особенностью ArchLinux является его ориентированность на очень продвинутого пользователя. Графические средства установки и настройки отсутствуют. Установка идёт серией команд в командной строке (зато если Вы затрёте основную систему - будете виноваты только сами, никаких умолчаний нет, сами запускаете fdisk и mkfs). По объёму репозиториев+AUR будет получше Ubuntu, по стабильности - похуже. На выходе после инструкции по установке получаем "голую" командную строку без какой-то оболочки рабочего стола, да и без "иксов" вовсе. Ставьте любую, настраивайте видео - но всё из консоли.
4.1. Manjaro linux
Основан на пакетной системе Arch, но пакеты пересобираются и обновляются отдельно, как правило, чуть позже (но это не мешает возникновению несовместимостей). Также имеется графический установщик, то есть, подходит для менее "продвинутого" пользователя. На выходе получаете рабочий стол с выбранной оболочкой. Да, AUR поддерживается, причём сразу "из коробки". Только надо его включить.
5. Gentoo
Чем-то похож на AUR от ArchLinux, но если AUR - это дополнение к основному репозиторию, то в Gentoo дерево ebuild-ов - это и есть репозиторий. То есть, всё надо собирать из исходников. И "любимая" команда "гентушников" - emerge world, если что не так. Пересобери всё из исходного кода. Сколько часов это займёт - сложный вопрос, когда как. Бонус - максимальная оптимизация полученных пакетов под данную систему (если правильно указать настройки сборки). Стоит ли она часов пересборки - вопрос второй.
6. Остальные.
Те, кто не базируется на перечисленных выше вариантах (а есть и базирующиеся, их куда как больше - надо смотреть по базовому варианту, в большинстве случаев изменения - "украшательства" + добавление пары десятков своих пакетов), могут давать очень интересные сборки - но их главный недостаток - этой сборкой + небольшим набором софта они и ограничены. Вот, рекламируют Clear Linux - всем хороша, быстро загружается, отдельные приложения ставятся в отдельное пространство... А как посмотришь набор этих приложений - так становится грустно. Самых простых запросов нет. Хорошо, что rpm встроен... То есть, их место - самодостаточные специальные сборки для конкретной цели.
Итог прост: выбирайте сами. Если только пытаетесь что-то сделать - ограничивайтесь дистрибутивом на основе Ubuntu/Mint, если хотите настроить под себя - выбирайте Debian, Ubuntu или Arch - и настраивайте...