Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在GOlang程序中检测linux分发?_Linux_Ubuntu_Go_Rhel_Oracle Osm - Fatal编程技术网

如何在GOlang程序中检测linux分发?

如何在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

我想写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轻松解析。见示例:

导入(
“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_发行版并不总是安装的