Как обновлять NixOS

Обновление 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

Полезно, когда хотите оставить себе некоторое кол-во устаревших версий, на которые вы потенциально захотите откатиться.


Теги: