Обновление NixOS отличается от традиционных дистрибутивов Linux из-за нестандартной философии и подхода, когда вся система настраивается через декларативную конфигурацию. Рассмотрим все аспекты обновления системы: от простой пересборки конфигурации до полного обновления каналов и версий Nixpkgs, а также управление поколениями и очистку системы от устаревших данных.
Для всех команд ниже потребуются root привилегии или запуск через sudo.
Пересборка системы
Применяется, когда вы отредактировали конфигурацию системы (например в /etc/nixos/configuration.nix) и просто хотите применить эти изменения:
nixos-rebuild switch
Так же можно произвести пересборку таким образом, что обновления применятся при следующей загрузке системы.
nixos-rebuild boot
Обновление каналов и пакетов NixOS
Эта команда исполняется, когда вы хотите без обновления на новую версию NixOS обновить информацию о пакетах на более свежие версии.
Эта команда эквивалентна apt update, когда вы подтягиваете свежие сведения о версиях, но фактического обновления не производите.
nix-channel --update
Для установки новых версий пакетов потребуется пересборка:
nixos-rebuild switch
В большинстве случаев обновление информации о пакетах и их установка происходит совместно. Поэтому можно использовать упрощенные команды, которые сами обновят версии и обновят пакеты.
Как обновить NixOS за одну команду:
nixos-rebuild switch --upgrade
Обновление пересборка сразу, но фактическое применение только после следующей загрузки системы:
nixos-rebuild boot --upgrade
Обновление версии Nixpkgs
Список доступных и актуальных каналов расположен: https://channels.nixos.org. Для перехода на другую версию потребуется выполнить команду с нужной вам версией:
nix-channel --add https://channels.nixos.org/nixos-<версия> nixos
Для вступления изменений в силу (то есть фактической установки новых версий пакетов) нам потребуется выполнить пересборку, как мы это делали в разделе “Обновление каналов и пакетов NixOS”.
nixos-rebuild switch --upgrade
Сборка мусора и удаление старых поколений (generations)
Удалить все устаревшие поколения:
nix-collect-garbage -d
Удалить все старше 60 дней:
nix-collect-garbage --delete-older-than 60d
Полезно, когда хотите оставить себе некоторое кол-во устаревших версий, на которые вы потенциально захотите откатиться.
Теги: