GNU Guix
![]() | |
最新版 |
1.1.0[1]
/ 2020年4月15日 |
---|---|
リポジトリ | |
プログラミング 言語 | Guile Scheme, C (Nix core) |
ライセンス | GPLv3 |
公式サイト |
guix |
GNU Guixは、クロスプラットフォームのパッケージマネージャで、インスタンス生成とオペレーティングシステム (OS) の管理をUnix系でするためのツールでもある。GuileスキームAPIを持つNixパッケージマネージャに基き、完全にフリーソフトウェアである[2]。伝統的なパッケージマネージャと異なり、GuixはNixのように、ソフトウェアはハッシュによって生成された単一のディレクトリにインストールされるという、純粋に関数的なデプロイのモデルを利用している。それぞれのソフトウェアの依存関係はそれぞれのハッシュに含まれており、依存地獄の問題を解決する[3]。このパッケージ管理に対するアプローチは、より信頼性があり、ポータブルで再現性のあるパッケージを生成することを約束する[4] 。
GNU Guixの開発は、Guixシステムの開発と絡み合っており、これは完全にインストール可能なGNUシステムでLinux-libreカーネルとGNU Shephered initシステムを用いている[5]。
Guixのロールバック機能は、Nixの設計によるもので、これはDebian、Arch Linux、Fedora、CentOS、openSUSEとそれぞれの派生物には見られないものである。
プロジェクトは、ボランティアチームによりインターネットを通じて管理されており、これはメンバーとともにフランスの非営利組織Guix Europeに組み込まれている[6]。
特徴
[編集]以下の特徴はGuixのパッケージ管理機能に関連している。下記のGuixシステムの特徴を参照のこと。
ストア
[編集]Nixの設計を引き継ぎ、パッケージマネージャの内容の大部分は、/gnu/storeディレクトリに保存されている。このディレクトリは、Guixデーモンのみに書き込み許可権限がある。
ガーベジコレクション
[編集]GuixはNixのように、組み込まれたガベージコレクション機能を持っており、これはdead状態のストアのアイテムをlive状態に保つのに役立つ[7].。
プロファイル
[編集]Guixのパッケージは、プロファイル生成を使っており、これはストアアイテムを集め、ユーザが何をインストールしたかを特定するシムリンクの集合である。パッケージがインストール、削除されるたびに毎回、新しい生成が構築される。
ロールバック
[編集]Guixのパッケージは、シムリンクをより早い時期のプロファイル生成に変更することを通じて以前のプロファイル生成に手軽にロールバックすることを可能にする[8]。
環境
[編集]Guixの環境は、ユーザーに複数のプロジェクトの依存でデフォルトのプロファイルに問題を起こされることなく、ソフトウェア開発に必要なパッケージを含む環境に入ることを可能にする[9]。
パック
[編集]Guix packは、ユーザにストアアイテムを複数同時に束ねることを可能にし、Dockerバイナリのイメージや、再配置可能なtarball、squashfsバイナリなどに出力することを可能にする[10]。
グラフ
[編集]Guix packは、ユーザにパッケージとその依存関係の異なったグラフを見ることを可能にする[11]。
Guix System Distribution
[編集]Guix System(以前はGuixSDと呼ばれていた)は、Linuxディストリビューションで、GNU Guixパッケージマネージャを用いて構築されている[12]。このディストリビューションは、宣言的なOSの設定[13]を可能にし、また容易にロールバックできる信頼性のあるシステムをも可能にしている[14]。システムは、GNU Hurdカーネルの開発中のサポートと共に、Linux-libreカーネルを使っている。2015年2月3日、このディストリビューションはFSFのフリーなLinuxディストリビューションのリストに加えられた[15]。
アーキテクチャのサポート
[編集]IA-32、x64、AArch32/64がサポートされており[16]、また2019年4月にはPOWER9のサポートのための作業が進行中である[17]。
機能
[編集]システムサービス
[編集]システムサービスは、Guixシステムの核となる機能で、ユーザに宣言的なデーモンとバックグランドサービスの設定の構成と容易に適切な設定を定義することを可能にする。
GNU Shephred Init system
[編集]Guixシステムは、GNU Shepherdデーモンをinitシステムとして使っており、Guixの開発と乗り合せで行われ、またこのデーモンはGuileで書かれている。これは以前 "dmd"("Daemon managing Daemons"または"Daemons-managing Daemon")として知られていたが、Digital MarsのDコンパイラとの名前の競合を避けるために名称が変更された[18]。
リリースと安定性
[編集]最新のGuixシステムは、不安定版の開発Gitリポジトリにのみあり[19]、これはGuixによって共有されているが、チャンネル機能を使うことで、ユーザや組織は安定版のリリースチャンネルにすることも可能である[20]。
歴史
[編集]GNUプロジェクトは、2012年11月にGNU Guixの最初のリリースを宣言した。これはNixをベースとした機能的なパッケージマネージャで、GuileスキームAPIを提供していた[21]。プロジェクトはGNU GuileのLudovic Courtèsによって2012年6月にスタートされた[22]。2015年8月20日には、GuixがGNU Hurdに移植されたことが宣言された[23]。
関連項目
[編集]脚注
[編集]出典
[編集]- ^ Ludovic Courtès, Marius Bakke (2020年4月15日). “GNU Guix 1.1.0 released”. 2020年4月17日閲覧。
- ^ Functional Package Management with Guix
- ^ Prins, P., Suresh, J. and Dolstra, E., "Nix fixes dependency hell on all Linux distributions," linux.com, December 22, 2008
- ^ Dolstra, E. The Purely Functional Software Deployment Model. PhD thesis, Faculty of Science, Utrecht, The Netherlands. January 2006. ISBN 90-393-4130-3.
- ^ Programming Interface (GNU Guix Reference Manual)
- ^ “guix-europe”. git.savannah.gnu.org. 2019年5月16日閲覧。
- ^ “Invoking guix gc”. gnu.org. 2019年5月16日閲覧。
- ^ “Invoking guix package”. gnu.org. 2019年5月16日閲覧。
- ^ “Invoking guix environment”. gnu.org. 2019年5月16日閲覧。
- ^ “Invoking guix pack”. gnu.org. 2019年5月16日閲覧。
- ^ “Invoking guix graph”. gnu.org. 2019年5月16日閲覧。
- ^ “List of Free GNU/Linux Distributions”. 2015年2月3日閲覧。
- ^ “Using the Configuration System”. gnu.org. 2019年4月27日閲覧。
- ^ “Package Management”. gnu.org. 2019年4月27日閲覧。
- ^ “FSF adds Guix System Distribution to list of endorsed distributions”. Free Software Foundation (2015年2月3日). 2015年2月3日閲覧。
- ^ “Download”. gnu.org. 2019年4月27日閲覧。
- ^ "Patch adding POWER9 cross compile support" (Mailing list). 2019年4月27日閲覧。
- ^ “guix-devel mailing lists”. 2016年11月5日閲覧。
- ^ "Re: We need an RFC procedure" (Mailing list). 2019年4月27日閲覧。
- ^ “Channels”. gnu.org. 2019年4月27日閲覧。
- ^ Courtès, Ludovic (23 November 2012). "Introducing GNU Guix" (Mailing list). gnu-system-discuss.
- ^ Stallman, Richard (5 June 2012). "A GNU Distribution" (Mailing list). gnu-system-discuss.
- ^ Ragkousis, Manolis (20 August 2015). "[GSoC update] Porting Guix to GNU/Hurd" (Mailing list). guix-devel. 2015年8月20日閲覧。