我刚刚在我的 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
提供二进制文件guix
和guix-daemon
. 在默认配置中,此配置文件确定您可以安装的所有软件包的最新版本。与 Nix 不同,您可以安装的软件包列表与 guix 版本相关。这篇博文解释了原因。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 版本和软件包版本。
如果你包括
您加载一个配置文件,您可以在不使用
-p
参数的情况下定义/更改它guix package
。当然,您也可以在此处加载任何其他配置文件,然后-p
如果要更改它,则只需使用该参数即可。许多人使用此配置文件来包含他们经常需要但未分配给任何特定任务工作流的命令。1如果您想知道为什么需要在采购之前定义变量,请阅读源代码脚本。它将添加到配置文件的链接
$PATH
,而不是配置文件文件夹本身。这意味着如果您在guix package -u
没有再次获取配置文件的情况下调用,您将自动获得更新的包版本。