LINUX.ORG.RU

Для тех, кто думает перейти на NixOS

 


8

6

Собственно по мотивам ТЫЦ но про NixOS и на основе моего опыта эксплуатации сабжа в течение как минимум одного года восьми месяцев и двух дней или шестьсот двенадцати дней кому как угодно. Ибо именно столько у меня стоит NixOS основной системой тыц.

Моей предыдущей системой была гента поэтому и свои сравнения я буду проводить непосредственно с ней. Все написанные мною слова выражают мои собственные мысли и не были призваны разжигать какие бы то ни было конфликты и/или жжения в любых частях тела прилегающих к седалищному нерву.

Так вот детки. Гента местами хороша… хотел бы я так написать но увы нет. Есть кардинальные проблемы с которыми она не справиться. Основная это toolchain. У вас попросту не может быть консистентной системы с самым распоследним toolchain-ом и довольно старыми выдержанными проверкой временем программами (Либо наоборот). Это не значит что такую проблему нельзя решить костылями chroot-а или некими иными методами… Это значит лишь то что такая проблема у дистрибутива как минимум есть в наличие.

Ты сейчас задвинул некую чушь. {У меня нет}/{Мне не нужны} старые программы.“ - Да дело ведь не только в этом. Те кто прожил с гентой достаточно припомнят не один случай неудачного обновления glibc в результате которого всему приходил северный полярный лис. „Бэкап спасёт“ да не без этого. Однако бэкап не исправляет саму изначальную проблему.

Так вот последние два абзаца написаны собственно только ради того что… Да детки в NixOS таких проблем нет. И быть не может by design. И я скромно умалчиваю про другие архитектуры, контейнера, FHS environment и прочие побочные плюшки.

Дальше меня ждала «ломка» поскольку во всех дистрибутивах корень системы это важная штука которую можно пощупать своими загребущими ручёнками… Да а в то время как в NixOS из всего корня так сказать материальны только /etc/nixos, /root и /nix а остальное симлинки… Тудумс! Занавес.

Немного про установку. Генту можно собрать за время от пары часов до нескольких дней. Развернуть из бинпакетов можно минут за сорок ну плюс минус около того. NixOS бинарный дистрибутив поэтому кампелять тут ничего не нужно.

Канпельять нинада. nixos ацтой. Моя отсельда мухожук.“ Однако стоит лишь переопределить дефолт и если это столь необходимо пакетный манагер сам пересоберёт то что нужно пересобрать. Вкуснятина!

Дальше сам процесс разработки. Про генту я скромно умолчу. А вот NixOS разрабатывают на гитхабе открыто, свободно и без бюрократии и 1770 запросов на слияние и 3753 проблемы тому доказательство.

Я скажу так в генте для меня всегда была головной болью настроить gnome/kde/plasma. Полные метапакеты натащат столько что ппц а минимальные как правило просто обрезаны по самое немогу и для комфортного существования приходилось искать ту самую золотую середину самостоятельно. В NixOS просто дефолтный выбор мне что называется зашел на ура. Одной проблемой меньше.

Итак вот мы прожили в системе определённое время накопились критические изменения и настало то самое время обновлять. У NixOS считай весь корень тупо набор симлинков поэтому, как не трудно додумать, он чудесно версионируется. Да у вас всегда есть не просто единственное текущее состояние системы но и всё неудалённые прошлые её состояния.

В NixOS пакетный менеджер заведует не просто версией хромиума но и всеми его настройками и да даже его расширениями.

Любые нативные игрушки steam-run спасает и делает не просто хорошо а прям прекрасно.

Да ладно… Вот прям взял и описал идеал. Не верю.“ Есть и баги. Дальше о них.

Ну не то чтобы это было проблемой но как с самой первой инсталлиции так и до сих пор - Only english language available in plasma regional settings #33987, Missing a lot of translation in plasma5-based system. #37741 Да все преведенные решения перепробовал но баг как был так и есть.

Из того что заметил в последнее время HDD not mounted, system don't boot #32588 это про btrfs на luks. Но оно тоже странное то есть то нет… В общем закономерности я не заметил но у себя наблюдал.

Ну и покамест на этом всё. Надеюсь мои многобукав помогут кому нибудь сделать свой выбор.

★★★★★

Последнее исправление: init_6 (всего исправлений: 1)

Ответ на: комментарий от Deleted

Никто в здравом уме не собирает glibc с пакетом хидеров извлеченных из сорцов ядра.

Пакет kernel-headers с которым собирают glibc и остальную систему может вообще не совпадать с заголовками твоего текущего ядра.

init_6 ★★★★★
() автор топика
Ответ на: комментарий от Deleted

Ну это и логично на самом деле. Управление сборкой и управление конфигурацией — два отдельных шага. Так должно быть сделано вообще всё, а не только пакет ядра.

Ага, неплохо бы, чтоб каким-то таким образом и всё остальное было сделано. Ну, если это вообще возможно.

toyo-chi
()
Ответ на: комментарий от toyo-chi

В той системе их просто не было.

От смены ядра страдают только невключенные в ванильное ядро сторонние модули и кишки иксов с привязками к ядерным модулям. Остальному софту от смены ядра ни тепло ни холодно.

init_6 ★★★★★
() автор топика
Ответ на: комментарий от init_6

Никто в здравом уме не собирает glibc с пакетом хидеров извлеченных из сорцов ядра. Пакет kernel-headers…

А ты, малой, наверное думаешь, что пакет kernel-headers, или linux-headers, или kernel-api-headers, или еще по всякому он называется в разных дистрибутивах, сам магическим образом берётся на машине, а не упаковывается из релизного архива сорцов с kernel.org?

с которым собирают glibc и остальную систему может вообще не совпадать с заголовками твоего текущего ядра.

Я тебе тайну великую открою, но вообще любые хидеры, с которыми ты собираешь клиентский код, не обязаны совпадать с фактической версией библиотеки, на которой этот код будет запускаться.

И чтобы по десять раз выпустить патч-версию glibc, pango или gtk, не нужно пересобирать ни одного производного пакета. Добро пожаловать в реальный мир из своего ФП-загончика.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от init_6

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

Непонятно что это значит.
Допустим, существует только RPM версия.
Это считается за «любой готовый бинарник»?

zolden ★★★★★
()
Ответ на: комментарий от toyo-chi

Ага, неплохо бы, чтоб каким-то таким образом и всё остальное было сделано. Ну, если это вообще возможно.

Теоретически, это возможно. Как минимум, нужно для библиотек собирать по два артефакта — libblabla-runtime и libblabla-devel. И при сборке производных артефактов в зачёт по хэшам идёт только devel. А при сборке воспроизводимой конфигурации машины — runtime.

Deleted
()
Ответ на: комментарий от rbbtnspc

Настолько, насколько стабильными сделали их авторы софта. В NixOS почти весь софт без патчей, за исключением когда патчи требуются чтобы софт собственно работал в NixOS. Но последнее — довольно редкая ситуация.

hateyoufeel ★★★★★
()
Ответ на: комментарий от zolden

Это считается за «любой готовый бинарник»?

Вот смотри а что это там такое? Так можно использовать RPM или нет если его просто берут и используют? Так же как и deb кстати.

init_6 ★★★★★
() автор топика

Слушай, я все не смог прочитать, ты не мог бы резюмировать: так что, NixOS во всем круче линукс/генты или нет?

hotpil ★★★★
()
Ответ на: комментарий от Deleted

Что характерно, нечто подобное в NixOS вроде бы как даже практикуется:

$ ls /nix/store/ | grep SDL2 | head -n3
05xijm8frqiplxiib6fwc6l4bvcy4ngm-SDL2-2.0.10.tar.gz.drv
0a23v54d92qccy3cvr1mgcrh5kly137f-SDL2-2.0.10
0ghcgs6s4xfwdn2b7xjz470nmlx28ya0-SDL2-2.0.10-dev

$ tree /nix/store/0a23v54d92qccy3cvr1mgcrh5kly137f-SDL2-2.0.10/
/nix/store/0a23v54d92qccy3cvr1mgcrh5kly137f-SDL2-2.0.10/
└── lib
    ├── libSDL2-2.0.so.0 -> libSDL2-2.0.so.0.10.0
    ├── libSDL2-2.0.so.0.10.0
    ├── libSDL2.la
    ├── libSDL2main.la
    ├── libSDL2.so -> libSDL2-2.0.so.0.10.0
    └── libSDL2_test.la

1 directory, 6 files

$ tree /nix/store/0ghcgs6s4xfwdn2b7xjz470nmlx28ya0-SDL2-2.0.10-dev/
/nix/store/0ghcgs6s4xfwdn2b7xjz470nmlx28ya0-SDL2-2.0.10-dev/
├── bin
│   └── sdl2-config
├── include
│   └── SDL2
│       ├── begin_code.h
│       ├── close_code.h
│       ├── SDL_assert.h
│       ├── SDL_atomic.h
│       ├── SDL_audio.h
│        [и так далее]
├── lib
│   ├── cmake
│   │   └── SDL2
│   │       └── sdl2-config.cmake
│   ├── libSDL2main.a
│   └── pkgconfig
│       └── sdl2.pc
├── nix-support
│   ├── propagated-build-inputs
│   └── setup-hook
└── share
└── aclocal
└── sdl2.m4

10 directories, 80 files

И это не единичный пример. Но вот почему при этом всё не собирается вот так вот по-умному, чтобы не было постоянной компиляции с идентичными бинарниками на выходе — сие для меня тайна великая есть. Может быть, знатоки лучше поймут, что вообще с этим делать. А моё выступление здесь вообще в другом жанре!

toyo-chi
()
Ответ на: комментарий от hotpil

Слушай, я все не смог прочитать, ты не мог бы резюмировать: так что, NixOS во всем круче линукс/генты или нет?

Резюмирую: NixOS рулит. Гента сасай.

init_6 ★★★★★
() автор топика

Пройдет немного времени и ТС будет говорить совсем другие слова о NixOS.

anonymous
()
Ответ на: комментарий от anonymous

Пройдет немного времени и ТС будет говорить совсем другие слова о NixOS.

Полутора лет недостаточно?

init_6 ★★★★★
() автор топика

NixOS бинарный дистрибутив

не согласен. Там каждый пакет описывается скриптом на nix. А бинари выкачиваемые с гидры это кеш результата выполнения этих скриптов.

SR_team ★★★★★
()
Ответ на: комментарий от init_6

Полутора лет недостаточно?

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

anonymous
()
Ответ на: комментарий от SR_team

А бинари выкачиваемые с гидры это кеш результата выполнения этих скриптов.

Согласен. Различие определений. Просто гента из бинарников это вообще заранее тухлое дело поскольку любое отступление от „дефолта“ и прощайте бинарники а здравствуй компиляние с разгребанием гарантированных проблем с зависимостями. Nixos на этом фоне прям бинарный и без всего этого геморроя. Вот в каком смысле.

init_6 ★★★★★
() автор топика
Ответ на: комментарий от init_6

И спасибо Капитан!

Пустяки. Не стОит благодарности.

anonymous
()
Ответ на: комментарий от init_6

Вот, это как раз хорошо, что ядро можно менять с минимальными страданиями. А вот не очень хорошо то, что из числа обычных пакетов каждый раз перекомпилируется и заново скачивается то, что могло бы и не перекомпилироваться. Как минимум то, у чего строго идентичные бинарники на выходе, команда nix optimise-store подтвердит! Не говоря уже о теоретической возможности умной пересборки из вон того комментария. Какое-то это сомнительное удовольствие — скачивать каждый раз с десяток гигабайт того, что осталось точно таким же.

toyo-chi
()

Полные метапакеты натащат столько что ппц а минимальные как правило просто обрезаны по самое немогу и для комфортного существования приходилось искать ту самую золотую середину самостоятельно.

Не благодари

# /etc/portage/sets/desktop-env

app-arch/p7zip
app-arch/unrar
kde-apps/ark
kde-apps/dolphin
kde-apps/gwenview
kde-apps/kate
kde-apps/kcalc
kde-apps/kmix
kde-apps/kompare
kde-apps/konsole
kde-apps/okular
kde-apps/spectacle
kde-plasma/kinfocenter
kde-plasma/kmenuedit
kde-plasma/plasma-desktop
kde-plasma/powerdevil
kde-plasma/sddm-kcm
kde-plasma/systemsettings
kde-plasma/xembed-sni-proxy
media-fonts/dejavu
media-fonts/liberation-fonts
media-fonts/terminus-font
sys-fs/ntfs3g
x11-apps/mesa-progs
x11-base/xorg-x11
x11-misc/sddm
x11-terms/xterm
x11-themes/oxygen-gtk:2
x11-themes/oxygen-gtk:3
grem ★★★★★
()
Ответ на: комментарий от grem

Не благодари

Set-ом? Серьёзно? Спасибо за заботу но я метапакетами через свой собственный профиль делал.

init_6 ★★★★★
() автор топика
Ответ на: комментарий от init_6

серьёзно.

его же не нужно пересобирать при добавлении или удалении из него пакета

grem ★★★★★
()
Последнее исправление: grem (всего исправлений: 1)
Ответ на: комментарий от Deleted

Да, но тебе обычно пофигу, потому что не тебе их перекомпилировать.

t184256 ★★★★★
()
Ответ на: комментарий от rbbtnspc

Эм, wireguard в NixOS юзает я простым декларированием «хочу wireguard» уже много лет. Какая разница, откуда он берётся?

t184256 ★★★★★
()
Ответ на: комментарий от anonymous

Локальные юзы есть. Глобальных, слава Б-гу, нет.

anonymous
()

При всей симпатии к NixOS, DE там сломаны (KDE в большей степени, GNOME в меньшей).

Из-за отсутствия FHS как такового, для запуска и сборки программ нужны NixOS-специфичные костыли (appimage-run, stream-run, nix-shell).

К этому можно привыкнуть, если захотеть, но мне было лень. Как и всем остальным будет лень, я думаю.

Так что мой голос за OSTree и Fedora Silverblue.

commagray ★★★★★
()
Последнее исправление: commagray (всего исправлений: 2)

Тема отстой, переписывай: вместо описания особенностей использования nixos описываешь gentoo и её неудобства для тебя. То есть можно вообще взять любой другой дистрибутив, лишь бы не генту.

Серьёзно, сделай нормальный пост про nixos наконец. А то заходят прочитать про него, а про него толком ничего и нет. Тем более ты приводишь за образец тему, где всё достаточно подробно расписано.

grem ★★★★★
()

Чем оно лучше <distname>?
Я конечно, посматриваю, что там новое на горизонте, но пересборка половины пакетов и 10 гб скачивания особенно веселят. Как-то я хочу пользоваться компом, а не он мной.

OpenMind ★★★★
()
Ответ на: комментарий от cetjs2

Дефенестрирует текущую систему и заменяет её собой.

anonymous
()

Дальше меня ждала «ломка» поскольку во всех дистрибутивах корень системы это важная штука которую можно пощупать своими загребущими ручёнками… Да а в то время как в NixOS из всего корня так сказать материальны только /etc/nixos, /root и /nix а остальное симлинки… Тудумс! Занавес.

Из любопытства таки поставил образ для VirtualBox с официального сайта.
И упомянутых симлинков что-то не видать...НЕ ВЕРЬТЕ ЕМУ

zolden ★★★★★
()
Ответ на: комментарий от Deleted

Они и в генту просто так не перекомпилируются - только если специально указано в ebuild, что при смене слота или подслота нужно пересобрать - это на тот случай когда меняется api библиотеки: интерфейсы функций становятся другими и для ранее собранного пакета уже не работают.

grem ★★★★★
()
Ответ на: комментарий от rbbtnspc

В 5.6 WireGuard из коробки, очень надо.

Кто мешает поставить -rc3?

imul ★★★★★
()
Ответ на: комментарий от init_6

Здесь решена проблема Dependency hell. Т.е. в системе одновременно могут быть libblabla хоть всех существующих версий

И на сервере они тоже доступны? Или только если сам озаботился сохранить?

artenox-naki
()
Ответ на: комментарий от artenox-naki

И на сервере они тоже доступны?

Если проблема решена на уровне пакетного манагера какая разница на чем конкретно десктоп/сервер доступно это решение?

init_6 ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.