首页 > 解决方案 > 在 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_219libsystemd.so.0(LIBSYSTEMD_219)两者${rootfs}/etc/rpm/sysinfo/Providename${rootfs}/var/lib/rpm/Providename但没有运气。有没有人知道如何解决这个问题?我将不胜感激可以提供的任何帮助,请让我知道我是否可以提供更多信息。

标签: yoctorpmsystemdbitbakeopenembedded

解决方案


我不知道 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.0LIBSYSTEMD_219GLIBC_XX

你的systemd目标机器上的 太旧了,所以它只定义了它兼容的版本,例如 libsystemd.so.0(LIBSYSTEMD_210)或类似的。

您需要做的是在与目标python3-systemd-234-r0.0具有相同版本的机器上构建您的机器systemd(或适当地交叉编译),或者创建一个systemd包含您正在尝试的功能的 RPM。

因此,您需要弄清楚如何将这些解决方案之一应用于您的构建系统;抱歉,我对 yocto 的了解不够,无法提供帮助。


推荐阅读