Void Linux на musl libc. История борьбы

в 4:43, , рубрики: linux, linux desktop, linux void, musl, musl-vs-glibc, Настройка Linux, Софт

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

В феврале 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. К слову, я вообще первый раз такие статьи пишу. Надеюсь, что кому-нибудь это поможет не допустить, той ошибки, которую допустил в свое время я.

Автор:
RCrypt-mrx

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js