添加 pre-link、post-link 和 pre-unlink 脚本#
您可以向配方添加脚本。它们必须与 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 在子进程中使用 %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 软件包。
仅依赖于简单的系统工具,例如
rm
、cp
、mv
和ln
。
脚本不应写入 stdout 或 stderr,除非发生错误,但它们可以写入 $PREFIX/.messages.txt
,这会在 conda 完成所有操作后显示。