私は Nix を理解し始めたばかりなので、ドキュメントの質問への回答を見逃していたら申し訳ありません。
Nix を使用して、ライブラリと実行可能ファイルの最小限のセットで安全な運用マシンをセットアップしたいと考えています。セキュリティ上のリスクになる可能性があるため、コンパイラやその他のビルド ツールは存在させたくありません。
いくつかのパッケージをインストールすると、実行時の依存関係の最小セットのみに依存しているように見えます。たとえば、インストールするapache-tomcat-8.0.23
と、Java ランタイム (JRE) と、Tomcat を構成するビルド済みの JAR ファイルが取得されます。
一方、一部のパッケージには、依存関係として完全なビルド ツールチェーンが含まれているようです。別の Java ベースの例を挙げると、spark-1.4.0
Nix をインストールすると、コンパイラを含む Java 開発キット (JDK) がプルダウンされ、Maven ビルド ツールなどもプルされます。
だから、私の質問は次のとおりです。
- Nix パッケージは、ビルドとランタイムの依存関係を区別しますか?
- 一部のパッケージはビルド ツールに依存しているように見えるのに、他のパッケージはランタイムのみを必要とするのはなぜですか? これはすべて、パッケージ作成者がアプリケーションをどのようにまとめたかにかかっているのでしょうか?
- パッケージに不要なビルド依存関係が含まれている場合、同じアプリケーション用に独自の代替パッケージを設計する以外に、オペレーターとしてできることはありますか?
どうもありがとう。