0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Go程序打成rpm包,也太简单了

马哥Linux运维 来源:go语言中文网 2023-01-05 11:32 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

# 1. 环境准备

首先是 rpmbuild 的相关依赖,无论是什么语言写的程序,只要是打包成 rpm 包,就都需要这些

yuminstall-ygccmakerpm-buildredhat-rpm-config

rpmbuild 的使用,需要你写不少的配置,非常繁琐,有研究过的人自然知道其中的泪。

但大多数情况下,一个简单的 rpm 包可能就只是执行一个二进制文件而已,完全没有去花费大量的时间去系统学习它们。

于是乎,有人就编写了一个开源工具 go-bin-rpm,用它可以很方便的将二进制文件打包成 rpm 包。

go-bin-rpm 的作者提供了多种安装方式

个人认为比较方便的是下面这条命令

wget-O-https://raw.githubusercontent.com/mh-cbon/latest/master/bintray.sh
|GH=mh-cbon/go-bin-rpmsh-xe

执行完成后,可以使用 --version 命令查看是否安装成功

$go-bin-rpm--version
go-bin-rpmversion1.0.0

# 2. 配置文件

go-bin-rpm 的配置文件是 rpm.json ,当然你也可以用其他文件名,我这里直接使用默认的,这样后面打包时就不用指定配置文件的名字。

rpm.json 的内容相当精简,且直观易懂,模板如下

{
"name":"you-service-name",#rpm包名称
"version":"0.0.1",
"release":"20221110",
"arch":"x86_64",
"summary":"",
"description":"",
"license":"iswbm.com",
"url":"https://gtihub.com/iswbm/!name!",#!name!相当于变量,会取前面rpm包名称
"files":[
{
"from":"./bin/!name!",
"to":"/usr/local/!name!/",
"base":"",
"type":""
},
{
"from":"./!name!.service",
"to":"/usr/lib/systemd/system/",
"base":"",
"type":""
}
]
}

如果你的 rpm 安装后是以 service 运行的,那 files 要包含如下几项内容:

  1. 二进制文件

  2. service 文件

  3. 配置文件(如果需要的话)

其中 service 文件的模板,这边也给出来

[Unit]
Description=
After=syslog.targetnetwork.target

[Service]
Environment=key=value
Type=simple
NotifyAccess=all
TimeoutStartSec=0
Restart=always
User=root
ExecStart=/usr/local/xxxx/bin/xxxx

[Install]
WantedBy=multi-user.target

一切准备好了,就可以使用如下命令

#VERSION和RELEASE请对应替换
go-bin-rpmgenerate-orpms/xxxx-$(VERSION)-$(RELEASE).rpm

如果在不同的平台或系统有不同的二进制,则可以准备多个 rpm.json,然后在打包时,使用 -f rpm.json 来指定配置文件。

# 3. 使用 Makefile

go-bin-rpm 的命令还是比较长,我习惯写一个 Makefile 来方便编译

VERSION=1.0.0
RELEASE=$(shelldate+"%Y%m%d")

.PHONY:build-go
build-go:
gobuild-o./bin/hello.

.PHONY:build
build:build-go
sed-i"s/VERSION/$(VERSION)/g"rpm.json
sed-i"s/RELEASE/$(RELEASE)/g"rpm.json
mkdir-prpms
go-bin-rpmgenerate-orpms/hellp-$(VERSION)-$(RELEASE).rpm

后面只要使用 make build 就可以直接一步实现 编译 + 打包 ,使用上更加顺手。

审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Go
    Go
    +关注

    关注

    0

    文章

    47

    浏览量

    12648
  • 编译
    +关注

    关注

    0

    文章

    699

    浏览量

    35416
  • RPM
    RPM
    +关注

    关注

    0

    文章

    45

    浏览量

    18226

原文标题:Go 程序打成 rpm 包,也太简单了

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Go-No Go AC Current Sensing Relay(CSR):高效电流监测解决方案

    Go-No Go AC Current Sensing Relay(CSR):高效电流监测解决方案 在电子工程领域,对于交流电流的精确监测和控制至关重要。今天要介绍的 Go-No Go
    的头像 发表于 06-09 14:05 72次阅读

    MAX31790评估套件:高效评估6通道PWM输出风扇RPM控制器

    MAX31790评估套件:高效评估6通道PWM输出风扇RPM控制器 在电子设备设计中,风扇转速控制对于设备的散热和稳定性至关重要。MAX31790作为一款6通道PWM输出风扇RPM控制器,为电子
    的头像 发表于 05-31 14:20 87次阅读

    课优-Go实战训练营1期|2023年#(搜keyouit-xyz)

    Go
    jf_31593173
    发布于 :2026年05月30日 17:44:24

    极客时间go技术专家进阶营 (讠果xingkeit-top)#go #技术专家

    Go
    jf_98563832
    发布于 :2026年05月28日 18:35:51

    Go实战训练营1期|2023年#(搜keyouit-xyz)

    Go
    jf_31593173
    发布于 :2026年05月28日 18:26:39

    Go技术专家进阶营 从代码开发到架构设计#(搜keyouit-xyz)

    Go
    jf_31593173
    发布于 :2026年05月28日 18:25:54

    Go-极客时间-Go实战训练营1期[完结](学:97it-top)#极客时间

    Go
    jf_33470487
    发布于 :2026年05月28日 11:23:00

    Go技术专家进阶营(学:97it-top)#Go技术

    Go
    jf_33470487
    发布于 :2026年05月28日 11:21:29

    iMOTION2go:开启iMOTION设计平台的入门之选

    设计平台打造的入门套件,能帮助工程师快速上手iMOTION生态系统。 文件下载: EVALIMOTION2GOTOBO1.pdf 一、文档概述 这份应用笔记主要介绍iMOTION2go评估板,涵盖
    的头像 发表于 05-18 11:05 410次阅读

    强场赫兹产生及其前沿应用综述

    基于上述强场赫兹源的发展,该综述系统评述其在多个科学前沿的变革性应用 近期,中科院上海光机所宋立伟研究员等在美国物理联合会旗舰期刊《Applied Physics Reviews》发表题为《强场
    的头像 发表于 04-14 07:40 182次阅读
    强场<b class='flag-5'>太</b>赫兹产生及其前沿应用综述

    深入解析SMSC EMC2102:RPM风扇控制器的卓越之选

    深入解析SMSC EMC2102:RPM 风扇控制器的卓越之选 在电子设备的设计中,散热管理至关重要,它直接影响着设备的性能和稳定性。SMSC EMC2102作为一款基于RPM的风扇控制器,凭借其
    的头像 发表于 04-07 10:30 193次阅读

    linux-arm开发环境的简单配置

    linux-arm开发环境简单配置 关于linux-arm开发环境简单配置是ARM学习的第一步,很多初学者会在这问题上纠结很久都不能配置好开发环境。推荐大家看一下韦东山视频,讲得很详细,代码基本上
    发表于 01-13 07:56

    低成本TLI4971/TLE4971电流传感器评估套件——MS2Go与S2Go

    )的TLI4971/TLE4971电流传感器MS2Go和S2Go评估套件,这两款套件为我们提供一种低成本、高效的方式来快速评估TLI4971/TLE4971电流传感器。 文件下载: Infineon
    的头像 发表于 12-19 16:50 1372次阅读

    探索TLE493D-P3XX-MS2GO 3D 2Go套件:开启3D磁传感器评估之旅

    )的TLE493D-P3XX-MS2GO 3D 2Go套件为我们提供一个便捷、高效的解决方案。今天,我们就来深入了解一下这个套件,看看它能为我们带来哪些便利和惊喜。 文件下载: Infineon
    的头像 发表于 12-18 17:15 1538次阅读