我想编写独立于 Linux 发行版的 Golang 代码。我需要检测哪个 linux 发行版并需要在程序中运行特定于发行版的命令。就像 dpkg 在 Ubuntu 的情况下和 rpm -q 在 RHEL 的情况下一样。
问问题
3008 次
3 回答
2
如果你想使用 Go 模块,可以使用Sysinfo。
它收集所有系统信息(没有任何依赖关系)并为您提供 JSON,其中包括您正在寻找的内容。这是该数据的片段:
"os": {
"name": "CentOS Linux 7 (Core)",
"vendor": "centos",
"version": "7",
"release": "7.2.1511",
"architecture": "amd64"
},
于 2020-12-08T22:02:41.830 回答
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)
于 2020-11-22T21:48:58.923 回答