如何升级 Nixos 以使用新的频道 nixos 版本?

如何升级 Nixos 以使用新的频道 nixos 版本?

我目前使用的是 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:

  1. 确保您有 NixOS 安装的备份,并且知道如何在需要时从备份中恢复。
  2. 审查NixOS 发行说明以确保您考虑到需要手动完成的任何更改。特别是,有时选项会以向后不兼容的方式更改。
  3. 作为 root 用户,替换 NixOS 通道,使其指向您要升级到的通道,同时确保其命名为nixos
    nix-channel --add https://nixos.org/channels/nixos-18.09 nixos
    
    并更新频道 ( nix-channel --update)。
  4. 作为 root 用户,构建您的系统:
    nixos-rebuild --upgrade boot
    
  5. 重新启动即可进入您新建的 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。也就是说,直到您更新频道。

相关内容