GUIX利用ガイド

検証環境

Operating System: Kubuntu 20.04
カーネルバージョン: 5.4.0-29-generic
OS の種類: 64-bit
プロセッサ: 4 × Intel® Core™ i5-4278U CPU @ 2.60GHz
メモリ: 15.5 GiB of RAM

インストール

GUIXのインストールには幾つかの方法があるが、標準的なLinux環境ではシェルインストーラスクリプトを使用するのが便利である。 このインストーラはダウンロードしたパッケージ郡をPGPで検査するので、実行前にGUIXの開発者のPGP公開鍵をインポートしておく必要がある。 なお、検証は管理者権限で行われるのでrootユーザのキーチェインにPGP公開鍵を保存しておく。

$ wget -qO - 'https://sv.gnu.org/people/viewgpg.php?user_id=15145' | sudo gpg --import -

管理者権限でインストーラーを実行させる。これは/gnuをパッケージの保存場所に使ったり、/etcに設定ファイルを保存することから必要な権限である。

$ wget -qO - 'https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh' | sudo sh -

これでLinux環境に各種ファイルが設置され、GUIX用のユーザとデーモンが作成される。 最後に~/.bashrc~/.zshrcに以下を追記して再読み込みする。

echo 'source $HOME/.guix-profile/etc/profile' >> ~/.bashrc

なお、guile: warning failed to install localeと表示された場合は、下記を参考に対応する。

チャンネル

GUIXの公式のリポジトリはCIサーバがソースコードをダウンロードしビルドできるものしか登録できないので、 各ソフトウェア開発チームが配布している公式のビルド済みバイナリは登録できない。そこで筆者も自分用にパッケージを配布するチャンネルを用意した。 このチャンネルはx86_64のLinux環境でしかサポートしておらずRUNPATHの設定が怪しいのでGUIX SDでは動作しない恐れがあることに注意して欲しい。このチャンネルは~/.config/guix/channels/に以下を追記してguix pullを実行することで有効化される。

(cons* (channel
        (name 'vanilla)
        (url "https://github.com/nzt/guix-vanilla"))
       %default-channels)

トラブルシューティング

以下では日本語環境でGUIXを使用する際のよくある問題とその解決方法を示す。

  1. コマンドguixを実行するとguile: warning: failed to install localeと表示される。

    上記のようなエラーが出るときは、guixでglibc-utf8-localesではなく glibc-localesをインストール し、 環境変数GUIX_LOCPATHを設定する。 これは、glibc-utf8-localesにはUTF-8の全てのロケールがインストールされるのではなく、欧米圏の限られたロケールしかインストールされないことから、 glibc-localesをインストールする必要がある。しかし、警告と同時に表示されるヒントでは、 glibc-utf8-localesをインストールするよう促されているため、日本語環境を使用しているユーザーは注意が必要である。

    $ guix install glibc-locales
    $ echo 'export GUIX_LOCPATH="$HOME/.guix-profile/lib/locale"' >> $HOME/.bashrc
    $ source $HOME/.bashrc
    
  2. コマンドguix isntallを実行するとsubstitute: /gnu/store/29jhbbg1hf557x8j53f9sxd9imlmf02a-bash-minimal-5.0.7/bin/bash: warning: setlocale: LC_ALL: cannot change locale (en_US.utf8)と表示される。

    上記のエラーは、guixがパッケージをインストールする際に一時的に管理者権限に昇格してパッケージをダウンロードすることが原因である。 このとき、管理者権限にGUIX用のロケールが設定されていない場合GUIXは管理者rootユーザに対して上記のエラーを出力する。そのエラーが 伝搬し一般ユーザである実行ユーザにも表示されている。従って、rootユーザに対してロケールをインストールすれば、この問題は解決する。

    $ sudo -i #rootユーザになる
    % guix install glibc-locales
    % echo 'export GUIX_LOCPATH="$HOME/.guix-profile/lib/locale"' >> $HOME/.bashrc
    % source $HOME/.bashrc
    
  3. GUIのアプリケーションで文字化けする。

    GUIX内でのフォントのキャッシュが更新されていないことが原因です。したがって fontcnofigと適当なフォントをインストール してフォントのキャッシュを更新することで解決します。

    $ guix instlal fontcnofig font-google-noto
    $ source ~/.guix-profile/etc/profile
    $ fc-cache -fv