GNU Guixは、
Unix系オペレーティングシステム向けの高度なパッケージマネージャであり、システムの構築や管理を効率化するための強力なツールです。その中核には、Nixから着想を得た関数型プログラミングの原則があり、設定やパッケージのビルドをGuile Schemeで記述できる柔軟性を提供します。
主な特徴
Guixの最大の特徴は、その純粋関数的なデプロイモデルにあります。従来のパッケージマネージャとは異なり、Guixはソフトウェアを暗号学的ハッシュによって一意な
ディレクトリにインストールします。この仕組みにより、依存関係がハッシュに含まれるため、異なるバージョンのソフトウェアが共存でき、依存関係地獄を回避します。結果として、パッケージはよりポータブルで、再現性が向上します。
Guixのパッケージは、Guile SchemeのAPIを用いて定義され、依存関係は「deriviations」と呼ばれる特殊な値を通して言語内で直接追跡されます。不要になったパッケージは
ガベージコレクションの対象となり、ストレージ容量を効率的に管理します。このアプローチにより、システムのアップグレードはアトミックかつ
ロールバック可能になり、システムの安定性が向上します。
ロールバック機能は、GuixがNixから継承した重要な機能の一つです。この機能は、他の
オペレーティングシステムではあまり見られないアプローチですが、Guixでは多くのディストリビューションで利用可能です。複数のユーザーが同じシステム上で、管理者権限なしに安全にソフトウェアをインストールできます。
Guixのパッケージは、`/gnu/store`
ディレクトリに保存されます。この
ディレクトリへの書き込み権限はGuixデーモンのみに限定され、
ファイルシステムは読み込み専用でマウントされます。Guixデーモンは、自身のプライベート名前空間に書き込み可能なストアを再マウントし、パッケージのビルドやSubstituteの取得を行います。この仕組みにより、システムの一貫性が保たれます。
Guixには、
ガベージコレクション機能が内蔵されており、不要になったストアアイテムを自動的に削除します。これにより、ストレージ容量を効率的に管理し、システムのパフォーマンスを維持します。
Guixでは、プロファイル生成を用いて、ユーザーがインストールしたパッケージを管理します。プロファイルは、ストアアイテムへのシンボリックリンクの集合であり、パッケージのインストールや削除のたびに新しい生成が構築されます。この仕組みにより、ユーザーは以前のプロファイル生成に簡単に
ロールバックできます。
その他の機能
Guixの環境機能は、複数のプロジェクトの依存関係によってデフォルトのプロファイルに問題が発生するのを防ぎます。開発に必要なパッケージを含む独立した環境を作成できます。
Guix packは、ストアアイテムをまとめて、
Dockerイメージ、tarball、squashfs
バイナリなどに出力できます。また、パッケージとその依存関係のグラフを視覚化する機能も提供します。
GNU Guix Systemは、Guixを基盤とした
ローリングリリースの
Linuxディストリビューションです。
NixOSがNixをベースとしているのと同様に、Guix SystemはGuixを基盤としています。このシステムは、宣言的なOS設定を可能にし、
ロールバック可能なシステムを容易に実現します。GNU Shepherd initシステムと
Linux-libre
カーネルを利用しており、
GNU Hurdカーネルのサポートも開発中です。Guix Systemは、FSFのフリーな
Linuxディストリビューションリストにも含まれています。
サポートされているアーキテクチャには、
IA-32、x64、AArch32/64があり、POWER9のサポートも進行中です。
システムサービスとGNU Shepherd Init System
Guix Systemの核となる機能は、システムサービスです。これにより、ユーザーはデーモンやバックグラウンドサービスを宣言的に設定できます。Guix Systemは、Guileで書かれたGNU Shepherdデーモンをinitシステムとして利用します。これにより、システムの柔軟性と制御性が向上します。
リリースと安定性
最新のGuixシステムは、開発
Gitリポジトリでのみ利用可能ですが、チャンネル機能を使用することで、ユーザーや組織は安定版のリリースチャンネルを利用できます。
歴史
GNUプロジェクトは、
2012年11月にGNU Guixの最初のリリースを発表しました。これは、Nixをベースにした機能的なパッケージマネージャで、Guile Scheme APIを提供しています。プロジェクトは、
2012年6月にLudovic Courtèsによって開始され、
2015年8月20日にはGuixが
GNU Hurdに移植されました。
Guixは、その数学的なアプローチと純粋関数的なデプロイモデルにより、ソフトウェアの再現性に関する課題に対する有望な解決策として注目されています。オープンソースのコミュニティによって開発され、常に進化し続けています。