我目前使用的是 18.03,想升级到 18.09。我该怎么做呢?
我通过网络搜索发现了以下内容,但还不是很确定: https://discourse.nixos.org/t/how-to-upgrade-from-18-03-to-18-09/933
我假设我可以更改 引用的频道nixos
?但我不确定这是否适合在出现问题时允许回滚。
sudo nix-channel --list
nixos https://nixos.org/channels/nixos-18.03
unstable https://nixos.org/channels/nixos-unstable
此外,我还看到了以下内容:https://github.com/NixOS/nixpkgs/issues/40351#issuecomment-388405973(如下引用) - 我需要考虑这一点吗?
还:
/etc/nixos/configuration.nix:
# 该值决定了您的系统要兼容的 NixOS 版本,以避免破坏某些软件,例如数据库服务器。只有在 NixOS 发行说明表明 # 应该这样做之后,您才应该更改此设置。系统.stateVersion = "17.09"; # 你读过评论了吗?我没有看到何时发出命令来改变这一点。
我阅读了发行说明、新闻和可用信息。等待命令执行,但没有找到。
不管怎样,发布几天后我改变了“17.09”->“18.03”。
答案1
升级 NixOS:
- 确保您有 NixOS 安装的备份,并且知道如何在需要时从备份中恢复。
- 审查NixOS 发行说明以确保您考虑到需要手动完成的任何更改。特别是,有时选项会以向后不兼容的方式更改。
- 作为 root 用户,替换 NixOS 通道,使其指向您要升级到的通道,同时确保其命名为
nixos
:
并更新频道 (nix-channel --add https://nixos.org/channels/nixos-18.09 nixos
nix-channel --update
)。 - 作为 root 用户,构建您的系统:
nixos-rebuild --upgrade boot
- 重新启动即可进入您新建的 NixOS。
如果出现问题,您可以重新启动,选择上一代,使用nix-channel
添加旧频道,然后nixos-rebuild boot
将工作一代设为默认;我认为重建比使用更可靠nixos-rebuild --rollback
。
替代工艺
如果你想尝试升级而不弄乱通道,你可以使用 nixpkgs 存储库的 GIT 克隆:
cd nixpkgs
git checkout release-18.03
nixos-rebuild -I nixpkgs="$PWD" build
如果一切顺利的话...
sudo nixos-rebuild -I nixpkgs="$PWD" boot
这种方法的缺点是,对 Nix 工具(例如 )的后续调用nixos-rebuild
需要该-I
标志来指定正确的 nixpkgs。也就是说,直到您更新频道。