

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Utilisation de mises à niveau déterministes via des référentiels versionnés
<a name="deterministic-upgrades-usage"></a>

**Topics**
+ [Utilisation d'un système déterministe mis à niveau](#using-a-deterministic-upgraded-system)
+ [Mise à jour sélective d'un système mis à niveau déterministe](#deterministic-upgrade-selective-update)
+ [Utilisation du remplacement persistant avec une mise à niveau déterministe](#deterministic-upgrade-override-persist)

## Utilisation d'un système déterministe mis à niveau
<a name="using-a-deterministic-upgraded-system"></a>

**Note**  
 Le comportement par défaut du gestionnaire de packages a changé depuis AL2. 

 Les mises à niveau déterministes constituent un moyen efficace de garantir que toutes les modifications apportées aux environnements de production peuvent être entièrement testées avant un déploiement à grande échelle. Chaque nouvelle AL2023 AMI est verrouillée sur une version particulière de AL2023. Cela fournit un comportement déterministe quant aux versions des packages du système d'exploitation installées lors du lancement de l'AMI spécifique. Les mises à jour sur place peuvent porter sur une version de version spécifique, garantissant ainsi un comportement déterministe au sein d'un parc. Lorsque vous passez à de nouvelles versions AMIs ou à des versions de mise à jour en place, vous pouvez tester chacune d'entre elles dans votre CI/CD pipeline, afin de détecter tout problème potentiel avant de les déployer dans des environnements de production. 

 Vous pouvez utiliser des outils tels que [AWS Systems Manager Patch Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager.html) pour orchestrer l'application des mises à jour au sein d'un parc. Pour la génération dérivée AMIs lorsque de nouvelles bases AL2023 AMIs sont publiées, [EC2 Image](https://docs.aws.amazon.com/imagebuilder/latest/userguide/) Builder peut automatiquement créer, corriger et AMIs tester, ou vous [Recevez des notifications sur les nouvelles mises à jour](receive-update-notification.md) pouvez savoir quand une nouvelle AMIs base est disponible, ou déclencher vos propres pipelines de création d'AMI. 

 Pour plus d'informations sur la limitation des mises à jour à celles d'un avis en particulier, voir [Appliquer les mises à jour de sécurité sur place](security-inplace-update.md) 

 Pour appliquer des correctifs sur place, vous pouvez utiliser le gestionnaire de `dnf` packages. Lorsque vous exécutez la commande `dnf upgrade`, le système vérifie les mises à niveau dans le référentiel spécifié par la variable `releasever`. Une version valide `releasever` est *latest* soit une version horodatée telle que. *2023.10.20260325*

Vous pouvez remplacer cette valeur par `releasever` en utilisant l'une des méthodes suivantes. Ces méthodes sont répertoriées par ordre décroissant de priorité système. Cela signifie que la méthode 1 prévaut sur les méthodes 2 et 3, et que la méthode 2 prévaut sur la méthode 3.

1. Valeur de l'indicateur de ligne de commande, `--releasever=latest`, s'il est utilisé.

1. Valeur spécifiée dans le fichier de variables de remplacement, `/etc/dnf/vars/releasever`, s'il est défini.

1. Version actuellement installée du package `system-release`.

Dans l'exemple suivant, la version est la suivante *2023.0.20230210* :

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

Dans un système récemment installé, la variable de remplacement n'est pas présente. Aucune mise à niveau n'est disponible, car le système est verrouillé sur la version installée de `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!
```

Vous pouvez obtenir des packages d'une version spécifique en utilisant l'indicateur `releasever` pour fournir la version que vous souhaitez.

```
$ 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
```

Comme l'option `--releasever` remplace les `system-release` et `/etc/dnf/vars/releasever`, le résultat de cette mise à niveau est le suivant :

1. La mise à niveau remplace tous les packages installés qui ont changé entre la version précédente et la nouvelle version.

1. La mise à niveau verrouille le système dans le référentiel de la nouvelle version de `system-release`.

 En spécifiant toujours la AL2023 version à mettre à jour `releasever` (c'est-à-dire la version), vous disposez d'un ensemble déterministe de modifications au sein d'une flotte. Vous avez lancé la version*A*, mis à jour vers*B*, puis mis à jour vers*C*. 

## Mise à jour sélective d'un système mis à niveau déterministe
<a name="deterministic-upgrade-selective-update"></a>

**Note**  
 Nous recommandons d'installer toutes les mises à jour d'une nouvelle version plutôt que de sélectionner des mises à jour spécifiques. L'application d'une partie seulement d'une mise à jour au système d'exploitation devrait constituer une exception à la pratique standard qui consiste à effectuer la mise à jour complète. 

Il peut arriver que vous souhaitiez installer certains packages issus d'une version récente, tout en laissant le système verrouillé sur la version d'origine.

Vous pouvez utiliser `dnf check-update` pour identifier les packages que vous souhaitez mettre à niveau.

```
$ 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
```

Installez les packages que vous souhaitez mettre à niveau. Utilisez `sudo dnf upgrade --releasever=latest` et les noms des packages pour garantir que le package `system-release` reste inchangé.

```
$ 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
```

**Note**  
L'utilisation de `sudo dnf upgrade --releasever=latest` met à jour tous les packages, notamment `system-release`. La version restera ainsi verrouillée sur le nouveau `system-release`, sauf si vous définissez le remplacement persistant.

## Utilisation du remplacement persistant avec une mise à niveau déterministe
<a name="deterministic-upgrade-override-persist"></a>

**Note**  
 Grâce aux mises à jour déterministes, vous pouvez intégrer les modifications du système d'exploitation dans votre CI/CD pipeline. La désactivation des mises à jour déterministes supprime la possibilité de tester avant le déploiement. 

Au lieu d'en ajouter`--releasever=latest`, vous pouvez utiliser une dérogation persistante pour *déverrouiller* le système en définissant la valeur de la variable sur*latest*. En utilisant toujours`latest`, cela rétablit le comportement du AL2023 modèle de AL2 mise à jour, dans lequel tout appel au gestionnaire de packages portera *toujours* sur la dernière version et n'est verrouillé sur aucune version spécifique du système d'exploitation.

**Avertissement**  
 En déverrouillant le gestionnaire de packages en utilisant une dérogation persistante aux mises à jour déterministes, vous prenez le risque de découvrir une éventuelle incompatibilité entre votre application et une mise à jour du système d'exploitation en production.   
 Bien que les incompatibilités *soient* rares, avec une mise à jour du système d'exploitation, vous intégrez de nouvelles modifications de code dans votre environnement, les tests d'intégration peuvent empêcher le déploiement de modifications de code ayant un impact négatif sur les environnements de production. 

```
$ 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
```

**Note**  
Si vous avez utilisé la variable de remplacement `/etc/dnf/vars/releasever`, utilisez la commande suivante pour rétablir le comportement de verrouillage par défaut en effaçant la valeur de remplacement.  

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

 L'utilisation d'une dérogation persistante à l'utilisation `latest` plutôt qu'à une version spécifique est similaire au comportement par défaut de. AL2 Certains services AMIs basés sur cette base désactivent AL2 ce comportement et se verrouillent sur des versions de package spécifiques, comme celles que vous avez activées par défaut AL2023. 

 Plutôt que de désactiver les mises à jour déterministes, nous recommandons de remplacer les instances par des instances lancées depuis une nouvelle AMI. Si le remplacement d'instance n'est pas une option, nous vous recommandons d'utiliser des outils tels que [AWS Systems Manager Patch Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager.html) pour orchestrer l'application des mises à jour au sein d'un parc. [EC2 Image](https://docs.aws.amazon.com/imagebuilder/latest/userguide/) Builder peut également créer, corriger et tester automatiquement vos AMIs propres images dérivées d'images AL2023 de base. Vous pouvez également utiliser [Recevez des notifications sur les nouvelles mises à jour](receive-update-notification.md) ce qui peut être utilisé pour déclencher vos propres pipelines de création d'AMI. 

 L'utilisation `latest` dans un environnement de pré-production, puis le déploiement en production, `latest` *ne* vous protègent d'aucun problème entre une mise à jour du système d'exploitation et votre application. Une nouvelle AL2023 version peut être publiée à tout moment, et toute utilisation `latest` en production comporte donc des risques. 