Я только начинаю разбираться с Nix, поэтому извиняюсь, если я пропустил ответ на свой вопрос в документах.
Я хочу использовать Nix для установки защищенной производственной машины с минимальным набором библиотек и исполняемых файлов. Я не хочу, чтобы какие-либо компиляторы или другие инструменты сборки присутствовали, потому что это могут быть риски безопасности.
Когда я устанавливаю некоторые пакеты, кажется, что они зависят только от минимального набора зависимостей времени выполнения. Например, если я устанавливаю apache-tomcat-8.0.23
, тогда я получаю Java runtime (JRE) и готовые JAR файлы, содержащие Tomcat.
С другой стороны, некоторые пакеты, как представляется, включают в себя полную цепочку построения в качестве зависимостей. Взяв другой пример на основе Java, когда я устанавливаю spark-1.4.0
Nix вытаскивает набор разработчика Java (JDK), который включает компилятор, а также вытаскивает инструмент сборки Maven и т.д.
Итак, мои вопросы таковы:
- Делают ли пакеты Nix какое-либо различие между зависимостями между строкой и временем выполнения?
- Почему некоторые пакеты зависят от инструментов сборки, тогда как другим требуется только время выполнения? Все дело в том, как автор пакета завершил приложение?
- Если пакет содержит зависимостей сборки, которые я не хочу, есть ли что-то, что я, как оператор, могу сделать с этим, кроме разработки моей собственной альтернативной упаковки для того же приложения?
Большое спасибо.