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-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 守护进程。它也有一个符号链接/usr/local/bin
。配置文件~/.guix-profile
包含您希望它包含的任何包。许多用户将它包含在他们的 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"
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
没有再次获取配置文件的情况下调用,您将自动获得更新的包版本。