如何为 NixOS 构建和部署 Keter?
How to build & deploy Keter for NixOS?
这是我的 Keter 分支,其中包含通过 cabal2nix
生成的 *.nix
文件:https://github.com/bsima/keter/tree/nix
我在我的开发机器(NixOS 17.09)上做了 nix-build shell.nix
,然后用 nix-copy-closure
把它放在我的 Digital Ocean 上的 VPS 上(也是 NixOS 17.09,通过 nix-infect ).
我创建了一个启动正常的 systemd 服务,但 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
问题,或者 this issue(我不太明白,所以我假设它更可能是一个 $PATH
问题).
我必须在 Keter 的 default.nix
中做些什么才能帮助它在目标机器的 $PATH
上找到 exec
吗?我还缺少什么?
exec
实际上是 shell 内置的,而不是 coreutils
命令。实际上 createProcess 错误消息令人困惑。找不到的命令名出现在createProcess:
之前。所以问题不是 pprjam
找不到 exec
(作为命令),而是 createProcess
检测到失败的 exec
系统调用。
您的服务器上似乎缺少 /opt/keter/temp/pprjam-0/dist/bin/pprjam
,或者运行时链接程序找不到 pprjam
的依赖项。如果是后者,您可以通过扩展 Keter 服务的 LD_LIBRARY_PATH
环境变量来修复它。
这是我的 Keter 分支,其中包含通过 cabal2nix
生成的 *.nix
文件:https://github.com/bsima/keter/tree/nix
我在我的开发机器(NixOS 17.09)上做了 nix-build shell.nix
,然后用 nix-copy-closure
把它放在我的 Digital Ocean 上的 VPS 上(也是 NixOS 17.09,通过 nix-infect ).
我创建了一个启动正常的 systemd 服务,但 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
问题,或者 this issue(我不太明白,所以我假设它更可能是一个 $PATH
问题).
我必须在 Keter 的 default.nix
中做些什么才能帮助它在目标机器的 $PATH
上找到 exec
吗?我还缺少什么?
exec
实际上是 shell 内置的,而不是 coreutils
命令。实际上 createProcess 错误消息令人困惑。找不到的命令名出现在createProcess:
之前。所以问题不是 pprjam
找不到 exec
(作为命令),而是 createProcess
检测到失败的 exec
系统调用。
您的服务器上似乎缺少 /opt/keter/temp/pprjam-0/dist/bin/pprjam
,或者运行时链接程序找不到 pprjam
的依赖项。如果是后者,您可以通过扩展 Keter 服务的 LD_LIBRARY_PATH
环境变量来修复它。