Package-Management

~/.guix-profile~/.config/guix/current 有什麼區別

  • February 19, 2020

我剛剛在我的 Arch Linux 上安裝了 GUIX,但是我仍然難以理解一些概念。我了解配置文件是從中選擇的軟體包,/gnu/store並且我可以通過 source 來啟用它們<profile-dir>/etc/profile。但是,我不明白為什麼我似乎有兩個“預設”配置文件,作為符號連結儲存在我的主目錄中:

  • ~/.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 的結果是一個~/.config/guix/current 包含最新 Guix 的配置文件。(“呼叫guix pull

這兩個配置文件有什麼區別?為什麼我需要這兩個?我需要在登錄時獲取兩者嗎?

這些配置文件是預設值

將這兩個配置文件與“普通”GUIX 配置文件區別開來的唯一因素是它們是各自 GUIX 命令的預設選項(請參閱此處了解這兩個配置文件的不同之處):

  • ~/.guix-profile是選項的預設guix package選項-p|--profile=
  • ~/.config/guix/current是選項的預設guix pull選項-p|--profile=

如果它們以前不存在,它們是在第一次呼叫各自的伴隨命令時生成的。

但是,如果您願意並且一直使用使用者定義的配置文件,您完全可以不用這兩個配置文件(見下文)

他們的工作不同:提供guix版本本身與提供由管理的其他程序guix

  • 該配置文件~/.config/guix/current提供二進製文件guixguix-daemon. 在預設配置中,此配置文件確定您可以安裝的所有軟體包的最新版本。與 Nix 不同,您可以安裝的軟體包列表與 guix 版本相關。這篇博文解釋了原因。

    • 關於 user root,(符號連結目標)提供的二進製文件/root/.config/guix/current/bin/guix-daemon是系統自動啟動的 GUIX Daemon。它也有一個符號連結/usr/local/bin
  • 該配置文件~/.guix-profile包含您希望它包含的任何包。許多使用者將其包含在他們的 shell 啟動文件中,因此他們擁有不屬於任何其他自動可用的任務特定配置文件的常用程序。

配置文件僅通過 shell 啟動文件集成到您的工作流程中,您可以決定它們是否有效

哪些配置文件與您相關僅由您的.profile(或.bash_profile您使用的任何 shell 初始化文件)確定

如果您不指定任何內容,您將不使用來自和使用的自身guix版本的包,因為GUIX shell 安裝程序腳本會創建一個符號連結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"

您載入一個配置文件,您可以在不使用-p參數的情況下定義/更改它guix package。當然,您也可以在此處載入任何其他配置文件,然後-p如果要更改它,則只需使用該參數即可。許多人使用此配置文件來包含他們經常需要但未分配給任何特定任務工作流的命令。


1如果您想知道為什麼需要在採購之前定義變數,請閱讀原始碼腳本。它將添加到配置文件的連結$PATH,而不是配置文件文件夾本身。這意味著如果您在guix package -u沒有再次獲取配置文件的情況下呼叫,您將自動獲得更新的包版本。

引用自:https://unix.stackexchange.com/questions/561093