如果这个 bitbake 包是包含的另一个包的运行时依赖项,为什么它不包含在我的映像中?

问题描述 投票:0回答:1

我正在使用 Yocto 构建基于 systemd 的映像,但遇到了一个问题,即该映像中不存在 update-rc.d(systemd sysv 包装器所需)。

我可以确认 update-rc.d 被列为 systemd 的运行时依赖项:

(请参阅此输出第一行的末尾)

$ bitbake systemd -e | grep "^RDEPENDS"
RDEPENDS:systemd=" kmod dbus util-linux-mount util-linux-umount udev (= 1:250.4-r0) systemd-udev-rules util-linux-agetty util-linux-fsck systemd-serialgetty volatile-binds ldconfig libnss-myhostname      pam-plugin-unix     pam-plugin-loginuid     pam-plugin-keyinit  systemd-compat-units update-rc.d systemd-vconsole-setup"
RDEPENDS:systemd-bash-completion="bash-completion"
RDEPENDS:systemd-conf=" update-rc.d"
RDEPENDS:systemd-dev="systemd (= 1:250.4-r0)"
RDEPENDS:systemd-doc=" "
RDEPENDS:systemd-initramfs="systemd"
RDEPENDS:systemd-kernel-install=" bash"
RDEPENDS:systemd-staticdev="systemd-dev (= 1:250.4-r0)"
RDEPENDS:udev-hwdb=" udev"

systemd 显然包含在我的图像中,因为我可以看到它正在工作。还检查我的映像清单,确认 systemd 已包含在映像中。

$ grep -n systemd tmp/deploy/images/<arch>/<image_name>.manifest
283:libsystemd-shared cortexa55 1:250.4-r0
284:libsystemd0 cortexa55 1:250.4-r0
394:systemd cortexa55 1:250.4-r0
395:systemd-compat-units cortexa55 1.0-r29
396:systemd-conf txrz_g2l0 1:1.0-r0
397:systemd-extra-utils cortexa55 1:250.4-r0
398:systemd-serialgetty txrz_g2l0 1.0-r5
399:systemd-udev-rules cortexa55 1:250.4-r0
400:systemd-vconsole-setup cortexa55 1:250.4-r0

然而,update-rc.d 仍然不包含在结果图像中。清单中缺少包名称(即 update-rc.d),并且映像 rootfs 中缺少它应该提供的实际脚本文件。

为什么会发生这种情况?我可以做什么来调试为什么缺少此运行时依赖项?

yocto bitbake
1个回答
0
投票

结果发现该包丢失了,因为基本图像类将其添加到了

ROOTFS_RO_UNNEEDED
变量中。我确实正在构建只读映像,但仍然需要
update-rc.d
对某些服务进行运行时修改,同时将 rootfs 临时安装在我的开发目标上作为 RW。

ROOTFS_RO_UNNEEDED:remove = " update-rc.d"
添加到我的图像的开发版本解决了问题。

© www.soinside.com 2019 - 2024. All rights reserved.