我想编写独立的Linux发行版Golang代码。我需要检测哪个linux发行版并需要在程序中运行分发特定命令。像Ubuntu的dpkg和RHEL的rpm -q。
答案 0 :(得分:1)
答案 1 :(得分:0)
系统上可能包含也可能不包含包含可执行文件lsb_release
的程序包。我已经看到了这种情况(这可能性不大)。
您可以使用文件/etc/os-release
,该文件可以通过库go-ini轻松解析。参见示例:
import (
"fmt"
"github.com/go-ini/ini"
)
func ReadOSRelease(configfile string) map[string]string {
cfg, err := ini.Load(configfile)
if err != nil {
log.Fatal("Fail to read file: ", err)
}
ConfigParams := make(map[string]string)
ConfigParams["ID"] = cfg.Section("").Key("ID").String()
return ConfigParams
}
OSInfo := ReadOSRelease("/etc/os-release")
OSRelease := OSInfo["ID"]
fmt.Print(OSRelease)
答案 2 :(得分:0)