使用 Yocto 锁定包版本

Lock packages version with Yocto

我们即将设置生产构建服务器来维护嵌入式 linux 产品。我知道我可以在配方中指定一个带有 PREFERRED_VERSION_<package> 的包版本,但这可能需要 很多 的时间来锁定图像中的每个工具(即 grepstrace、ECC)。这在我们需要重建服务器的情况下很有用(我们可以备份整个服务器,但这不会被跟踪。即使将所有内容提交到 git 仓库似乎也不是那么聪明,如果我是,请纠正我错误的)。

有没有办法获得类似 package-lock.json 或图像足迹的东西?

编辑

我想要实现的是

的列表
PREFERRED_VERSION_<package0> = "xxx"
...
PREFERRED_VERSION_<packageN> = "xxx" 

我可以用来在清晰的系统上复制图像(没有任何缓存文件)。似乎没有这样的命令可以直接执行此操作,而是可以通过

获取图像包和版本列表
bitbake <image> -s

并用一个简单的脚本生成我正在寻找的东西。

我们有发行版配置,您可以在其中指定所有版本首选项。例如,下面的示例是从 poky.conf and bleeding.conf

复制的
PREFERRED_VERSION_glib-2.0 ?= "2.17.4"
PREFERRED_VERSION_glib-2.0-native ?= "2.17.4"
PREFERRED_VERSION_atk ?= "1.22.0"
PREFERRED_VERSION_pango ?= "1.21.2"
PREFERRED_VERSION_gtk+ ?= "2.13.3"

require conf/distro/include/poky-floating-revisions.inc
require conf/distro/poky.conf

DISTRO = "poky-bleeding"
DISTROOVERRIDES = "poky"

因此您可以在发行版配置中定义所有 SRCREVPREFERRED_VERSION,或者编写一个单独的 distro.inc 并使用 require 添加它。并使用它进行编译,你可以定义,

DISTRO ?= "poky-bleeding"

在你的 conf/local.conf 中。通过这种方式,您可以就地控制基于 git 的配方的所有版本和 SRCREV。