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