

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Usar atualizações determinísticas por meio de repositórios com versionamento
<a name="deterministic-upgrades-usage"></a>

**Topics**
+ [Usando um sistema determinístico atualizado](#using-a-deterministic-upgraded-system)
+ [Atualização seletiva de um sistema determinístico atualizado](#deterministic-upgrade-selective-update)
+ [Usando a substituição persistente com atualização determinística](#deterministic-upgrade-override-persist)

## Usando um sistema determinístico atualizado
<a name="using-a-deterministic-upgraded-system"></a>

**nota**  
 O comportamento padrão do gerenciador de pacotes mudou de AL2. 

 As atualizações determinísticas são uma forma poderosa de garantir que todas as mudanças nos ambientes de produção possam ser totalmente testadas antes de uma ampla implantação. Cada nova AL2023 AMI está bloqueada para uma versão específica do AL2023. Isso fornece um comportamento determinístico de quais versões dos pacotes de sistema operacional são instaladas ao inicializar a AMI específica. As atualizações no local podem ser para uma versão de lançamento específica, garantindo um comportamento determinístico em toda a frota. Ao migrar para versões de atualização novas AMIs ou in-loco, você pode testar cada uma em seu CI/CD pipeline, detectando possíveis problemas antes de implantá-la em ambientes de produção. 

 Você pode usar ferramentas, como o [Gerenciador de Patches do AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager.html), para orquestrar a aplicação de atualizações em uma frota. Para compilações derivadas AMIs quando novas AL2023 AMIs são lançadas, o [EC2 Image](https://docs.aws.amazon.com/imagebuilder/latest/userguide/) Builder pode criar, corrigir e AMIs testar automaticamente, ou você [Receber notificações sobre novas atualizações](receive-update-notification.md) pode saber quando uma nova AMIs base está disponível ou acionar seus próprios pipelines de criação de AMI. 

 Para obter informações sobre como restringir as atualizações às de uma recomendação específica, consulte [Aplicar atualizações de segurança no local](security-inplace-update.md). 

 Para aplicar patches no local, você pode usar o gerenciador de pacotes `dnf`. Quando você executa o comando `dnf upgrade`, o sistema verifica se há atualizações no repositório que a variável `releasever` especifica. Uma versão válida `releasever` é uma *latest* ou uma versão com carimbo de data, como. *2023.10.20260325*

É possível alterar o valor de `releasever` usando um dos métodos a seguir. Esses métodos estão listados em prioridade decrescente do sistema. Isso significa que o método 1 substitui os métodos 2 e 3, e o método 2 substitui o método 3.

1. O valor no sinalizador da linha de comando, `--releasever=latest`, se for usado.

1. O valor especificado no arquivo da variável de substituição, `/etc/dnf/vars/releasever`, se estiver definido.

1. A versão atualmente instalada do pacote `system-release`.

No exemplo a seguir, a versão é*2023.0.20230210*:

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

Em um sistema recém-instalado, a variável de substituição não está presente. Nenhuma atualização está disponível porque o sistema está bloqueado para a versão instalada do `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!
```

Você pode obter pacotes de uma versão específica usando o sinalizador `releasever` para fornecer a versão desejada.

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

Como a opção `--releasever` substitui ambas `system-release` e `/etc/dnf/vars/releasever`, o resultado dessa atualização é o seguinte:

1. A atualização substitui todos os pacotes instalados que foram alterados entre a versão anterior e a nova.

1. A atualização bloqueia o sistema no repositório da nova versão do `system-release`.

 Ao sempre especificar para qual `releasever` (ou seja, AL2023 versão) atualizar, você tem um conjunto determinístico de mudanças em uma frota. Você lançou a versão*A*, atualizou para *B* e depois atualizou para*C*. 

## Atualização seletiva de um sistema determinístico atualizado
<a name="deterministic-upgrade-selective-update"></a>

**nota**  
 Recomendamos instalar todas as atualizações em um novo lançamento, em vez de selecionar atualizações específicas. Aplicar apenas parte de uma atualização ao sistema operacional deve ser uma exceção à prática padrão de realizar a atualização inteira. 

Talvez você queira instalar pacotes selecionados de uma versão recente, deixando o sistema bloqueado para a versão original.

É possível usar `dnf check-update` para identificar os pacotes que você deseja atualizar.

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

Instale os pacotes que você deseja atualizar. Use `sudo dnf upgrade --releasever=latest` e os nomes dos pacotes para garantir que o pacote `system-release` permaneça inalterado.

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

**nota**  
O uso de `sudo dnf upgrade --releasever=latest` atualiza todos os pacotes, inclusive `system-release`. Em seguida, a versão permanece bloqueada para o novo `system-release`, a menos que você defina a substituição persistente.

## Usando a substituição persistente com atualização determinística
<a name="deterministic-upgrade-override-persist"></a>

**nota**  
 Com atualizações determinísticas, você pode integrar as alterações do sistema operacional ao seu CI/CD pipeline. A desativação das atualizações determinísticas elimina a capacidade de testar antes da implantação. 

Em vez de adicionar`--releasever=latest`, você pode usar a substituição persistente para *desbloquear* o sistema definindo o valor da variável como*latest*. Ao sempre usar`latest`, isso reverte o comportamento do AL2023 modelo de AL2 atualização, em que qualquer chamada para o gerenciador de pacotes *sempre* examinará a versão mais recente e não estará bloqueada em nenhuma versão específica do sistema operacional.

**Atenção**  
 Ao desvincular o gerenciador de pacotes usando uma substituição persistente de atualizações determinísticas, você corre o risco de descobrir possíveis incompatibilidades entre sua aplicação e uma atualização do sistema operacional em produção.   
 Embora as incompatibilidades *sejam* raras, uma atualização do sistema operacional integra novas alterações de código em seu ambiente, e os testes de integração podem impedir a implantação de alterações de código que tenham um impacto negativo nos ambientes de produção. 

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

**nota**  
Se você usou a variável de substituição `/etc/dnf/vars/releasever`, use o comando a seguir para restaurar o comportamento de bloqueio padrão apagando o valor de substituição.  

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

 O uso de uma substituição persistente ao uso, `latest` em vez de uma versão específica, é semelhante ao comportamento padrão do. AL2 Existem serviços criados AMIs com base nos AL2 quais desabilitam esse comportamento e bloqueiam versões de pacotes específicas, como as que você usa por padrão AL2023. 

 Em vez de desabilitar as atualizações determinísticas, recomendamos substituir as instâncias por aquelas inicializadas de uma nova AMI. Se a substituição de instâncias não for uma opção, recomendamos o uso de ferramentas, como o [Gerenciador de Patches do AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager.html), para orquestrar a aplicação de atualizações em uma frota. [O EC2 Image](https://docs.aws.amazon.com/imagebuilder/latest/userguide/) Builder também pode criar, corrigir e testar automaticamente suas AMIs próprias imagens AL2023 derivadas de imagens básicas. Você também pode [Receber notificações sobre novas atualizações](receive-update-notification.md), o que pode ser usado para acionar seus próprios pipelines de desenvolvimento de AMIs. 

 O uso de `latest` em um ambiente de pré-produção e, depois, a implantação em produção usando `latest` *não* oferece proteção contra nenhum problema entre uma atualização do sistema operacional e sua aplicação. Uma nova AL2023 versão pode ocorrer a qualquer momento e, portanto, todos os usos `latest` na produção acarretam riscos. 