web-dev-qa-db-ja.com

新しいチャネルnixosバージョンを使用するようにNixosをアップグレードするにはどうすればよいですか?

現在18.03におり、18.09にアップグレードしたいと考えています。これを行うにはどうすればよいですか?

私はウェブ検索で以下を見つけましたが、あまり決定的ではありません: https://discourse.nixos.org/t/how-to-upgrade-from-18-03-to -18-09/933

nixosが参照するチャンネルを変更できると思いますか?しかし、これが問題が発生した場合にロールバックを許可するのに理想的かどうかはわかりません。

Sudo nix-channel --list        
nixos https://nixos.org/channels/nixos-18.03
unstable https://nixos.org/channels/nixos-unstable

さらに、以下も確認しました: https://github.com/NixOS/nixpkgs/issues/40351#issuecomment-388405973 (以下に引用) )-これを考慮する必要がありますか?

また:

/etc/nixos/configuration.nix:

#この値は、データベースサーバーなどの一部のソフトウェアの破壊を回避するために、システムが互換性を持つNixOSリリースを#決定します。 NixOSリリースノートで#変更するように言われた後でのみ、これを変更する必要があります。 system.stateVersion = "17.09"; #コメントを読みましたか?これを変更するコマンドがいつ発行されたかはわかりませんでした。

リリースノート、ニュース、利用可能な情報を読みます。コマンドが実行するのを待っていましたが、見つかりませんでした。

とにかく、リリースの数日後に「17.09」→「18.03」に変更しました。

3

NixOSをアップグレードするには:

  1. NixOSインストールのバックアップがあること、および必要に応じてバックアップから復元する方法を知っていることを確認してください。
  2. NixOSリリースノート を確認して、手動で行う必要のある変更を確実に説明します。特に、下位互換性のない方法でオプションが変更される場合があります。
  3. Rootユーザーとして、NixOSチャネルを置き換えて、アップグレードするチャネルを指すようにします。ただし、名前はnixos:にします。
    nix-channel --add https://nixos.org/channels/nixos-18.09 nixos
    
    チャネルを更新します(nix-channel --update)。
  4. Rootユーザーとして、システムを構築します。
    nixos-rebuild --upgrade boot
    
  5. 再起動して、新しく構築したNixOSに入ります。

問題が発生した場合は、再起動して前の世代を選択し、nix-channelを使用して古いチャネルを追加し、次にnixos-rebuild bootを使用して稼働中の世代をデフォルトにします。 nixos-rebuild --rollbackを使用するよりも、再構築する方が信頼性が高いと思います。

代替プロセス

チャネルをいじることなくアップグレードを試したい場合は、nixpkgsリポジトリのGITクローンを使用できます。

cd nixpkgs
git checkout release-18.03
nixos-rebuild -I nixpkgs="$PWD" build

すべてが順調なら...

Sudo nixos-rebuild -I nixpkgs="$PWD" boot

このアプローチの欠点は、nixos-rebuildなどのNixツールへの後続の呼び出しで、正しいnixpkgsを指定するために-Iフラグが必要になることです。つまり、チャンネルを更新するまでです。

4
Emmanuel Rosa