【发布时间】:2019-09-24 19:31:27
【问题描述】:
我正在尝试编写一个派生程序来安装一些可执行文件。我可以使用 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' ...
有没有办法让一套可执行文件在环境中可用,但只会向环境中添加所需的内容(或以其他方式规避此错误)?
一些背景:
我已经开始为我的实验室策划一个私人存储库。我们设置 VM 网络,安装一些软件,进行一些测试,冲洗并重复。除了我之外,没有人是 Nix 用户,所以我想让 nix 部分尽可能低调——我不希望用户必须设置优先级标志,也不想让他们使用nix-shell。他们都习惯于使用apt-get install ...,所以我的计划是让他们改为使用nix-env -i,并提供像ourExperiment-x 这样的软件包,让他们大部分时间都能正确配置虚拟机。
【问题讨论】:
标签: nix