我正在将嵌入式目标从 Qt 5.9.3 升级到 5.12.10。大多数软件包都可以正常工作,但是 qtvirtualkeyboard 软件包会导致问题。构建过程(使用 Yocto/bitbake)创建一个升级包,其中包含为所有包生成的所有 RPM,我们使用智能包管理器在目标上安装这些包。
这对几乎所有软件包都有效,只有 qtvirtualkeyboard 软件包在新版本中具有不同的名称:RPM 从 qtvirtualkeyboard(在 Qt 5.9.3 中)更改为 libqt5virtualkeyboard(在 Qt 5.12.10 中)。看起来这使包管理器感到困惑,并且它退出时出现错误,表明某些文件不能被覆盖,因为它们是已安装包的一部分。这是其中一条消息,其他消息遵循相同的模式,全部关于qtvirtualkeyboard-qmlplugins:
错误:来自安装 libqt5virtualkeyboard-qmlplugins-5.12.10.3+git0+1582869a39-r0.cortexa9hf_vfp_neon 的文件 /usr/lib/qt5/qml/QtQuick/VirtualKeyboard/plugins.qmltypes 与包 qtvirtualkeyboard-qmlplugins-5.9.3+ 中的文件冲突git3+81f9e4b142-r3.0.cortexa9hf_vfp_neon
还有许多其他包生成为 libqt5名称包而不是 qt名称包,但这些在 5.9.3 中已经具有此名称,因此它们不会引起问题。
在 ..../pkgdata/runtime/qtvirtualkeyboard-qmlplugins 中有一行:
PKG_qtvirtualkeyboard-qmlplugins: libqt5virtualkeyboard-qmlplugins
这是(在 Qt 5.9.3 中):
PKG_qtvirtualkeyboard-qmlplugins: qtvirtualkeyboard-qmlplugins
对我来说,包裹似乎正在接收一个新名称。
我尝试将带有“qtvirtualkeyboard (< 5.12.10)”的 RREPLACES_${PN} 和 RCONFLICTS_${PN} 添加到 qtvirtualkeyboard_git.bbappend 文件中,但这没有帮助。在 SPECS 文件中添加了 Obsoletes 行(使用 rpmrebuild 从生成的 RPM 中读取),但也引用了新名称 libqt5virtualkeyboard。
是否可以恢复名称的更改(对于我的本地构建)或者我可以在某处添加一个规则以确保包管理器在安装新包之前删除原始包?
我正在使用meta-qt5 (哈希 8da88b09,这是最后一个 5.12.10 版本)和 5.12.10 的官方 Qt GIT 存储库。