

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

# 為應用程式或外掛程式建立 conda 套件


conda 套件是以任何語言撰寫的軟體壓縮封存。Conda 支援各種作業系統和架構組合，因此您可以封裝完整的應用程式Blender，例如 Maya、 以及 Python 和其他語言的Nuke程式庫。如需 conda 套件的詳細資訊，請參閱 conda 文件中的[套件](https://docs.conda.io/projects/conda/en/latest/user-guide/concepts/packages.html)。

若要使用 conda 套件，請將它安裝到虛擬環境中。conda 虛擬環境具有安裝套件的*字首目錄*。安裝套件會在支援時使用檔案的硬連結或重新連結，因此使用相同套件建立多個環境不會使用顯著的額外磁碟空間。若要使用虛擬環境，請啟用它來設定環境變數。啟用會執行套件提供的指令碼，讓每個套件都有機會修改 PATH 或其他環境變數。Conda 套件通常包含應用程式或程式庫，但彈性啟用表示也可以指向安裝在共用檔案系統上的應用程式。

建立自訂套件包含三個階段：*配方*包含建置指示、*套件*是建置成品 (`.conda` 或 `.tar.bz2` 檔案），以及*頻道*託管套件以供安裝。`rattler-build publish` 命令會處理這三個步驟：它可以將配方建置到套件中並發佈到頻道，也可以直接採用套件成品來發佈它。

[conda-forge](https://conda-forge.org/) 社群會維護各種開放原始碼軟體的套件配方，並在`conda-forge`頻道中託管套件成品。您可以設定佇列以包含 `conda-forge`做為套件來源，然後建置取決於要執行之 conda-forge 套件的自訂套件。針對 Linux，conda-forge 託管完整的編譯器工具鏈，包括 CUDA 支援，並選取一致的編譯和連結選項。您可以在自己的配方中使用 conda-forge 套件做為相依性，或在相同的環境中將其與自訂套件一起安裝。

您可以將整個應用程式結合到 conda 套件中，包括相依性。Deadline Cloud 在[截止日期雲端通道](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/create-queue-environment.html#conda-queue-environment)中為服務受管機群提供的套件使用此二進位重新封裝方法。這會組織與 安裝相同的檔案，以符合 conda 虛擬環境。

**注意**  
大型應用程式可能需要數十 GB 的可用磁碟空間，才能進行來源封存、解壓縮檔案和建置輸出。請確定您使用的磁碟有足夠的可用空間供套件建置輸出使用。

## 封裝應用程式


為 conda 重新封裝應用程式時，有兩個目標：
+ 應用程式的大多數檔案應與主要 conda 虛擬環境結構分開。然後，環境可以將應用程式與 [Conda-forge](https://conda-forge.org/) 等其他來源的套件混合。
+ 啟用 conda 虛擬環境時，應用程式應可從 PATH 環境變數取得。

**為 conda 重新封裝應用程式**

1. 將安裝應用程式的 conda 建置配方寫入 等子目錄中`$CONDA_PREFIX/opt/<application-name>`。這會將它與標準字首目錄分開，例如 `bin`和 `lib`。

1. 將符號連結或啟動指令碼新增至 ，`$CONDA_PREFIX/bin`以執行應用程式二進位檔。

   或者，建立`conda activate`命令將執行的 activate.d 指令碼，將應用程式二進位目錄新增至 PATH。在 上Windows，在所有可以建立環境的地方都不支援符號連結，請改用應用程式啟動或 activate.d 指令碼。

1. 有些應用程式依賴於在截止日期雲端服務受管機群上預設未安裝的程式庫。例如，非互動式任務通常不需要 X11 視窗系統，但某些應用程式仍需要在沒有圖形界面的情況下執行。您必須在您建立的套件內提供這些相依性。

1. 如果應用程式支援外掛程式，請提供外掛程式套件應遵循的明確慣例，以在虛擬環境中與應用程式整合。例如，[Maya2026 年範例配方](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/conda_recipes/maya-2026#instructions-for-maya-plugin-packages)會記錄此Maya外掛程式慣例。

1. 請務必遵循您所封裝應用程式的著作權和授權合約。建議您的 conda 頻道使用私有 Amazon S3 儲存貯體，以控制對陣列的分佈和限制套件存取。

`deadline-cloud` 頻道中套件的範例配方可在 [上的截止日期雲端範例](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/conda_recipes#readme)儲存庫中取得GitHub。

## 封裝外掛程式


應用程式外掛程式可以封裝為自己的 conda 套件。建立外掛程式套件時，請遵循下列準則：
+ 在組建配方 中包含主機應用程式套件做為組建和執行相依性`recipe.yaml`。使用版本限制條件，以便建置配方僅與相容的套件一起安裝。
+ 遵循主機應用程式套件慣例來註冊外掛程式。

## 轉接器套件


某些截止日期雲端應用程式整合使用擴展應用程式界面的*轉接器*，以簡化[撰寫任務範本](building-jobs.md)。轉接器是一種命令列界面，支援執行背景協助程式、報告狀態和套用路徑映射。如需詳細資訊，請參閱 上的[開啟任務描述轉接器執行期](https://github.com/OpenJobDescription/openjd-adaptor-runtime-for-python#readme)GitHub。例如， 上的 [deadline-cloud-for-maya](https://github.com/aws-deadline/deadline-cloud-for-maya/) GitHub包含整合的任務提交 GUI 和Maya轉接器，可在服務受管機群上做為`maya-openjd`套件使用。

來自截止日期雲端提交者 GUIs 的任務提交包含`CondaPackages`參數值，指定要包含在虛擬環境中以執行任務的 conda 套件。的`CondaPackages`參數值Maya通常看起來像`maya=2025.* maya-openjd=0.15.* maya-mtoa`，而且可能包含外掛程式套件的替代項目。當佇列環境設定用於執行任務的 conda 虛擬環境時，它會將這些套件名稱和版本限制解析為相容，並新增其需要執行的所有相依性套件。每個轉接器和外掛程式套件都會指定其相容的項目，包括 的哪些版本Maya、Python 的哪些版本，以及其他相依性。

若要使用我們的範例建置自己的轉接器套件，例如 上的 [maya-openjd 配方](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/conda_recipes/maya-openjd)GitHub，您可以建置 Python 套件和 [conda-forge](https://conda-forge.org/) 提供的其他相依性。您可能需要先建立[截止日期](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/conda_recipes/deadline)和 [openjd-adaptor-runtime](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/conda_recipes/openjd-adaptor-runtime) 配方，以滿足相依性。