Монтирование одного и того же каталога / nix на нескольких машинах

Я хочу последовательно устанавливать программное обеспечение с помощью диспетчера пакетов nix на нескольких машинах openSUSE (разных версий) с одинаковой архитектурой. Я не являюсь пользователем root ни в одной из систем, но хотел бы убедить нашего системного администратора установить nix в многопользовательском режиме на всех машинах, использующих сетевое подключение.

  • Можно ли смонтировать один и тот же каталог /nix на всех машинах и запустить nix в многопользовательском режиме на всех этих машинах?

  • Будет ли nix-env -i мешать работе других машин?

  • Будет ли nix-env -i xxx устанавливать xxx в профили пользователей всех машин или только на машине, на которой выполнялась команда? А как насчет установленных root?

  • Учитывает ли сборка мусора на одной машине программное обеспечение, установленное на других машинах?


nix
person knedlsepp    schedule 23.12.2015    source источник


Ответы (1)


  1. можно смонтировать хранилище Nix на нескольких машинах для совместного использования двоичных файлов между множеством хостов с похожей архитектурой. Если /nix доступен на всех этих машинах, то каждый из них может использовать установленные пакеты почти так же, как если бы они были установлены локально.

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

  2. nix-env -i - и все остальные nix-xxx команды являются общими - синхронизировать доступ ко всем ресурсам в /nix/store и /nix/var, чтобы несколько выполняемых операций не мешали друг другу (при условии, что файловая система обеспечивает надежную синхронизацию). Если один пользователь запускает nix-env -i на двух машинах одновременно, то он, очевидно, попадет в состояние гонки, потому что одна из двух команд будет нейтрализовать действие другой. Это явление происходит точно так же, когда вы запускаете две nix-env -i команды одновременно на одной машине, так что это не проблема, специфичная для общего хранилища.

  3. nix-env -i изменяет пользовательскую среду на всех хостах одновременно. Профиль пользователя ~foo/.nix-profile - это просто символическая ссылка на общее хранилище по адресу /nix/var/nix/profiles/per-user/foo/profile, поэтому изменения этого профиля, сделанные на одном компьютере, будут видны и на всех других компьютерах. root в этом отношении ничем не отличается от любого другого пользователя.

  4. Да, nix-collect-garbage будет нормально работать на любой из машин, на которых имеется общий доступ к магазину. Поскольку профили пользователей также являются общими, полный график использования / зависимостей виден инструменту, и ни один путь к хранилищу никогда не будет собираться сборщиком мусора, на который по-прежнему ссылается профиль пользователя.

    Другое дело, временные среды, подобные тем, которые созданы для nix-shell или nix-build. Nix записывает существование этих сред, создавая символические ссылки с /nix/var/nix/gcroots на соответствующий путь на локальном жестком диске, то есть на место, где находится временная среда. Такая среда считается мертвой, если эта символическая ссылка становится устаревшей, то есть если реальный путь среды Nix исчезает. Теперь, если пользователь входит в nix-shell среду на компьютере A, тогда в /nix/var/nix/gcroots будет создана символическая ссылка, указывающая, скажем, на /run/user/1000/nix-shell-environment-1. Однако сборщик мусора, работающий на машине B, не найдет этот путь и будет считать среду мертвой, поэтому удаляет символическую ссылку из /nix/var/nix/gcroots и пути к базовым хранилищам из /nix/store. В этом случае активная nix-shell среда, запущенная на A, внезапно перестанет работать.

person Peter Simons    schedule 05.01.2016
comment
Большое спасибо за ваш подробный ответ! Я очень ценю ваши усилия! - person knedlsepp; 05.01.2016