版本 5.0 LTS (scarthgap)
5.0 (scarthgap) 迁移说明
本节介绍如何从上一版本迁移到 Yocto Project 5.0 版本(代号“scarthgap”)。
如果从更早的 LTS 版本迁移,还 需要阅读从当前版本到新版本之间的全部迁移说明:
支持的内核版本
本版本的 OLDEST_KERNEL 仍为 "5.15",因此默认不支持更旧的内核。 详情见 4.3 迁移说明。
支持的发行版
与此前版本相比,新增支持在以下 GNU/Linux 发行版上运行 BitBake:
Rocky 9
同时,不再支持以下较早的发行版:
Fedora 37
Ubuntu 22.10
OpenSUSE Leap 15.3
参见 所有受支持的发行版。
Go 语言变更
nativesdk 和 cross-canadian 的 GO_LDFLAGS 移除了 linkmode 标志。
此外,goarch 类中所有此前受支持架构的动态链接均已禁用。
systemd 变更
现在支持 Systemd 的 nss-resolve 插件,可通过 nss-resolve PACKAGECONFIG
选项添加。systemd-resolved 功能现在要求同时启用该选项和 resolved。
与此相关,也为 Systemd 的网络名称解析加入了使用 stub-resolv.conf 的选项。
配方变更
现在,如果任意 ptest 未返回测试结果,ptest 运行时测试就会失败。
已弃用的变量
应将
CVE_CHECK_IGNORE替换为 CVE_STATUS
已移除的变量
以下变量已移除:
DEPLOY_DIR_TAR:4.2 移除 package_tar 类后已不再需要。PYTHON_PN:此前已移除 Python 2,仅剩 Python 3,因此不再需要用于区分两者的抽象。oldincludedirUSE_L10N:此前已弃用,现在移除。CVE_SOCKET_TIMEOUTSERIAL_CONSOLES_CHECK:改用 SERIAL_CONSOLES,因为启动getty前 会检查后者指定的所有控制台是否存在。
已移除的配方
本版本移除了以下配方:
libcroco:已被 Gnome Project 弃用并归档。liberror-perl:无人维护且不再需要,移至 meta-perl。linux-yocto:6.1 版本(改为提供 6.6 版本)。systemtap-uprobes:已过时。zvariant:无法使用新版 Rust 构建。
已移除的类
本版本没有移除任何类。
QEMU 变更
tune-core2 不再向 QEMU 传入 n270 和 core2duo CPU 型号,
因为 QEMU 文档建议不要将它们用于 -cpu 选项。现在改用 Nehalem 型号。
ipk 打包变更
ipk 打包(使用 opkg)现在采用 zstd 压缩替代 xz,以改善压缩效果和性能。
这意味着,使用 5.0 构建的 .ipk 软件包要求 Opkg 在构建时启用 zstd 支持。
5.0 中自然满足这一条件,但对于构建 Opkg 时没有启用 zstd 的旧系统,
至少在默认情况下,这些软件包将无法使用。
此外,Opkg 的内部依赖求解器现已弃用。本版本仍可使用,但选用时会触发警告。
默认配置采用外部 libsolv 求解器已有一段时间。如果此前从 Opkg 的
PACKAGECONFIG 中显式移除它以选择内部求解器,应计划近期切换到 libsolv
(在自定义的 Opkg PACKAGECONFIG 中加入 libsolv,或恢复默认值)。
使用 DISTRO = "poky" 时的 motd 消息
默认的 poky DISTRO 明确定位为用于测试和开发的 参考 发行版。
它启用大多数硬件和软件功能以便测试,但从安全角度看,这也意味着攻击面很大。
我们建议在生产环境使用 Yocto Project 的用户创建自己的发行版,不要直接使用 Poky。
为进一步鼓励这种做法,5.0 在使用 Poky 时会向 /etc/motd 添加警告,
使开发者在登录时看到它。如果创建自己的发行版,就不会显示此消息。
创建发行版的方法见 “创建自己的发行版”。
其他变更
bitbake-whatchanged脚本因无法正常工作且无人维护而移除。scripts/sstate-cache-management.sh已由性能更好的 Python 版本scripts/sstate-cache-management.py取代。bmap-tools配方已重命名为bmaptool。gpgme禁用了 Python 绑定,因为上游尚不支持 Python 3.12。 待上游修复后,会在后续版本中解决。在运行时上下文(RDEPENDS / RPROVIDES)使用
virtual/前缀 现在会显示警告,详情见 virtual-slash。recipetool现在为 Python 模块创建配方时,会为配方名称加上python3-前缀。cve-check类不再针对远程补丁产生警告,只记录一条提示,也不再尝试获取补丁 来扫描问题或 CVE 编号。不过,现在能够识别远程补丁文件名中的 CVE 编号引用。-f{file,macro,debug}-prefix-map中移除了 PE 和 PR 的值, 以避免版本递增时调试符号路径发生不必要的变化。这通常不会导致问题,但如果关注 调试源码路径(例如配方在打包期间需要处理这些文件),就会注意到差异。 新增的 TARGET_DBGSRC_DIR 变量可以简化相关处理。ccache不再支持 FORTRAN。