$ 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-link
my_user_name
my_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