LINUX.ORG.RU
ФорумTalks

Возможности NixOS и GuixSD в сравнении с Gentoo

 , ,


3

8

Сам я использую Gentoo на десктопе примерно 8 лет. Сейчас заинтересовался дистрибутивами NixOS и GuixSD - очень уж фантастические возможности они обещают, судя по описанию. Прошу отозваться тех, кто использует эти дистрибутивы. Хочу задать вопросы:

1. Насколько сильно несоблюдение FHS портит жизнь пользователю? Часто ли в процессе написания nixlang-конфига приходится мучиться с поиском причин, по которым программа не работает в виртуальном окружении, поиском нужных переменных типа LUA_PATH_OVERRIDE_ЧТО_ТО_ТАМ, которые следует глобально экспортировать и так далее? И что приходится делать, если такой переменной нет в принципе, а программа из апстрима жестко прибита гвоздями к FHS? Патчить код?

2. Как обстоят дела со всеми этими «консистентностями», «DevOps-friendly», «декларативностями», «бит-в-бит-точностью» и так далее в следующем случае? Случай: пользователь поставил Firefox 25, которая в /home хранит preferences.js, запустил, закрыл, потом поставил Firefox 53 вместо 20, запустил, закрыл. Если, допустим, формат preferences.js для этих версий очень разный, то что будет в итоге? Не испортится ли конфиг в /home? И можно ли декларативно хранить информацию о всех файлах в /home и /root, чтобы в случае их потери можно было nix-скриптом DevOps-дружелюбно перенастроить весь софт со сбитыми юзерскими настройками?

3. Я слышал, что там какую-то директорию наподобие /nix/... то ли нельзя модифицировать, то ли нельзя даже читать. Это правда? Если да, то как эта защита от юзера и рута реализована - xattrs, chmod или ACL? Есть ли в системе в принципе места, которые модифицировать можно только через загрузку с LiveDVD и chroot вовнутрь?

4. Не хочется ли пользователю NixOS стать из ДевОпса обратно админом локалхоста? Иными словами, что вам привычнее сейчас - править любые мелочи в /etc руками или править/дописывать декларативные nix-скрипты, после чего «пересобирать» систему, чтобы применились nix-скрипты? Допустим, нужно что-то мелкое срочно поправить в NetworkManager-хуке или самописном cron-скрипте, или X11-конфиге, или /etc/wgetrc.

5. Удается ли в целом добиться пресловутой бит-в-бит-ДевОпс-френдли-консистентности? Пример. Допустим, я удалил некоторые файлы-симлинки из /usr/lib, понапихал лишних файлов в /etc/X11, поменял mode некоторым файлам в /usr/share, также некоторым случайным файлам в /opt поменял стандартные атрибуты, расширенные атрибуты, owner-юзера, группу, ACL. Могу ли запустить менеджер пакетов, чтобы он без rollback'ов мне восстановил все в системе, как было? Ну то есть чтобы он прошелся по системе, проверил у всех файлов md5sum, ACL, mode, owner, group, стандартные атрибуты и xattrs, и в случае несоответствия пересобрал пакет из Hydra/AWS или локально. Консистентность такого высокого уровня NixOS может обеспечить сейчас?

6. Супер-бит-в-бит-ДевОпс-консистентность в NixOS может обеспечить проверку типа файлов? Пример. Допустим, было 3 обычных файла - /etc/issue, /etc/issue.logo, /etc/issue.new_logo - которые мне накатил пакетный менеджер при установке чего-нибудь. Я /etc/issue из файла превратил в симлинк, а /etc/issue.logo из файла превратил в юниксовый доменный IPC-сокет, а /etc/issue.new_logo из файла превратил в директорию. Поймет ли пакетный менеджер, что тут что-то не так? Сможет ли он сам мне вернуть это все, как было?

7. Планируют ли мейнтейнеры дистрибутива Gentoo в ближайшем будущем развивать reproducible builds, проверку консистентности (имею в виду проверку того, что emerge --emptytree @world пересоздает в / абсолютно все файлы, лежащие в stage3-тарболле), integrity и портировать на Gentoo возможности GuixSD/NixOS?

sudo cast frigate_freedom Camel Pinkbyte

Насколько сильно несоблюдение FHS портит жизнь пользователю?

В большинстве случаев не портит, но иногда действительно приходится патчить код, а в случае с неопенсорсным софтом и бинарники.

пользователь поставил Firefox 25, которая в /home хранит preferences.js

Файлы пользователя есть файлы пользователя, nix за них не отвечает

править любые мелочи в /etc руками или править/дописывать декларативные nix-скрипты, после чего «пересобирать» систему, чтобы применились nix-скрипты?

Nix и выбора не оставляет, учитывая, что /etc volatile, а изменения обычно хочется персистентно.

Допустим, я удалил некоторые файлы-симлинки из /usr/lib

Опять же, как такового /usr/lib просто нет, а испортил что-то в read-only /nix — ССЗБ.

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

Опять же, как такового /usr/lib просто нет

Интересно как. Вон оно что. А можете на NixOS или GuixSD сделать...

ls -1 /
...и показать вывод?

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

На самом деле, в /usr лежит только bin/env, на который и предполагается полагаться переносимым скриптам в shebang, например

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

В целом же в корне ничего необычного:

bin
boot
dev
etc
home
lost+found
media
mnt
nix
proc
root
run
sys
tmp
usr
var

В /run хранится симлинк current-system, ведущий в дебри /nix, в остальном всё как везде.

Softwayer ★★ ()

Отвечу как пользователь Nix (без NixOS)

1. Насколько сильно несоблюдение FHS портит жизнь пользователю?

Большинство софта на удивление хорошо с этим справляется. FHS нужен в основном для проприетарщины. В nixpkgs есть какие-то обёртки: https://github.com/NixOS/nixpkgs/blob/2090aa4f65e860567af03cb3b7aa042df7168ea... http://sandervanderburg.blogspot.nl/2013/09/composing-fhs-compatible-chroot.html

Часто ли в процессе написания nixlang-конфига приходится мучиться с поиском причин, по которым программа не работает в виртуальном окружении, поиском нужных переменных типа LUA_PATH_OVERRIDE_ЧТО_ТО_ТАМ, которые следует глобально экспортировать и так далее?

Обычно все переменные выставляются хуками setupHook. Проблемы с окружением начинаются скорее вне уютного виртуального окружения.

2. Случай: пользователь поставил Firefox 25, которая в /home хранит preferences.js Если, допустим, формат preferences.js для этих версий очень разный, то что будет в итоге?

Всё сломается. Nix не заведует dotfiles, но наверняка есть какие-то надстройки, которые бы позволяли декларативную конфигурацию.

Если да, то как эта защита от юзера и рута реализована - xattrs, chmod или ACL?

Nix делает chmod. На NixOS /nix/store смонтирована как ro. ACL мог бы решить проблему приватных путей https://github.com/NixOS/nix/issues/8

5. Ну то есть чтобы он прошелся по системе, проверил у всех файлов md5sum, ACL, mode, owner, group, стандартные атрибуты и xattrs, и в случае несоответствия пересобрал пакет из Hydra/AWS или локально.

Я не знаю как работает NixOS. Расскажу как работает nix-env в Nix. Он пересобирает окружение каждый раз с нуля в /nix/store/хэш-user-environment из симлинков на другие пути в store. После этого (атомарно?) изменяется символьная ссылка ~/.nix-profile так чтобы указывать на новое окружение. Я полагаю, nixos-rebuild также полностью пересобирает уже системное окружение (возможно, другим образом). Любые пути в store при желании можно всегда пересобрать или скачать заново.

veprbl ()

1. Если пользуешься софтом из репозитория и нет необходимости менять какие-то конфиги в том же /usr, то всё в порядке. Если надо пользоваться проприетарщиной или что-то поменять, то начинаются проблемы, с которыми новичку довольно сложно справиться, но есть опытные пользователи в IRC и на github'е, которые помогают.

2. Даже не запаривался по этому поводу, но в /home никогда ничего не меняется.

3. Да, /nix не изменяется, но можно командой в configuration.nix менять нужные файлы.

4. Правил лишь некоторые мелочи, остальное искоробочное устраивает.

5, 6, 7 — не знаю, не интересовался.

Пользуюсь в режиме хомячка и мне норм, времени на доводку нет. На каникулах попытаюсь вкорячить NX, ещё разок поковыряю ANSYS, не получится — буду искать, куда бы свалить.

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

Siemens NX?

Да. Очень не хочется держать винду в дуалбуте и перезагружаться ради этих программ.

Deleted ()

Если да, то как эта защита от юзера и рута реализована - xattrs, chmod или ACL

mount --bind /nix/store /nix/store

mount -o remount,ro,bind /nix/store

Nefalius ()

Как юзер slackware а потом gentoo в прошлом и юзер NixOS в настоящем рискну поотвечать на твои вопросы.

1. Насколько сильно несоблюдение FHS портит жизнь пользователю?

Ну скажем так об этом даже не думаешь до тех пор пока не сталкиваешся с софтом не из nixpkg.

Конкретно мой пример это gog-овский the_witcher_2_assassins_of_kings_enhanced_edition_en_release_3_20150306204412_20992.sh Это главным образом 32-х битное ПО. multilib в nixos еще более забавный чем в gentoo. Чтоб начать понимать разницу достаточно сходить и почитать playing FTL on NIXOS <-- ссылка еще полезна тем что отоброжает методы борьбы с FHS-ным софтом в NixOS. Сразу скажу меня с запуском ведьмака спас steam-run осталось только победить беду с пустыми квадратами вместо ШГ т.е. локализацией/pango в конфигураторе ведьмака та же ерунда но это уже совсем другая история.

2. Как обстоят дела со всеми этими «консистентностями», «DevOps-friendly», «декларативностями», «бит-в-бит-точностью» и так далее в следующем случае? Случай: пользователь поставил Firefox 25, которая в /home хранит preferences.js, запустил, закрыл, потом поставил Firefox 53 вместо 20, запустил, закрыл. Если, допустим, формат preferences.js для этих версий очень разный, то что будет в итоге? Не испортится ли конфиг в /home?

Ну вообще очень мало софта который хранит свои настройки просто в ~/.config/названиесофта чаще всё же ~/.config/названиесофта-версия поэтому проблемы с вменяемым софтом, к которому firefox не относится, не будет. С firefox никто не запрещает делать бекап конфигов для каждой версии. И да так то в любом другом дистре после подобных манипуляций с версиями с firefox будут схожие проблемы.

И можно ли декларативно хранить информацию о всех файлах в /home и /root, чтобы в случае их потери можно было nix-скриптом DevOps-дружелюбно перенастроить весь софт со сбитыми юзерскими настройками?

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

3. Я слышал, что там какую-то директорию наподобие /nix/... то ли нельзя модифицировать, то ли нельзя даже читать. Это правда?

Да /nix по дефолту ro даже для root-а. Внутри /nix всё можно модифицировать командами самого nix.

Есть ли в системе в принципе места, которые модифицировать можно только через загрузку с LiveDVD и chroot вовнутрь?

Нет.

4. Не хочется ли пользователю NixOS стать из ДевОпса обратно админом локалхоста? Иными словами, что вам привычнее сейчас - править любые мелочи в /etc руками или править/дописывать декларативные nix-скрипты, после чего «пересобирать» систему, чтобы применились nix-скрипты?

Главная победа NixOS именно в том, что вообще все настройки централизиованы в одном единственном /etc/nixos/* И нет лазить в недрах всей системы для настроек чего то там после nixos с её централизированными настройками не вызывает никакого желания.

5. Удается ли в целом добиться пресловутой бит-в-бит-ДевОпс-френдли-консистентности? (cut) Консистентность такого высокого уровня NixOS может обеспечить сейчас?

NixOS выстраивает систему из твоих желаний описанных в конфиге /etc/nixos/*. Ручками и вне конфига ты в nixos ничего не сделаешь просто потому что там может даже ничего не быть. :) Вот так вот. Добро пожаловать в NixOS. По своей сути NixOS это тот самый /nix в корне остаток корня и не считая настроек в /etc/nixos/* остаток всех системных мест с по это символические ссылки на бинарники живущие в недрах /nix. Аналогичным образом через подсовывание ссылок конкретному юзеру реализованы и приложения юзеров. Таким образом «ломать» своими ручками вне /etc/nixos/* кроме ссылок вообще нечего. И да если поудалять эти самые ссылки то после пересборки/обновления системы они вернутся на свои места.

6. Супер-бит-в-бит-ДевОпс-консистентность в NixOS может обеспечить проверку типа файлов? (cut) Поймет ли пакетный менеджер, что тут что-то не так? Сможет ли он сам мне вернуть это все, как было?

Пакетному манагеру nix плевать на абсолютно всё что не описано в настройках /etc/nixos/* поскольку в идеологии nixos это единственное место где юзер определяет и настраивает все аспекты своей системы. Система собирается из того что ты понастраивал в настройках. Замашки остальных дистров, с ручным редактированием файлов по свей системе, в nixos либо не работают вовсе либо не имеют смысла поскольку все свои изменения необходимо держать в настройках /etc/nix/nixos/* и тогда твои волосы станут мяяяяяяяягггггкими и щёлковистыми.

7. Планируют ли мейнтейнеры дистрибутива Gentoo…

Я думаю они планируют и далее стагнировать процветать.

PS: То о чем ты не спросил - да как можно было понять самое важное в nixos хранить свои настройки /etc/nixos/* не лишнм будет засунуть их в любую vcs на выбор поскольку система никак об этом не заботится а запароть вообще всё можно как два пальца.

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

Ну вообще очень мало софта который хранит свои настройки просто в ~/.config/названиесофта чаще всё же ~/.config/названиесофта-версия

Странно, у меня с версией там только gtk-2.0 и gtk-3.0, плюс у libreoffice есть подкаталог для версии.

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