本文译者是一位开源理念的坚定支持者,所以本文虽然不是软件,但是遵照开源的精神发布。
本文译者十分愿意与他人分享劳动成果,如果你对我的其他翻译作品或者技术文章有兴趣,可以在如下位置查看现有的作品集:
由于译者水平有限,因此不能保证译文内容准确无误。如果你发现了译文中的错误(哪怕是错别字也好),请来信指出,任何提高译文质量的建议我都将虚心接纳。
os-release — 操作系统标识
/etc/os-release
/usr/lib/os-release
/etc/os-release
与
/usr/lib/os-release
文件包含了
操作系统识别数据。
os-release
文件的基本格式是
一系列换行符分隔的 VAR=VALUE 行(每行一个变量),
可以直接嵌入到 shell 脚本中使用。
注意,此文件并不支持变量替换之类的任何高级 shell 特性,
以便于应用程序无须支持这些高级 shell 特性,
即可直接使用此文件。
如果 VALUE 值中包含任何非字母数字字符(也就是 A–Z, a–z, 0–9 之外的字符),
那么必须使用引号(单双皆可)界定,
并且任何在Shell中具有特殊含义的字符,
包括:美元符, 单双引号, 反斜线, 反引号 ……
等等,都必须使用shell风格的反斜线进行转义。
所有字符串都必须使用UTF-8编码,
并且禁止使用一切非打印字符。
以"#"开头的行将被作为注释忽略。
空白行也会被忽略。
应用程序应该只读取 /etc/os-release
文件,
仅在
/etc/os-release
不存在的情况下,
才可以读取 /usr/lib/os-release
文件。
绝对禁止应用程序同时读取两个文件。
操作系统发行商应该将操作系统识别数据存放在
/usr/lib/os-release
文件中,
同时将 /etc/os-release
作为一个软连接,
以相对路径的方式指向
/usr/lib/os-release
文件,
以提供应用程序读取 /etc
的兼容性。
软连接使用相对路径是为了避免在
chroot 或 initrd 环境中失效。
os-release
的内容应当仅由发行版的供应商设置,
系统管理员一般不应该修改此文件。
因为此文件仅用于操作系统识别, 所以必须禁止包含任何需要本地化的内容(也就是禁止包含非ASCII字符)。
/etc/os-release
与
/usr/lib/os-release
可以是软连接,
但是必须全部位于根文件系统上,
以确保在系统刚启动时即可读取其内容。
更多有关 os-release
的理解,
请参阅 Announcement of /etc/os-release
可以在
os-release
中使用下列操作系统识别字段:
NAME=
¶不带版本号且适合人类阅读的操作系统名称。
这是必填字段。例如:
"NAME=Fedora
" 或 "NAME="Debian
GNU/Linux"
" 。
默认值是
"NAME=Linux
" 。
VERSION=
¶操作系统的版本号。
禁止包含操作系统名称,但是可以包含适合人类阅读的发行代号。
这是可选字段。
例如:
"VERSION=17
" 或 "VERSION="17 (Beefy
Miracle)"
"
ID=
¶小写字母表示的操作系统名称,
禁止包含 0–9, a–z, ".", "_", "-" 以外的字符,禁止包含任何版本信息。
该字段适合被程序或脚本解析,也可用于生成文件名。
这是必填字段。例如:
"ID=fedora
" 或
"ID=debian
" 。
默认值是
"ID=linux
" 。
ID_LIKE=
¶一系列空格分隔的字符串,
其中的每一项都符合 ID=
字段的规范,
也就是
仅包含 0–9, a–z, ".", "_", "-" 字符。
此字段用于表明当前的操作系统
是从哪些"父发行版"派生而来,
切勿列出从此发行版派生的"子发行版",
排列顺序由近到远,
关系最近的发行版名称排在最前,
紧密度依次递减。
应用程序如果不能识别
ID=
字段的内容,
那么可以参考此字段。
这是可选字段。
比如对于 "ID=centos
"来说,
"ID_LIKE="rhel fedora"
" 就是一个合理的设置。
而对于 "ID=ubuntu
" 来说,
"ID_LIKE=debian
"
也很合理。
VERSION_CODENAME=
¶
小写字母表示的操作系统发行代号,禁止包含
0–9, a–z, ".", "_", "-" 以外的字符,
禁止包含任何版本信息以及操作系统名称。
该字段适合被程序或脚本解析,
也可用于生成文件名。
这是可选字段,
并且某些发行版可能不存在此字段。例如:
"VERSION_CODENAME=buster
",
"VERSION_CODENAME=xenial
"
VERSION_ID=
¶小写字母表示的操作系统版本号,
禁止包含 0–9, a–z, ".", "_", "-" 以外的字符,
禁止包含操作系统名称与发行代号。
该字段适合被程序或脚本解析,
也可用于生成文件名。
这是可选字段。例如: "VERSION_ID=17
"
或 "VERSION_ID=11.04
"
PRETTY_NAME=
¶适合人类阅读的比较恰当的发行版名称,
可选的包含发行代号与系统版本之类的信息,内容比较随意。
这是必填字段。默认值是
"PRETTY_NAME="Linux"
" 。
例如:
"PRETTY_NAME="Fedora 17 (Beefy
Miracle)"
" 。
ANSI_COLOR=
¶在控制台上显示操作系统名称的
文字颜色。
必须设为符合 ESC [ m ANSI/ECMA-48 转义代码规范的字符串。
这是可选字段。
例如: "ANSI_COLOR="0;31"
"(红色) 或
"ANSI_COLOR="1;34"
"
(淡蓝)
CPE_NAME=
¶操作系统的"CPE名称"(URI绑定语法),
详见
Common
Platform Enumeration Specification 文档。
这是可选字段。例如:
"CPE_NAME="cpe:/o:fedoraproject:fedora:17"
"
HOME_URL=
, DOCUMENTATION_URL=
, SUPPORT_URL=
, BUG_REPORT_URL=
, PRIVACY_POLICY_URL=
¶与操作系统相关的
网址。
HOME_URL=
是操作系统的主页地址,
或者特定于此版本操作系统的页面地址。
DOCUMENTATION_URL=
是操作系统的文档与手册地址。
SUPPORT_URL=
是操作系统的支持页面(若存在),
主要用于发行商提供技术支持的页面。
BUG_REPORT_URL=
是故障汇报页面(若存在),
主要用于基于社区互动的发行版。
PRIVACY_POLICY_URL=
是隐私条款页面(若存在)。
上述URL应该分别出现在"About this system"界面下的
"About this Operating System",
"Obtain Support",
"Report a Bug",
"Privacy Policy"
子界面中。
这些字段的值必须符合
RFC3986 规范,
通常以 "http:
" 或
"https:
" 开头,
但也可能以
"mailto:
" 或 "tel:
" 开头。
例如:
"HOME_URL="https://fedoraproject.org/"
" 与
"BUG_REPORT_URL="https://bugzilla.redhat.com/"
"
BUILD_ID=
¶用于区分同一版本操作系统的
不同编译次序的唯一标示符(不会被系统更新所修改)。
该字段在不同的 VERSION_ID 之间有可能是相同的,
因为 BUILD_ID 仅在同一版本号内部保持唯一。
每当发布新版本的操作系统时,
只需要更新 VERSION_ID 字段即可,并不一定必须更新 BUILD_ID 字段。
这是可选字段。
例如: "BUILD_ID="2013-03-20.3"
"
或 "BUILD_ID=201303203
"
VARIANT=
¶
适合人类阅读的发行版分支标识符。
用于向用户表明
此系统的默认配置是
专门面向特定应用场景的。
这是可选字段,
并且某些发行版可能不存在此字段。
例如:
"VARIANT="Server Edition"
",
"VARIANT="Smart Refrigerator Edition"
"
注意,此字段仅用于显示目的,
程序应该使用 VARIANT_ID
字段进行可靠的判断。
VARIANT_ID=
¶
小写字母表示的发行版分支标识符,禁止包含
0–9, a–z, ".", "_", "-" 以外的字符。
该字段适合被程序或脚本解析,
也可用于生成文件名。
这是可选字段,
并且某些发行版可能不存在此字段。
例如:
"VARIANT_ID=server
",
"VARIANT_ID=embedded
"
LOGO=
¶
一个字符串,用于指定由
freedesktop.org Icon Theme Specification
规范的定义图标名称。
图形界面程序可以根据此名称显示发行版图标。
这是一个非必要的可选字段。
例如:
"LOGO=fedora-logo
",
"LOGO=distributor-logo-opensuse
"
如果要在程序中检测发行版名称及其变种,
那么可以使用
ID
与 VERSION_ID
字段,
并将 ID_LIKE
用作 ID
的替补。
如果想要向用户显示发行版的名称,
那么可以使用
PRETTY_NAME
字段。
注意,
滚动发布的发行版可能不会提供版本信息,
也就程序不能假定 VERSION
与
VERSION_ID
字段必然存在。
操作系统的发行商可能为此文件引入新的字段,
强烈建议为新引入的字段
使用特别的前缀以避免冲突。
读取此文件的程序应该能够安全的忽略不理解的字段。
例如:
"DEBIAN_BTS="debbugs://bugs.debian.org/"
"
NAME=Fedora VERSION="17 (Beefy Miracle)" ID=fedora VERSION_ID=17 PRETTY_NAME="Fedora 17 (Beefy Miracle)" ANSI_COLOR="0;34" CPE_NAME="cpe:/o:fedoraproject:fedora:17" HOME_URL="https://fedoraproject.org/" BUG_REPORT_URL="https://bugzilla.redhat.com/"