web-dev-qa-db-ja.com

`〜/ .guix-profile`と`〜/ .config / guix / current`の違いは何ですか

Arch Linuxの上にGUIXをインストールしたところですが、いくつかの概念を理解するのはまだ困難です。 profile/gnu/storeからのパッケージの選択であり、<profile-dir>/etc/profileを入手することでそれらを有効にできることを理解しています。ただし、ホームディレクトリにシンボリックリンクとして保存されている2つの「デフォルト」プロファイルがあるように見える理由がわかりません。

  • ~/.guix-profile -> /var/guix/profiles/per-user/user/guix-profile
  • ~/.config/guix/current -> /var/guix/profiles/per-user/user/current-guix

いくつかの情報は見つかりましたが、十分ではありませんでした。

.guix-profile

必要なロールを割り当てることができます。通常は、常に使用するパッケージのマニフェストをインストールします。

または、数日間以上使用する使い捨てパッケージの場合は、「マニフェストレス」のままにしておくこともできます。この方法により、guix install package-fooおよびguix upgrade package-barを実行するのが便利になります( GUIXクックブックから

.config/guix/current

Guix pullを実行した結果は、最新のGuixを含む~/.config/guix/currentで利用可能なプロファイルです。 ( "guix pull"の呼び出し

これら2つのプロファイルの違いは何ですか?なぜこれら2つが必要なのですか?ログイン時に両方を調達する必要がありますか?

2
akraf

これらのプロファイルはデフォルト値です

これら2つのプロファイルを「通常の」GUIXプロファイルと区別する唯一の点は、それらがそれぞれのGUIXコマンドのデフォルトオプションであるということです(方法については ここ を参照)これら2つは異なります):

  • ~/.guix-profileguix packageオプションのデフォルトオプションです-p|--profile=
  • ~/.config/guix/currentguix pullオプションのデフォルトオプションです-p|--profile=

それらが以前に存在しなかった場合、それらはそれぞれの関連コマンドの最初の呼び出しで生成されます。

ただし、ユーザー定義のプロファイルを常に使用したい場合は、これら2つのプロファイルなしで完全に実行できます(以下を参照)。

それらは仕事が異なります。guixバージョン自体を提供するのと、guixによって管理される他のプログラムを提供するのです。

  • プロファイル~/.config/guix/currentは、バイナリguixおよびguix-daemonを提供します。デフォルトの構成では、このプロファイルによって、インストールできるすべてのパッケージの最新バージョンが決まります。インストールできるパッケージのリストは、Nixとは異なり、guixバージョンに関連付けられています。 このブログ投稿で理由を説明します。

    • ユーザーrootに関して、/root/.config/guix/current/bin/guix-daemon(のシンボリックリンクターゲット)によって提供されるバイナリは、システムによって自動的に開始されるGUIXデーモンです。また、/usr/local/binにシンボリックリンクがあります。
  • プロファイル~/.guix-profileには、含めたいパッケージが含まれています。多くのユーザーはシェルのスタートアップファイルにそれを含めているので、自動的に利用できる他のタスク固有のプロファイルに属さない頻繁に使用されるプログラムを持っています。

プロファイルはシェル起動ファイルを介してのみワークフローに統合され、それらが有効かどうかを決定できます

自分に関連するプロファイルは、.profile(または.bash_profileまたは使用するシェル初期化ファイル)によってのみ決定されます

何も指定しない場合、 GUIXシェルのため、guixのパッケージとguixが使用するroot自体のバージョンは使用されません。インストーラスクリプト はシンボリックリンクを作成します/usr/local/bin/guix -> /var/guix/profiles/per-user/root/guix

.profile(または類似の)に含める場合1

GUIX_PROFILE=$HOME/.config/guix/current; 
source "$GUIX_PROFILE/etc/profile"

独自のバージョンのGUIXとパッケージバージョンを使用できます。

含める場合

GUIX_PROFILE="$HOME/.guix-profile";
source "$GUIX_PROFILE/etc/profile"

-pguix packageパラメータを使用せずに定義/変更できるプロファイルをロードします。もちろん、ここで他のプロファイルをロードすることもできます。変更する場合は、-pパラメーターを使用する必要があります。多くの人がこのプロファイルを使用して、必要なコマンドを含めますが、これらのコマンドはタスク固有のワークフローに割り当てられていません。


1 ソーシングする前に変数を定義する必要がある理由がわからない場合は、ソースのスクリプトを読んでください。次に、プロファイルへのリンクを$PATHに追加しますが、プロファイルフォルダ自体は追加しません。これは、プロファイルを再度ソースせずにguix package -uを呼び出すと、更新されたパッケージバージョンを自動的に取得することを意味します。

3
akraf