`~/.guix-profile` 和 `~/.config/guix/current` 有什么区别

akr*_*raf 4 package-management guix

我刚刚在我的 Arch Linux 上安装了 GUIX,但是,我仍然很难理解一些概念。我知道配置文件是从中选择的包/gnu/store,我可以通过获取<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-fooguix upgrade package-bar来自 GUIX 说明书

.config/guix/current

运行 guix pull 的结果是一个~/.config/guix/current 包含最新 Guix的配置文件。(“调用guix pull

这两个配置文件有什么区别?为什么我需要这两个?我是否需要在登录时同时提供两者?

akr*_*raf 5

这些配置文件是默认值

将这两个配置文件与“普通”GUIX 配置文件区分开来的唯一原因是它们是各自 GUIX 命令的默认选项(有关这两个配置文件的不同之处,请参见此处):

  • ~/.guix-profile是选项的默认guix package选项-p|--profile=
  • ~/.config/guix/current是选项的默认guix pull选项-p|--profile=

如果它们之前不存在,它们会在第一次调用它们各自的伴随命令时生成。

但是,如果您愿意并始终使用用户定义的配置文件,则完全可以不用这两个配置文件(见下文)

他们的工作不同:提供guix自己的版本与提供由管理的其他程序guix

  • 配置文件~/.config/guix/current提供二进制文件guixguix-daemon. 在默认配置中,此配置文件确定您可以安装的所有软件包的最新版本。与 Nix 不同,您可以安装的软件包列表与 guix 版本相关联。这篇博文解释了原因。

    • 关于用户root,由(符号链接目标)提供的二进制文件/root/.config/guix/current/bin/guix-daemon是系统自动启动的 GUIX 守护进程。它也有一个符号链接/usr/local/bin
  • 配置文件~/.guix-profile包含您希望它包含的任何包。许多用户将它包含在他们的 shell 启动文件中,因此他们有不属于任何其他任务特定配置文件的常用程序自动可用。

配置文件仅通过 shell 启动文件集成到您的工作流程中,您可以决定它们是否有效

哪些配置文件与您相关仅由您的.profile(或.bash_profile您使用的任何 shell 初始化文件)决定

如果不指定任何内容,则不会使用来自guixguix自身版本的软件包root,因为GUIX shell 安装程序脚本会创建一个符号链接/usr/local/bin/guix -> /var/guix/profiles/per-user/root/guix

如果您包括在您的.profile(或类似的)1

GUIX_PROFILE=$HOME/.config/guix/current; 
source "$GUIX_PROFILE/etc/profile"
Run Code Online (Sandbox Code Playgroud)

您可以使用自己的 GUIX 版本和软件包版本。

如果你包括

GUIX_PROFILE="$HOME/.guix-profile";
source "$GUIX_PROFILE/etc/profile"
Run Code Online (Sandbox Code Playgroud)

您加载一个配置文件,您可以在不使用-p参数的情况下定义/更改该配置文件guix package。当然,您也可以在此处加载任何其他配置文件,-p如果您想更改它,则只需使用该参数即可。许多人使用此配置文件来包含他们经常需要但未分配给任何特定于任务的工作流的命令。


1如果您想知道为什么需要在采购之前定义变量,请阅读源代码脚本。它将添加到配置文件的链接$PATH,而不是配置文件文件夹本身。这意味着如果您在guix package -u没有再次获取配置文件的情况下调用,您将自动获得更新的包版本。