【发布时间】:2021-12-29 07:57:54
【问题描述】:
我正在学习如何创建 conda 包,我在使用可以在本地运行的包时遇到问题,但是当从 anaconda 下载到不同的服务器时会返回错误:
/lib64/libm.so.6:未找到版本“GLIBC_2.29”
meta.yaml 如下所示:
package:
name: app
version: 2.4
source:
git_url: https://gitlab.com/user/repo.git
git_tag: v2.4
requirements:
build:
host:
run:
about:
home: https://gitlab.com/user/repo
license: GPL-3
license_family: GPL
summary: blabla.
应用程序是使用简单的build.sh 脚本构建的:
#!/bin/bash
set -x
echo $(pwd)
make
BIN=$PREFIX/bin
mkdir -p $BIN
cp app $BIN
我认为build: glibc >= 2.29 在requirements 下可以完成这项工作,但在运行conda build . 时会导致错误。
如何在包中包含 GLIBC?这是要手动完成的吗?从我可以从 anaconda 下载的软件包版本中,我可以看到我在 meta.yaml 或任何地方没有真正提到的其他软件包也被下载(例如 libgcc-ng)。
【问题讨论】:
-
我不清楚细节,但似乎 GLIBC 依赖项来自构建系统。也就是说,该错误表明该软件包是在使用 GLIBC v2.29 的系统上编译的,但您尝试运行的系统较旧。因此,分辨率要么在旧映像上重建,要么更新您的部署系统。或者,我认为 Conda Forge 提供了可分发的 sysroot,您可以针对它进行构建(请参阅docs)。
-
另外,也许要确保构建链接到 Conda 提供的库,而不仅仅是系统库。 meta.yaml 中没有列出任何要求这一事实相当奇怪。
标签: python anaconda conda glibc