Я пытаюсь написать деривацию, которая установит несколько исполняемых файлов.Я могу сделать это довольно легко с помощью symlinkJoin
{pgm-a, pgm-b, symlinkJoin}: symlinkJoin {
name = "pgm-env";
paths = [pgm-a,pgm-b]; }
Однако, если pgm-a
или pgm-b
уже установлены, я получаю ошибку, связанную с конфликтующими пакетами ...
...'<pgm-a>/bin/pgm-a' and '<pgm-env>/bin/pgm-a' have the same priority 5; use 'nix-env --set-flag priority NUMBER INSTALLED_PKGNAME' ...
Есть ли способ сделать набор исполняемых файлов доступным в среде, но добавить в среду только то, что было нужно (или иным образом обойти эту ошибку)?
Некоторые сведения: я начал курировать частный репозиторий длямоя лабораторияМы настраиваем виртуальные сети, устанавливаем некоторое программное обеспечение, проводим некоторые тесты, промываем и повторяем.Никто, кроме меня, не является пользователем Nix, поэтому я хочу, чтобы часть nix была как можно более низкой - я не хочу, чтобы пользователь устанавливал флаг приоритета, и при этом я не хочу, чтобы он использовал nix-shell
.Все они привыкли делать apt-get install ...
, поэтому я планирую сделать так, чтобы вместо них они выполняли nix-env -i
и предоставляли пакеты типа ourExperiment-x
, которые в большинстве случаев позволяют им правильно настроить виртуальные машины.