Nixは、暗号学的ハッシュを用いて生成された一意のディレクトリにソフトウェアをインストールする、
クロスプラットフォームのパッケージ管理システムです。このシステムは、パッケージのハッシュ値が依存関係を考慮して生成されるため、複数バージョンの依存関係を同時にインストールする必要がなく、依存関係の問題を効果的に解決するとされています。従来のパッケージ管理システムと比較して、Nixはより信頼性が高く、再現性があり、移植性に優れたパッケージを提供すると言えます。
Nixパッケージは、パッケージ管理のために特別に設計された遅延評価を行う関数型
プログラミング言語で定義されます。この言語では、依存関係は「derivations」と呼ばれる中間形式を通じて明確に追跡されます。Nix環境は参照を自動的に追跡するため、あるパッケージに依存する他のパッケージが存在しない場合、そのパッケージは未使用としてガベージコレクションの対象となります。さらに、Nixのすべてのアップグレードはアトミックに行われ、効率的にロールバックできることが保証されています。これは、ストレージ容量が増加することを意味しますが、システムの安定性を高める上で重要な要素です。この機能により、複数のユーザーが管理者権限なしで同じシステムに安全にソフトウェアをインストールすることも可能になります。
Nixは
LinuxとmacOSの両方に対応しており、既存のパッケージ管理システムと併用しても、ソフトウェアを安全にインストールすることができます。この柔軟性により、ユーザーは既存の環境を大きく変更することなく、Nixの利点を享受できます。
また、Nixは
欧州原子核研究機構(CERN)のLHCb検出器でソフトウェアのパッケージングと配布に使用されており、その信頼性と効率性が実証されています。
NixOS
NixOSは、Nixパッケージ管理システムを基盤とする
Linuxディストリビューションです。NixOSは、システムのソフトウェア管理にNixを使用し、一貫性と再現性の高い環境を提供します。これにより、システムの構成管理が大幅に簡素化され、より安定した運用が可能になります。
Nixpkgs
Nixpkgsは、Nixパッケージ管理システム上に構築された、大規模なパッケージ
リポジトリです。Repologyのデータによると、2023年3月の時点で、Nixpkgsには80,000を超えるパッケージが含まれており、他の多くのパッケージ
リポジトリよりも最新のパッケージが豊富に揃っています。Nixpkgsがサポートする主なアーキテクチャは、x86_64-linux、aarch64-linux、x86_64-darwin、aarch64-darwinです。
これらのアーキテクチャ向けのパッケージは、Hydraと呼ばれる
継続的インテグレーションサービスを通じて定期的にビルドされ、その結果は公開バイナリキャッシュにアップロードされます。Nixがパッケージをインストールする際、ローカルでビルドする代わりに、まずこのキャッシュをチェックし、利用可能な場合はそこからダウンロードします。これにより、パッケージのインストールプロセスが高速化され、ユーザーはより効率的にソフトウェアを利用できます。
Nixpkgsは、
GitHub上の単一のGit
リポジトリで開発されています。この
リポジトリには、パッケージだけでなく、NixOSの
ソースコードも含まれており、開発コミュニティによる継続的な改善が行われています。
関連項目
- - GNU Guix - 設定とカスタマイズにGNU Guileを使用する別の宣言的なパッケージ管理システム
- - Maak - 複雑なソフトウェアシステムを構築するために設計されているmakeのようなビルド自動化ユーティリティ
- - ランブック・オートメーション
外部リンク