チャンネルを前世代のNixosにロールバックするには?

チャンネルを前世代のNixosにロールバックするには?
$ 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

そのため、これを軽減するためにOld Generation(605)を使い始め、それを使い続けました。

今Nixosシステム構成で特定のパッケージを更新し、605最新の606


私が見つけたhttps://stackoverflow.com/questions/39090387/how-to-undo-nix-channel-updatenix-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

答え1

あなたがそれをしたいと思いますかsudo nix-channel --rollback?たとえば、/nix/var/nix/profiles/per-user/root/channels-*/manifest.nix名前、コミットハッシュなどを含む項目を手動で確認することもできます。

答え2

長すぎる。

プロファイルの作成とチャンネルの作成は異なります。チャンネルビルドトラッキングリストの変更書くことができる 派生(パッケージ)とプロファイル生成の追跡インストール済み 派生とそのバージョン。ls -g /nix/var/nix/profiles/per-user/my_user_name/現在の世代の製品について知っておくべきことすべてを一目でお知らせします。

/TLDR;

Vladimirの答えは完全に正確ですが、長すぎるので簡単に見落とされます。 ;)

チャンネルを更新する場合:

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

現在のユーザーのチャンネル作成を1段階進めます。影響を受けるだけですが、これは依然としてmy-channel-alias全く新しい世代が構築され、環境がこれを参照するようになります。

残念ながら、nix-channelリストチャネル生成のためのスイッチはない。これは長い長さの着信場所です。ユーザーchannelsへのリンクを見ることができます。したがって、現在選択されているチャネルの生成は4です。channels-4-linkmy_user_namemy_user_name

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

関連情報