

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# バージョン管理されたリポジトリによる確定的アップグレードの使用
<a name="deterministic-upgrades-usage"></a>

**Topics**
+ [確定的なアップグレードシステムを使用する](#using-a-deterministic-upgraded-system)
+ [確定的なアップグレードされたシステムの選択的更新](#deterministic-upgrade-selective-update)
+ [確定的なアップグレードでの永続的上書きの使用](#deterministic-upgrade-override-persist)

## 確定的なアップグレードシステムを使用する
<a name="using-a-deterministic-upgraded-system"></a>

**注記**  
 パッケージマネージャーのデフォルトの動作が AL2 から変更されました。

 確定的アップグレードは、すべての変更を本番環境に本格的にデプロイする前に詳細にテストできる強力な方法です。新しい各 AL2023 AMI は、特定バージョンの AL2023 にロックされます。これにより、特定の AMI の起動時に、どのバージョンの OS パッケージをインストールするかが確定的に判断されます。インプレース更新はリリースバージョンを特定できるため、フリート全体の確定的な動作が保証されます。新しい AMI またはインプレース更新バージョンに移行する際は、各バージョンを CI/CD パイプラインでテストし、本番環境にデプロイする前に潜在的な問題を検出できます。

 [AWS Systems Manager Patch Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager.html) などのツールを使用して、フリート全体での更新の適用をオーケストレーションできます。新しい AL2023 AMI のリリース時に派生 AMI を構築する場合は、[EC2 Image Builder](https://docs.aws.amazon.com/imagebuilder/latest/userguide/) により、AMI の自動的な構築、パッチ適用、テストができます。または[新しいアップデートの通知を受け取る](receive-update-notification.md)により、新しいベース AMI がいつ利用可能になるかを確認したり、独自の AMI 構築パイプラインをトリガーしたりできます。

 特定のアドバイザリからの更新のみに制限する方法については、「[セキュリティ更新プログラムのインプレースでの適用](security-inplace-update.md)」を参照してください。

 インプレースのパッチ適用には、`dnf` パッケージマネージャーを使用できます。`dnf upgrade` コマンドを実行すると、システムは `releasever` 変数が指定するリポジトリ内のアップグレードをチェックします。有効な `releasever`は、*最新の*バージョンまたは *2023.10.20260325* などの日付スタンプ付きバージョンです。

以下のいずれかの方法を使用して、`releasever` の値を変更できます。これらの方法は、システム優先度の降順で一覧表示されています。つまり、方法 1 は方法 2 と 3 を上書きし、方法 2 は方法 3 を上書きします。

1. コマンドラインフラグ内の値 `--releasever=latest` (使用する場合)。

1. 上書き変数ファイル で指定されている値 `/etc/dnf/vars/releasever` (設定されている場合)。

1. 現在インストールされている `system-release` パッケージのバージョン。

以下の例ではバージョンは、*2023.0.20230210* です。

```
$ rpm -q system-release
system-release-2023.0.20230210-0.amzn2023.noarch
```

新しくインストールされたシステムには、上書き変数は存在しません。システムはインストールした `system-release` のバージョンのにロックされているため、アップグレードはできません。

```
$ cat /etc/dnf/vars/releasever
cat: /etc/dnf/vars/releasever: No such file or directory
```

```
$ sudo dnf upgrade
Last metadata expiration check: 0:00:02 ago on Wed 15 Feb 2023 06:14:12 PM UTC.
Dependencies resolved.
Nothing to do.
Complete!
```

`releasever` フラグを使用して必要なバージョンを指定することで、特定のバージョンのパッケージを取得できます。

```
$ rpm -q system-release
system-release-2023.0.20230222-0.amzn2023.noarch
```

```
$ sudo dnf upgrade --releasever=2023.0.20230329
Amazon Linux 2023 repository                     26 MB/s |  12 MB     00:00
Dependencies resolved.
================================================================================
 Package                 Arch    Version                      Repository   Size
================================================================================
Installing:
 kernel                   aarch64 6.1.21-1.45.amzn2023        amazonlinux  26 M
Upgrading:
 amazon-linux-repo-s3     noarch  2023.0.20230329-0.amzn2023  amazonlinux  18 k
 ca-certificates          noarch  2023.2.60-1.0.amzn2023.0.1  amazonlinux 828 k
 cloud-init               noarch  22.2.2-1.amzn2023.1.7       amazonlinux 1.1 M

         ... [ list edited for clarity ]

 system-release           noarch  2023.0.20230329-0.amzn2023  amazonlinux  29 k

         ... [ list edited for clarity ]
          
 vim-data                 noarch  2:9.0.1403-1.amzn2023.0.1   amazonlinux  25 k
 vim-minimal              aarch64 2:9.0.1403-1.amzn2023.0.1   amazonlinux 753 k

Transaction Summary
================================================================================
Install    1 Package
Upgrade   42 Packages

Total download size: 56 M
```

`--releasever` オプションは `system-release` と `/etc/dnf/vars/releasever` の両方を上書きするため、このアップグレードの結果は以下のようになります。

1. アップグレードにより、以前のバージョンと新しいバージョンとの間で変更されたインストール済みパッケージがすべて置き換えられます。

1. アップグレードすると、システムは新しい `system-release` のバージョンのリポジトリにロックされます。

 どの `releasever` (AL2023 リリース) を更新するかを常に指定することで、フリート全体での変更を確定的に把握できます。バージョン *A* を起動して、*B* に更新し、さらに *C* に更新しました。

## 確定的なアップグレードされたシステムの選択的更新
<a name="deterministic-upgrade-selective-update"></a>

**注記**  
 特定の更新を選択するのではなく、新しいリリースのすべての更新をインストールすることをお勧めします。OS に更新の一部のみを適用することは、更新全体を適用するという標準プラクティスの例外です。

システムを元のリリースバージョンにロックしたまま、最近のリリースから選択したパッケージをインストールするとします。

`dnf check-update` を使用して、アップグレードするパッケージを特定します。

```
$ sudo dnf check-update --releasever=latest --security
Amazon Linux 2023 repository                     13 MB/s |  10 MB     00:00
Last metadata expiration check: 0:00:02 ago on Wed 15 Feb 2023 02:52:21 AM UTC.

bind-libs.aarch64                  32:9.16.27-1.amzn2023.0.1         amazonlinux
bind-license.noarch                32:9.16.27-1.amzn2023.0.1         amazonlinux
bind-utils.aarch64                 32:9.16.27-1.amzn2023.0.1         amazonlinux
cryptsetup.aarch64                 2.4.3-2.amzn2023.0.1              amazonlinux
cryptsetup-libs.aarch64            2.4.3-2.amzn2023.0.1              amazonlinux
curl-minimal.aarch64               7.85.0-1.amzn2023.0.1             amazonlinux
glibc.aarch64                      2.34-40.amzn2023.0.2              amazonlinux
glibc-all-langpacks.aarch64        2.34-40.amzn2023.0.2              amazonlinux
glibc-common.aarch64               2.34-40.amzn2023.0.2              amazonlinux
glibc-locale-source.aarch64        2.34-40.amzn2023.0.2              amazonlinux
gmp.aarch64                        1:6.2.1-2.amzn2023.0.1            amazonlinux
gnupg2-minimal.aarch64             2.3.7-1.amzn2023.0.2              amazonlinux
gzip.aarch64                       1.10-5.amzn2023.0.1               amazonlinux
kernel.aarch64                     6.1.12-17.42.amzn2023             amazonlinux
kernel-tools.aarch64               6.1.12-17.42.amzn2023             amazonlinux
libarchive.aarch64                 3.5.3-2.amzn2023.0.1              amazonlinux
libcurl-minimal.aarch64            7.85.0-1.amzn2023.0.1             amazonlinux
libsepol.aarch64                   3.4-3.amzn2023.0.2                amazonlinux
libsolv.aarch64                    0.7.22-1.amzn2023.0.1             amazonlinux
libxml2.aarch64                    2.9.14-1.amzn2023.0.1             amazonlinux
logrotate.aarch64                  3.20.1-2.amzn2023.0.2             amazonlinux
lua-libs.aarch64                   5.4.4-3.amzn2023.0.1              amazonlinux
lz4-libs.aarch64                   1.9.4-1.amzn2023.0.1              amazonlinux
openssl.aarch64                    1:3.0.5-1.amzn2023.0.3            amazonlinux
openssl-libs.aarch64               1:3.0.5-1.amzn2023.0.3            amazonlinux
pcre2.aarch64                      10.40-1.amzn2023.0.1              amazonlinux
pcre2-syntax.noarch                10.40-1.amzn2023.0.1              amazonlinux
rsync.aarch64                      3.2.6-1.amzn2023.0.2              amazonlinux
vim-common.aarch64                 2:9.0.475-1.amzn2023.0.1          amazonlinux
vim-data.noarch                    2:9.0.475-1.amzn2023.0.1          amazonlinux
vim-enhanced.aarch64               2:9.0.475-1.amzn2023.0.1          amazonlinux
vim-filesystem.noarch              2:9.0.475-1.amzn2023.0.1          amazonlinux
vim-minimal.aarch64                2:9.0.475-1.amzn2023.0.1          amazonlinux
xz.aarch64                         5.2.5-9.amzn2023.0.1              amazonlinux
xz-libs.aarch64                    5.2.5-9.amzn2023.0.1              amazonlinux
zlib.aarch64                       1.2.11-32.amzn2023.0.3            amazonlinux
```

アップグレードしたいパッケージをインストールします。`sudo dnf upgrade --releasever=latest` とパッケージ名を使用して、`system-release` パッケージが変更されないようにします。

```
$ sudo dnf upgrade --releasever=latest openssl openssl-libs
Last metadata expiration check: 0:01:28 ago on Wed 15 Feb 2023 02:52:21 AM UTC.
Dependencies resolved.
================================================================================
 Package          Arch        Version                     Repository       Size
================================================================================
Upgrading:
 openssl          aarch64     1:3.0.5-1.amzn2023.0.3      amazonlinux     1.1 M
 openssl-libs     aarch64     1:3.0.5-1.amzn2023.0.3      amazonlinux     2.1 M

Transaction Summary
================================================================================
Upgrade  2 Packages

Total download size: 3.2 M
```

**注記**  
`sudo dnf upgrade --releasever=latest` を使用すると、`system-release` を含むすべてのパッケージが更新されます。その後、永続的な上書きを設定しない限り、バージョンは新しい `system-release` にロックされたままになります。

## 確定的なアップグレードでの永続的上書きの使用
<a name="deterministic-upgrade-override-persist"></a>

**注記**  
 確定的な更新により、OS の変更を CI/CD パイプラインに統合できます。確定的な更新を無効にすると、デプロイ前にテストできなくなります。

`--releasever=latest` を追加する代わりに、変数値を*最新に*設定することで、永続的な上書きを使用してシステムの*ロックを解除*できます。`latest` を常に使用すると、AL2023 の動作は AL2 更新モデルに戻ります。パッケージマネージャーへのすべての呼び出しは、*常に*最新のリリースを参照し、特定のバージョンの OS にロックされません。

**警告**  
 確定的な更新の永続的な上書きを使用してパッケージマネージャーをロック解除することで、アプリケーションと本番環境の OS 更新との潜在的な非互換性が判明するというリスクがあります。  
 非互換性はまれに*存在*しますが、OS 更新で新しいコード変更を環境に統合する場合、統合テストにより、本番環境に悪影響を及ぼすコード変更のデプロイを防止できます。

```
$ echo latest | sudo tee /etc/dnf/vars/releasever
latest
```

```
$ sudo dnf upgrade
Last metadata expiration check: 0:03:36 ago on Wed 15 Feb 2023 02:52:21 AM UTC.
Dependencies resolved.
================================================================================
 Package                 Arch    Version                      Repository   Size
================================================================================
Installing:
 kernel                  aarch64 6.1.73-45.135.amzn2023       amazonlinux  24 M
Upgrading:
 acl                     aarch64 2.3.1-2.amzn2023.0.1         amazonlinux  72 k
 alternatives            aarch64 1.15-2.amzn2023.0.1          amazonlinux  36 k
 amazon-ec2-net-utils    noarch  2.3.0-1.amzn2023.0.1         amazonlinux  16 k
 at                      aarch64 3.1.23-6.amzn2023.0.1        amazonlinux  60 k
 attr                    aarch64 2.5.1-3.amzn2023.0.1         amazonlinux  59 k
 audit                   aarch64 3.0.6-1.amzn2023.0.1         amazonlinux 249 k
 audit-libs              aarch64 3.0.6-1.amzn2023.0.1         amazonlinux 116 k
 aws-c-auth-libs         aarch64 0.6.5-6.amzn2023.0.2         amazonlinux  79 k
 aws-c-cal-libs          aarch64 0.5.12-7.amzn2023.0.2        amazonlinux  34 k
 aws-c-common-libs       aarch64 0.6.14-6.amzn2023.0.2        amazonlinux 119 k
 aws-c-compression-libs  aarch64 0.2.14-5.amzn2023.0.2        amazonlinux  22 k
 aws-c-event-stream-libs aarch64 0.2.7-5.amzn2023.0.2         amazonlinux  47 k
 aws-c-http-libs         aarch64 0.6.8-6.amzn2023.0.2         amazonlinux 147 k
 aws-c-io-libs           aarch64 0.10.12-5.amzn2023.0.6       amazonlinux 109 k
 aws-c-mqtt-libs         aarch64 0.7.8-7.amzn2023.0.2         amazonlinux  61 k
 aws-c-s3-libs           aarch64 0.1.27-5.amzn2023.0.3        amazonlinux  54 k
 aws-c-sdkutils-libs     aarch64 0.1.1-5.amzn2023.0.2         amazonlinux  26 k
 aws-checksums-libs      aarch64 0.1.12-5.amzn2023.0.2        amazonlinux  50 k
 awscli-2                noarch  2.7.8-1.amzn2023.0.4         amazonlinux 7.3 M
 basesystem              noarch  11-11.amzn2023.0.1           amazonlinux 7.8 k
 bash                    aarch64 5.1.8-2.amzn2023.0.1         amazonlinux 1.6 M
 bash-completion         noarch  1:2.11-2.amzn2023.0.1        amazonlinux 292 k
 bc                      aarch64 1.07.1-14.amzn2023.0.1       amazonlinux 120 k
 bind-libs               aarch64 32:9.16.27-1.amzn2023.0.1    amazonlinux 1.2 M
 bind-license            noarch  32:9.16.27-1.amzn2023.0.1    amazonlinux  14 k
 bind-utils              aarch64 32:9.16.27-1.amzn2023.0.1    amazonlinux 206 k
 binutils                aarch64 2.38-20.amzn2023.0.3         amazonlinux 4.6 M
 boost-filesystem        aarch64 1.75.0-4.amzn2023.0.1        amazonlinux  55 k
 boost-system            aarch64 1.75.0-4.amzn2023.0.1        amazonlinux  14 k
 boost-thread            aarch64 1.75.0-4.amzn2023.0.1        amazonlinux  54 k
 bzip2                   aarch64 1.0.8-6.amzn2023.0.1         amazonlinux  53 k
 bzip2-libs              aarch64 1.0.8-6.amzn2023.0.1         amazonlinux  44 k
 c-ares                  aarch64 1.17.2-1.amzn2023.0.1        amazonlinux 107 k
 ca-certificates         noarch  2021.2.50-1.0.amzn2023.0.3   amazonlinux 343 k
 checkpolicy             aarch64 3.4-3.amzn2023.0.1           amazonlinux 345 k
 chkconfig               aarch64 1.15-2.amzn2023.0.1          amazonlinux 162 k
 chrony                  aarch64 4.2-7.amzn2023.0.4           amazonlinux 314 k
 cloud-init              noarch  22.2.2-1.amzn2023.1.7        amazonlinux 1.1 M
 cloud-utils-growpart    aarch64 0.31-8.amzn2023.0.2          amazonlinux  31 k
 coreutils               aarch64 8.32-30.amzn2023.0.2         amazonlinux 1.1 M
 coreutils-common        aarch64 8.32-30.amzn2023.0.2         amazonlinux 2.0 M
 cpio                    aarch64 2.13-10.amzn2023.0.1         amazonlinux 269 k
 cracklib                aarch64 2.9.6-27.amzn2023.0.1        amazonlinux  83 k
 cracklib-dicts          aarch64 2.9.6-27.amzn2023.0.1        amazonlinux 3.6 M
 crontabs                noarch  1.11-24.20190603git.amzn2023.0.1
                                                              amazonlinux  19 k
 crypto-policies         noarch  20230128-1.gitdfb10ea.amzn2023.0.1
                                                              amazonlinux  61 k
 crypto-policies-scripts noarch  20230128-1.gitdfb10ea.amzn2023.0.1
                                                              amazonlinux  81 k
...
Installing dependencies:
 amazon-linux-repo-cdn   noarch  2023.0.20230210-0.amzn2023   amazonlinux  16 k
 xxhash-libs             aarch64 0.8.0-3.amzn2023.0.1         amazonlinux  32 k
Installing weak dependencies:
 amazon-chrony-config    noarch  4.2-7.amzn2023.0.4           amazonlinux  14 k
 gawk-all-langpacks      aarch64 5.1.0-3.amzn2023.0.1         amazonlinux 207 k

Transaction Summary
================================================================================
Install    5 Packages
Upgrade  413 Packages

Total download size: 199 M
```

**注記**  
上書き変数 `/etc/dnf/vars/releasever` を使用した場合は、以下のコマンドを使用して上書き値を消去してデフォルトのロック動作に戻します。  

```
$ sudo rm /etc/dnf/vars/releasever
```

 特定のバージョンではなく、`latest` の使用に対する永続的な上書きの使用は、AL2 のデフォルトの動作に似ています。AL2 に基づく AMI を構築するサービスの中には、この動作を無効にして、AL2023 でデフォルトで取得される特定のパッケージバージョンにロックするものがあります。

 確定的な更新を無効にするのではなく、インスタンスを新しい AMI から起動したインスタンスに置き換えることをお勧めします。インスタンスの置き換えが不可能な場合は、[AWS Systems Manager Patch Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager.html) などのツールを使用して、フリート全体への更新の適用をオーケストレーションすることをお勧めします。[EC2 Image Builder](https://docs.aws.amazon.com/imagebuilder/latest/userguide/) により、AL2023 ベースイメージから派生した独自の AMI の自動的な構築、パッチ適用、テストを行うこともできます。また、[新しいアップデートの通知を受け取る](receive-update-notification.md)ことで、独自の AMI 構築パイプラインをトリガーすることもできます。

 本番稼働前の環境で `latest` を使用し、次に `latest` を使用して本番稼働環境にデプロイすることは、OS 更新とアプリケーション間の問題から保護することに*なりません*。新しい AL2023 リリースは随時発生する可能性があるため、本番環境での `latest` のすべての使用にはリスクが伴います。