添加预链接、后链接和预解除链接脚本#
您可以向食谱添加脚本。它们必须位于与 meta.yaml 文件相同的目录中。以下脚本可以添加:
pre-link
---在安装包之前执行。非零退出表示错误,会导致 conda 停止并导致安装失败。post-link
---在安装包之后执行。非零退出表示错误,会导致安装失败。如果出现错误,conda 不会写入任何包元数据。pre-unlink
---在移除包之前执行。非零退出表示错误,会导致移除失败。
除了与 meta.yaml 文件位于同一目录之外,它们还必须命名为 post-link.sh
或 post-link.bat
。Conda-build 会将它们重命名为 .<name>-<action>.sh(或 .bat),其中 <name>
是包名,<action>
是前面提到的操作之一。
这些脚本在 conda 的子进程中执行,在 Windows 上使用 %COMSPEC% /c <script>
,在 macOS 和 Linux 上使用 /bin/bash <script>
。
在 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
后链接和预解除链接脚本应该
尽可能避免。
不要触碰除正在安装的文件以外的任何其他内容。
不要向标准输出或标准错误写入任何内容,除非出现错误。
不要依赖任何已安装或将要安装的 conda 包。
仅依赖简单的系统工具,例如
rm
、cp
、mv
和ln
。
这些脚本不应向标准输出或标准错误写入内容,除非出现错误,但它们可以写入 $PREFIX/.messages.txt
,该文件将在 conda 完成所有操作后显示。