View a markdown version of this page

使用 dnf 支持信息 插件 - Amazon Linux 2023

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 dnf 支持信息 插件

该dnf-plugin-support-info软件包提供了 AL2023 的dnf supportinfo命令。使用此命令查询软件包的生命周期和支持信息:了解软件包当前是否受支持、收到补丁的严重性级别以及支持状态何时发生变化。

有关所有软件包支持声明的摘要视图,请参阅 AL2023 发行说明中的 AL2023 支持声明

重要

v2 插件附带legacy = 1/etc/dnf/plugins/supportinfo.conf了。在此模式下,输出使用 v1 字段名称和格式。在未来的 AL2023 季度版本中,默认值更改为legacy = 0,切换到本页上记录的 v2 输出格式。要立即开始使用 v2 输出,请在您的配置legacy = 0中进行设置。有关哪些更改的详细信息,请参阅迁移来源 dnf-plugin-support-info v1 到 v2

先决条件

  • AL2023 实例

  • 该dnf-plugin-support-info软件包(可从默认 AL2023 存储库中获得)

  • 无需根权限(传统模式除外--sync

开始使用

  1. 安装 插件。

    sudo dnf install dnf-plugin-support-info
  2. 查询软件包以验证安装。

    dnf supportinfo --pkg glibc

    输出显示了该软件包的支持状态和时间表:

    Name : glibc Version : 2.34-231.amzn2023.0.4 State : installed Current Status : Supported Patch Priority : Full Support Support Level Description : Full security and bug fix support for all severities Covered Severities : Low, Medium, Important, Critical Origin : Amazon Linux 2023 Core Support Timeline : from 2023-03-15 : supported : from 2029-06-30 : unsupported

查询包

传递--pkg一个或多个软件包名称以显示其支持信息。

dnf supportinfo --pkg PACKAGE [PACKAGE ...]

查询特定包裹

以下dnf supportinfo示例查询生命周期已到期的软件包:

dnf supportinfo --pkg php8.1
Name : php8.1 Version : 8.1.34-1.amzn2023.0.1 State : available Current Status : End of Life Patch Priority : End of Support Support Level Description : End of support - no further updates Origin : Amazon Linux 2023 Core Support Timeline : from 2023-03-15 : supported : from 2025-12-31 : unsupported Package Note : Upstream end-of-life for PHP 8.1 (php8.1) is 2025-12-31

查询多个包裹

dnf supportinfo --pkg glibc bash openssl

过滤器套餐

--show标志按州、支持级别或两者都筛选软件包。

dnf supportinfo --show FILTER [FILTER ...]

过滤器类型

类别 来源
状态过滤器(固定) installed, available, unavailable, all 内置于插件中
支持级别过滤器(动态) 可变。例如,full_supporteos 从支持信息 XML 中的<support_level>条目加载
注意

支持级别过滤器是动态的。它们直接来自操作系统供应商定义的支持信息 XML 数据。可用值取决于 AL2023 当前的定义。运行--list-filters以查看当前的有效过滤器值集。有关如何声明这些级别的信息,请参阅SupportInfo XML 结构

过滤器逻辑

  • 多个状态过滤器与 OR 相结合:--show installed available匹配已安装或可用的软件包。

  • 多个支持级别过滤器与 OR: --show full_support eos 匹配手术eos支持级别的full_support软件包。

  • 当您将两种类型组合在一起时,它们与 AND: 组合使用时会--show installed eos匹配已安装且处于eos支持级别的软件包。

注意

如果过滤器名称同时存在于州和支持级别类别中,则插件会同时匹配这两个类别。使用前缀语法来消除歧义:state:NAME或。support:NAME

列出可用过滤器

运行--list-filters以查看按类别分组的所有有效筛选值:

dnf supportinfo --list-filters

输出示例:

State filters: all - All packages (installed, available, and unavailable) available - Packages available in repositories but not installed installed - Packages currently installed on the system unavailable - Packages in support info but not in any repository Support level filters: eos - End of support - no further updates full_support - Full security and bug fix support for all severities

筛选已安装的软件包

dnf supportinfo --show installed

输出在表格中列出了每个软件包及其支持级别和当前状态:

Package Version State Support Level Current Status Until (Next Phase) Note redis6 6.2.20-2.amzn2023.0.1 installed End of Support End of Life Upstream end-of-life for Redis 6 (redis6) is 2026-01-31 bash 5.2.15-1.amzn2023.0.2 installed Full Support Supported 2029-06-30 (unsupported) glibc 2.34-231.amzn2023.0.1 installed Full Support Supported 2029-06-30 (unsupported) ...

在特定支持级别筛选已安装的软件包

dnf supportinfo --show installed eos

使用前缀语法消除歧义

dnf supportinfo --show state:installed support:full_support

结构化输出

用于脚本编写和自动化,--showjson--showxml生成机器可读的输出。

获取 JSON 输出

dnf supportinfo --pkg nodejs20 --showjson

输出包含该软件包的当前阶段、起源和完整的时间表以及支持级别的详细信息:

{ "name": "nodejs20", "version": "20.20.2-1.amzn2023.0.2", "state": "available", "current_phase": "unsupported", "origin": "Amazon Linux 2023 Core", "phases": [ { "name": "supported", "start_date": "2023-10-24", "patch_priority": "Full Support", "support_level_description": "Full security and bug fix support for all severities", "covered_severities": "Low, Medium, Important, Critical" }, { "name": "unsupported", "start_date": "2026-04-30", "patch_priority": "End of Support", "support_level_description": "End of support - no further updates" } ], "note": "Upstream end-of-life for Node.js 20 (nodejs20) is 2026-04-30" }

获取 XML 输出

dnf supportinfo --pkg nodejs20 --showxml

输出是一个 XML 文档,其<package_support>根目录包含每个生命周期的一个元素,每个<statement>元素都有其阶段、开始日期和支持级别的详细信息。有关完整的架构参考,请参阅SupportInfo XML 结构

管理缓存

该插件在本地缓存支持信息 XML 以减少网络请求。

缓存行为

当缓存过期时:

  1. 该插件检查远程文件是否已更改(使用 HTTP ETag)。

  2. 如果不变,它会在不重新下载的情况下扩展缓存。

  3. 如果更改,它将下载更新的文件。

  4. 出现网络错误时,它会回退到缓存的文件(如果存在)。

同步缓存

下载并缓存最新的支持信息数据:

dnf supportinfo --sync

将其用于需要最新支持数据而无需运行完整查询的自动化和 cron 作业。

清除缓存

dnf supportinfo --clean-cache

Non-root 用法

所有命令都无需root权限即可运行。以 root 身份运行时,缓存存储在/var/cache/dnf/support-info/。当以非 root 用户身份运行时,缓存将变为。/var/tmp/dnf-username-*/support-info/这遵循了 DNF 针对每用户临时目录的标准惯例。

注意

如果您启用旧模式,请运行sudo dnf supportinfo --sync一次以创建旧版文件。之后,非根查询可以正常工作。

配置引用

该插件从中读取配置/etc/dnf/plugins/supportinfo.conf。以下示例显示了禁用传统模式时的推荐配置:

[main] # Required: URL to support info XML (DNF variables like $awsregion are resolved) baseurl = https://cdn.amazonlinux.com/al2023/core/AL2023-supportinfo-1.0.xml # Optional: XSD schema for validation templateurl = https://cdn.amazonlinux.com/al2023/core/supportinfo-1.0.xsd # Optional: Cache duration in seconds (default: 1800 = 30 minutes) metadata_expire = 1800 # Legacy mode (default: 1). Set to 0 to use v2 format. legacy = 0
选项 描述 默认
baseurl 支持信息 XML 文件的 URL。支持 DNF 变量,例如. $awsregion 必填
templateurl 用于验证的 XSD 架构的 URL。
metadata_expire 缓存持续时间(以秒为单位)。无限-1使用,0随时检查。 1800
legacy 启用与 v1 兼容的输出。设置为10。请参阅从旧版插件迁移 1

输出字段参考

字段 说明
Name 软件包名称
版本 已安装或可用版本
installedavailableunavailable
当前状态 当前生命周期阶段,例如SupportedEnd of Life
补丁优先级 支持级别名称
支持级别描述 Human-readable 支撑位的描述
承保的严重程度 接收补丁的安全严重性级别
Origin 提供软件包的存储库
支持时间表 按时间顺序排列的生命周期阶段列表及日期
包装备注 其他背景,例如上游 EOL 日期

架构

支持信息数据格式由 XSD 架构定义。使用此架构来验证直接使用支持信息 XML 的自定义工具:

https://cdn.amazonlinux.com/al2023/core/supportinfo-1.0.xsd

从旧版插件迁移

如果您之前使用了该dnf-plugin-support-info软件包的早期版本,则legacy = 1默认情况下会附带新的 v2 插件以保持向后兼容性。在未来的 AL2023 季度版本中,默认更改legacy = 0和输出将切换到本页上记录的 v2 格式。

如果您有解析插件输出或直接读取旧版 XML 文件的脚本或工具,迁移来源 dnf-plugin-support-info v1 到 v2请参阅,了解差异的完整列表、 before/after 示例和分步迁移清单。

要在过渡后保持传统行为,请legacy = 1进行设置/etc/dnf/plugins/supportinfo.conf。这是一项临时措施。传统模式需要根权限--sync,将在未来的版本中删除。

问题排查

过时的缓存数据

症状:查询结果显示过时的支持信息。

分辨率:手动同步缓存:

dnf supportinfo --sync

如果问题仍然存在,请清除并重新同步:

dnf supportinfo --clean-cache dnf supportinfo --sync

未找到旧文件

症状:脚本读取/usr/lib/python*/site-packages/dnf-plugins/support_info.xml失败并显示 “文件未找到”。

解决方法:只有当您设置legacy = 1并运行--sync至少一次时,该插件才会创建旧文件:

sudo dnf supportinfo --sync

如果legacy = 0,该文件将不再维护。将您的脚本迁移到使用--showjson或改为--showxml输出。有关迁移步骤,请参阅迁移来源 dnf-plugin-support-info v1 到 v2

其他资源