我刚刚在 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-foo
和guix upgrade package-bar
(来自 GUIX 食谱)
.config/guix/current
:
运行 guix pull 的结果是
~/.config/guix/current
包含最新 Guix 的可用配置文件。 (“调用guix pull
”)
这两个配置文件有什么区别?为什么我需要这两个?我需要在登录时获取两者吗?
答案1
这些配置文件是默认值
将这两个配置文件与“普通”GUIX 配置文件区别开来的唯一原因是它们是各自 GUIX 命令的默认选项(请参阅这里了解这两者有何不同):
~/.guix-profile
guix package
是选项的默认选项-p|--profile=
~/.config/guix/current
guix pull
是选项的默认选项-p|--profile=
如果它们之前不存在,则它们会在第一次调用各自的配套命令时生成。
但是,如果您愿意并始终使用用户定义的配置文件,您完全可以不使用这两个配置文件(见下文)
他们的工作有所不同:提供guix
版本本身与提供由其管理的其他程序guix
该配置文件
~/.config/guix/current
提供了二进制文件guix
和guix-daemon
.在默认配置中,此配置文件确定您可以安装的所有软件包的最新版本。您可以安装的软件包列表与 guix 版本相关,这与 Nix 相反。这篇博文解释了原因。- 对于用户而言
root
,(的符号链接目标)提供的二进制文件/root/.config/guix/current/bin/guix-daemon
是由系统自动启动的 GUIX 守护进程。它还有一个符号链接/usr/local/bin
。
- 对于用户而言
该配置文件
~/.guix-profile
包含您希望它包含的任何包。许多用户将其包含在他们的 shell 启动文件中,因此他们拥有不属于任何其他自动可用的特定于任务的配置文件的常用程序。
这些配置文件仅通过 shell 启动文件集成到您的工作流程中,您可以决定它们是否有效
.profile
哪些配置文件与您相关仅由您的(或.bash_profile
您使用的任何 shell 初始化文件)决定
如果您未指定任何内容,则将不会使用任何软件包以及其本身所使用的guix
版本,因为guix
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"
您可以使用自己的 GUIX 版本和软件包版本。
如果你包括
GUIX_PROFILE="$HOME/.guix-profile";
source "$GUIX_PROFILE/etc/profile"
您加载一个配置文件,您可以定义/更改该配置文件,而无需使用-p
的参数guix package
。当然,您也可以在此处加载任何其他配置文件,然后-p
如果您想更改它,只需使用该参数即可。许多人使用此配置文件来包含他们经常需要但未分配给任何特定于任务的工作流程的命令。
1如果您想知道为什么需要在采购之前定义变量,请阅读源脚本。它将添加到配置文件的链接$PATH
,而不是配置文件文件夹本身。这意味着如果您调用guix package -u
而无需再次获取配置文件,您将自动获取更新的软件包版本。