如何建立&为NixOS部署Keter?

时间:2018-02-03 19:53:28

标签: haskell nixos keter

以下是我通过*.nix生成的cabal2nix文件的Keter分支:https://github.com/bsima/keter/tree/nix

我在我的开发机器上做了nix-build shell.nix(NixOS 17.09),然后使用nix-copy-closure将它放在我的数字海洋VPS(也是NixOS 17.09,通过nix-infect)上。

我创建了一个系统服务,它启动得很好,但是在尝试为服务器分叉进程后Keter死了:

2018-02-03 19:34:03.21: Data.Conduit.Process.Unix.monitorProcess: /opt/keter/temp/pprjam-0/dist/bin/pprjam: createProcess: runInteractiveProcess: exec: does not exist (No such file or directory)

找不到exec,我认为coreutils应该是coreutils的一部分。我怀疑environment.systemPackages是否遗失,但万一我将其放入我的$PATH并重建,但它仍然无效。

因此,我认为这是一个$PATH问题,或this issue(我不太明白,所以我认为它更可能是default.nix问题)。

为了帮助它在目标机器的exec上找到$PATH,我是否需要在Keter test中做些什么?我还缺少什么?

1 个答案:

答案 0 :(得分:1)

exec实际上是一个内置的shell,而不是coreutils命令。实际上createProcess错误消息令人困惑。无法找到的命令名在createProcess:之前。所以问题不是pprjam找不到exec(作为命令),而createProcess检测到失败的exec系统调用。

您的服务器上似乎缺少/opt/keter/temp/pprjam-0/dist/bin/pprjam,或者运行时链接程序找不到pprjam的依赖项。如果是后者,您可以通过扩展Keter服务的LD_LIBRARY_PATH环境变量来修复它。