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

    文章

    45

    浏览量

    12611
  • 编译
    +关注

    关注

    0

    文章

    696

    浏览量

    35275
  • RPM
    RPM
    +关注

    关注

    0

    文章

    45

    浏览量

    18196

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

    PCB别人地你地,但别人的隔离度比你好10dB不止

    表层走线在高频的串扰那么大的啊,都拉开15H的距离了,串扰居然只有20dB左右。不然你们以为呢?所以说表层的串扰很大,这下信了吧。因此大家才希望通过地哪怕降低个4-5dB其实也是很大的改善。我们
    发表于 04-13 11:21

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

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

    MAX31790:6通道PWM输出风扇RPM控制器的深度解析

    MAX31790:6通道PWM输出风扇RPM控制器的深度解析 在电子设备的散热系统中,风扇的精确控制至关重要。MAX31790作为一款6通道PWM输出风扇RPM控制器,为多风扇系统的控制和监测提供
    的头像 发表于 03-02 09:55 259次阅读

    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 1109次阅读

    KIT_XMC14_2GO开发板:功能特性与硬件解析

    KIT_XMC14_2GO开发板:功能特性与硬件解析 在电子开发领域,一款性能出色且功能丰富的开发板对于工程师来说至关重要。今天,我们就来详细探讨一下KIT_XMC14_2GO开发板,它配备英飞凌
    的头像 发表于 12-19 10:20 587次阅读

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

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

    诱TAC系列是哪种封装形式的电容?

    诱TAC系列并非电容产品,而是以陶瓷电容(尤其是MLCC)为主的产品线。其核心优势在于高温稳定性、小型化及高频性能,与钽电容的应用场景形成互补。以下是对诱TAC系列及电容相关信息的详细介绍: 一
    的头像 发表于 10-28 15:55 559次阅读
    <b class='flag-5'>太</b>诱TAC系列是哪种封装形式的电容?

    【道生物联TKB-623评估板试用】TKB-623评估板双机通讯测试_程序开发

    与电脑挺通信,可以连接到其他MCU设备进行通信。 为了方便后续的测试,我研究道生物联提供的文档,开发了一个通讯测试程序。 一、硬件连线 为了方便简单测试,我用了两个一样的USB2T
    发表于 10-18 23:54

    gitee不能用了,切换不到github,软件都无法使用,怎么解决?

    gitee不能用了,切换不到github,软件都无法使用了,这个要怎么解决呀
    发表于 10-09 08:41

    CFA科普系列01|EDA工具装不上?可能不是你技术差,而是少了这两个命令

    的 .exe 安装,内部包含了程序的二进制、说明信息、安装路径等元数据。RPM 安装后会被系统记录并可以通过命令进行管理。 2.2 RPM
    发表于 05-09 15:27

    用一套Linux系统,撑起整个芯片设计平台?CFA团队教你如何搭好EDA智算平台的技术底座

    系的“基础功” RPM(Redhat Package Manager)是最基础的软件包管理工具,它由Red Hat公司提出的一种软件包管理标准。 是Linux各发行版中应用最广泛的软件格式之一(还有
    发表于 05-07 14:44

    浴室镜能这么智能?自动除雾+时间显示,方便了!

    自动除雾+时间显示浴室镜能这么智能?方便了清晨起床,睡眼惺忪地走到浴室镜前,镜面却蒙着一层雾气;夜晚护肤,想要调暗灯光营造温馨氛围,却找不到开关;匆忙出门,总想随时知道时间和温度……这些生活中
    的头像 发表于 04-30 18:33 1308次阅读
    浴室镜<b class='flag-5'>也</b>能这么智能?自动除雾+时间显示,<b class='flag-5'>太</b>方便了!

    电子亮相2025慕尼黑上海电子展

    为期三天的 2025 慕尼黑上海电子展(electronica China 2025)圆满落幕,作为电子行业的重要年度盛会,吸引众多全球知名电子企业与专业观众齐聚一堂。华电子携最新技术成果精彩
    的头像 发表于 04-24 15:21 2676次阅读
    华<b class='flag-5'>太</b>电子亮相2025慕尼黑上海电子展