|
2.15, Аноним не забывает (?), 14:36, 29/10/2020 [^] [^^] [^^^] [ответить] [↓] [↑] [п©б╘п▒Б┬≥Б∙≈ п©б╘п▒Б┬≥Б∙≥п©б╘п▒Б┬≥Б∙⌡п©б╘п▒Б┬≥Б∙▓п©б╘п▒Б┬≥я▒я▐Б√░п▒Б√═Б■─п©б╘п▒Б┬≥ц╥я▐Б√░п▒Б√═Б√└п©б╘п▒Б┬≥Б∙⌡я▐Б√░п▒Б√═Б■─я▐Б√░п▒Б√═Б√▒]
| +3 +/– |
Хорошо, что есть два дистрибутива и друг на друга положительно влияют.
Лично мне в Guix не нравится его политизированность. Не только GNU. Основоположники Guix - лютые SJW, которые и в Guix активно борются с инакомыслием и свободой слова. Запрещают упоминать nonguix - репозиторий с несвободными пакетами, например. Я сам всей душой за свободное ПО и копилефт, но когда какие-то активисты начинают навязывать своё видение остальным, и устраивают Репрессии Ради Светлого Будущего... где-то я такое уже видел. А NixOS абсолютно вне политики и идеологии, над ним работают люди самых разных убеждений и прекрасно уживаются. Так приятно в наше дикое время.
| |
|
|
2.13, Домохозяйка анонима (?), 12:47, 29/10/2020 [^] [^^] [^^^] [ответить] [↓] [↑] [п©б╘п▒Б┬≥Б∙≈ п©б╘п▒Б┬≥Б∙≥п©б╘п▒Б┬≥Б∙⌡п©б╘п▒Б┬≥Б∙▓п©б╘п▒Б┬≥я▒я▐Б√░п▒Б√═Б■─п©б╘п▒Б┬≥ц╥я▐Б√░п▒Б√═Б√└п©б╘п▒Б┬≥Б∙⌡я▐Б√░п▒Б√═Б■─я▐Б√░п▒Б√═Б√▒]
| +10 +/– |
> Кто-нибудь его реально использовал?
Перешёл на него с генты года три назад. Потом и серваки с дебиана перевёл. Очень удобно.
> Для чего он вообще нужен?
Состояние всей системы описывается в едином конфигурационном файле /etc/nixos/configuration.nix. На основе этого файла устанавливаются все необходимые пакеты, генерируются конфиги, создаются юзеры и т. д. Можно скопировать этот файл на другую машину, запустить nixos-rebuild и получить идентичную систему. Очень удобно, когда переезжаешь на новую рабочую машину или развёртываешь новый сервер. Конфигурационный файл получается на удивление небольшим. Можно положить его в git и фактически получить полный бэкап всей системы. Гораздо удобнее, чем Ansible, и гораздо надёжнее: Ansible работает через раз, потому что применяет изменения к существующей системы, находящейся в неизвестно, каком состоянии. NixOS, в отличие от Ansible, каждый раз пересобирает систему абсолютно с нуля. Поэтому результат не зависит от неизвестного начального состояния и всегда получается одним и тем же. "Абсолютно с нуля" звучит страшно, но на самом деле пересобирается только те части системы, которые изменились с прошлых раз, остальные используются повторно, и "полная пересборка" обычно занимает несколько секунд. Потом происходит атомарное переключение со старой системы на новую. Примерно как Silverblue, только намного продвинутее. NixOS, например, позволяет параллельно устанавливать любое количество версий любого пакета, и они не конфликтуют. Если хранить несколько состояний системы, одинаковые пакеты хранятся на диске только один раз.
Далее, огромные плюс - это пакетный менеджер Nix, на котором основан сабж. Для разработчика это идеальный инструмент. Не нужно вручную устанавливать dev-пакеты и засирать ими систему - вместо этого для каждого проекта пишется файлик shell.nix, где декларативно описаны все зависимости. Потом запускаешь nix-shell и получаешь рабочее окружение, где доступны все зависимости. Опять же, разные проекты могут использовать разные версии одной библиотеки, и они не будут друг другу мешать. Можно для каждого проекта зафиксировать версию репозитория nixpkgs и получить абсолютно воспроизводимое окружение со строго фиксироанными версиями всех зависимостей. На работе стали юзать - очень удобно. Когда приходит новый сотрудник, ему не надо два дня объяснять, как запустить проект - он просто делает git clone, nix-shell - и получает полностью готовое рабочее окружение. До сих не верится, но это работает. Nix можно использовать независимо от NixOS, хоть на убунте, хоть на федоре - везде работает одинаково.
> Какие есть проблемы?
Главный минус - NixOS не использует FHS. Там никакого глобального /usr/lib нет, все пакеты живут в каталогах типа /nix/store/shs8kax43dk69fh94g5w4bc1ra3nv2j2-gcc-9.3.0. Поэтому всякая бинарная проприетарщина сходу не запустится. При желании запустить можно, но нужны дополнительные шаги. В остальном - даже не знаю, для меня одни плюсы. Это дистрибутив будущего, и он настолько крут, что многие даже не в состоянии осознать.
| |
|
|
2.26, NULL (??), 04:56, 30/10/2020 [^] [^^] [^^^] [ответить] [п©б╘п▒Б┬≥Б∙≈ п©б╘п▒Б┬≥Б∙≥п©б╘п▒Б┬≥Б∙⌡п©б╘п▒Б┬≥Б∙▓п©б╘п▒Б┬≥я▒я▐Б√░п▒Б√═Б■─п©б╘п▒Б┬≥ц╥я▐Б√░п▒Б√═Б√└п©б╘п▒Б┬≥Б∙⌡я▐Б√░п▒Б√═Б■─я▐Б√░п▒Б√═Б√▒]
| +/– |
Как уже написали, все пакеты ставятся в /nix/store. Суть установки в пользовательский профиль в том, что генерится новый метапакет user-environment, на который переключается симлинк текущего профиля пользователя /nix/var/nix/profiles/per-user/${username}/profile . В результате этого:
- установленные пакеты защищаются от удаления сборщиком мусора (наподобие добавления в файл world в генте или apt-mark manual в дебиане)
- их бинари добавляются в $PATH пользователя (т. к. симлинки на них собраны в поддиректории bin/ метапакета user-environment, на который ссылается симлинк, который добавлен в $PATH)
По идее, нет проблем лишить непривелигированных пользователей возможности ставить пакеты, или оставить им возможность ставить только из системной коллекции nixpkgs .
| |
|
|
|
5.31, Ordu (ok), 22:57, 31/10/2020 [^] [^^] [^^^] [ответить] [п©б╘п▒Б┬≥Б∙≈ п©б╘п▒Б┬≥Б∙≥п©б╘п▒Б┬≥Б∙⌡п©б╘п▒Б┬≥Б∙▓п©б╘п▒Б┬≥я▒я▐Б√░п▒Б√═Б■─п©б╘п▒Б┬≥ц╥я▐Б√░п▒Б√═Б√└п©б╘п▒Б┬≥Б∙⌡я▐Б√░п▒Б√═Б■─я▐Б√░п▒Б√═Б√▒]
| +/– |
> В нормальных дистрах /home монтируют с опциями nodev,noexec,nosuid специально, чтобы юзвери ничего себе не ставили и не запускали.
Ну и кому они нужны эти "нормальные" дистры? Хрен с ним с запуском скомпилированных бинарей -- не все занимаются разработкой, но ведь даже скрипт себе в $PATH не закинуть, не запустить.
И главное -- ради чего? Чтобы малварь не могла бы выполнить код? У тебя в $HOME есть куча файликов/директорий с именами, начинающимися с точки, ты проверял сколько среди них таких, которые позволяют вписать в них произвольные команды шелла и потом с радостью запускают их?
| |
|
|
|
|
1.16, Аноним (16), 14:51, 29/10/2020 [ответить] [﹢﹢﹢] [ · · · ] [↑] [п©б╘п▒Б┬≥Б∙≈ п©б╘п▒Б┬≥Б∙≥п©б╘п▒Б┬≥Б∙⌡п©б╘п▒Б┬≥Б∙▓п©б╘п▒Б┬≥я▒я▐Б√░п▒Б√═Б■─п©б╘п▒Б┬≥ц╥я▐Б√░п▒Б√═Б√└п©б╘п▒Б┬≥Б∙⌡я▐Б√░п▒Б√═Б■─я▐Б√░п▒Б√═Б√▒]
| +2 +/– |
> Пакеты оформляются в виде контейнеров, содержащих необходимые для работы приложений компоненты.
Не совсем. Пакеты не содержат в себе все зависимости, как в венде, они ссылаются на зависимости из других пакетов. Например, если пакету нужна библиотека zlib, он использует, например, /nix/store/lxbxwg609cw3zby7ba78h0992hp9rcfy-zlib-1.2.11/lib/libz.so. Это, с одной стороны, позволяет точно зафиксировать все зависимости, как в контейтенере. И позволяет одновременно использовать разные версии одного пакета в одной системе. А с другой стороны, в отличие от контейнеров, позволяет разным пакетам ссылаться на один и тот же пакет с зависимостью. Это экономит кучу места на диске и кучу трафика при обновлениях. И контейнеры как таковые не нужны, не надо никуда чрутиться, гораздо удобнее.
| |
|