添加 pre-link、post-link 和 pre-unlink 脚本#

您可以向配方添加脚本。它们必须与 meta.yaml 文件位于同一目录中。可以添加以下脚本

  • pre-link---在安装软件包之前执行。非零退出表示错误,并导致 conda 停止并导致安装失败。

  • post-link---在安装软件包之后执行。非零退出表示错误,并导致安装失败。如果发生错误,conda 不会写入任何软件包元数据。

  • pre-unlink---在删除软件包之前执行。非零退出表示错误,并导致删除失败。

除了与 meta.yaml 文件位于同一位置外,它们必须简单地命名为 post-link.shpost-link.bat。Conda-build 会将它们重命名为 .<name>-<action>.sh (或 .bat),其中 <name> 是软件包名称,<action> 是上述操作之一。

这些脚本由 conda 在子进程中使用 %COMSPEC% /c <script> (在 Windows 上) 和 /bin/bash <script> (在 macOS 和 Linux 上) 执行。

这些脚本在 Windows 上的路径和文件名约定是

Scripts/.<name>-<action>.bat

在 Linux 和 macOS 上,约定是

bin/.<name>-<action>.sh

脚本设置以下环境变量

PREFIX

安装前缀。

PKG_NAME

软件包的名称。

PKG_VERSION

软件包的版本。

PKG_BUILDNUM

软件包的构建编号。

脚本是

  • Windows

    • pre-link.bat

    • post-link.bat

    • pre-unlink.bat

  • macOS 和 Linux

    • pre-link.sh

    • post-link.sh

    • pre-unlink.sh

Post-link 和 pre-unlink 脚本应该

  • 尽可能避免使用。

  • 除了正在安装的文件外,不要接触任何其他内容。

  • 除非发生错误,否则不要向 stdout 或 stderr 写入任何内容。

  • 不要依赖任何已安装或待安装的 conda 软件包。

  • 仅依赖于简单的系统工具,例如 rmcpmvln

脚本不应写入 stdout 或 stderr,除非发生错误,但它们可以写入 $PREFIX/.messages.txt,这会在 conda 完成所有操作后显示。