Хочу задать вопросы тем, кто постоянно использует 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 из файла превратил в директорию. Поймет ли пакетный менеджер, что тут что-то не так? Сможет ли он сам мне вернуть это все, как было?
Сделать перепост:
https://ru-linux.livejournal.com/3053187.html