本文介绍: 如果使用 rpmbuild 打包,需要你编写很多配置文件,非常繁琐,一个简单的 rpm 包可能就只是执行一个二进制文件而已,完全没必要花费大量的时间去系统学习它们,于是乎,有人就编写了一个开源工具 go–bin–rpm,用它可以很方便的将二进制文件打包成 rpm 包;(2)go–bin-rpm 安装,项目地址:https://github.com/mh–cbon/go–bin-rpm。(2)go–bin-rpm 的配置文件是 rpm.json。4、一切准备完毕,开始编译。(3)我打算把这个服务用。
Go 程序打成 rpm 包( go–bin-rpm 将二进制文件打包成 rpm 包)
如果使用 rpmbuild 打包,需要你编写很多配置文件,非常繁琐,一个简单的 rpm 包可能就只是执行一个二进制文件而已,完全没必要花费大量的时间去系统学习它们,于是乎,有人就编写了一个开源工具 go–bin-rpm,用它可以很方便的将二进制文件打包成 rpm 包;
yum install -y gcc make rpm-build redhat-rpm-config
(2)go–bin-rpm 安装,项目地址:https://github.com/mh–cbon/go–bin-rpm
安装libffi:
$ yum install libffi-devel gettext-devel pkg-config
安装zlib:
$ yum install -y zlib zlib-devel
curl -L https://raw.githubusercontent.com/mh-cbon/latest/master/install.sh
| GH=mh-cbon/go-bin-rpm sh -xe
$ go-bin-rpm --version
go-bin-rpm version 1.0.0
(1)go 编译的二进制文件为:BSMonitorClientGo
- “name”: “bsmonitorclientgo” 服务名(可以使用
rpm -e bsmonitorclientgo
直接卸载它)- “arch”: “amd64” 内核:x86_64,也可以用其他内核
- files 要拷贝到
rpm
包中的文件,from
to
把 BSMonitorClientGo 文件拷贝到 /usr/local/bin/ 下面- “postinst”: “systemctl daemon–reload” 安装完要执行的脚本内容
- “summary”: “monitoring client” 下面描述项精简出的摘要
- “description”: “Server health status monitoring client”, 对这个服务的描述
{
"name": "bsmonitorclientgo",
"version": "1.0.1",
"release": "20230316",
"arch": "amd64",
"summary": "monitoring client",
"description": "Server health status monitoring client",
"license": "sunkaiyuan.com",
"url": "http://sunkaiyuan.com",
"postinst": "systemctl daemon-reload",
"files": [
{
"from": "BSMonitorClientGo",
"to": "/usr/local/bin/",
"base": "",
"type": ""
},
{
"from": "!name!.service",
"to": "/usr/lib/systemd/system/",
"base": "",
"type": ""
},
{
"from": "config.yaml",
"to": "/etc/BSMonitorClient/",
"base": "",
"type": ""
}
]
}
bsmonitorclientgo.service 文件内容如下:
[Unit]
Description=bsmonitorclientgo
After=network.target
[Service]
Environment=
User=root
Group=root
PermissionsStartOnly=true
ExecStart=/usr/local/bin/BSMonitorClientGo default
Restart=always
LimitNOFILE=65535
WorkingDirectory=/
[Install]
WantedBy=multi-user.target
将 go编译的二进制文件BSMonitorClientGo,go-bin-rpm的配置文件是 rpm.json,bsmonitorclientgo.service文件,放在同一目录下:
BSMonitor
|____BSMonitorClientGo
|____rpm.json
|____bsmonitorclientgo.service
|____config.yaml ----------- golang 配置参数文件
开始编译:
$ go-bin-rpm generate -f rpm.json -o ./rpms/name-version-release.Linux版本.内核架构.rpm
$ go-bin-rpm generate -f rpm.json -o ./rpms/bsmonitorclientgo-1.0.0-20230316.el7.x86_64.rpm
name 服务名 bsmonitorclientgo
version 版本号 1.0.0
release release号 20230316
Linux版本 x86_64 架构 el7
内核架构 Linux 7 (el7) x86_64
编译生成:bsmgo-1.0.0-20230316.el7.x86_64.rpm
安装服务:rpm -ivh bsmonitorclientgo-1.0.0-20230316.el7.x86_64.rpm
运行服务:systemctl start bsmonitorclientgo
卸载服务:rpm -e bsmonitorclientgo
systemctl status bsmonitorclientgo
journalctl -u bsmonitorclientgo 可以查找到指定服务的启动日志
systemctl start bsmonitorclientgo
systemctl stop bsmonitorclientgo
systemctl restart bsmonitorclientgo
5、成功!
原文地址:https://blog.csdn.net/qq_33867131/article/details/129561163
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_34678.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。