Вместо введения

В феврале 2021 года, я купил себе новый ноутбук. Ну и как это обычно бывает, разумеется я решил поставить на него основной ОС Linux. Почему не Windows? Потому что. Узкоспециализированным софтом по типу фотошопа не пользуюсь, минимум что мне нужно от системы - скорость и наличие в ней IDE и браузера с эксплорером, ну и чтобы от батареи долго работало. Если винда и подходит по первым пунктам, то вот с последним беда. Поэтому я приступил к поиску дистрибутива.

Выбирал долго. Искал такой дистр, чтобы его поставить, настроить и забыть. Спустя 2 дня усердного гуглинга, выбор пал на Arch, все пакеты, нужные мне там были, единственно смущала systemd, но я на тот момент из альтернатив знал только Gentoo, поэтому просто смирился, да и работа не ждет, пора ставить систему.

Вечером я просто пролистывал ленту и случайно наткнулся на neofetch Void`a. Тогда я вообще не знал об этом дистре, а неофетч понравился, картинка красивая, зеленая. Загуглил (лучше бы я этого не делал).

Почему Void

Читая описание я прям воодушевился! Просто не верил своим глазам: разработан с нуля, с супер-быстрым пакетным менеджером xbps (тоже с нуля), система инициализации runit, rolling release - одним словом супер. Прям то, что доктор прописал, все для меня подходит, подумал я перешел на вкладку Downloads. Arch уже был благополучно забыт...

Но вот незадача, что выбрать, неизвестную (мне тогда) musl libc или старую добрую glibc. Я смутился и опять полез в вики, благо там была отдельная ссылка про эту библиотеку.

musl is lightweight, fast, simple, free, and strives to be correct in the sense of standards-conformance and safety.

Прочитал я, и забыв обо всем скачал base версию дистрибутива на musl, заодно прихватив с собой lxde версию, чисто по приколу с лайв режима пощупать.

Первые "звоночки"

Запустившись с лайв режима в lxde я увидел это:

No session for pid 991
No session for pid 991

Не знаю честно говоря, что это был за баг и баг ли это был вообще, но это меня даже не насторожило. Дальше все было нормально, загрузил терминал, потыкал xbps, понял что немного неудобно для операции поиска вводить xbps-query, а для установки xbps-install. В последствии уже привыкаешь, чуть ли не на автоматизме этой утилитой пользуешься.

Накатил базовую систему, сделал памятное фото tty и начал настраивать линукс.

Красивый логотип и 128 пакетов
Красивый логотип и 128 пакетов

В качестве оконного менеджера выбрал i3wm, ведь тайлинг, да еще и на ноутбуке - удобно! Плюс, что он много есть не просит и после всех настроек, из 8 гигов оперативки, система, с запущенным firefox'ом (25 вкладок) съедает всего 2.7 гигабайта. По итогу получилось вот так:

Этот скрин сделан на момент печати статьи
Этот скрин сделан на момент печати статьи

А теперь те самые звоночки. Захотел запустить Visual Studio Code (он у меня уже был установлен, и при установке ошибок не было), до необходимости его не открывал, а расширения решил потом поставить. Но надо бы доделать проект, я открываю rofi, нахожу там code-oss, запускаю и...ничего. Думал, что надо чуть-чуть подождать..подождал минуту, две...десять минут. Посмотрел логи, а там странная ошибка: Warning: 'app' is not in the list of known options, but still passed to Electron/Chromium. Пошел гуглить, вроде ничего страшного, это даже не особо, то и ошибка, он должен загрузиться. Но я проверил, он даже на милисекунду не открывался. Тогда то я и решил воспользоваться xbps-src. Этот скрипт позволяет, как я понял, собрать пакет из исходников для моей системы. Собирал долго, в конце концов получив тонну непонятных ошибок. А время идет, пришлось поискать альтернативу вскоду, потому что, как позже выяснилось, он не может быть собран для musl. Atom к слову вообще отсутствовал в репозитории. Из 10 предложенных альтернатив, загрузился только codelite, но это уже совсем не то..

И такая история - это капля в море ошибок несовместимости, как следствие, я чувствовал себя словно в клетке. Захотел Google Chrome? Он не может быть собран для musl, пользуйся Chromium'ом, без гугл-аккаунта. Как альтернатива - firefox. Захотел Github-Desktop? Он не работает. Что делать? Бежать искать альтернативу. Раз за разом наблюдая пустой вывод команды xbps-query -Rs <название-искомого-пакета>, надеясь, что следующие поиски дадут хоть какой-нибудь результат...

В таком адском режиме я провел 5 месяцев, при неудаче успокаивая себя тем, что сама система работает быстро и безотказно (как с glibc), а значит можно жить... Не работает пакет? Переустанови и перезагрузи компьютер. Опять не работает? Ищем недостающие библиотеки в гугле или ищем инфу по ошибке на мертвом реддите воида, потому что больше негде. К слову информации по дистрибутиву в интернете очень мало, и если я и фиксил проблему быстро, то это не более чем простое везение. За это время я перекопал горы конфигов и библиотек, даже пытался собирать ПО из исходников (естественно безуспешно, потому что не хватало glibc).

В какой-то момент я поставил gcompat, но он не работал должным образом. Сайт альтернатив, постоянно занимал первую вкладку браузера. Естественно после установки-удаления пакетов скапливалось очень много хлама, хорошо, что есть xbps-query -O (показывает "осиротевшие пакеты", которые ставятся, как зависимости, а потом просто занимают место на диске)... Очень редко когда установленный софт начинал работать корректно и сразу... По итогу я стал будто параноиком, первое, что приходит в голову, при какой либо ошибке: "musl!"

Заключение

Прямо сейчас я делаю загрузочную флешку с дистрибутивом Void linux на базе glibc. На виртуальной машине, все программы, в которых я столь долго себе отказывал, заработали должным образом. Борьба окончена. Все необходимые файлы, конфиги и проекты сохранены на внешнем жестком диске. Так же ждет своей очереди скрипт, который был написан с целью вернуть компьютер в "исходное" состояние, как будто я не удалял систему... Void Linux - прекрасный дистрибутив, он и правда быстр и легок, а xbps - это самый быстрый пакетный менеджер из всех, которые я когда либо встречал (и если привыкнуть к его особенностям, то и самый удобный). Но musl... Уж лучше подождать несколько наносекунд или понаблюдать за warning'aми в консоли, чем бороться с несовместимостями и отказывать себе снова и снова в любимом софте. Если надумали поставить Void Linux, не трогайте musl.

P.S. К слову, я вообще первый раз такие статьи пишу. Надеюсь, что кому-нибудь это поможет не допустить той ошибки, которую допустил в свое время я.

Комментарии (23)


  1. FFiX
    21.08.2021 08:14
    +6

    musl далеко не во всём быстрее glibc, много где он наоборот намного медленнее. Но последний заметно толще, поэтому musl очень распространён во всяком embedded, в контейнерах (популярный Alpine основан на нём), да и статические сборки часто делают именно на его базе.

    Вот пример (несколько устаревшего, но свежего сходу не нашёл) сравнения нескольких реализаций стандартных библиотек: https://www.etalabs.net/compare_libcs.html


  1. lrrr11
    21.08.2021 09:49
    +12

    а все очень просто. Glibc добавляет свои расширения, которых нет в стандарте POSIX, которому следует musl. Вот из-за использования этих расширений софт и не компилируется.

    Что характерно, в большинстве случаев они в общем-то не нужны, и добавлены просто потому что у разработчика, использовавшего дистр с glibc, и так скомпилировалось. Такие дела.

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


  1. Loggus66
    21.08.2021 10:42
    +10

    Искал такой дистр, чтобы его поставить, настроить и забыть

    выбор пал на Arch

    неофетч понравился, картинка красивая, зеленая

    Жжош. Придумал себе проблем на пустом месте из-за картинки neofetch и описания идеала libc.


  1. hogstaberg
    21.08.2021 10:49
    +3

    А какой такой сакральный смысл в самом быстром

    (и если привыкнуть к его особенностям, то и самом удобном)
    пакетном менеджере, когда даже чуть менее быстрые конкуренты бОльшую часть времени на скачивание пакетов тратят, а не распаковку и установку?


  1. anonymous
    00.00.0000 00:00


  1. Chupakabra303
    21.08.2021 11:26
    +1

    OpenWRT по умолчанию тоже использует musl. Как-то для одного софта под ARM пришлось собирать образ с glibc, благо в параметрах сборки можно легко переключиться на glibc.


  1. amarao
    21.08.2021 12:45
    +5

    Альтернативы glibc обычно нужны, если считаются байты флеш-памяти. Если вы сами себе что-то компилируете на машине, то вы а-приори используете больше места на диске, чем если бы использовались бинарные пакеты (т.к. нужны header'ы и куча -dev зависимостей).

    В целом, как развлечение - why not, но на рабочую машину я бы такое не рискнул пробовать.


  1. lioncub
    21.08.2021 13:00

    А Alpine Linux вы рассматривали? apk пакетный менеджер его сильно медленный?


    1. unsignedchar
      21.08.2021 15:33
      +2

      Скорость пакетного менеджера - это, пожалуй, самое последнее, на что нужно обратить внимание при выборе дистрибутива.


      1. powerman
        21.08.2021 16:15
        +1

        Обычно - да, но есть нюансы… Gentoo, например. :)


      1. dartraiden
        24.08.2021 01:33

        Более того, скорость пакетного менеджера порой можно удвоить, если просто изменить алгоритм сжатия пакетов.

        Разработчики Ubuntu начали перевод deb-пакетов на использование алгоритма zstd, который позволит почти в два раза увеличить скорость установки пакетов


  1. megahertz
    21.08.2021 16:22

    А нельзя для проблемного софта вернуть glibc? Такое иногда встречается в образах на Alpine, когда без подтягивания glibc не заводится определенный софт. Большинство ведь не особо парятся по поводу того, что у них в системе соседствуют и Qt и GTK, зачастую еще и нескольких версий сразу.


    1. unsignedchar
      21.08.2021 19:21

      А нельзя для проблемного софта вернуть glibc?

      В chroot можно развернуть софтину вместе со всеми зависимостями.


  1. akaAzazello
    21.08.2021 19:19
    +3

    Можно вас лишь поздравить - вы действительно нашли дистр Linux'a, который не работает нормально на ThinkPad X230 ;) Я думал, такое невозможно!


    1. RCrypt-mrx Автор
      21.08.2021 20:10

      Скорее даже не дистр, а реализацию. На данный момент, уже установил Void на базе glibc. Разницы в скорости системы не заметил, зато софт вообще любой ставится и запускается без каких-либо проблем)


      1. akaAzazello
        21.08.2021 20:17

        Я рад, что вы приняли разумное решение отказаться от исключительно embedded-решения на машине класса ноутбук. Наслаждайтесь работой этой неубиваемой машинки :) А musl libc оставьте для чего-то вроде lattepanda ;)


  1. KislyFan
    21.08.2021 19:44
    +3

    Вот за что я люблю *nix сообщество, так это за умение создать самому себе проблему.. просто потому что "захотелось странного", а потом с гордостью рассказывать об этом опыте ​


  1. JerleShannara
    21.08.2021 23:42

    musl живёт в мире embedded и запуска линукса на одном ядре Cortex-A8, а то и чего более древнего. Ставить его на что-то мощнее Pentium-2 — затея глупая.


    1. edo1h
      24.08.2021 03:47

      эээ… разве cortex a8 не на голову производительнее p2?


      1. JerleShannara
        24.08.2021 04:05

        Смотря какой, если брать последние лебединые песни 10-11 годов, то может раза в два и будет шустрее, если брать 400-800мгц, то обычно наравне идут.


  1. mistergrim
    22.08.2021 01:13

    Крайне интересно, что же в итоге с последним вопросом, насчёт батареи (сколько её ресурса было истрачено за пять месяцев, я уж молчу).


    1. RCrypt-mrx Автор
      22.08.2021 13:19

      С батареей все мутно, заряжается час, держит полтора-два (в винде разряжалась за 20-30 минут). Она была изношена изначально на 30%, а сейчас уже 43%. Но я забил на это, т.к. буду покупать новую.


  1. sargon5000
    22.08.2021 13:05

    "В таком адском режиме я провел 5 месяцев". Уважаю! Упорства автору не занимать. Но я бы так делать точно не стал. Жизнь коротка, и растрачивать ее так бездарно...