

# Compilar e instalar a AWS CLI usando o código-fonte
<a name="getting-started-source-install"></a>

Este tópico descreve como usar o código-fonte para instalar ou atualizar para a versão mais recente da AWS Command Line Interface (AWS CLI) em sistemas operacionais compatíveis. 

Para obter informações sobre as versões mais recentes da AWS CLI, consulte o [Log de alterações da AWS CLI versão 2](https://raw.githubusercontent.com/aws/aws-cli/v2/CHANGELOG.rst) no GitHub.

**Importante**  
As versões 1 e 2 da AWS CLI usam o mesmo nome de comando da `aws`. Se você instalou a AWS CLI versão 1 anteriormente, consulte [Guia de migração para a AWS CLI versão 2](cliv2-migration.md).

**Topics**
+ [Por que compilar usando o código-fonte?](#source-getting-started-install-why)
+ [Etapas rápidas](#source-getting-started-install-quicksteps)
+ [Etapa 1: Configurar todos os requisitos](#source-getting-started-install-reqs)
+ [Etapa 2: Configurar a instalação da AWS CLI pelo código-fonte](#source-getting-started-install-config)
+ [Etapa 3: Compilar a AWS CLI](#source-getting-started-install-build)
+ [Etapa 4: Instalar a AWS CLI](#source-getting-started-install-instructions)
+ [Etapa 5: Verificar a instalação da AWS CLI](#source-getting-started-install-verify)
+ [Exemplos de fluxo de trabalho](#source-getting-started-install-workflows)
+ [Solução de problemas de erros de instalação e desinstalação da AWS CLI](#source-install-tshoot)
+ [Próximas etapas](#source-install-next-steps)

## Por que compilar usando o código-fonte?
<a name="source-getting-started-install-why"></a>

A AWS CLI está [disponível na forma de instaladores predefinidos](getting-started-install.md) para a maioria das plataformas e ambientes, bem como na forma de imagem do Docker. 

Geralmente, esses instaladores oferecem cobertura para a maioria dos casos de uso. As instruções de instalação usando o código-fonte servem para ajudar nos casos de uso que nossos instaladores não cobrem. Alguns dos casos de uso incluem o seguinte:
+ Os instaladores predefinidos não oferecem suporte ao seu ambiente. Por exemplo, o ARM de 32 bits não é compatível com instaladores predefinidos.
+ Os instaladores predefinidos têm dependências que seu ambiente não tem. Por exemplo, o Alpine Linux usa [https://musl.libc.org/](https://musl.libc.org/), mas os instaladores atuais exigem `glibc`, o que impede que os instaladores predefinidos funcionem imediatamente. 
+ Os instaladores predefinidos exigem recursos aos quais seu ambiente restringe o acesso. Por exemplo, sistemas com segurança reforçada podem não conceder permissões à memória compartilhada. Isso é necessário para o instalador congelado `aws`. 
+ Os instaladores predefinidos geralmente são bloqueadores para mantenedores em gerenciadores de pacotes, já que há preferência pelo controle total sobre o processo de compilação de código e pacotes. A compilação usando o código-fonte permite que os mantenedores da distribuição tenham um processo mais simplificado para manter a AWS CLI atualizada. A habilitação de mantenedores fornece aos clientes versões mais atualizadas da AWS CLI ao instalar usando um gerenciador de pacotes de terceiros, como `brew`, `yum` e `apt`.
+ Os clientes que aplicam patches na funcionalidade da AWS CLI precisam compilar e instalar a AWS CLI usando o código-fonte. Isso é especialmente importante para membros da comunidade que desejam testar as alterações feitas no código-fonte antes de contribuir para a alteração no repositório GitHub da AWS CLI.

## Etapas rápidas
<a name="source-getting-started-install-quicksteps"></a>

**nota**  
Assume-se que todos os exemplos de código são executados da raiz do diretório do código-fonte.

Para compilar e instalar a AWS CLI usando o código-fonte, siga as etapas nesta seção. A AWS CLI utiliza o [GNU Autotools](https://www.gnu.org/software/automake/faq/autotools-faq.html) para instalar pelo código-fonte. No caso mais simples, a AWS CLI pode ser instalada usando o código-fonte ao executar os comandos de exemplo padrão na raiz do repositório GitHub da AWS CLI.



1. [Configure todos os requisitos para o seu ambiente.](#source-getting-started-install-reqs) Isso inclui ser capaz de executar arquivos gerados pelo [GNU Autotools](https://www.gnu.org/software/automake/faq/autotools-faq.html) e instalar o Python 3.8 ou posterior.

1. No seu terminal, navegue até o nível superior da pasta do código-fonte da AWS CLI e execute o comando `./configure`. Esse comando verifica o sistema em busca de todas as dependências necessárias e gera um `Makefile` para compilar e instalar a AWS CLI com base nas configurações detectadas e especificadas. 

------
#### [ Linux and macOS ]

   O exemplo de comando `./configure` a seguir define a configuração de compilação para a AWS CLI usando as configurações padrão.

   ```
   $ ./configure
   ```

------
#### [ Windows PowerShell ]

   Antes de executar qualquer comando que chame MSYS2, você deve preservar seu diretório de trabalho atual:

   ```
   PS C:\> $env:CHERE_INVOKING = 'yes'
   ```

   Depois, use o exemplo de comando `./configure` a seguir para definir a configuração de compilação para a AWS CLI usando seu caminho local para o executável do Python, instalando em C:\$1Program Files\$1AWSCLI e baixando todas as dependências.

   ```
   PS C:\> C:\msys64\usr\bin\bash  -lc " PYTHON='C:\path\to\python.exe' ./configure --prefix='C:\Program Files\AWSCLI' --with-download-deps "
   ```

------

   Para obter detalhes, opções de configuração disponíveis e informações de configuração padrão, consulte a seção [Etapa 2: Configurar a instalação da AWS CLI pelo código-fonte](#source-getting-started-install-config).

1. Execute o comando `make`. Esse comando compila a AWS CLI de acordo com suas definições de configuração. 

   O exemplo de comando `make` a seguir é compilado com opções padrão usando suas configurações de `./configure` existentes.

------
#### [ Linux and macOS ]

   ```
   $ make
   ```

------
#### [ Windows PowerShell ]

   ```
   PS C:\> C:\msys64\usr\bin\bash -lc "make" 
   ```

------

   Para obter detalhes e opções de compilação disponíveis, consulte a seção [Etapa 3: Compilar a AWS CLI](#source-getting-started-install-build).

1. Execute o comando `make install`. Esse comando instala a AWS CLI compilada no local configurado em seu sistema. 

   O exemplo de comando `make install` a seguir instala a AWS CLI compilada e cria symlinks em seus locais configurados usando as configurações de comando padrão.

------
#### [ Linux and macOS ]

   ```
   $ make install
   ```

------
#### [ Windows PowerShell ]

   ```
   PS C:\> C:\msys64\usr\bin\bash -lc "make install" 
   ```

   Após a instalação, adicione o caminho à AWS CLI usando o seguinte:

   ```
   PS C:\> $Env:PATH +=";C:\Program Files\AWSCLI\bin\"
   ```

------

   Para obter detalhes e opções de instalação disponíveis, consulte a seção [Etapa 4: Instalar a AWS CLI](#source-getting-started-install-instructions).

1. Confirme se a instalação da AWS CLI foi bem-sucedida usando o seguinte comando:

   ```
   $ aws --version
   aws-cli/2.27.41 Python/3.11.6 Windows/10 exe/AMD64 prompt/off
   ```

   Para obter as etapas de solução de problemas para erros de instalação, consulte a seção [Solução de problemas de erros de instalação e desinstalação da AWS CLI](#source-install-tshoot).

## Etapa 1: Configurar todos os requisitos
<a name="source-getting-started-install-reqs"></a>

Para compilar a AWS CLI usando o código-fonte, antes você precisa concluir o seguinte:

**nota**  
Assume-se que todos os exemplos de código são executados da raiz do diretório do código-fonte.

1. Faça download do código-fonte da AWS CLI bifurcando o repositório GitHub da AWS CLI ou baixando o tarball do código-fonte. As instruções são uma das seguintes opções:
   + Bifurcar e clonar o [repositório da AWS CLI](https://github.com/aws/aws-cli) do *GitHub*. Para obter mais informações, consulte [Fork a repo](https://docs.github.com/en/get-started/quickstart/fork-a-repo) (Bifurcar um repositório) no *GitHub Docs*.
   + Faça o download do pacote de origem mais recente em [https://awscli.amazonaws.com/awscli.tar.gz](https://awscli.amazonaws.com/awscli.tar.gz) e extraia o conteúdo usando os seguintes comandos:

     ```
     $ curl "https://awscli.amazonaws.com/awscli.tar.gz" -o "awscli.tar.gz"
     $ tar -xzf awscli.tar.gz
     ```
**nota**  
Para baixar uma versão específica, use o seguinte formato de link: [https://awscli.amazonaws.com/awscli-*númerodaversão*.tar.gz](https://awscli.amazonaws.com/awscli.tar.gz)   
Por exemplo, para a versão 2.10.0, o link é o seguinte: [https://awscli.amazonaws.com/awscli-*2.10.0*.tar.gz](https://awscli.amazonaws.com/awscli.tar.gz)  
As versões da fonte estão disponíveis a partir da versão **2.10.0** da AWS CLI.

     **(Opcional) Verificar a integridade do arquivo zip baixado ao realizar as seguintes etapas:**

     1. É possível usar as etapas a seguir para verificar as assinaturas usando a ferramenta `GnuPG`.

        Os arquivos AWS CLI do pacote do instalador da `.zip` são assinados criptograficamente com assinaturas PGP. Se houver qualquer dano ou alteração dos arquivos, ocorrerá uma falha nessa verificação e você não deverá prosseguir com a instalação.

     1. Baixe e instale o comando `gpg` usando o gerenciador de pacotes. Para obter mais informações sobre a `GnuPG`, consulte o [site da GnuPG](https://www.gnupg.org/). 

     1. Para criar o arquivo de chave pública, crie um arquivo de texto e cole o texto a seguir.

        ```
        -----BEGIN PGP PUBLIC KEY BLOCK-----
        
        mQINBF2Cr7UBEADJZHcgusOJl7ENSyumXh85z0TRV0xJorM2B/JL0kHOyigQluUG
        ZMLhENaG0bYatdrKP+3H91lvK050pXwnO/R7fB/FSTouki4ciIx5OuLlnJZIxSzx
        PqGl0mkxImLNbGWoi6Lto0LYxqHN2iQtzlwTVmq9733zd3XfcXrZ3+LblHAgEt5G
        TfNxEKJ8soPLyWmwDH6HWCnjZ/aIQRBTIQ05uVeEoYxSh6wOai7ss/KveoSNBbYz
        gbdzoqI2Y8cgH2nbfgp3DSasaLZEdCSsIsK1u05CinE7k2qZ7KgKAUIcT/cR/grk
        C6VwsnDU0OUCideXcQ8WeHutqvgZH1JgKDbznoIzeQHJD238GEu+eKhRHcz8/jeG
        94zkcgJOz3KbZGYMiTh277Fvj9zzvZsbMBCedV1BTg3TqgvdX4bdkhf5cH+7NtWO
        lrFj6UwAsGukBTAOxC0l/dnSmZhJ7Z1KmEWilro/gOrjtOxqRQutlIqG22TaqoPG
        fYVN+en3Zwbt97kcgZDwqbuykNt64oZWc4XKCa3mprEGC3IbJTBFqglXmZ7l9ywG
        EEUJYOlb2XrSuPWml39beWdKM8kzr1OjnlOm6+lpTRCBfo0wa9F8YZRhHPAkwKkX
        XDeOGpWRj4ohOx0d2GWkyV5xyN14p2tQOCdOODmz80yUTgRpPVQUtOEhXQARAQAB
        tCFBV1MgQ0xJIFRlYW0gPGF3cy1jbGlAYW1hem9uLmNvbT6JAlQEEwEIAD4CGwMF
        CwkIBwIGFQoJCAsCBBYCAwECHgECF4AWIQT7Xbd/1cEYuAURraimMQrMRnJHXAUC
        aGveYQUJDMpiLAAKCRCmMQrMRnJHXKBYD/9Ab0qQdGiO5hObchG8xh8Rpb4Mjyf6
        0JrVo6m8GNjNj6BHkSc8fuTQJ/FaEhaQxj3pjZ3GXPrXjIIVChmICLlFuRXYzrXc
        Pw0lniybypsZEVai5kO0tCNBCCFuMN9RsmmRG8mf7lC4FSTbUDmxG/QlYK+0IV/l
        uJkzxWa+rySkdpm0JdqumjegNRgObdXHAQDWlubWQHWyZyIQ2B4U7AxqSpcdJp6I
        S4Zds4wVLd1WE5pquYQ8vS2cNlDm4QNg8wTj58e3lKN47hXHMIb6CHxRnb947oJa
        pg189LLPR5koh+EorNkA1wu5mAJtJvy5YMsppy2y/kIjp3lyY6AmPT1posgGk70Z
        CmToEZ5rbd7ARExtlh76A0cabMDFlEHDIK8RNUOSRr7L64+KxOUegKBfQHb9dADY
        qqiKqpCbKgvtWlds909Ms74JBgr2KwZCSY1HaOxnIr4CY43QRqAq5YHOay/mU+6w
        hhmdF18vpyK0vfkvvGresWtSXbag7Hkt3XjaEw76BzxQH21EBDqU8WJVjHgU6ru+
        DJTs+SxgJbaT3hb/vyjlw0lK+hFfhWKRwgOXH8vqducF95NRSUxtS4fpqxWVaw3Q
        V2OWSjbne99A5EPEySzryFTKbMGwaTlAwMCwYevt4YT6eb7NmFhTx0Fis4TalUs+
        j+c7Kg92pDx2uQ==
        =OBAt
        -----END PGP PUBLIC KEY BLOCK-----
        ```

        Para referência, veja a seguir os detalhes da chave pública.

        ```
        Key ID:           A6310ACC4672
        Type:             RSA
        Size:             4096/4096
        Created:          2019-09-18
        Expires:          2026-07-07
        User ID:          AWS CLI Team <aws-cli@amazon.com>
        Key fingerprint:  FB5D B77F D5C1 18B8 0511  ADA8 A631 0ACC 4672 475C
        ```

     1. Importe a chave pública da AWS CLI com o comando a seguir, substituindo *public-key-file-name* pelo nome do arquivo da chave pública que você criou.

        ```
        $ gpg --import public-key-file-name
        gpg: /home/username/.gnupg/trustdb.gpg: trustdb created
        gpg: key A6310ACC4672475C: public key "AWS CLI Team <aws-cli@amazon.com>" imported
        gpg: Total number processed: 1
        gpg:               imported: 1
        ```

     1. Baixe o arquivo de assinatura da AWS CLI para o pacote baixado em [https://awscli.amazonaws.com/awscli.tar.gz.sig](https://awscli.amazonaws.com/awscli.tar.gz.sig). Ele tem o mesmo caminho e nome do arquivo tarball ao qual ele corresponde, mas tem a extensão `.sig`. Salve-o no mesmo caminho do arquivo tarball. Ou use o bloco de comandos a seguir:

        ```
        $ curl awscliv2.sig https://awscli.amazonaws.com/ -o awscli.tar.gz.sig
        ```

     1. Verifique a assinatura, passando os nomes dos arquivos `.sig` e `.zip` baixados como parâmetros para o comando `gpg`.

        ```
        $ gpg --verify awscliv2.sig awscli.tar.gz
        ```

        A saída deve ser semelhante à seguinte.

        ```
        gpg: Signature made Mon Nov  4 19:00:01 2019 PST
        gpg:                using RSA key FB5D B77F D5C1 18B8 0511 ADA8 A631 0ACC 4672 475C
        gpg: Good signature from "AWS CLI Team <aws-cli@amazon.com>" [unknown]
        gpg: WARNING: This key is not certified with a trusted signature!
        gpg:          There is no indication that the signature belongs to the owner.
        Primary key fingerprint: FB5D B77F D5C1 18B8 0511  ADA8 A631 0ACC 4672 475C
        ```
**Importante**  
O aviso na saída é esperado e não indica um problema. Isso ocorre porque não há uma cadeia de confiança entre a chave PGP pessoal (se você tiver uma) e a chave PGP da AWS CLI. Para obter mais informações, consulte [Web of trust](https://wikipedia.org/wiki/Web_of_trust).

1. Você tem um ambiente que pode executar arquivos gerados pelo [GNU Autotools](https://www.gnu.org/software/automake/faq/autotools-faq.html), como `configure` e `Makefile`. Esses arquivos são amplamente transportáveis entre as plataformas POSIX.

------
#### [ Linux and macOS ]

   Se o Autotools ainda não estiver instalado em seu ambiente ou se você precisar atualizá-lo, siga as instruções de instalação em [How do I install the Autotools (as user)?](https://www.gnu.org/software/automake/faq/autotools-faq.html#How-do-I-install-the-Autotools-_0028as-user_0029_003f) [Como instalar o Autotools (como usuário)?] ou [Basic Installation](https://www.gnu.org/savannah-checkouts/gnu/automake/manual/automake.html#Basic-Installation) (Instalação básica) na *documentação da GNU*.

------
#### [ Windows PowerShell ]

**Atenção**  
Se você estiver em um ambiente Windows, sugerimos que use os instaladores predefinidos. Para obter instruções de instalação sobre os instaladores predefinidos, consulte [Instalar ou atualizar a versão mais recente da AWS CLI](getting-started-install.md)

   Como o Windows não vem com um shell compatível com POSIX, você precisa instalar um software adicional para instalar a AWS CLI usando o código-fonte. O [MSYS2](https://www.msys2.org/) fornece um conjunto de ferramentas e bibliotecas para ajudar a compilar e instalar software do Windows, especialmente para os scripts baseados em POSIX que o Autotools usa.

   1. Instale o MSYS2. Para obter informações sobre como instalar e usar o MSYS2, consulte as [instruções de instalação e uso](https://www.msys2.org/) na *documentação do MSYS2*. 

   1. Abra o terminal MSYS2 e instale o Autotools usando o comando a seguir.

      ```
      $ pacman -S autotools
      ```

**nota**  
Ao usar os exemplos de código de configuração, compilação e instalação neste guia para Windows, assume-se o caminho de instalação padrão do MSYS2 de `C:\msys64\usr\bin\bash`. Ao chamar o MSYS2 dentro do PowerShell, você usará o seguinte formato, com o comando bash entre aspas:  

   ```
   PS C:\> C:\msys64\usr\bin\bash  -lc "command example" 
   ```
O exemplo de comando a seguir chama o comando `./configure`.  

   ```
   PS C:\> C:\msys64\usr\bin\bash  -lc "./configure" 
   ```

------

1. Um intérprete Python 3.8 ou posterior é instalado. A versão mínima necessária do Python segue os mesmos cronogramas da[ política oficial de suporte do Python para AWS SDKs e ferramentas](https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/). O intérprete recebe suporte somente até seis meses após a data de término do suporte.

1. **(Opcional)** Instale todas as dependências da biblioteca Python de compilação e execução da AWS CLI. O comando `./configure` informa se está faltando alguma dependência e como instalá-la.

   Você pode instalar e usar automaticamente essas dependências durante o processo de configuração. Consulte [Download de dependências](#source-getting-started-install-config-dependencies) para obter mais informações.

## Etapa 2: Configurar a instalação da AWS CLI pelo código-fonte
<a name="source-getting-started-install-config"></a>

A configuração para compilar e instalar a AWS CLI é especificada usando o script `configure`. Para obter a documentação de todas as opções de configuração, execute o script `configure` com a opção `--help`:

------
#### [ Linux and macOS ]

```
$ ./configure --help
```

------
#### [ Windows PowerShell ]

```
PS C:\> C:\msys64\usr\bin\bash -lc "./configure --help" 
```

------

**Topics**
+ [Local de instalação](#source-getting-started-install-config-location)
+ [Intérprete Python](#source-getting-started-install-config-interpreter)
+ [Download de dependências](#source-getting-started-install-config-dependencies)
+ [Tipo de instalação](#source-getting-started-install-config-type)

### Local de instalação
<a name="source-getting-started-install-config-location"></a>

A instalação da AWS CLI pelo código-fonte usa dois diretórios configuráveis para instalar a AWS CLI:
+ `libdir`: diretório pai onde a AWS CLI será instalada. O caminho para a instalação da AWS CLI é `<libdir-value>/aws-cli`. O valor padrão de `libdir` para Linux e macOS é `/usr/local/lib`, o que faz com que o diretório de instalação padrão seja `/usr/local/lib/aws-cli`. 
+ `bindir`: diretório em que os executáveis da AWS CLI são instalados. O local padrão é `/usr/local/bin`. 

As seguintes opções de `configure` controlam os diretórios usados:
+ `--prefix`: define o prefixo do diretório a ser usado na instalação. O valor padrão para Linux e macOS é `/usr/local`. 
+ `--libdir`: define o `libdir` a ser usado para instalar a AWS CLI. O valor padrão é `<prefix-value>/lib`. Se `--libdir` e `--prefix` não forem especificados, o padrão para Linux e macOS será `/usr/local/lib/`. 
+ `--bindir`: define o `bindir` a ser usado para instalar os executáveis `aws` e `aws_completer` da AWS CLI. O valor padrão é `<prefix-value>/bin`. Se `bindir` e `--prefix` não forem especificados, o padrão para Linux e macOS será `/usr/local/bin/`. 

------
#### [ Linux and macOS ]

O exemplo de comando a seguir usa a opção `--prefix` para fazer uma instalação de usuário local da AWS CLI. Esse comando instala a AWS CLI em `$HOME/.local/lib/aws-cli` e os executáveis em `$HOME/.local/bin`:

```
$ ./configure --prefix=$HOME/.local
```

O exemplo de comando a seguir usa a opção `--libdir` para instalar a AWS CLI como uma aplicação complementar no diretório `/opt`. Esse comando instala a AWS CLI em `/opt/aws-cli` e os executáveis em seus locais padrão de `/usr/local/bin`.

```
$ ./configure --libdir=/opt
```

------
#### [ Windows PowerShell ]

O exemplo de comando a seguir usa a opção `--prefix` para fazer uma instalação de usuário local da AWS CLI. Esse comando instala a AWS CLI em `$HOME/.local/lib/aws-cli` e os executáveis em `$HOME/.local/bin`:

```
$ C:\msys64\usr\bin\bash -lc "./configure --prefix='C:\Program Files\AWSCLI'" 
```

O exemplo de comando a seguir usa a opção `--libdir` para instalar a AWS CLI como uma aplicação complementar no diretório `/opt`. Esse comando instala a AWS CLI em `C:\Program Files\AWSCLI\opt\aws-cli`.

------

### Intérprete Python
<a name="source-getting-started-install-config-interpreter"></a>

**nota**  
É altamente recomendável especificar o intérprete Python durante a instalação para Windows.

O script `./configure` seleciona automaticamente um intérprete instalado do Python 3.8 ou posterior para usar na compilação e execução da AWS CLI utilizando a macro [https://www.gnu.org/software/automake/manual/html_node/Python.html](https://www.gnu.org/software/automake/manual/html_node/Python.html) em Autoconf.

O intérprete Python a ser usado pode ser definido explicitamente usando a variável de ambiente `PYTHON` ao executar o script `configure`:

------
#### [ Linux and macOS ]

```
$ PYTHON=/path/to/python ./configure
```

------
#### [ Windows PowerShell ]

```
PS C:\> C:\msys64\usr\bin\bash -lc "PYTHON='C:\path\to\python' ./configure"
```

------

### Download de dependências
<a name="source-getting-started-install-config-dependencies"></a>

Por padrão, todas as dependências de compilação e de tempo de execução da AWS CLI já devem estar instaladas no sistema. Isso inclui todas as dependências da biblioteca Python. Todas as dependências são verificadas quando o script `configure` é executado; se o sistema não tiver uma das dependências do Python, o script `configure` retornará um erro. 

O seguinte exemplo de código retorna um erro quando o sistema não tem uma das dependências:

------
#### [ Linux and macOS ]

```
$ ./configure 
checking for a Python interpreter with version >= 3.8... python
checking for python... /Users/username/.envs/env3.11/bin/python
checking for python version... 3.11
checking for python platform... darwin
checking for GNU default python prefix... ${prefix}
checking for GNU default python exec_prefix... ${exec_prefix}
checking for python script directory (pythondir)... ${PYTHON_PREFIX}/lib/python3.11/site-packages
checking for python extension module directory (pyexecdir)... ${PYTHON_EXEC_PREFIX}/lib/python3.11/site-packages
checking for --with-install-type... system-sandbox
checking for --with-download-deps... Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/Users/username/aws-code/aws-cli/./backends/build_system/__main__.py", line 125, in <module>
    main()
  File "/Users/username/aws-code/aws-cli/./backends/build_system/__main__.py", line 121, in main
    parsed_args.func(parsed_args)
  File "/Users/username/aws-code/aws-cli/./backends/build_system/__main__.py", line 49, in validate
    validate_env(parsed_args.artifact)
  File "/Users/username/aws-code/aws-cli/./backends/build_system/validate_env.py", line 68, in validate_env
    raise UnmetDependenciesException(unmet_deps, in_venv)
validate_env.UnmetDependenciesException: Environment requires following Python dependencies:

awscrt (required: ('>=0.12.4', '<0.17.0')) (version installed: None)

We recommend using --with-download-deps flag to automatically create a virtualenv and download the dependencies.

If you want to manage the dependencies yourself instead, run the following pip command:
/Users/username/.envs/env3.11/bin/python -m pip install --prefer-binary 'awscrt>=0.12.4,<0.17.0'

configure: error: "Python dependencies not met."
```

------
#### [ Windows PowerShell ]

```
PS C:\> C:\msys64\usr\bin\bash -lc "./configure" 
checking for a Python interpreter with version >= 3.8... python
checking for python... /Users/username/.envs/env3.11/bin/python
checking for python version... 3.11
checking for python platform... darwin
checking for GNU default python prefix... ${prefix}
checking for GNU default python exec_prefix... ${exec_prefix}
checking for python script directory (pythondir)... ${PYTHON_PREFIX}/lib/python3.11/site-packages
checking for python extension module directory (pyexecdir)... ${PYTHON_EXEC_PREFIX}/lib/python3.11/site-packages
checking for --with-install-type... system-sandbox
checking for --with-download-deps... Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/Users/username/aws-code/aws-cli/./backends/build_system/__main__.py", line 125, in <module>
    main()
  File "/Users/username/aws-code/aws-cli/./backends/build_system/__main__.py", line 121, in main
    parsed_args.func(parsed_args)
  File "/Users/username/aws-code/aws-cli/./backends/build_system/__main__.py", line 49, in validate
    validate_env(parsed_args.artifact)
  File "/Users/username/aws-code/aws-cli/./backends/build_system/validate_env.py", line 68, in validate_env
    raise UnmetDependenciesException(unmet_deps, in_venv)
validate_env.UnmetDependenciesException: Environment requires following Python dependencies:

awscrt (required: ('>=0.12.4', '<0.17.0')) (version installed: None)

We recommend using --with-download-deps flag to automatically create a virtualenv and download the dependencies.

If you want to manage the dependencies yourself instead, run the following pip command:
/Users/username/.envs/env3.11/bin/python -m pip install --prefer-binary 'awscrt>=0.12.4,<0.17.0'

configure: error: "Python dependencies not met."
```

------

Para instalar automaticamente as dependências necessárias do Python, use a opção `--with-download-deps`. Ao usar esse sinalizador, o processo de compilação faz o seguinte:
+ Ignora a verificação de dependências da biblioteca Python. 
+ Define as configurações para fazer download de todas as dependências necessárias do Python e usar **somente** as dependências baixadas para compilar a AWS CLI durante a compilação de `make`.

O seguinte exemplo de comando de configuração usa a opção `--with-download-deps` para fazer download e usar as dependências do Python:

------
#### [ Linux and macOS ]

```
$ ./configure --with-download-deps
```

------
#### [ Windows PowerShell ]

```
PS C:\> C:\msys64\usr\bin\bash -lc "./configure --with-download-deps"
```

------

### Tipo de instalação
<a name="source-getting-started-install-config-type"></a>

O processo de instalação pelo código-fonte é compatível com os seguintes tipos de instalação:
+ `system-sandbox`: **(padrão)** cria um ambiente virtual Python isolado, instala a AWS CLI no ambiente virtual e symlinks nos executáveis `aws` e `aws_completer` no ambiente virtual. Essa instalação da AWS CLI depende diretamente do intérprete Python selecionado para o respectivo tempo de execução.

  Esse é um mecanismo de instalação leve para instalar a AWS CLI em um sistema e segue as práticas recomendadas do Python ao colocar a instalação em um ambiente virtual de área restrita para testes. Essa instalação é destinada a clientes que desejam instalar a AWS CLI pelo código-fonte da maneira mais simples possível com a instalação acoplada à sua instalação do Python.
+ `portable-exe`: congela a AWS CLI em um executável independente que pode ser distribuído para ambientes de arquiteturas semelhantes. Esse é o mesmo processo usado para gerar os executáveis oficiais predefinidos da AWS CLI. O `portable-exe` congela em uma cópia do intérprete Python escolhido na etapa `configure` a ser usada para o tempo de execução da AWS CLI. Isso permite que ela seja movida para outras máquinas que podem não ter um intérprete Python. 

  Esse tipo de compilação é útil porque você pode garantir que a instalação da AWS CLI não esteja acoplada à versão do Python instalada no ambiente e pode distribuir uma compilação para outro sistema que talvez ainda não tenha o Python instalado. Isso permite que você controle as dependências e a segurança dos executáveis da AWS CLI usados.

Para configurar o tipo de instalação, use a opção `--with-install-type` e especifique um valor de `portable-exe` ou `system-sandbox`. 

O seguinte exemplo de comando `./configure` especifica um valor de `portable-exe`:

------
#### [ Linux and macOS ]

```
$ ./configure --with-install-type=portable-exe
```

------
#### [ Windows PowerShell ]

```
PS C:\> C:\msys64\usr\bin\bash -lc "./configure --with-install-type=portable-exe"
```

------

## Etapa 3: Compilar a AWS CLI
<a name="source-getting-started-install-build"></a>

Use o comando `make` para compilar a AWS CLI usando suas definições de configuração:

------
#### [ Linux and macOS ]

```
$ make
```

------
#### [ Windows PowerShell ]

```
PS C:\> C:\msys64\usr\bin\bash -lc "make"
```

------

**nota**  
Um ambiente virtual é criado no diretório de compilação usando o módulo [https://docs.python.org/3/library/venv.html](https://docs.python.org/3/library/venv.html) do Python. O ambiente virtual é inicializado com uma [versão do pip que é fornecida na biblioteca padrão do Python](https://docs.python.org/3/library/ensurepip.html). 
Copia as dependências da biblioteca Python. Dependendo de o sinalizador `--with-download-deps` ter sido especificado ou não no comando `configure`, esta etapa executa uma das seguintes ações:  
O `--with-download-deps` **é** especificado. As dependências do Python são instaladas por pip. Isso inclui `wheel`, `setuptools` e todas as dependências de tempo de execução da AWS CLI. Se você estiver compilando o `portable-exe`, `pyinstaller` será instalado. Esses requisitos são todos especificados em arquivos de bloqueio gerados de [https://github.com/jazzband/pip-tools](https://github.com/jazzband/pip-tools). 
O `--with-download-deps` **não é** especificado. As bibliotecas Python do pacote do site do intérprete Python e quaisquer scripts (por exemplo, `pyinstaller`) são copiados para o ambiente virtual que está sendo usado para a compilação.
Executa `pip install` diretamente na base de código da AWS CLI para realizar uma compilação e instalação da AWS CLI off-line e em árvore no ambiente virtual de compilação. Essa instalação usa os sinalizadores pip [--no-build-isolation ](https://pip.pypa.io/en/stable/cli/pip_install/#cmdoption-no-build-isolation), [--use-feature=in-tree-build ](https://pip.pypa.io/en/stable/cli/pip_install/#local-project-installs), [--no-cache-dir ](https://pip.pypa.io/en/stable/cli/pip_install/#caching) e [https://pip.pypa.io/en/stable/cli/pip_install/#cmdoption-no-index](https://pip.pypa.io/en/stable/cli/pip_install/#cmdoption-no-index).
**(Opcional)** Se o `--install-type` estiver definido como `portable-exe` no comando `configure`, um executável independente é compilado usando [https://www.pyinstaller.org/](https://www.pyinstaller.org/). 

## Etapa 4: Instalar a AWS CLI
<a name="source-getting-started-install-instructions"></a>

O comando `make install` instala a AWS CLI compilada no local configurado em seu sistema. 

------
#### [ Linux and macOS ]

O seguinte exemplo de comando instala a AWS CLI usando suas definições de configuração e compilação:

```
$ make install
```

------
#### [ Windows PowerShell ]

O seguinte exemplo de comando instala a AWS CLI usando suas definições de configuração e compilação, depois adiciona uma variável de ambiente com o caminho para a AWS CLI:

```
PS C:\> C:\msys64\usr\bin\bash -lc " make install "
PS C:\> $Env:PATH +=";C:\Program Files\AWSCLI\bin\"
```

------

A regra `make install` é compatível com a variável [https://www.gnu.org/software/make/manual/html_node/DESTDIR.html#DESTDIR](https://www.gnu.org/software/make/manual/html_node/DESTDIR.html#DESTDIR). Quando especificada, essa variável prefixa o caminho indicado no caminho de instalação já configurado ao instalar a AWS CLI. Por padrão, nenhum valor é definido para essa variável. 

------
#### [ Linux and macOS ]

O seguinte exemplo de código usa um sinalizador `--prefix=/usr/local` para configurar um local de instalação, depois altera esse destino usando `DESTDIR=/tmp/stage` para o comando `make install`. Esses comandos resultam na instalação da AWS CLI em `/tmp/stage/usr/local/lib/aws-cli` e na localização dos executáveis em `/tmp/stage/usr/local/bin`.

```
$ ./configure --prefix=/usr/local
$ make
$ make DESTDIR=/tmp/stage install
```

------
#### [ Windows PowerShell ]

O seguinte exemplo de código usa um sinalizador `--prefix=\awscli` para configurar um local de instalação, depois altera esse destino usando `DESTDIR=C:\Program Files` para o comando `make install`. Esses comandos resultam na instalação da AWS CLI em `C:\Program Files\awscli`.

```
$ ./configure --prefix=\awscli
$ make
$ make DESTDIR='C:\Program Files' install
```

------

**nota**  
Move um dos seguintes para o diretório de instalação configurado:  
Se o tipo de instalação for `system-sandbox`, moverá o ambiente virtual compilado. 
Se o tipo de instalação for `portable-exe`, moverá o executável independente compilado. 
Cria symlinks para os executáveis `aws` e `aws_completer` no diretório bin configurado. 

## Etapa 5: Verificar a instalação da AWS CLI
<a name="source-getting-started-install-verify"></a>

Confirme se a instalação da AWS CLI foi bem-sucedida usando o seguinte comando:

```
$ aws --version
aws-cli/2.27.41 Python/3.11.6 Windows/10 exe/AMD64 prompt/off
```

Se o comando `aws` não for reconhecido, poderá ser necessário reiniciar o terminal para que novos symlinks sejam atualizados. Se você encontrar outros problemas depois de instalar ou desinstalar a AWS CLI, consulte [Solução de problemas da AWS CLI](cli-chap-troubleshooting.md) para obter os passos para a solução de problemas comuns.

## Exemplos de fluxo de trabalho
<a name="source-getting-started-install-workflows"></a>

Esta seção fornece alguns exemplos básicos de fluxo de trabalho para instalação usando o código-fonte.

### Instalação básica em Linux e macOS
<a name="source-getting-started-install-workflows-basic"></a>

O exemplo a seguir é um fluxo de trabalho de instalação básica em que a AWS CLI é instalada no local padrão de `/usr/local/lib/aws-cli`. 

```
$ cd path/to/cli/respository/
$ ./configure
$ make
$ make install
```

### Instalação automatizada em Windows
<a name="source-getting-started-install-workflows-win"></a>

**nota**  
Você deve executar o PowerShell como administrador para usar esse fluxo de trabalho.

O MSYS2 pode ser usado de forma automatizada em uma configuração de CI. Consulte [Using MSYS2 in CI](https://www.msys2.org/docs/ci/) (Como usar o MSYS2 em CI) na *documentação do MSYS2*. 

------
#### [ Downloaded Tarball ]

Faça download do arquivo `awscli.tar.gz`, depois extraia e instale a AWS CLI. Ao usar os comandos abaixo, substitua os seguintes caminhos:
+ `C:\msys64\usr\bin\bash` pelo caminho do MSYS2.
+ `.\awscli-2.x.x\` pelo nome da pasta de extração de `awscli.tar.gz`.
+ `PYTHON='C:\path\to\python.exe'` pelo caminho local do Python.

O seguinte exemplo de código automatiza a compilação e a instalação da AWS CLI pelo PowerShell usando o MSYS2 e especifica qual instalação local do Python deve ser usada:

```
PS C:\> curl "https://awscli.amazonaws.com/awscli.tar.gz" -o "awscliv2.zip"  #  Download the awscli.tar.gz file in the current working directory
PS C:\> tar -xvzf .\awscli.tar.gz #  Extract awscli.tar.gz file
PS C:\> cd .\awscli-2.x.x\ #  Navigate to the root of the extracted files
PS C:\> $env:CHERE_INVOKING = 'yes' #  Preserve the current working directory
PS C:\> C:\msys64\usr\bin\bash  -lc " PYTHON='C:\path\to\python.exe' ./configure --prefix='C:\Program Files\AWSCLI' --with-download-deps " 
PS C:\> C:\msys64\usr\bin\bash  -lc "make"
PS C:\> C:\msys64\usr\bin\bash  -lc "make install"
PS C:\> $Env:PATH +=";C:\Program Files\AWSCLI\bin\"
PS C:\> aws --version
aws-cli/2.27.41 Python/3.11.6 Windows/10 source-sandbox/AMD64
```

------
#### [ GitHub Repository ]

Faça download do arquivo `awscli.tar.gz`, depois extraia e instale a AWS CLI. Ao usar os comandos abaixo, substitua os seguintes caminhos:
+ `C:\msys64\usr\bin\bash` pelo caminho do MSYS2.
+ `C:path\to\cli\repository\` pelo caminho para o [repositório da AWS CLI](https://github.com/aws/aws-cli) clonado do *GitHub*. Para obter mais informações, consulte [Fork a repo](https://docs.github.com/en/get-started/quickstart/fork-a-repo) (Bifurcar um repositório) no *GitHub Docs*.
+ `PYTHON='C:\path\to\python.exe'` pelo caminho local do Python.

O seguinte exemplo de código automatiza a compilação e a instalação da AWS CLI pelo PowerShell usando o MSYS2 e especifica qual instalação local do Python deve ser usada:

```
PS C:\> cd C:path\to\cli\repository\
PS C:\> $env:CHERE_INVOKING = 'yes' #  Preserve the current working directory
PS C:\> C:\msys64\usr\bin\bash  -lc " PYTHON='C:\path\to\python.exe' ./configure --prefix='C:\Program Files\AWSCLI' --with-download-deps " 
PS C:\> C:\msys64\usr\bin\bash  -lc "make"
PS C:\> C:\msys64\usr\bin\bash  -lc "make install"
PS C:\> $Env:PATH +=";C:\Program Files\AWSCLI\bin\"
PS C:\> aws --version
```

------

### Contêiner do Alpine Linux
<a name="source-getting-started-install-workflows-alpine"></a>

Veja a seguir um exemplo de Dockerfile que pode ser usado para obter uma instalação funcional da AWS CLI em um contêiner do Alpine Linux como uma [alternativa aos binários predefinidos para Alpine](https://github.com/aws/aws-cli/issues/4685). Ao usar esse exemplo, substitua *AWSCLI\$1VERSION* pelo número de versão da AWS CLI desejado:

```
 1. FROM python:3.8-alpine AS builder
 2. 
 3. ENV AWSCLI_VERSION=2.10.1
 4. 
 5. RUN apk add --no-cache \
 6.     curl \
 7.     make \
 8.     cmake \
 9.     gcc \
10.     g++ \
11.     libc-dev \
12.     libffi-dev \
13.     openssl-dev \
14.     && curl https://awscli.amazonaws.com/awscli-${AWSCLI_VERSION}.tar.gz | tar -xz \
15.     && cd awscli-${AWSCLI_VERSION} \
16.     && ./configure --prefix=/opt/aws-cli/ --with-download-deps \
17.     && make \
18.     && make install
19. 
20. FROM python:3.8-alpine
21. 
22. RUN apk --no-cache add groff
23. 
24. COPY --from=builder /opt/aws-cli/ /opt/aws-cli/
25. 
26. ENTRYPOINT ["/opt/aws-cli/bin/aws"]
```

Essa imagem é compilada e a AWS CLI é invocada de um contêiner semelhante ao que é compilado no Amazon Linux 2:

```
$ docker build --tag awscli-alpine .
$ docker run --rm -it awscli-alpine --version
aws-cli/2.2.1 Python/3.8.11 Linux/5.10.25-linuxkit source-sandbox/x86_64.alpine.3 prompt/off
```

O tamanho final dessa imagem é menor do que o tamanho da imagem do Docker oficial da AWS CLI. Para obter informações sobre a imagem do Docker oficial, consulte [Executar as imagens oficiais do Amazon ECR Public ou do Docker para a AWS CLI](getting-started-docker.md).

## Solução de problemas de erros de instalação e desinstalação da AWS CLI
<a name="source-install-tshoot"></a>

Para obter as etapas de solução de problemas para erros de instalação comuns, consulte [Solução de problemas da AWS CLI](cli-chap-troubleshooting.md). Para obter os passos mais relevantes para a solução de problemas, consulte [Erros de comando não encontrado](cli-chap-troubleshooting.md#tshoot-install-not-found), [O comando “`aws --version`” retorna uma versão diferente da que você instalou](cli-chap-troubleshooting.md#tshoot-install-wrong-version) e [O comando “`aws --version`” retorna uma versão após a desinstalação da AWS CLI](cli-chap-troubleshooting.md#tshoot-uninstall-1).

Para quaisquer problemas não abordados nos guias de solução, pesquise os problemas com o rótulo `source-distribution` no [repositório da AWS CLI](https://github.com/aws/aws-cli/labels/source-distribution) no *GitHub*. Se nenhum problema existente abordar seus erros, [crie um problema](https://github.com/aws/aws-cli/issues/new?assignees=&labels=source-distribution%2Cneeds-triage&template=source-distribution.yml&title=%28short+issue+description%29) para receber ajuda dos mantenedores da AWS CLI.

## Próximas etapas
<a name="source-install-next-steps"></a>

Depois de instalar a AWS CLI, execute um [Configuração da AWS CLI](getting-started-quickstart.md).