From d30874a5d484f047d1dec5f7fd2a35b7f798036d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=80=97=E5=AD=90?= Date: Thu, 17 Oct 2024 13:20:24 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20opencloudos=E6=A3=80=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/os/os.go | 47 +++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 41 insertions(+), 6 deletions(-) diff --git a/pkg/os/os.go b/pkg/os/os.go index c9f35e26..5f6fa502 100644 --- a/pkg/os/os.go +++ b/pkg/os/os.go @@ -1,23 +1,58 @@ package os import ( + "bufio" "os" + "strings" ) +func readOSRelease() map[string]string { + file, err := os.Open("/etc/os-release") + if err != nil { + return nil + } + defer file.Close() + + osRelease := make(map[string]string) + scanner := bufio.NewScanner(file) + for scanner.Scan() { + line := scanner.Text() + if len(line) > 0 && strings.Contains(line, "=") { + parts := strings.SplitN(line, "=", 2) + key := parts[0] + value := strings.Trim(parts[1], `"`) + osRelease[key] = value + } + } + return osRelease +} + // IsDebian 判断是否是 Debian 系统 func IsDebian() bool { - _, err := os.Stat("/etc/debian_version") - return err == nil + osRelease := readOSRelease() + if osRelease == nil { + return false + } + id, idLike := osRelease["ID"], osRelease["ID_LIKE"] + return id == "debian" || strings.Contains(idLike, "debian") } // IsRHEL 判断是否是 RHEL 系统 func IsRHEL() bool { - _, err := os.Stat("/etc/redhat-release") - return err == nil + osRelease := readOSRelease() + if osRelease == nil { + return false + } + id, idLike := osRelease["ID"], osRelease["ID_LIKE"] + return id == "tencentos" || id == "opencloudos" || id == "rhel" || strings.Contains(idLike, "rhel") } // IsUbuntu 判断是否是 Ubuntu 系统 func IsUbuntu() bool { - _, err := os.Stat("/etc/lsb-release") - return err == nil + osRelease := readOSRelease() + if osRelease == nil { + return false + } + id, idLike := osRelease["ID"], osRelease["ID_LIKE"] + return id == "ubuntu" || strings.Contains(idLike, "ubuntu") }