本文介绍: 如果使用 rpmbuild 打包需要编写很多配置文件,非常繁琐,一个简单rpm可能就只是执行一个二进制文件而已,完全没必要花费大量的时间系统学习它们,于是乎,有人就编写了一个开源工具 gobinrpm,用它可以很方便的将二进制文件打包rpm 包;(2)gobin-rpm 安装项目地址https://github.com/mhcbon/gobin-rpm。(2)gobin-rpm配置文件是 rpm.json。4、一切准备完毕,开始编译。(3)我打算把这个服务用。

Go 程序打成 rpm 包( gobin-rpm二进制文件打包成 rpm 包)

如果使用 rpmbuild 打包需要编写很多配置文件,非常繁琐,一个简单的 rpm 包可能就只是执行一个二进制文件而已,完全没必要花费大量的时间系统学习它们,于是乎,有人就编写了一个开源工具 gobin-rpm,用它可以很方便的将二进制文件打包成 rpm 包;

1、环境准备

(1)rpmbuild相关依赖安装

yum install -y gcc make rpm-build redhat-rpm-config

(2)gobin-rpm 安装项目地址https://github.com/mhcbon/gobin-rpm

基础软件包安装

安装libffi:
$ yum install libffi-devel gettext-devel pkg-config
安装zlib:
$ yum install -y zlib zlib-devel

安装 gobin-rpm

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

2、配置文件编写

(1)go 编译二进制文件为:BSMonitorClientGo

(2)go-bin-rpm 的配置文件是 rpm.json

{
  "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": ""
    }
  ]
}

(3)我打算把这个服务systemctl托管起来

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

4、一切准备完毕,开始编译

将 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进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注