如何在 nix build shell 中设置 ulimit?
How do I set the ulimit in a nix build shell?
我正在尝试为 nix 安装 certbot 包,但在测试期间每次都失败,因为测试达到了系统上的打开文件限制。我已经修改了 certbot 安装脚本,足以打印出 patchPhase
开头的 ulimit 并发现允许打开文件的最大数量为 256。但是,在我所在的 shell执行 nix-shell
或 nix-env
,我的 ulimit
(硬和软)设置为 100000。
我怎样才能将该限制传播到 certbot 构建过程?我想避免尝试弄清楚如何修改 certbot 使用的 python 构建脚本。
运行 Bash shell 在 OSX 10.13.
在 certbot.nix
的 patchPhase
节中手动提高 ulimit。事实证明,此更改会传播到 certbot 构建脚本中的其余阶段。
buildInputs = [ dialog ] ++ (with python2Packages; [ nose mock gnureadline ]);
patchPhase = ''
ulimit -n 8196
substituteInPlace certbot/notify.py --replace "/usr/sbin/sendmail" "/run/wrappers/bin/sendmail"
substituteInPlace certbot/util.py --replace "sw_vers" "/usr/bin/sw_vers"
'';
postInstall = ''
我会提交补丁到 nixpkgs
。
我正在尝试为 nix 安装 certbot 包,但在测试期间每次都失败,因为测试达到了系统上的打开文件限制。我已经修改了 certbot 安装脚本,足以打印出 patchPhase
开头的 ulimit 并发现允许打开文件的最大数量为 256。但是,在我所在的 shell执行 nix-shell
或 nix-env
,我的 ulimit
(硬和软)设置为 100000。
我怎样才能将该限制传播到 certbot 构建过程?我想避免尝试弄清楚如何修改 certbot 使用的 python 构建脚本。
运行 Bash shell 在 OSX 10.13.
在 certbot.nix
的 patchPhase
节中手动提高 ulimit。事实证明,此更改会传播到 certbot 构建脚本中的其余阶段。
buildInputs = [ dialog ] ++ (with python2Packages; [ nose mock gnureadline ]);
patchPhase = ''
ulimit -n 8196
substituteInPlace certbot/notify.py --replace "/usr/sbin/sendmail" "/run/wrappers/bin/sendmail"
substituteInPlace certbot/util.py --replace "sw_vers" "/usr/bin/sw_vers"
'';
postInstall = ''
我会提交补丁到 nixpkgs
。