yocto - 在 do_rootfs 期间“没有包提供 libsystemd.so.0(LIBSYSTEMD_219)”
问题描述
我正在尝试从这里使用 phytec bsp 18.2 构建图像:https ://wiki.phytec.com/productinfo/phycore-i-mx7/bsp-yocto-fsl-imx7/
我需要更新版本的 systemd (> 234),因此我将 systemd 配方替换为来自 rocko 的 234 版,可在此处找到:http ://cgit.openembedded.org/openembedded-core/tree/meta/recipes-core/systemd ?h=rocko通过将其放在自定义层中。但是,在 do_rootfs 步骤中,我收到错误消息“没有包提供 libsystemd.so.0(LIBSYSTEMD_219)。我尝试了此处推荐的解决方法:智能无法安装...没有包提供共享对象文件但这并没有解决问题。我尝试过回显libsystemd.so.0
,LIBSYSTEMD_219
和libsystemd.so.0(LIBSYSTEMD_219)
两者${rootfs}/etc/rpm/sysinfo/Providename
,${rootfs}/var/lib/rpm/Providename
但没有运气。有没有人知道如何解决这个问题?我将不胜感激可以提供的任何帮助,请让我知道我是否可以提供更多信息。
解决方案
我不知道 yocto 包装器等,但在标准 RPM-land 中,此错误:
Computing transaction...error: Can't install python3-systemd-234-r0.0@cortexa7hf_neon: no package provides libsystemd.so.0(LIBSYSTEMD_219)
意味着.so
在名为 的 RPM 中有一个或可执行文件,它是用具有标志python3-systemd-234-r0.0
的特定版本编译的。该标志是“ELF 符号版本控制”,当您尝试安装对于目标系统来说太新的 RPM(例如CentOS 6 上的 CentOS 7 RPM)时,它最常见。libsystemd.so.0
LIBSYSTEMD_219
GLIBC_XX
你的systemd
目标机器上的 太旧了,所以它只定义了它兼容的版本,例如 libsystemd.so.0(LIBSYSTEMD_210)
或类似的。
您需要做的是在与目标python3-systemd-234-r0.0
具有相同版本的机器上构建您的机器systemd
(或适当地交叉编译),或者创建一个systemd
包含您正在尝试的功能的 RPM。
因此,您需要弄清楚如何将这些解决方案之一应用于您的构建系统;抱歉,我对 yocto 的了解不够,无法提供帮助。
推荐阅读
- javascript - 在授予的地理位置权限上附加事件侦听器
- node.js - typeorm 在生产中同步
- excel - VBA在一定长度上拆分列?
- flutter - Periodic Timer 无法处理
- c++ - 无法读取结构数组
- git - 如何仅对 Gitlab CI 中已更改的文件进行掌舵推送?
- reactjs - 使用 Mock Service Worker 时如何对 graphql 查询变量进行断言?
- python - 恢复 tensorflow 模型并将其用于预测
- javascript - 更新按钮状态 onClick React
- javascript - 如何判断是否支持 JavaScript 运算符?