채널을 이전 세대 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-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

답변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>

현재 사용자의 채널 생성을 한 단계 앞당깁니다. 영향을 받을 뿐이지만 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

관련 정보