AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 568770
Accepted
Chris Stryczynski
Chris Stryczynski
Asked: 2020-02-21 10:35:22 +0800 CST2020-02-21 10:35:22 +0800 CST 2020-02-21 10:35:22 +0800 CST

如何将频道回滚到上一代 Nixos?

  • 772
$ sudo nix-env --list-generations --profile /nix/var/nix/profiles/system
...
 600   2020-01-25 21:01:11   
 601   2020-02-03 13:44:19   
 602   2020-02-09 14:06:20   
 603   2020-02-09 14:11:11   
 604   2020-02-11 00:02:43   
 605   2020-02-13 12:26:22   
 606   2020-02-16 16:40:02   (current)

我怎样才能获得 Nixos 一代的提交/频道生成(这是一件事吗?) - 并可能将频道回滚到它?

或者换句话说,我怎样才能将我的“通道状态”回滚到第 605 代时的状态?


为什么我想知道是因为我做了一个sudo nix-channel --update,sudo nixos-rebuild switch几天前 - 无论发生什么包更新 - 导致系统不稳定。

所以为了缓解这种情况,我启动并继续使用老一代(605)。

我现在想更新我的 Nixos 系统配置中的特定包,并将更改基于605而不是最新的606.


我确实找到了https://stackoverflow.com/questions/39090387/how-to-undo-nix-channel-update ( nix-channel --rollback..) 但是我可能已经更新了几次频道 - 所以“最后一个”频道状态可能不是什么我需要。

我确实注意到您可以指定通道代号作为此命令的参数 - 但我不确定它与 nixos 代之间的关系是什么?它似乎与我尝试605的结果不同:

sudo nix-channel --rollback 605
error: generation 605 does not exist
error: program '/nix/store/cs47wjxwiqgyl1nkjnksyf3s2rb93piq-nix-2.3.2/bin/nix-env' failed with exit code 1
nix nixos
  • 2 2 个回答
  • 1330 Views

2 个回答

  • Voted
  1. Best Answer
    Vladimír Čunát
    2020-02-22T01:27:37+08:002020-02-22T01:27:37+08:00

    我假设你想要sudo nix-channel --rollback?例如,您也可以手动检查/nix/var/nix/profiles/per-user/root/channels-*/manifest.nix——那些包含名称、提交哈希等。

    • 5
  2. Paul Parker
    2022-01-01T16:25:36+08:002022-01-01T16:25:36+08:00

    TLDR;

    配置文件生成和频道生成是不同的东西。通道生成跟踪可用 派生(包)列表的更改,配置文件生成跟踪已安装的 派生及其版本。ls -g /nix/var/nix/profiles/per-user/my_user_name/将一目了然地告诉您有关当前一代的所有信息。

    /TLDR;

    弗拉基米尔的回答是完全正确的,但由于可怕的长路很容易被驳回;)

    更新频道时:

    nix-channel --update <my-channel-alias>
    

    您将当前用户的频道生成提前一个。Onlymy-channel-alias受到影响,但这仍然会导致构建全新的一代,并且您的环境会引用它。

    不幸的是,nix-channel没有切换到列出频道代。这就是长路径的来源。您可以看到channels指向channels-4-linkuser 的链接my_user_name。因此,my_user_name的当前选择的频道世代为 4。

    ls -g /nix/var/nix/profiles/per-user/my_user_name/
      channels -> channels-4-link                                                      
      channels-1-link -> /nix/store/57904rflsfh46y7fxi62rzc7sidc9vmq-user-environment                                                      
      channels-2-link -> /nix/store/j5j5avwf07a2ajr3jszj9vv8l5ybgycm-user-environment                                                      
      channels-3-link -> /nix/store/xb0accm8k1zsll5wrxck7gj0xbdv8zk7-user-environment                                                      
      channels-4-link -> /nix/store/dlh9wlpx59lifgni06q0vwgymshn9jja-user-environment                                                      
      channels-5-link -> /nix/store/8wymqxsdy3m7gmh6f21m49hl98gy75aa-user-environment                                                      
      channels-6-link -> /nix/store/3sf1c989bbfrrxrpr235xqjqvd89apsi-user-environment                                                      
      profile -> profile-1-link                                                      
      profile-10-link -> /nix/store/kwlgbfbpwjhgb42bp7c899l8a1cyjdcl-user-environment                                                      
      profile-1-link -> /nix/store/57904rflsfh46y7fxi62rzc7sidc9vmq-user-environment                                                      
      profile-2-link -> /nix/store/c614r1kmrg9nsx2qvd944k5afj49qim7-user-environment                                                      
      profile-3-link -> /nix/store/57904rflsfh46y7fxi62rzc7sidc9vmq-user-environment                                                      
      profile-4-link -> /nix/store/2blnby22dvc92i9ahprwkl504ngj75ad-user-environment                                                      
      profile-5-link -> /nix/store/ahd9dzfkgvyfqdkdw8cw8w8dyqak66b4-user-environment                                                      
      profile-6-link -> /nix/store/gbjmn5rcjl4iscfvgms9hk26vhpr6pv2-user-environment                                                      
      profile-7-link -> /nix/store/57904rflsfh46y7fxi62rzc7sidc9vmq-user-environment                                                      
      profile-8-link -> /nix/store/k50s7rb4gz3pibd0r8136y628al74www-user-environment                                                      
      profile-9-link -> /nix/store/57904rflsfh46y7fxi62rzc7sidc9vmq-user-environment
    

    相比之下,配置文件(用户环境)生成通过以下nix-env操作进行了改进:

    --install
    --update
    --uninstall
    

    如 nix-env 的手册页中所述。

    man nix-env | grep "new user environment"
    

    并且可以通过以下方式轻松查询当前用户的不同配置文件生成:

    nix-env --list-generations
    
    • 1

相关问题

  • 如何从 Live CD 重建 NixOS 安装的配置?

  • 将 $NIX_PATH 指向 ~/.nix-defexpr/channels

  • 如何在 /nix/store 中找到已安装包的正确版本

  • 仅检测一次扫描仪

  • 使用完整的根分区清理 nixos 上的包管理器缓存

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve