我的现象:
在执行以下命令时,报出了很多错误:
bitbake core-image-full-cmdline -c populate_sdk_ext
ERROR: util-linux-2.37.4-r0 do_packagedata_setscene: QA Issue: Package version for package util-linux-lsblk went backwards which would break package feeds (from 0:2.37.4-r0.0 to 0:2.37.4-r0) [version-going-backwards]
ERROR: util-linux-2.37.4-r0 do_packagedata_setscene: QA Issue: Package version for package util-linux-lscpu went backwards which would break package feeds (from 0:2.37.4-r0.0 to 0:2.37.4-r0) [version-going-backwards]
ERROR: mesa-2_22.0.3-r0 do_packagedata_setscene: QA Issue: Package version for package libgles1-mesa went backwards which would break package feeds (from 2:22.0.3-r0.0 to 2:22.0.3-r0) [version-going-backwards]
ERROR: mesa-2_22.0.3-r0 do_packagedata_setscene: QA Issue: Package version for package libgles1-mesa-dev went backwards which would break package feeds (from 2:22.0.3-r0.0 to 2:22.0.3-r0) [version-going-backwards]
ERROR: util-linux-2.37.4-r0 do_packagedata_setscene: QA Issue: Package version for package util-linux-lsipc went backwards which would break package feeds (from 0:2.37.4-r0.0 to 0:2.37.4-r0) [version-going-backwards]
ERROR: util-linux-2.37.4-r0 do_packagedata_setscene: QA Issue: Package version for package util-linux-lsirq went backwards which would break package feeds (from 0:2.37.4-r0.0 to 0:2.37.4-r0) [version-going-backwards]
提示是package的版本发生了回退,前面版本号一致,后面是从r0.0变为r0,就认为是版本变低了。
问题澄清:
在 Yocto 中,“版本倒退 ”通常是指配方的版本低于先前构建的版本。这种情况可能会导致问题,因为软件包管理系统(如 opkg 或 rpm)通常希望版本会增加,这有助于管理升级和依赖关系。
要处理这种情况,你可能需要修改配方或战略性地使用 PV(软件包版本)变量,以确保构建和升级的行为符合预期。您还可以使用版本技术,如添加修订号或使用 PR(软件包版本)来有效管理。
In Yocto, "version-going-backwards" typically refers to a scenario where a recipe's version is lower than a previously built version. This situation can lead to issues, as the package management system (like opkg or rpm) generally expects versions to increase, which helps manage upgrades and dependencies.
To handle this, you might need to modify the recipe or use the PV (Package Version) variable strategically to ensure that your builds and upgrades behave as expected. You can also use versioning techniques like appending a revision number or using PR (Package Revision) to manage this effectively.
每个package都有自己的版本,使用yocto构建package,需要对package的版本进行管理,保证使用合适的发布版本来构建相应的package,这包括package之间的依赖关系和package自身的兼容性等要求。
我这里的问题,可能是我添加过 EXTRA_IMAGE_FEATURES += "package-management" 这个功能所造成的。因为我的Yocto环境也并没有修改package的版本,从前面的提示信息看,就是revision的信息格式变了。
解决方法:
也许把先前构建的内容全clean,就能解决这个问题,但这样sstate-cache里的内容都没了,再编一次会很浪费时间。
基于分析,认为这个问题属于环境配置相关,不会影响任务的正确执行,所以只需要把ERROR去掉,让任务继续能执行即可。
对于构建过程,包括平时代码的编译,一般都是有可以配置的ERROR或Warning开关,选择或屏蔽自己需要的错误或警告。
那可以在meta和meta-poky中搜索 version-going-backwards , 可以找到:
dev@DESKTOP-7SIEFHK:~/WorkSpace/poky$ grep -r version-going-backwards meta/
meta/lib/oeqa/selftest/cases/sstatetests.py: # If buildhistory is enabled, we need to disable version-going-backwards
meta/lib/oeqa/selftest/cases/sstatetests.py: self.append_config('ERROR_QA:remove = "version-going-backwards"')
meta/classes/insane.bbclass: version-going-backwards expanded-d invalid-chars \
meta/classes/buildhistory.bbclass:# the "version-going-backwards" check still works. When relying on that, be careful
meta/classes/buildhistory.bbclass: oe.qa.handle_error("version-going-backwards", msg, d)
dev@DESKTOP-7SIEFHK:~/WorkSpace/poky$ grep -r version-going-backwards meta-poky/
dev@DESKTOP-7SIEFHK:~/WorkSpace/poky$
文件meta/classes/insane.bbclass中,
ERROR_QA ?= "dev-so debug-deps dev-deps debug-files arch pkgconfig la \
perms dep-cmp pkgvarcheck perm-config perm-line perm-link \
split-strip packages-list pkgv-undefined var-undefined \
version-going-backwards expanded-d invalid-chars \
license-checksum dev-elf file-rdeps configure-unsafe \
configure-gettext perllocalpod shebang-size \
already-stripped installed-vs-shipped ldflags compile-host-path \
install-host-path pn-overrides unknown-configure-option \
useless-rpaths rpaths staticdev empty-dirs \
"
所以在build/conf/loca.conf中,添加下面一行:
ERROR_QA:remove = "version-going-backwards"
然后重新运行命令,就没有问题了。
参考: