

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

# 建立 的 conda 組建配方 Blender
<a name="create-conda-recipe-blender"></a>

您可以使用不同的應用程式來建立 conda 建置配方。 Blender 可免費使用，而且可以輕鬆地與 conda 封裝。Foundation 為多個作業系統Blender提供[應用程式封存](https://download.blender.org/release/Blender4.2/)。我們建立了使用 Windows .zip 和 Linux .tar.xz 檔案的範例 conda 建置配方。在本節中，了解如何使用 [Blender 4.2 conda 建置配方。](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/conda_recipes/blender-4.2)

[ deadline-cloud.yaml](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/conda_recipes/blender-4.2) 檔案指定 Conda 平台和其他中繼資料，用於將套件任務提交至截止日期雲端。此配方包含本機來源封存資訊，以示範 的運作方式。linux-64 conda 平台設定為在預設任務提交中建置，以符合最常見的組態。deadline-cloud.yaml 看起來類似以下內容：

```
condaPlatforms:
  - platform: linux-64
    defaultSubmit: true
    sourceArchiveFilename: blender-4.2.1-linux-x64.tar.xz
    sourceDownloadInstructions: 'Run "curl -LO https://download.blender.org/release/Blender4.2/blender-4.2.1-linux-x64.tar.xz"'
  - platform: win-64
    defaultSubmit: false
    sourceArchiveFilename: blender-4.2.1-windows-x64.zip
    sourceDownloadInstructions: 'Run "curl -LO https://download.blender.org/release/Blender4.2/blender-4.2.1-windows-x64.zip"'
```

檢閱 `recipe`目錄中的檔案。配方的中繼資料位於 [ recipe/recipe.yaml。](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/conda_recipes/blender-4.2/recipe/recipe.yaml)您也可以閱讀 conda 組建 [meta.yaml](https://docs.conda.io/projects/conda-build/en/latest/resources/define-metadata.html) 文件以進一步了解，例如檔案是產生 YAML 的範本。範本僅用於指定版本編號一次，並根據作業系統提供不同的值。

您可以檢閱在 中選取的建置選項`meta.yaml`，以關閉各種二進位重新定位和動態共用物件 (DSO) 連結檢查。這些選項控制套件在任何目錄字首安裝到 conda 虛擬環境時的運作方式。預設值可簡化將每個相依性程式庫封裝成個別的套件，但在二進位重新封裝應用程式時，您需要變更它們。

如果您要封裝的應用程式需要額外的相依性程式庫，或者您是單獨封裝應用程式的外掛程式，您可能會遇到 DSO 錯誤。當相依性不在需要的可執行檔或程式庫的程式庫搜尋路徑中時，就會發生這些錯誤。在系統上安裝時，應用程式依賴於全域定義路徑中的程式庫`/usr/lib`，例如 `/lib`或 。不過，由於 conda 虛擬環境可以放置在任何地方，因此沒有絕對路徑可供使用。Conda 使用 Linux和 macOS 支援的相對 RPATH 功能來處理此問題。如需詳細資訊，請參閱[讓套件可重新定位](https://docs.conda.io/projects/conda-build/en/latest/resources/make-relocatable.html)的 conda 建置文件。

Blender 不需要任何 RPATH 調整，因為應用程式封存是基於這一點而建置的。對於確實需要它的應用程式，您可以使用與 conda 建置相同的工具：`patchelf`在 Linux 和 `install_name_tool`上macOS。

在套件建置期間，[build.sh](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/conda_recipes/blender-4.2/recipe/build.sh) 或 [build\$1win.sh](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/conda_recipes/blender-4.2/recipe/build_win.sh) （稱為 `bld.bat`) 指令碼會執行 ，以將檔案安裝到與套件相依性一起準備的環境中。這些指令碼會複製安裝檔案、從 建立符號連結`$PREFIX/bin`，以及設定啟用指令碼。在 上Windows，它不會建立符號連結，而是將 Blender 目錄新增至啟用指令碼中的 PATH。

針對 conda `cmd.exe` 建置配方Windows的一部分，我們使用 `bash`而不是 .bat 檔案，因為這可在建置指令碼之間提供更高的一致性。如需`bash`在 上使用 [ 的秘訣，請參閱截止日期雲端開發人員指南](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/what-is-a-deadline-cloud-workload.html#workload-portability)的工作負載可攜性建議Windows。如果您已為 安裝 [git Windows](https://gitforwindows.org/) 以複製 [deadline-cloud-samples](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/) git 儲存庫，則您已擁有 的存取權`bash`。

[ conda 建置環境變數](https://docs.conda.io/projects/conda-build/en/latest/user-guide/environment-variables.html)文件會列出可用於建置指令碼的值。這些值包括`$SRC_DIR`來源封存資料、`$PREFIX`安裝目錄、從配方`$RECIPE_DIR`存取其他檔案、`$PKG_NAME``$PKG_VERSION`套件名稱和版本，以及目標 conda `$target_platform` 平台。

## 提交 Blender 4.2 套件任務
<a name="s3-channel-build-blender"></a>

您可以下載Blender封存，然後將任務提交至套件建置佇列，以建置自己的 Blender 4.2 conda 套件來轉譯任務。佇列會將任務傳送至相關聯的機群，以建置套件並重新索引 conda 頻道。

這些指示使用 bash 相容 shell 的 git，從 [Deadline Cloud 範例GitHub儲存庫](https://github.com/aws-deadline/deadline-cloud-samples)取得 OpenJD 套件建置任務和一些 conda 配方。您也需要下列項目：
+ 如果您使用的是 Windows，安裝 git 時會安裝一個版本的 bash、git BASH。
+ 您必須安裝[截止日期雲端 CLI](https://github.com/aws-deadline/deadline-cloud)。
+ 您必須登入[截止日期雲端監視器](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/working-with-deadline-monitor.html)。

1. 使用下列命令開啟截止日期雲端組態 GUI，並將預設陣列和佇列設定為套件建置佇列。

   ```
   deadline config gui
   ```

1. 使用下列命令來複製截止日期雲端範例GitHUb儲存庫。

   ```
   git clone https://github.com/aws-deadline/deadline-cloud-samples.git
   ```

1. 變更為 `conda_recipes`目錄中的 `deadline-cloud-samples`目錄。

   ```
   cd deadline-cloud-samples/conda_recipes
   ```

1. 執行名為 的指令碼`submit-package-job`。指令碼提供Blender第一次執行指令碼時下載的指示。

   ```
   ./submit-package-job blender-4.2/
   ```

1. 遵循下載 的指示Blender。當您有封存時，請再次執行`submit-package-job`指令碼。

   ```
   ./submit-package-job blender-4.2/
   ```

提交任務後，請使用截止日期雲端監視器來檢視任務執行時的進度和狀態。

監視器的左下角顯示任務的兩個步驟，建置套件，然後重新編製索引。右下角顯示每個任務的個別步驟。在此範例中，每個任務都有一個步驟。

![\[截止日期雲端監視器，顯示建置Blender套件之任務的進度和狀態。\]](http://docs.aws.amazon.com/zh_tw/deadline-cloud/latest/developerguide/images/Conda-Figure3.png)


在監視器的左下角是任務的兩個步驟，建立套件，然後重新索引 conda 頻道。右下角是每個步驟的個別任務。在此範例中，每個步驟只有一個任務。

當您在套件建置步驟的任務上按一下滑鼠右鍵並選擇**檢視日誌**時，監視器會顯示工作階段動作清單，顯示如何在工作者上排程任務。動作包括：
+ **同步附件** – 此動作會複製輸入任務附件或掛載虛擬檔案系統，視任務附件檔案系統所使用的設定而定。
+ **啟動 Conda** – 此動作來自您建立佇列時預設新增的佇列環境。任務不會指定任何 conda 套件，因此會快速完成且不會建立 conda 虛擬環境。
+ **啟動 CondaBuild Env** – 此動作會建立自訂 conda 虛擬環境，其中包含建置 conda 套件和重新索引頻道所需的軟體。它會從 [conda-forge](https://conda-forge.org/) 頻道安裝 。
+ **任務執行** – 此動作會建置Blender套件，並將結果上傳至 Amazon S3。

動作執行時，會以結構化格式將日誌傳送至 Amazon CloudWatch。當任務完成時，選取**檢視所有任務的日誌**，以查看有關任務執行所在環境設定和銷毀的其他日誌。

# 使用 4.2 Blender 轉譯任務測試套件
<a name="s3-channel-submit-job"></a>

建置 Blender 4.2 套件，並將生產佇列設定為使用 S3 conda 頻道後，您可以提交任務以使用套件進行轉譯。如果您沒有Blender場景，請從[Blender示範檔案](https://www.blender.org/download/demo-files)頁面下載 Blender 3.5 - Cozy Kitchen 場景。

您先前下載的 Deadline Cloud 範例GitHub儲存庫包含使用下列命令轉譯Blender場景的範例任務：

```
deadline bundle submit blender_render \
     -p CondaPackages=blender=4.2 \
     -p BlenderSceneFile=/path/to/downloaded/blender-3.5-splash.blend \
     -p Frames=1
```

您可以使用截止日期雲端監視器來追蹤任務進度：

1. 在監視器中，選取您提交之任務的任務，然後選取檢視日誌的選項。

1. 在日誌檢視的右側，選取**啟動 Conda** 工作階段動作。

您可以看到 動作在為佇列環境設定的兩個 conda 通道中搜尋 Blender 4.2，並在 S3 通道中找到套件。