

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 在本地构建和测试软件包
<a name="build-test-packages-locally"></a>

在将软件包发布到 Amazon S3 或在 Deadline Cloud 服务器场上设置 CI/CD 自动化之前，您可以使用本地文件系统通道在工作站上构建和测试 conda 软件包。这种方法可以让您在本地快速迭代配方并验证软件包。

该`rattler-build publish`命令构建配方，将生成的包复制到频道，然后一步为该频道编制索引。当你以本地文件系统目录为目标时，如果该目录不存在，则会自动`rattler-build`创建和初始化该频道。

以下说明使用了 Deadline [Cloud](https://github.com/aws-deadline/deadline-cloud-samples) 示例存储库中的 Blender 4.5 示例配方GitHub。您可以替换样本存储库中的其他食谱，也可以使用自己的食谱。

## 先决条件
<a name="build-test-locally-prereqs"></a>

在开始之前，请在您的工作站上安装以下工具：
+ **pixi** — 用于安装`rattler-build`和测试软件包的软件包管理器。从 [pixi.sh](https://pixi.sh) 安装 pixi。
+ **rattler-build** — Deadline Cloud conda 配方使用的软件包构建工具。安装 pixi 后，运行以下命令进行安装`rattler-build`。

  ```
  pixi global install rattler-build
  ```
+ **git** — 克隆示例存储库所必需的。在Windows，[git f](https://gitforwindows.org/) or Windows 还提供了一个`bash`外壳，这是一些Windows示例配方所需要的。

## 生成套餐并将其发布到本地频道
<a name="build-test-locally-build"></a>

在此过程中，您将克隆 Deadline Cloud 示例存储库，然后使用`rattler-build publish`生成该包并将其发布到本地文件系统频道。

**生成软件包并将其发布到本地频道**

1. 克隆截止日期云示例存储库。

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

1. 切换到 `conda_recipes` 目录。

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

1. 运行以下命令构建 Blender 4.5 配方并将软件包发布到本地频道目录。

   在 Linux and 上macOS，运行以下命令。

   ```
   rattler-build publish blender-4.5/recipe/recipe.yaml \
       --to file://$HOME/my-conda-channel
   ```

   在 Windows (cmd) 上，运行以下命令。

   ```
   rattler-build publish blender-4.5/recipe/recipe.yaml ^
       --to file://%USERPROFILE%/my-conda-channel
   ```

   该`rattler-build publish`命令执行以下操作：
   + 根据配方构建软件包。
   + 如果频道目录不存在，则创建该目录。
   + 将软件包文件复制到频道。
   + 为频道编制索引，以便包管理员可以找到该软件包。

   如果你的包配方依赖于来自特定渠道（例如 [conda-forge](https://conda-forge.org/)）的软件包，请`-c conda-forge`添加到命令中。

要在对配方进行更改后重新生成软件包，请添加`--build-number=+1`以自动增加内部版本号。

```
rattler-build publish blender-4.5/recipe/recipe.yaml \
    --to file://$HOME/my-conda-channel \
    --build-number=+1
```

有关更多信息`rattler-build publish`，请参阅 [rattler-](https://rattler-build.prefix.dev/latest/publish/) build 发布文档。

## 调试版本
<a name="build-test-locally-debug"></a>

如果构建失败，则`rattler-build`会保留构建目录，以便您可以进行调查。运行以下命令在构建环境中打开一个交互式 shell，其中所有环境变量都与生成期间一样设置。

```
rattler-build debug shell
```

在调试 shell 中，您可以修改文件、运行单独的构建命令以及添加依赖关系以隔离问题。有关更多信息，请参阅 rattler-build 文档中的[调试构建](https://rattler-build.prefix.dev/latest/debugging_builds/)。

## 测试软件包
<a name="build-test-locally-test"></a>

生成并发布软件包后，创建一个临时 pixi 项目。使用该项目从本地渠道安装软件包并验证其是否正常运行。

**测试软件包**

1. 创建临时测试目录并使用本地频道初始化 pixi 项目。

   在 Linux an macOS d 上，运行以下命令。

   ```
   mkdir package-test-env
   cd package-test-env
   pixi init --channel file://$HOME/my-conda-channel
   ```

   在 Windows (cmd) 上，运行以下命令。

   ```
   mkdir package-test-env
   cd package-test-env
   pixi init --channel file://%USERPROFILE%/my-conda-channel
   ```

1. 将软件包添加到项目中。

   ```
   pixi add blender=4.5
   ```

1. 验证软件包是否正常运行。

   ```
   pixi run blender --version
   ```

如果您对软件包感到满意，则可以将软件包发布到 Amazon S3 conda 频道，这样 Deadline Cloud 工作人员就可以安装该软件包。请参阅[将软件包发布到 S3 conda 频道](publish-packages-s3-channel.md)。

## 清理
<a name="build-test-locally-cleanup"></a>

测试完成后，您可以移除测试项目和本地频道。

**清理测试资源**

1. 移除测试项目目录。

   在 Linux and 上macOS，运行以下命令。

   ```
   rm -rf package-test-env
   ```

   在 Windows (cmd) 上，运行以下命令。

   ```
   rmdir /s /q package-test-env
   ```

1. 移除本地 conda 频道目录。

   在 Linux and 上macOS，运行以下命令。

   ```
   rm -rf $HOME/my-conda-channel
   ```

   在 Windows (cmd) 上，运行以下命令。

   ```
   rmdir /s /q %USERPROFILE%\my-conda-channel
   ```

1. （可选）移除包含已生成软件包文件的`rattler-build`输出目录。

   在 Linux and 上macOS，运行以下命令。

   ```
   rm -rf deadline-cloud-samples/conda_recipes/output
   ```

   在 Windows (cmd) 上，运行以下命令。

   ```
   rmdir /s /q deadline-cloud-samples\conda_recipes\output
   ```