如何在GOlang程序中检测linux分发?
我想写linux发行版独立的Golang代码。我需要检测哪个linux发行版,并需要在程序中运行特定于发行版的命令。就像Ubuntu的dpkg和RHEL的rpm-q一样 您可以使用运行如何在GOlang程序中检测linux分发?,linux,ubuntu,go,rhel,oracle-osm,Linux,Ubuntu,Go,Rhel,Oracle Osm,我想写linux发行版独立的Golang代码。我需要检测哪个linux发行版,并需要在程序中运行特定于发行版的命令。就像Ubuntu的dpkg和RHEL的rpm-q一样 您可以使用运行lsb_release-a或uname-a并解析输出以找出分布 您可以使用运行lsb_release-a或uname-a并解析输出以找出分布 系统上可能安装或不安装包含可执行文件的包lsb\u release 您可以使用文件/etc/os-release,该文件可以通过库go-ini轻松解析。见示例: 导入( “f
lsb_release-a
或uname-a
并解析输出以找出分布
您可以使用运行lsb_release-a
或uname-a
并解析输出以找出分布
系统上可能安装或不安装包含可执行文件的包
lsb\u release
您可以使用文件/etc/os-release
,该文件可以通过库go-ini轻松解析。见示例:
导入(
“fmt”
“github.com/go ini/ini”
)
func ReadOSRelease(configfile string)映射[string]字符串{
cfg,err:=ini.Load(配置文件)
如果错误!=零{
log.Fatal(“读取文件失败:”,错误)
}
ConfigParams:=make(映射[字符串]字符串)
ConfigParams[“ID”]=cfg.Section(“”.Key(“ID”).String()
返回配置参数
}
OSInfo:=ReadOSRelease(“/etc/os release”)
OSRelease:=OSInfo[“ID”]
格式打印(OSRelease)
系统上可能安装也可能不安装包含可执行文件lsb\U版本的软件包
您可以使用文件/etc/os-release
,该文件可以通过库go-ini轻松解析。见示例:
导入(
“fmt”
“github.com/go ini/ini”
)
func ReadOSRelease(configfile string)映射[string]字符串{
cfg,err:=ini.Load(配置文件)
如果错误!=零{
log.Fatal(“读取文件失败:”,错误)
}
ConfigParams:=make(映射[字符串]字符串)
ConfigParams[“ID”]=cfg.Section(“”.Key(“ID”).String()
返回配置参数
}
OSInfo:=ReadOSRelease(“/etc/os release”)
OSRelease:=OSInfo[“ID”]
格式打印(OSRelease)
如果您想使用围棋模块,有以下几种方法
它收集所有系统信息(没有任何依赖项),并为您提供JSON,其中包括您正在寻找的内容。以下是该数据的一个片段:
"os": {
"name": "CentOS Linux 7 (Core)",
"vendor": "centos",
"version": "7",
"release": "7.2.1511",
"architecture": "amd64"
},
如果你想使用围棋模块,这里有
它收集所有系统信息(没有任何依赖项),并为您提供JSON,其中包括您正在寻找的内容。以下是该数据的一个片段:
"os": {
"name": "CentOS Linux 7 (Core)",
"vendor": "centos",
"version": "7",
"release": "7.2.1511",
"architecture": "amd64"
},
lsb_发布即可。谢谢实际上,我在看是否有go特定的功能。go二进制文件是以GOARCH
和GOOS
作为输入构建的。没有其他关于它运行的发行版的信息。谢谢,我最终使用了lsb_发行版。lsb_发行版并不总是安装lsb_发行版就可以了。谢谢实际上,我在看是否有go特定的功能。go二进制文件是以GOARCH
和GOOS
作为输入构建的。没有其他关于它运行的发行版的信息。谢谢,我最终使用了lsb_发行版。lsb_发行版并不总是安装的