使用 os-release 标准 - Amazon Linux 2
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

使用 os-release 标准

Amazon Linux 遵循用于识别 Linux 发行版的 os-release 标准。该文件提供关于操作系统标识和版本信息的机器可读信息。

注意

该标准规定首先尝试解析 /etc/os-release,其次是 /usr/lib/os-release。应注意遵循有关文件名和路径的标准。

关键识别差异

os-release 位于 /etc/os-release,如果该位置不存在,则位于 /usr/lib/os-release。完整信息请查阅 os-release 标准

确定实例是否运行 Amazon Linux 最可靠的方法是检查 os-release 中的 ID 字段。

区分不同版本最可靠的方法是检查 os-release 中的 VERSION_ID 字段:

  • Amazon Linux AMI:VERSION_ID 包含基于日期的版本(例如 2018.03

  • AL2: VERSION_ID="2"

  • AL2023: VERSION_ID="2023"

注意

请记住,VERSION_ID 是一个供编程使用的机器可读字段,而 PRETTY_NAME 是为向用户显示而设计的。有关字段类型的更多信息,请参阅 字段类型:机器可读与人类可读

字段类型:机器可读与人类可读

/etc/os-release 文件(或者如果 /etc/os-release 不存在,则为 /usr/lib/os-release 文件)包含两种类型的字段:供编程使用的机器可读字段,以及供向用户呈现信息用的人类可读字段。

机器可读字段

这些字段使用标准化格式,旨在供脚本、程序包管理器和其他自动化工具处理。它们仅包含小写字母、数字和有限的标点符号(句点、下划线和连字符)。

  • ID:操作系统标识符。Amazon Linux 在所有版本中使用 amzn,以此区别于其他发行版,如 Debian (debian)、Ubuntu (ubuntu) 或 Fedora (fedora)

  • VERSION_ID:供编程使用的操作系统版本(例如 2023

  • ID_LIKE:相关发行版的空间分隔列表(例如 fedora

  • VERSION_CODENAME:供脚本使用的发布代号(例如 karoo

  • VARIANT_ID:用于编程决策的变体标识符

  • BUILD_ID:系统映像的构建标识符

  • IMAGE_ID:容器化环境的映像标识符

  • PLATFORM_ID:平台标识符(例如 platform:al2023

人类可读字段

这些字段旨在向用户显示,可能包含空格、混合大小写和描述性文本。在用户界面中呈现操作系统信息时应使用它们。

  • NAME:用于显示的操作系统名称(例如 Amazon Linux

  • PRETTY_NAME:用于显示的包含版本的完整操作系统名称(例如 Amazon Linux 2023.8.20250721

  • VERSION:适合向用户呈现的版本信息

  • VARIANT:用于显示的变体或版本名称(例如 Server Edition

其他信息字段

这些字段提供有关操作系统的额外元数据:

  • HOME_URL:项目主页 URL

  • DOCUMENTATION_URL:文档 URL

  • SUPPORT_URL:支持信息 URL

  • BUG_REPORT_URL:错误报告 URL

  • VENDOR_NAME:供应商名称

  • VENDOR_URL:供应商 URL

  • SUPPORT_END— YYYY-MM-DD 格式中的 End-of-support日期

  • CPE_NAME:通用平台枚举标识符

  • ANSI_COLOR:用于终端显示的 ANSI 颜色代码

当编写需要以编程方式识别 Amazon Linux 的脚本或应用程序时,请使用机器可读字段,如 IDVERSION_ID。当向用户显示操作系统信息时,请使用人类可读字段,如 PRETTY_NAME

/etc/os-release 示例

/etc/os-release 文件内容在 Amazon Linux 各版本间有所不同:

AL2023
[ec2-user ~]$ cat /etc/os-release
NAME="Amazon Linux"
VERSION="2023"
ID="amzn"
ID_LIKE="fedora"
VERSION_ID="2023"
PLATFORM_ID="platform:al2023"
PRETTY_NAME="Amazon Linux 2023.8.20250721"
ANSI_COLOR="0;33"
CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2023"
HOME_URL="https://aws.amazon.com/linux/amazon-linux-2023/"
DOCUMENTATION_URL="https://docs.aws.amazon.com/linux/"
SUPPORT_URL="https://aws.amazon.com/premiumsupport/"
BUG_REPORT_URL="https://github.com/amazonlinux/amazon-linux-2023"
VENDOR_NAME="AWS"
VENDOR_URL="https://aws.amazon.com/"
SUPPORT_END="2029-06-30"
AL2
[ec2-user ~]$ cat /etc/os-release
NAME="Amazon Linux"
VERSION="2"
ID="amzn"
ID_LIKE="centos rhel fedora"
VERSION_ID="2"
PRETTY_NAME="Amazon Linux 2"
ANSI_COLOR="0;33"
CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2"
HOME_URL="https://amazonlinux.com/"
SUPPORT_END="2026-06-30"
Amazon Linux AMI
[ec2-user ~]$ cat /etc/os-release
NAME="Amazon Linux AMI"
VERSION="2018.03"
ID="amzn"
ID_LIKE="rhel fedora"
VERSION_ID="2018.03"
PRETTY_NAME="Amazon Linux AMI 2018.03"
ANSI_COLOR="0;33"
CPE_NAME="cpe:/o:amazon:linux:2018.03:ga"
HOME_URL="http://aws.amazon.com/amazon-linux-ami/"

与其他发行版的比较

要了解 Amazon Linux 在更广泛的 Linux 生态系统中的位置,可将其 /etc/os-release 格式与其他主要发行版进行比较:

Fedora
[ec2-user ~]$ cat /etc/os-release
NAME="Fedora Linux"
VERSION="42 (Container Image)"
RELEASE_TYPE=stable
ID=fedora
VERSION_ID=42
VERSION_CODENAME=""
PLATFORM_ID="platform:f42"
PRETTY_NAME="Fedora Linux 42 (Container Image)"
ANSI_COLOR="0;38;2;60;110;180"
LOGO=fedora-logo-icon
CPE_NAME="cpe:/o:fedoraproject:fedora:42"
DEFAULT_HOSTNAME="fedora"
HOME_URL="https://fedoraproject.org/"
DOCUMENTATION_URL="https://docs.fedoraproject.org/en-US/fedora/f42/system-administrators-guide/"
SUPPORT_URL="https://ask.fedoraproject.org/"
BUG_REPORT_URL="https://bugzilla.redhat.com/"
REDHAT_BUGZILLA_PRODUCT="Fedora"
REDHAT_BUGZILLA_PRODUCT_VERSION=42
REDHAT_SUPPORT_PRODUCT="Fedora"
REDHAT_SUPPORT_PRODUCT_VERSION=42
SUPPORT_END=2026-05-13
VARIANT="Container Image"
VARIANT_ID=container
Debian
[ec2-user ~]$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
NAME="Debian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
Ubuntu
[ec2-user ~]$ cat /etc/os-release
PRETTY_NAME="Ubuntu 24.04.2 LTS"
NAME="Ubuntu"
VERSION_ID="24.04"
VERSION="24.04.2 LTS (Noble Numbat)"
VERSION_CODENAME=noble
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=noble
LOGO=ubuntu-logo

请注意机器可读字段如何提供跨发行版的一致标识:

  • ID:唯一标识操作系统:Amazon Linux 为 amzn,Fedora 为 fedora,Debian 为 debian,Ubuntu 为 ubuntu

  • ID_LIKE— 显示发行关系:亚马逊 Linux 使用 fedora (AL2023) 或 centos rhel fedora (AL2),而 Ubuntu 则显示了其 Debi debian an 传统

  • VERSION_ID— 提供机器可解析的版本信息:2023 AL2023、Fedora、Debian、42 Ubuntu 12 24.04

相比之下,人类可读字段专为向用户显示而设计:

  • NAME:用户友好的操作系统名称:Amazon LinuxFedora LinuxDebian GNU/LinuxUbuntu

  • PRETTY_NAME:包含版本的完整显示名称:Amazon Linux 2023.8.20250721Fedora Linux 42 (Container Image)Debian GNU/Linux 12 (bookworm)Ubuntu 24.04.2 LTS

  • VERSION:具有附加上下文(如代号或发布类型)的人类可读版本

编写跨平台脚本时,应始终使用机器可读字段(IDVERSION_IDID_LIKE)进行逻辑判断和决策,并仅使用人类可读字段(PRETTY_NAMENAME)向用户显示信息。