

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# AWS CLI 從來源建置和安裝
<a name="getting-started-source-install"></a>

本主題將描述如何在支援的作業系統上從來源安裝或更新 AWS Command Line Interface (AWS CLI)。

如需最新版本 的資訊 AWS CLI，請參閱 GitHub 上的[AWS CLI 第 2 版變更日誌](https://raw.githubusercontent.com/aws/aws-cli/v2/CHANGELOG.rst)。

**重要**  
AWS CLI 第 1 版和第 2 版使用相同的`aws`命令名稱。如果您先前已安裝 AWS CLI 版本 1，請參閱 [第 2 AWS CLI 版的遷移指南](cliv2-migration.md)。

**Topics**
+ [為什麼要從來源建置？](#source-getting-started-install-why)
+ [快速步驟](#source-getting-started-install-quicksteps)
+ [步驟 1：設定所有要求](#source-getting-started-install-reqs)
+ [步驟 2：設定 AWS CLI 來源安裝](#source-getting-started-install-config)
+ [步驟 3：建置 AWS CLI](#source-getting-started-install-build)
+ [步驟 4：安裝 AWS CLI](#source-getting-started-install-instructions)
+ [步驟 5：驗證 AWS CLI 安裝](#source-getting-started-install-verify)
+ [工作流程範例](#source-getting-started-install-workflows)
+ [針對 AWS CLI 安裝和解除安裝錯誤進行故障診斷](#source-install-tshoot)
+ [後續步驟](#source-install-next-steps)

## 為什麼要從來源建置？
<a name="source-getting-started-install-why"></a>

 AWS CLI 適用於[大多數平台和環境的預先建置安裝程式](getting-started-install.md)，以及 Docker 映像。

這些安裝程式通常涵蓋大多數的使用案例。從來源安裝的說明是為了幫助我們的安裝程式未涵蓋的使用案例。部分使用案例如下：
+ 預先建置的安裝程式不支援您的環境。例如，預先建置的安裝程式不支援 ARM 32 位元。
+ 預先建置的安裝程式具有您環境缺少的相依性。例如，Alpine Linux 使用 [https://musl.libc.org/](https://musl.libc.org/)，但是現有的安裝程式需要 `glibc`，造成預先建置的安裝程式無法立即運作。
+ 預先建置的安裝程式需要您的環境限制存取的資源。例如，強化安全性的系統可能不會授予共用記憶體的權限。這是凍結的 `aws` 安裝程式所需的。
+ 預先建置的安裝程式通常是套件管理工具中維護程式的封鎖程式，通常建議程式碼和套件在建置過程中取得完全控制權限。從來源建置讓分發維護程式能以更簡化的流程持續更新 AWS CLI 。啟用維護程式可在客戶從 `brew`、`yum` 和 `apt` 等第三方套件管理工具安裝時，提供客戶更新的 AWS CLI 版本。
+ 修補 AWS CLI 功能的客戶需要從來源建置和安裝 AWS CLI 。這對想要在對 AWS CLI GitHub 儲存庫做出變更之前測試對來源所做的變更的社群成員來說特別重要。

## 快速步驟
<a name="source-getting-started-install-quicksteps"></a>

**注意**  
所有程式碼範例都是假設從來源目錄的根目錄執行。

若要 AWS CLI 從來源建置和安裝 ，請遵循本節中的步驟。 AWS CLI 利用 [GNU 自動工具](https://www.gnu.org/software/automake/faq/autotools-faq.html)從來源安裝。在最簡單的情況下， AWS CLI 您可以從來源安裝 ，方法是從 AWS CLI GitHub 儲存庫的根目錄執行預設範例命令。



1. [為您的環境設定所有需求。](#source-getting-started-install-reqs)這包括能執行 [GNU 自動工具](https://www.gnu.org/software/automake/faq/autotools-faq.html)產生的檔案和安裝 Python 3.8 或更新版本。

1. 在終端機中，導覽至 AWS CLI 來源資料夾的最上層，然後執行 `./configure`命令。此命令會檢查系統中是否有所有必要的相依性，並根據偵測到和指定的組態產生 `Makefile` 用於建置和安裝 AWS CLI 。

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

   下列`./configure`命令範例 AWS CLI 會使用預設設定來設定 的建置組態。

   ```
   $ ./configure
   ```

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

   執行任何呼叫 MSYS2 的命令之前，您必須保留現有的工作目錄：

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

   然後使用下列`./configure`命令範例， AWS CLI 使用 Python 可執行檔的本機路徑來設定 的建置組態、安裝至 C：\$1Program Files\$1AWSCLI，以及下載所有相依性。

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

------

   如需詳細資訊、可用的組態選項和預設設定資訊，請參閱 [步驟 2：設定 AWS CLI 來源安裝](#source-getting-started-install-config) 一節。

1. 執行 `make` 命令。此命令 AWS CLI 會根據您的組態設定建置 。

   下列 `make` 命令範例會使用您現有的 `./configure` 設定，以預設選項建置。

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

   ```
   $ make
   ```

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

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

------

   如需詳細資訊和可用的建置選項，請參閱 [步驟 3：建置 AWS CLI](#source-getting-started-install-build) 一節。

1. 執行 `make install` 命令。此命令會將 建置的 安裝 AWS CLI 到系統上設定的位置。

   下列`make install`命令範例會安裝您建置的 ， AWS CLI 並使用預設命令設定在設定的位置中建立符號連結。

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

   ```
   $ make install
   ```

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

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

   安裝後， AWS CLI 使用下列項目將路徑新增至 ：

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

------

   如需詳細資訊和可用的安裝選項，請參閱 [步驟 4：安裝 AWS CLI](#source-getting-started-install-instructions) 一節。

1. 使用以下命令確認 AWS CLI 已成功安裝 ：

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

   如需安裝錯誤的故障診斷步驟，請參閱 [針對 AWS CLI 安裝和解除安裝錯誤進行故障診斷](#source-install-tshoot) 一節。

## 步驟 1：設定所有要求
<a name="source-getting-started-install-reqs"></a>

若要 AWS CLI 從來源建置 ，您需要事先完成下列項目：

**注意**  
所有程式碼範例都是假設從來源目錄的根目錄執行。

1. 透過 AWS CLI 偽造 AWS CLI GitHub 儲存庫或下載來源 tarball 來下載來源。說明如下：
   + 從 *GitHub* 延伸和複製 [AWS CLI 儲存庫](https://github.com/aws/aws-cli)。如需詳細資訊，請參閱 *GitHub 文件*中的《[延伸儲存庫](https://docs.github.com/en/get-started/quickstart/fork-a-repo)》。
   + 在 [https://awscli.amazonaws.com/awscli.tar.gz](https://awscli.amazonaws.com/awscli.tar.gz) 下載最新來源 tarball，並使用下列命令擷取內容：

     ```
     $ curl "https://awscli.amazonaws.com/awscli.tar.gz" -o "awscli.tar.gz"
     $ tar -xzf awscli.tar.gz
     ```
**注意**  
要下載特定版本，請使用以下連結格式：[https://awscli.amazonaws.com/awscli-*versionnumber*.tar.gz](https://awscli.amazonaws.com/awscli.tar.gz)   
例如，如需版本 2.10.0，則連結將如下：[https://awscli.amazonaws.com/awscli-*2.10.0*.tar.gz](https://awscli.amazonaws.com/awscli.tar.gz)  
來源版本從 AWS CLI的 **2.10.0** 版開始提供。

     **(可選) 完成下列步驟，驗證所下載 zip 檔案的完整性：**

     1. 您可以依循下列步驟使用 `GnuPG` 工具來驗證簽章。

         AWS CLI 安裝程式套件`.zip`檔案使用 PGP 簽章進行密碼編譯簽署。如果檔案有任何損壞或更改，此驗證會失敗，且您不應該繼續進行安裝。

     1. 使用您的套件管理工具下載並安裝 `gpg` 命令。如需有關 `GnuPG` 的詳細資訊，請參閱 [GnuPG 網站](https://www.gnupg.org/)。

     1. 若要建立公開金鑰檔案，請建立文字檔案，然後貼上下列文字。

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

        以下公開金鑰詳細資訊僅供參考。

        ```
        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. 使用下列命令匯入 AWS CLI 公有金鑰，以您建立之公有金鑰的檔案名稱取代 *public-key-file-name*。

        ```
        $ 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. 下載您在 https：//[https://awscli.amazonaws.com/awscli.tar.gz.sig](https://awscli.amazonaws.com/awscli.tar.gz.sig) 下載之套件的 AWS CLI 簽章檔案。它會有與其對應的 tarball 檔案具有相同的路徑和名稱，但具有副檔名 `.sig`。將它儲存在與 tarball 檔案相同的路徑下。或使用下列命令區塊：

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

     1. 驗證簽章，並將下載的 `.sig` 和 `.zip` 檔案名稱以參數形式傳遞給 `gpg` 命令。

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

        輸出應看起來如下列內容。

        ```
        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
        ```
**重要**  
輸出中的警告是預期的，並不表示有問題。這是因為您的個人 PGP 金鑰 （如果您有） 和 AWS CLI PGP 金鑰之間沒有信任鏈。如需詳細資訊，請參閱「[信任網路](https://wikipedia.org/wiki/Web_of_trust)」。

1. 您有一個環境可以執行 [GNU 自動工具](https://www.gnu.org/software/automake/faq/autotools-faq.html) 產生的檔案，例如 `configure` 和 `Makefile`。這些檔案在 POSIX 平台上廣泛可攜。

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

   如果您的環境尚未安裝 Autotools，或者您需要更新它們，請遵循 *GNU 文件*中[我如何安裝 Autotools (以使用者身分)？](https://www.gnu.org/software/automake/faq/autotools-faq.html#How-do-I-install-the-Autotools-_0028as-user_0029_003f)或[基本安裝](https://www.gnu.org/savannah-checkouts/gnu/automake/manual/automake.html#Basic-Installation)中的安裝說明。

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

**警告**  
如果您處於 Windows 環境中，建議您使用預先建置的安裝程式。如需預先建置安裝程式的安裝說明，請參閱 [安裝或更新至最新版本的 AWS CLI](getting-started-install.md)

   由於 Windows 未隨附 POSIX 相容的 Shell，因此您需要安裝其他軟體，才能 AWS CLI 從來源安裝 。[MSYS2](https://www.msys2.org/) 提供了一系列工具和程式庫來幫助建置和安裝 Windows 軟體，尤其是對於 Autotools 使用的 POSIX 架構指令碼。

   1. 安裝 MSYS2。如需有關安裝和使用 MSYS2 的資訊，請參閱 *MSYS2 文件*中的[安裝和使用說明](https://www.msys2.org/)。

   1. 使用以下命令開啟 MSYS2 終端並安裝 Autotools。

      ```
      $ pacman -S autotools
      ```

**注意**  
使用本指南中適用於 Windows 的設定、建置和安裝程式碼範例時，會假設使用預設的 MSYS2 安裝路徑 `C:\msys64\usr\bin\bash`。在 PowerShell 中呼叫 MSYS2 時，您將使用以下格式，並使用引號中的 bash 命令：  

   ```
   PS C:\> C:\msys64\usr\bin\bash  -lc "command example" 
   ```
下列命令範例會呼叫 `./configure` 命令。  

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

------

1. 已安裝 Python 3.8 或更新版本的解譯器。所需的最低 Python 版本遵循與官方[ Python 支援政策 AWS SDKs和工具](https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/)相同的時間表。解譯器僅支援到終止支援日期之後的 6 個月。

1. **(選擇性)** 安裝 AWS CLI所有的建置和執行時間 Python 程式庫相依性。如果缺少任何相依性以及不知道如何安裝，`./configure` 命令能提供您資訊。

   您可以透過配置自動安裝和使用這些相依性，請參閱 [下載相依性](#source-getting-started-install-config-dependencies) 獲得更多資訊。

## 步驟 2：設定 AWS CLI 來源安裝
<a name="source-getting-started-install-config"></a>

建置和安裝 的組態 AWS CLI 會使用 `configure`指令碼指定。如需所有組態選項的文件，請使用 `--help` 選項執行 `configure` 指令碼：

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

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

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

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

------

**Topics**
+ [安裝位置](#source-getting-started-install-config-location)
+ [Python 解譯器](#source-getting-started-install-config-interpreter)
+ [下載相依性](#source-getting-started-install-config-dependencies)
+ [安裝類型](#source-getting-started-install-config-type)

### 安裝位置
<a name="source-getting-started-install-config-location"></a>

的來源安裝 AWS CLI 使用兩個可設定的目錄來安裝 AWS CLI：
+ `libdir` - AWS CLI 將安裝 的父目錄。 AWS CLI 安裝的路徑為 `<libdir-value>/aws-cli`。Linux 和 macOS 的預設 `libdir` 值是 `/usr/local/lib`，讓預設安裝目錄成為 `/usr/local/lib/aws-cli` 
+ `bindir` - AWS CLI 安裝可執行檔的目錄。預設位置為 `/usr/local/bin`。

下列 `configure` 選項可控制使用的目錄：
+ `--prefix` - 設定用於安裝的目錄字首。Linux 和 macOS 的預設值為 `/usr/local`。
+ `--libdir` - 設定 `libdir` 用於安裝 AWS CLI。預設值為 `<prefix-value>/lib`。如果 `--libdir` 和 `--prefix` 兩者都未指定，Linux 和 macOS 的預設值為 `/usr/local/lib/`。
+ `--bindir` - 設定`bindir`用於安裝 AWS CLI `aws`和 `aws_completer` 可執行檔的 。預設值為 `<prefix-value>/bin`。如果 `bindir` 和 `--prefix` 兩者都未指定，Linux 和 macOS 的預設值為 `/usr/local/bin/`。

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

下列命令範例使用 `--prefix` 選項來執行 AWS CLI的本機使用者安裝。此命令會在 AWS CLI 中安裝 ，`$HOME/.local/lib/aws-cli`並在 中安裝 可執行檔`$HOME/.local/bin`：

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

下列命令範例會使用 `--libdir` 選項，將 AWS CLI 作為附加元件應用程式安裝在 `/opt` 目錄中。此命令會在 AWS CLI 上安裝 ，`/opt/aws-cli`並在其預設位置安裝 可執行檔`/usr/local/bin`。

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

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

下列命令範例使用 `--prefix` 選項來執行 AWS CLI的本機使用者安裝。此命令會在 AWS CLI 中安裝 ，`$HOME/.local/lib/aws-cli`並在 中安裝 可執行檔`$HOME/.local/bin`：

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

下列命令範例會使用 `--libdir` 選項，將 AWS CLI 作為附加元件應用程式安裝在 `/opt` 目錄中。此命令 AWS CLI 會在 上安裝 `C:\Program Files\AWSCLI\opt\aws-cli`。

------

### Python 解譯器
<a name="source-getting-started-install-config-interpreter"></a>

**注意**  
強烈建議您在 Windows 安裝時，指定 Python 解譯器。

`./configure` 指令碼會自動選取已安裝的 Python 3.8 或更新版本解譯器，以 AWS CLI 使用 [https://www.gnu.org/software/automake/manual/html_node/Python.html](https://www.gnu.org/software/automake/manual/html_node/Python.html) Autoconf 巨集建置和執行 。

執行 `configure` 指令碼時，可以使用 `PYTHON` 環境變數明確設定要使用的 Python 解釋器：

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

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

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

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

------

### 下載相依性
<a name="source-getting-started-install-config-dependencies"></a>

根據預設，系統 AWS CLI 必須已安裝 的所有建置和執行時間相依性。這包括任何 Python 程式庫的相依性。`configure` 指令碼執行時會檢查所有相依性，如果系統缺少任何 Python 相依性，`configure` 指令碼會發生錯誤。

您的系統缺少相依性時，會顯示以下的代碼範例錯誤：

------
#### [ 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."
```

------

若要自動安裝所需的 Python 相依性，請使用 `--with-download-deps` 選項。使用此標記時，建置程序會執行下列動作：
+ 跳過 Python 程式庫的相依性檢查。
+ 配置設定以下載所有必要的 Python 相依性，並在 `make` 建置時**僅**使用下載的相依性來建置 AWS CLI 。

下面的配置命令範例使用 `--with-download-deps` 選項下載和使用 Python 相依性：

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

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

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

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

------

### 安裝類型
<a name="source-getting-started-install-config-type"></a>

來源安裝程序支援下列安裝類型：
+ `system-sandbox` - **（預設）** 建立隔離的 Python 虛擬環境、將 安裝 AWS CLI 至虛擬環境，並在虛擬環境中將 符號連結至 `aws`和 `aws_completer` 可執行檔。此 的安裝直接 AWS CLI 取決於所選 Python 解譯器的執行時間。

  這是一種輕量型安裝機制，可在系統 AWS CLI 上安裝 ，並透過在虛擬環境中對安裝進行沙盒處理來遵循 Python 最佳實務。此安裝適用於希望在安裝 Python 的同時，以最摩擦的方式 AWS CLI 從來源安裝 的客戶。
+ `portable-exe` - 將 凍結 AWS CLI 為可分散至類似架構環境的獨立可執行檔。這與用於產生 AWS CLI官方預先建置可執行檔的過程相同。`portable-exe` 凍結在 `configure` 步驟中選擇的 Python 解譯器副本，以用於 AWS CLI的執行時間。這讓它可移動到可能沒有 Python 解譯器的其他機器。

  這種類型的構建很有用，因為您可以確保您的 AWS CLI 安裝不會與環境安裝的 Python 版本耦合，並且可以將建構分發到可能尚未安裝 Python 的其他系統。這可讓您控制所使用 AWS CLI 可執行檔的相依性和安全性。

若要設定安裝類型，請使用 `--with-install-type` 選項並指定 `portable-exe` 或 `system-sandbox` 的值。

以下 `./configure` 命令範例會指定 `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"
```

------

## 步驟 3：建置 AWS CLI
<a name="source-getting-started-install-build"></a>

使用 `make`命令， AWS CLI 使用您的組態設定建置 ：

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

```
$ make
```

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

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

------

**注意**  
虛擬環境使用 Python [https://docs.python.org/3/library/venv.html](https://docs.python.org/3/library/venv.html) 模組在建置目錄中建立。虛擬環境使用 [Python 標準庫中提供的 pip 版本](https://docs.python.org/3/library/ensurepip.html)啟動。
複製 Python 程式庫的相依性。根據是否在 `configure` 命令中指定 `--with-download-deps` 標記，此步驟會執行下列其中一項作業：  
指定 `--with-download-deps` ****。Python 的相依性使用 pip 安裝。這包括 `wheel`、`setuptools` 以及所有 AWS CLI 執行時間相依性。如果您在建置 `portable-exe`，則 `pyinstaller` 已安裝。這些要求都在從 [https://github.com/jazzband/pip-tools](https://github.com/jazzband/pip-tools) 中產生的鎖定檔案中指定。
**未指定** `--with-download-deps`。Python 解譯器站點套件中的 Python 庫以及任何指令碼 (例如 `pyinstaller`) 都將複製到用於建置的虛擬環境中。
`pip install` 直接在 AWS CLI 程式碼庫上執行 ，以在建置 AWS CLI 虛擬環境中執行離線的樹狀內建置和安裝 。此安裝使用 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) 和 [https://pip.pypa.io/en/stable/cli/pip_install/#cmdoption-no-index](https://pip.pypa.io/en/stable/cli/pip_install/#cmdoption-no-index)。
**(選擇性)** 如果在 `configure` 命令中將 `--install-type` 設為 `portable-exe`，請使用 [https://www.pyinstaller.org/](https://www.pyinstaller.org/) 建置獨立的可執行檔。

## 步驟 4：安裝 AWS CLI
<a name="source-getting-started-install-instructions"></a>

`make install` 命令會將您建置的 安裝 AWS CLI 到系統上設定的位置。

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

下列命令範例 AWS CLI 使用您的組態和建置設定安裝 ：

```
$ make install
```

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

下列命令範例 AWS CLI 會使用您的組態和建置設定安裝 ，然後新增具有 路徑的環境變數 AWS CLI：

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

------

`make install` 規則支援 [https://www.gnu.org/software/make/manual/html_node/DESTDIR.html#DESTDIR](https://www.gnu.org/software/make/manual/html_node/DESTDIR.html#DESTDIR) 變數。如果有指定，此變數會在安裝 AWS CLI時，將指定路徑的加到已設定的安裝路徑前面。預設不會為此變數設定任何值。

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

下列程式碼範例會使用 `--prefix=/usr/local` 標記來設定安裝位置，然後使用 `make install` 指令和 `DESTDIR=/tmp/stage` 來變更目的地。這些命令會導致 AWS CLI 安裝在 `/tmp/stage/usr/local/lib/aws-cli`及其位於 的可執行檔`/tmp/stage/usr/local/bin`。

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

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

下列程式碼範例會使用 `--prefix=\awscli` 標記來設定安裝位置，然後使用 `make install` 指令和 `DESTDIR=C:\Program Files` 來變更目的地。這些命令會導致 AWS CLI 安裝在 。 `C:\Program Files\awscli`

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

------

**注意**  
將下列其中一項移至已設定的安裝目錄：  
如果安裝類型為 `system-sandbox`，移動您建置的虛擬環境。
如果安裝類型為 `portable-exe`，移動您建置的獨立可執行檔。
在配置的 bin 目錄中為 `aws` 和 `aws_completer` 可執行檔建立 symlink。

## 步驟 5：驗證 AWS CLI 安裝
<a name="source-getting-started-install-verify"></a>

使用以下命令確認 AWS CLI 已成功安裝 ：

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

如果找不到 `aws` 命令，您可能需要重新啟動終端，才能更新為新的 symlink。如果您在安裝或解除安裝 之後遇到其他問題 AWS CLI，請參閱 [故障診斷 的錯誤 AWS CLI](cli-chap-troubleshooting.md) 以取得常見的故障診斷步驟

## 工作流程範例
<a name="source-getting-started-install-workflows"></a>

本節提供一些從來源安裝的基本工作流程範例。

### 基本 Linux 和 macOS 安裝
<a name="source-getting-started-install-workflows-basic"></a>

下列範例是基本安裝工作流程，其中 AWS CLI 安裝在 的預設位置`/usr/local/lib/aws-cli`。

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

### 自動化 Windows 安裝
<a name="source-getting-started-install-workflows-win"></a>

**注意**  
您必須以系統管理員身分執行 PowerShell，才能使用此工作流程。

MSYS2 可以在 CI 設定中以自動方式使用，請參閱 *MSYS2 文件*的[在 CI 使用 MSYS2](https://www.msys2.org/docs/ci/)。

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

下載 `awscli.tar.gz` 檔案、解壓縮，並安裝 AWS CLI。使用下列命令時，請取代下列路徑：
+ `C:\msys64\usr\bin\bash` 取代為您的 MSYS2 路徑的位置。
+ `.\awscli-2.x.x\` 取代為解壓縮後的 `awscli.tar.gz` 資料夾名稱。
+ `PYTHON='C:\path\to\python.exe'` 取代為您的本機 Python 路徑。

下列程式碼範例會使用 MSYS2 AWS CLI 從 PowerShell 自動建置和安裝 ，並指定要使用的 Python 本機安裝：

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

下載 `awscli.tar.gz` 檔案、解壓縮，並安裝 AWS CLI。使用下列命令時，請取代下列路徑：
+ `C:\msys64\usr\bin\bash` 取代為您的 MSYS2 路徑的位置。
+ `C:path\to\cli\repository\` 取代為從 *GitHub* 到複製 [AWS CLI 儲存庫](https://github.com/aws/aws-cli)的路徑。如需詳細資訊，請參閱 *GitHub 文件*中的《[延伸儲存庫](https://docs.github.com/en/get-started/quickstart/fork-a-repo)》
+ `PYTHON='C:\path\to\python.exe'` 取代為您的本機 Python 路徑。

下列程式碼範例會使用 MSYS2 AWS CLI 從 PowerShell 自動建置和安裝 ，並指定要使用的 Python 本機安裝：

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

------

### Alpine Linux 容器
<a name="source-getting-started-install-workflows-alpine"></a>

以下的範例 Dockerfile，可用於在 Alpine Linux 容器取得 AWS CLI 的可運作安裝，作為 [Alpine 預先建置二進位檔的替代方案](https://github.com/aws/aws-cli/issues/4685)。使用此範例時，請將 *AWSCLI\$1VERSION* 取代為您所需的 AWS CLI 版本編號：

```
 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"]
```

此映像已建置，並從類似建置於 Amazon Linux 2 的容器 AWS CLI 叫用：

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

此影像的最終大小小於官方 Docker AWS CLI 影像的大小。如需 Docker 映像檔的相關資訊，請參閱 [執行 的官方 Amazon ECR Public 或 Docker 映像 AWS CLI](getting-started-docker.md)。

## 針對 AWS CLI 安裝和解除安裝錯誤進行故障診斷
<a name="source-install-tshoot"></a>

如需安裝錯誤的故障診斷步驟，請參閱 [故障診斷 的錯誤 AWS CLI](cli-chap-troubleshooting.md) 了解常見的故障診斷步驟。如需最相關的故障診斷步驟，請參閱 [命令未找到錯誤](cli-chap-troubleshooting.md#tshoot-install-not-found)、[「`aws --version`」命令傳回的版本與您安裝的版本不同](cli-chap-troubleshooting.md#tshoot-install-wrong-version) 和 [解除安裝 後，「`aws --version`」命令會傳回版本 AWS CLI](cli-chap-troubleshooting.md#tshoot-uninstall-1)。

對於故障診斷指南未涵蓋的任何問題，請在 *GitHub* 上的 [AWS CLI 儲存庫](https://github.com/aws/aws-cli/labels/source-distribution)中搜尋含有 `source-distribution` 標籤的問題。如果沒有現有問題涵蓋您的錯誤，[請建立新的問題](https://github.com/aws/aws-cli/issues/new?assignees=&labels=source-distribution%2Cneeds-triage&template=source-distribution.yml&title=%28short+issue+description%29)，以從 AWS CLI 維護者取得協助。

## 後續步驟
<a name="source-install-next-steps"></a>

安裝 之後 AWS CLI，您應該執行 [設定 AWS CLI](getting-started-quickstart.md)。