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

    浏览量

    12518
  • 编译
    +关注

    关注

    0

    文章

    688

    浏览量

    34945
  • RPM
    RPM
    +关注

    关注

    0

    文章

    45

    浏览量

    18103

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【道生物联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 830次阅读
    浴室镜<b class='flag-5'>也</b>能这么智能?自动除雾+时间显示,<b class='flag-5'>太</b>方便了!

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

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

    NB500原理图

    NB500原理图
    发表于 03-21 16:45 6次下载

    电子全新推出两款LDMOS放大器

    电子全新推出的 HTM9GO9S015P 和 H9G3438M15P 两款 LDMOS 放大器,分别覆盖 1.8 - 950 MHz 和 3.4 - 3.8 GHz 的频段,均提供 15W 的输出功率。
    的头像 发表于 03-19 17:11 971次阅读

    使用海尔曼通/HellermannTyton 3D CAD 模型进行快速高效的设计

    地找到所需的电缆管理解决方案,然后还能将下载的产品 CAD 模型直接导入到他们的设计中。目前海尔曼通的产品目录包括电缆扎带、固定件以及电缆保护产品。海尔曼通与 CADENAS 合作,为其数千种产品
    发表于 03-14 16:55

    三种赫兹波的产生方式

    本文简单介绍三种赫兹波的产生方式。 赫兹波(THz)是一种电磁波,在电磁波谱上位于红外与微波之间。赫兹光子能量在1-10 meV范围
    的头像 发表于 02-17 09:09 3501次阅读
    三种<b class='flag-5'>太</b>赫兹波的产生方式

    典范转移 EV全生态系商机 - The CAN SIC Transceiver Is Ready To Go.

    典范转移 EV全生态系商机 - The CAN SIC Transceiver Is Ready To Go.
    的头像 发表于 01-22 17:23 885次阅读
    典范转移 EV全生态系商机 - The CAN SIC Transceiver Is Ready To <b class='flag-5'>Go</b>.

    ANACONDA——关于发布数据应用程序的新简单方法

    与 Anaconda 的云笔记本服务无缝集成,为用户提供一种轻松共享笔记本结果的方式,并让其他人可以随意的访问它们。 下面我们来了解关于这项新功能的实际应用: 这项功能与 Panel 的多功能性相结合,将彻底改变您发布数据应用程序
    的头像 发表于 01-17 11:39 644次阅读
    ANACONDA——关于发布数据应用<b class='flag-5'>程序</b>的新<b class='flag-5'>简单</b>方法

    window 10系统生成的安装程序在win7上运行,我生成时配置win7,但是还是报需要win10以上配置系统

    window 10系统生成的安装程序在win7上运行,我生成时配置win7,但是还是报需要win10以上配置系统,怎么解决啊
    发表于 01-02 14:33

    电子2024年度精彩回顾

    2024年,华电子在多个领域实现技术突破和市场突破,不断为行业带来创新产品和解决方案。回顾过去的一年,华电子在产品开发、品牌推广、荣誉奖项、研发创新、龙驰建设等方面取得了显著成就,彰显
    的头像 发表于 01-02 14:17 1427次阅读

    添加一个制作rpm直接升级的参考方式

    zlib-develzlib-devel-1.2.7-18.el7.x86_64# rpm -qa|grep pam-develpam-devel-1.1.8-23.el7.x86_64 下载需要的高版本的openssh安装,记得要安装p1
    的头像 发表于 12-31 10:52 694次阅读