【问题标题】:Including GLIBC in a conda package在 conda 包中包含 GLIBC
【发布时间】: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.29requirements 下可以完成这项工作,但在运行conda build . 时会导致错误。

如何在包中包含 GLIBC?这是要手动完成的吗?从我可以从 anaconda 下载的软件包版本中,我可以看到我在 meta.yaml 或任何地方没有真正提到的其他软件包也被下载(例如 libgcc-ng)。

【问题讨论】:

  • 我不清楚细节,但似乎 GLIBC 依赖项来自构建系统。也就是说,该错误表明该软件包是在使用 GLIBC v2.29 的系统上编译的,但您尝试运行的系统较旧。因此,分辨率要么在旧映像上重建,要么更新您的部署系统。或者,我认为 Conda Forge 提供了可分发的 sysroot,您可以针对它进行构建(请参阅docs)。
  • 另外,也许要确保构建链接到 Conda 提供的库,而不仅仅是系统库。 meta.yaml 中没有列出任何要求这一事实相当奇怪。

标签: python anaconda conda glibc


【解决方案1】:

如何在包中包含 GLIBC?

不能,原因解释here

您最好的选择是构建在具有您需要支持的最低 GLIBC 版本的系统(或在 docker 容器中)上(即安装在您将运行包的服务器上的版本)。

【讨论】:

  • 好的,有道理,谢谢回复!
猜你喜欢
  • 2018-10-19
  • 2018-08-15
  • 1970-01-01
  • 2020-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-17
  • 1970-01-01
相关资源
最近更新 更多