我刚刚开始掌握 Nix,如果我错过了文档中问题的答案,我深表歉意。
我想使用 Nix 来设置具有最少库和可执行文件集的安全生产机器。我不希望出现任何编译器或其他构建工具,因为这些可能是安全风险。
当我安装一些包时,它们似乎只依赖于最小的运行时依赖集。例如,如果我安装apache-tomcat-8.0.23
,那么我将获得一个 Java 运行时 (JRE) 和包含 Tomcat 的预构建 JAR 文件。
另一方面,一些包似乎包含一个完整的构建工具链作为依赖项。以另一个基于 Java 的示例为例,当我安装spark-1.4.0
Nix 时,会拉下包含编译器的 Java 开发工具包 (JDK),它还会拉下 Maven 构建工具等。
所以,我的问题如下:
- Nix 包在构建和运行时依赖项之间有什么区别吗?
- 为什么有些包似乎依赖于构建工具,而另一些只需要运行时?这一切都取决于包作者如何包装应用程序吗?
- 如果一个包包含我不想要的构建依赖项,作为操作员,除了为同一个应用程序设计我自己的替代包之外,我能做些什么吗?
非常感谢。