不直接在 Yocto 官方提供的 recipe 中修改
通常是创建新的 metadata 和 recipe 来配置相关软件编译等过程
主要有以下几个原因:
1. 便于维护和升级
-
隔离自定义修改:Yocto 官方的 recipe 可能会随着版本更新而变化。如果直接修改官方 recipe,当更新到新的 Yocto 版本时,这些修改可能会被覆盖,导致自定义配置丢失。而创建新的 recipe 可以将自定义内容与官方 recipe 隔离开,在 Yocto 升级时,只需检查新的官方 recipe 与自己的 recipe 之间的差异,进行必要的调整,而不用担心修改被覆盖。
-
清晰的变更管理:通过新的 recipe,可以清晰地看到针对特定软件包所做的所有自定义修改。在项目的整个生命周期中,无论是新成员加入还是后续维护,都能快速了解哪些是自定义的配置,而无需从官方原始 recipe 中去甄别哪些代码被修改过。
2. 支持多版本和差异化配置
-
同时支持多个版本:如果需要在项目中使用软件包的不同版本,直接修改官方 recipe 会很困难。新创建的 recipe 可以针对不同版本创建不同的配置文件,方便在构建过程中选择所需的版本进行构建。例如,在测试新的软件版本时,可以使用新的 recipe 构建,同时保持旧版本的构建不受影响。
-
适应不同项目需求:不同的项目可能对同一软件包有不同的要求。新的 recipe 可以根据项目的特定需求进行定制。比如,一个项目可能需要软件包开启某些特定功能并进行优化编译,而另一个项目可能需要关闭这些功能,通过创建不同的 recipe 可以轻松满足这些差异化需求。
3. 避免对其他用户或项目产生影响
-
保持兼容性:在多用户或多项目使用同一 Yocto 环境的情况下,直接修改官方 recipe 可能会影响其他用户或项目的构建。新的 recipe 只在需要的项目中使用,不会干扰其他无关的构建过程,保证了整个环境的兼容性和稳定性。
-
独立的错误隔离:如果自定义的编译配置出现问题,新的 recipe 可以方便地进行调试和修复。问题被限制在新创建的 recipe 范围内,而不会影响到其他基于官方 recipe 正常构建的软件包。