SDB:查找 openSUSE 版本

跳转到:导航搜索
本文档描述了查找您正在运行的 openSUSE 版本的步骤

理解 os-release 字段

os-release文件是包含所有 openSUSE 版本详细信息的文件。请参阅 上游文档 以获取详细信息。

重要的字段包括

  • NAME= 发行版的易于理解的名称,不带版本号。例如“openSUSE Leap”或“openSUSE Tumbleweed”。应避免自动解析此字段。
  • PRETTY_NAME= 发行版的易于理解的名称,在相关时包括版本号。例如“openSUSE Leap 15.0”或“openSUSE Tumbleweed”。应避免自动解析此字段。
  • VERSION= 发行版的易于理解的版本。仅在 Leap 中使用,例如“15.0”。应避免自动解析此字段。
  • ID= 发行版的计算机友好的名称,不带版本号。例如“opensuse-leap”或“opensuse-tumbleweed”。此字段应安全地在脚本中解析。
  • ID_LIKE= 一个空格分隔的 ID 列表,用于与 ID= 具有共同行为的关联操作系统。例如“opensuse suse”。这样脚本就不需要微观管理 ID= 的每个可能选项。条目“suse”代表所有 openSUSE、SUSE、SUSE Linux Enterprise 发行版及其衍生版本。“opensuse”仅代表 openSUSE 发行版及其衍生版本。此字段应安全地在脚本中解析。
  • VERSION_ID= 发行版的计算机友好的版本。例如“15.0”或“20180530”。此字段应安全地在脚本中解析。

/usr/lib/os-release应该使用,除非/etc/os-release存在,并且应该优先使用。

在 openSUSE 发行版上/etc/os-release通常是到/usr/lib/os-release的符号链接,默认情况下


图形界面方式

打开/usr/lib/os-release/etc/os-release您最喜欢的文本编辑器。


命令行方式

打开终端,运行

cat /usr/lib/os-release

应该显示类似以下内容

NAME="openSUSE Leap"
VERSION="15.0"
ID="opensuse-leap"
ID_LIKE="suse opensuse"
VERSION_ID="15.0"
PRETTY_NAME="openSUSE Leap 15.0"
ANSI_COLOR="0;32"
CPE_NAME="cpe:/o:opensuse:leap:15.0"
BUG_REPORT_URL="https://bugs.opensuse.org"
HOME_URL="https://opensuse.net.cn/"

可以在 SDB:SUSE_and_openSUSE_Products_Version_Outputs 上找到有关此文件在各种 openSUSE 和 SUSE Linux 发行版上外观的更多示例。


在 Shell 脚本中

最简单的方法是直接引用该文件并检查它设置的变量,例如

if [ -e /etc/os-release ]; then
   . /etc/os-release
else
   . /usr/lib/os-release
fi
if [ "$ID" = "opensuse-leap" ]; then
    echo "Do something Leap specific"
    ...
elif [ "$ID" = "opensuse-tumbleweed" ]; then
    echo "Do something Tumbleweed specific"
    ...
fi

但是,这不适用于需要为更广泛的 openSUSE 系列发行版(即 Leap、Tumbleweed 和 Kubic 等变体)甚至整个 *SUSE 系列发行版(即 Leap、Tumbleweed、变体和 SLE)执行操作的脚本。

为此,您需要开始使用 ID_LIKE 字段,具体取决于您感兴趣的范围。

if [ -e /etc/os-release ]; then
   . /etc/os-release
else
   . /usr/lib/os-release
fi
if [[ "$ID_LIKE" = *"suse"* ]]; then
   echo "Do something for any SUSE/openSUSE distro"
   ...
elif [[ "$ID_LIKE" = *"opensuse"* ]]; then
   echo "Do something for any openSUSE distro, but not other SUSE distros"
   ...
fi

os-release文件设计为可以快速引用。手动启动 grep 或 sed 以提取信息通常会更慢。但是,如果您不想引用该文件,例如为了符合 POSIX 标准、潜在的名称冲突或控制发生的情况,这里有一些代码可以提取发行版 ID

osrel=$(sed -n '/^ID=/s/^.*=//p' /usr/lib/os-release);

if [ "$osrel" = "opensuse-leap" ]; then
    ...
fi

32 位与 64 位

以前使用的漂亮名称会在括号中使用 i586 或 x86-64 来包含发行版是 32 位还是 64 位。较新的版本不再包含此信息,因为它们通常仅以 64 位提供。 Stackoverflow 建议使用 uname -m 或 getconf LONG_BIT。前者说明了硬件功能,后者说明了正在运行的内容,即对于在可以运行 32 位和 64 位的平台上运行的 32 位 Linux,uname -m 将显示 x86_64,而 getconf LONG_BIT 输出 32。


示例

SDB:SUSE_and_openSUSE_Products_Version_Outputs