Table of Contents
GuixとGuixSDの日本語の情報がほとんどありません。それなら作ればいいとい うことでこ のサイトを作りました。
1 GNU Guixパッケージマネージャーとは
Guixは、Nixパッケージマネージャーをベースに作られて、従来のパッケージマネー ジャーとは大分違います。
1.1 Guixパッケージマネージャーの特徴(guix manual)
パッケージ(プログラム、アプリケーション)はすべて/gnu/store以下にイ ンストール される。
例: /gnu/store/xxx-package-1.2 (xxx: base32文字列)
ユーザーは自身のプロファイル(profile)を持ち、インストールしたパッケー ジのリンク がユーザープロファイルに作成される。例: ~/.guix-profile
この仕組みにより、ユーザー毎に異るバージョンの同じアプリケーション をインストー ルして使うことが出来、インストールは一般ユーザー権限で 行える。
パッケージの管理は、guix packageコマンドで行う。
a. インストール: guix package –install=package… or -i package…
b. 削除: guix package –remove=package… or -r package…
c. アップグレード: guix package –upgrade[=regex…] or -r [regex…]
パッケージのインストール、削除、アップグレード処理はトランザクショ ン (transaction)として処理されるので、途中のエラーや電源喪失の影響 が残ることはな い。
また、これらのトランザクション処理は、ロールバック可能で、たとえば アップグレー ドしたアプリーケーションの以前のバージョンを使いたいと き、以前のプロファイル に戻ることで可能になる。 ユーザープロフィル のロールバックは、システム定義(system configuration on GuixSD)にお いても可能で、これについてはGuixSDの紹介のところで書く。
ユーザープロフィルにリンクがなくなった/gnu/store以下のパッケージ類 は、ガベー ジコレクト(guix gc)出来る。
また、特定の世代(generation)のユーザープロファイルを指定してガベー ジコレクト することも出来る。
- Guixによるパッケージ管理は関数的で、その意味は関数の入力として、ス クリプト (Guile Schemeで書かれたパッケージ定義)と、コンパイラーやラ イブラリーを与える と結果としてパッケージが出力され、同じ入力なら同 じ結果が出力され、そのビルド 環境の外から、結果を変更することは出来 ないということ。
- guix packageコマンドはすでにビルドされたバイナリーパッケージ (Substitutes) があれば、それをダウンロードし/gnu/store以下に展開す る。バイナリーパッケージ がなければソースをダウンロードしてビルドす る。
- guix本体も、guix pullを実行することでgit repositoryから最新のソース をダウンロー ドしてビルドされる。
Wara-test ダウンロードwara-base-170127-x86_64.iso
2 GuixSDディストリビューション
2.1 全てがフリーソフトウェア
- コアGNUパッケージ: GNU libc, GCC, Binutils …
- 多くのGNUパッケージとnon-GNUパッケージ(2019年1月31日現在 9046パッケージ)
2.2 インストール方法
- インストールメディア(DVD)から行う方法と、既存のLinuxディストリビュー ションに guixパッケージマネージャーをインストールしてからsystem configurationする方法 がある。
- 後者の場合、元のLinuxディストリビューションと共存することも可能(未確認)。
3 利用可能なプラットホーム
- x8664-linux: intel/AMD x8664 architecture
- i686-linux: intel 32-bit architecture(IA32)
- armhf-linux: ARMv7-A architecture
- aarch64-linux: little-endian 64-bit ARMv8-A processors
- mips64el-linux: little-endian 64-bit MIPS processors