1

通过覆盖 buildInputs 将运行时依赖项添加到包会导致包重新构建。有没有一种简单的方法可以在不重新编译的情况下将运行时依赖项注入包中?

所以基本上将 package/bin 添加到 PATH 并将 package/lib 添加到 LD_LIBRARY_PATH

4

1 回答 1

0

如果我正确理解您想要调整运行Nix 安装的应用程序时使用的环境,而不是构建它时使用的环境,那么我知道的一种方法如下。通过使用它,您实际上创建了一个包装脚本,它覆盖了“默认命令”。因此,类似于创建自定义~/bin/vim脚本,它添加了一些选项/环境覆盖到默认的 vim 二进制文件,它在脚本中使用“硬编码原始路径”调用。

nixpkgs 中的一个示例是 vimutils.vimWithRC 如何使用自定义脚本覆盖vim命令。为了您自己的使用,您可以或多或少地编写如下内容:

with import <nixpkgs> {};

writeScriptBin "vim" ''
  #!/usr/bin/env bash
  export PATH=package/bin:$PATH   # whatever you like; I've added what you asked for
  export LD_LIBRARY_PATH=package/lib:$LD_LIBRARY_PATH
  ${vim}/bin/vim --my-options "$@"
'';

如果你把它放进去my-vim.nix,你应该能够安装它:

$ nix-env -e vim   # REMOVE NORMAL VIM. I think this should be done first to avoid conflict
$ nix-env -i -f my-vim.nix

希望它能够为您工作并“覆盖”默认的vim。

免责声明:对不起,我实际上并没有以这种确切的形式对其进行过测试。不幸的是,此时手边没有 Nix 控制台。

于 2016-07-21T18:48:40.530 回答