我刚开始学习Nix,如果我在文档中错过了对我的问题的回答,请谅解。
我想使用Nix设置一个安全的生产环境,只包含最少量的库和可执行文件。因为这些可能会存在安全风险,所以我不想要任何编译器或其他构建工具。
当我安装一些软件包时,似乎它们仅依赖于最少量的运行时依赖项。例如,如果我安装apache-tomcat-8.0.23
,那么我将得到Java运行时(JRE)和组成Tomcat的预编译JAR文件。
另一方面,有些软件包似乎在其依赖项中包括完整的构建工具链。以另一个基于Java的例子为例,当我安装spark-1.4.0
时,Nix会拉取包含编译器的Java开发工具包(JDK),还会下载Maven构建工具等。
因此,我的问题如下:
- Nix软件包是否区分构建和运行时依赖关系?
- 为什么某些软件包似乎依赖于构建工具,而其他软件包仅需要运行时?这是否完全取决于软件包作者如何打包应用程序?
- 如果一个软件包包含我不想要的构建依赖项,作为操作者,除了设计自己的替代包装方式之外,我还能做些什么吗?
非常感谢。
exec
动态执行的路径?或者是通过生成的配置文件存储另一个软件包二进制文件的路径? - CMCDragonkaimakeWrapper
),或者显式地替换可执行调用。 - CMCDragonkai