Go 程序打成 rpm 包( go-bin-rpm 将二进制文件打包成 rpm 包)
创始人
2025-05-28 09:51:15

Go 程序打成 rpm 包( go-bin-rpm 将二进制文件打包成 rpm 包)

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

1、环境准备

(1)rpmbuild 的相关依赖安装

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

(2)go-bin-rpm 安装,项目地址:https://github.com/mh-cbon/go-bin-rpm

wget -O - https://raw.githubusercontent.com/mh-cbon/latest/master/bintray.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”: “bsmgo” 服务名(可以使用rpm -e bsmgo直接卸载它)
  • “arch”: “amd64” 内核:x86_64,也可以用其他内核
  • files 要拷贝到rpm包中的文件,from to 把 BSMonitorClientGo 文件拷贝到 /usr/local/bin/ 下面
  • “postinst”: “systemctl daemon-reload” 安装完要执行的脚本内容
{"name": "bsmgo","version": "1.0.1","release": "20230316","arch": "amd64","summary": "","description": "","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/bsmgo/","base": "","type": ""}]
}

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

  • 上面已经写了拷贝后的路径/usr/lib/systemd/system/
  • !name!.service # !name! 相当于变量,会取前面 rpm 包名称 bsmgo(bsmgo.service)

bsmgo.service 文件内容如下:

[Unit]
Description=bsmgo
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,bsmgo.service文件,放在同一目录下:

BSMonitor|____BSMonitorClientGo|____rpm.json|____bsmgo.service|____config.yaml

开始编译:

$ go-bin-rpm generate -f rpm.json -o ./rpms/name-version-release.Linux版本.内核架构.rpm
$ go-bin-rpm generate -f rpm.json -o ./rpms/bsmgo-1.0.1-20230316.el7.x86_64.rpm

对应替换

name		服务名
version		版本号
Linux版本    x86_64 架构
内核架构	 Linux 7 (el7) 

5、成功!

相关内容

热门资讯

地道的美景美食 这些年的足迹遍布上百座城市,在不断的游走中,愈发深刻地感觉到,真正称得上旅游美景的并非存在于门票闸机...
芜湖这座公园,景观又上新! 农历新年临近,繁昌人字洞考古遗址公园建设又有新进展,历时近一年的公园环境景观二期工程已于近日完工,建...
解读一下济宁购物指南大全 # 济宁购物指南大全:探索鲁南购物天堂 济宁作为山东省的重要城市,不仅拥有深厚的文化底蕴,更是一个充...
陇川县旅游攻略3天行程推荐 陇川县位于云南省德宏州,这里有着独特的民族风情、秀丽的自然景观和丰富的美食文化。以下这份3天的陇川旅...
阜宁县旅游攻略3天行程推荐 阜宁县,这座充满魅力的苏北小城,拥有着丰富的历史文化和自然景观。如果你计划用3天时间来阜宁游玩,那么...