GNU Guix

GNU Guixは、クロスプラットフォームのパッケージマネージャで、インスタンス生成とオペレーティングシステム (OS) の管理をUnix系でするためのツールでもある。GuileスキームAPIを持つNixパッケージマネージャに基き、完全にフリーソフトウェアである。伝統的なパッケージマネージャと異なり、GuixはNixのように、ソフトウェアはハッシュによって生成された単一のディレクトリにインストールされるという、純粋に関数的なデプロイのモデルを利用している。それぞれのソフトウェアの依存関係はそれぞれのハッシュに含まれており、依存地獄の問題を解決する。このパッケージ管理に対するアプローチは、より信頼性があり、ポータブルで再現性のあるパッケージを生成することを約束する 。
GNU Guixの開発は、Guixシステムの開発と絡み合っており、これは完全にインストール可能なGNUシステムでLinux-libreカーネルとGNU Shephered initシステムを用いている。
Guixのロールバック機能は、Nixの設計によるもので、これはDebian、Arch Linux、Fedora、CentOS、openSUSEとそれぞれの派生物には見られないものである。
プロジェクトは、ボランティアチームによりインターネットを通じて管理されており、これはメンバーとともにフランスの非営利組織Guix Europeに組み込まれている。
特徴.
以下の特徴はGuixのパッケージ管理機能に関連している。下記のGuixシステムの特徴を参照のこと。
ストア.
Nixの設計を引き継ぎ、パッケージマネージャの内容の大部分は、/gnu/storeディレクトリに保存されている。このディレクトリは、Guixデーモンのみに書き込み許可権限がある。
ガーベジコレクション.
GuixはNixのように、組み込まれたガベージコレクション機能を持っており、これは"dead"状態のストアのアイテムを"live"状態に保つのに役立つ.。
プロファイル.
Guixのパッケージは、プロファイル生成を使っており、これはストアアイテムを集め、ユーザが何をインストールしたかを特定するシムリンクの集合である。パッケージがインストール、削除されるたびに毎回、新しい生成が構築される。
ロールバック.
Guixのパッケージは、シムリンクをより早い時期のプロファイル生成に変更することを通じて以前のプロファイル生成に手軽にロールバックすることを可能にする。
環境.
Guixの環境は、ユーザーに複数のプロジェクトの依存でデフォルトのプロファイルに問題を起こされることなく、ソフトウェア開発に必要なパッケージを含む環境に入ることを可能にする。
パック.
Guix packは、ユーザにストアアイテムを複数同時に束ねることを可能にし、Dockerバイナリのイメージや、再配置可能なtarball、squashfsバイナリなどに出力することを可能にする。
グラフ.
Guix packは、ユーザにパッケージとその依存関係の異なったグラフを見ることを可能にする。
Guix System Distribution.
"Guix System"（以前は"GuixSD"と呼ばれていた）は、Linuxディストリビューションで、GNU Guixパッケージマネージャを用いて構築されている。このディストリビューションは、宣言的なOSの設定を可能にし、また容易にロールバックできる信頼性のあるシステムをも可能にしている。システムは、GNU Hurdカーネルの開発中のサポートと共に、Linux-libreカーネルを使っている。2015年2月3日、このディストリビューションはFSFのフリーなLinuxディストリビューションのリストに加えられた。
アーキテクチャのサポート.
IA-32、x64、AArch32/64がサポートされており、また2019年4月にはPOWER9のサポートのための作業が進行中である。
機能.
システムサービス.
システムサービスは、Guixシステムの核となる機能で、ユーザに宣言的なデーモンとバックグランドサービスの設定の構成と容易に適切な設定を定義することを可能にする。
GNU Shephred Init system.
Guixシステムは、GNU Shepherdデーモンをinitシステムとして使っており、Guixの開発と乗り合せで行われ、またこのデーモンはGuileで書かれている。これは以前 "dmd"（"Daemon managing Daemons"または"Daemons-managing Daemon"）として知られていたが、Digital MarsのDコンパイラとの名前の競合を避けるために名称が変更された。
リリースと安定性.
最新のGuixシステムは、不安定版の開発Gitリポジトリにのみあり、これはGuixによって共有されているが、チャンネル機能を使うことで、ユーザや組織は安定版のリリースチャンネルにすることも可能である。
歴史.
GNUプロジェクトは、2012年11月にGNU Guixの最初のリリースを宣言した。これはNixをベースとした機能的なパッケージマネージャで、GuileスキームAPIを提供していた。プロジェクトはGNU GuileのLudovic Courtèsによって2012年6月にスタートされた。2015年8月20日には、GuixがGNU Hurdに移植されたことが宣言された。