我正在将嵌入式目标从Qt5.9.3升级到5.12.10。大多数包都正常工作,但是qtvirtual键盘包会导致问题。构建过程(使用Yocto/bitbake)创建一个升级包,其中包含所有包的所有生成的RPM,在目标上我们使用Smart package安装这些包。
对于几乎所有的包来说,这都是正常的,在新构建中只有qt虚拟化键盘包有不同的名称:RPM从QtViral键盘(在Qt 5.9.3中)更改为libqt5virtualkeyboard (在Qt 5.12.10中)。它似乎混淆了包管理器,并且退出时出现了一个错误,指示某些文件不能被覆盖,因为它们是已经安装的包的一部分。这是其中一条消息,其他消息遵循相同的模式,都是关于qtvirtualkeyboard的。
错误:安装/usr/lib/qt5/qml/QtQuick/VirtualKeyboard/plugins.qmltypes的文件libqt5virtualkeyboard-qmlplugins-5.12.10.3+git0+1582869a39-r0.cortexa9hf_vfp_neon与包qtvirtualkeyboard-qmlplugins-5.9.3+git3+81f9e4b142-r3.0.cortexa9hf_vfp_neon中的文件冲突
还有许多其他包是作为libqt5name包而不是qtname包生成的,但是这些包在5.9.3中已经有了这个名称,所以它们不会引起问题。
在..../pkgdata/runtime/qtvirtualkeyboard-qmlplugins中有一行:
PKG_qt虚拟化键盘-qmlplugins:libqt5虚拟键盘-qmlplugins
(在Qt 5.9.3中):
PKG_qt虚拟键盘-qmlplugins:qtvirtualkeyboard
在我看来,这个包裹好像收到了一个新名字。
我尝试在一个RREPLACES_$文件中添加一个RCONFLICTS_${PN}和RCONFLICTS_${PN},其中包含“qt虚拟化键盘(< 5.12.10)”,但这没有帮助。规范文件中添加了一个过时的行(使用rpm重构从生成的RPM中读取),但这也引用了新的名称libqt5virtualkeyboard。
是否可以恢复名称的更改(用于本地构建),还是可以在安装新包之前添加一条规则,以确保包管理器删除原始包?
我使用的是meta-qt5 (散列8da88b09,这是最后的5.12.10版本)和5.12.10的官方Qt。
发布于 2021-06-24 08:10:48
在深入到buildroot/poky代码之后,我发现重命名是在RPM只包含库时完成的。最初的RPM只包含一些支持文件(所以没有重命名),但是新的RPM只包含lib。
我通过在我的qtvirtualkeyboard.bbappend中添加以下行来解决这个问题:
AUTO_LIBNAME_PKGS = ""现在,名称不再更改,升级工作正在按预期进行。
https://stackoverflow.com/questions/67882334
复制相似问题