# 1. 環(huán)境準(zhǔn)備
首先是 rpmbuild 的相關(guān)依賴,無(wú)論是什么語(yǔ)言寫的程序,只要是打包成 rpm 包,就都需要這些
yuminstall-ygccmakerpm-buildredhat-rpm-config
rpmbuild 的使用,需要你寫不少的配置,非常繁瑣,有研究過(guò)的人自然知道其中的淚。
但大多數(shù)情況下,一個(gè)簡(jiǎn)單的 rpm 包可能就只是執(zhí)行一個(gè)二進(jìn)制文件而已,完全沒(méi)有去花費(fèi)大量的時(shí)間去系統(tǒng)學(xué)習(xí)它們。
于是乎,有人就編寫了一個(gè)開源工具 go-bin-rpm,用它可以很方便的將二進(jìn)制文件打包成 rpm 包。
go-bin-rpm 的作者提供了多種安裝方式
個(gè)人認(rèn)為比較方便的是下面這條命令
wget-O-https://raw.githubusercontent.com/mh-cbon/latest/master/bintray.sh
|GH=mh-cbon/go-bin-rpmsh-xe
執(zhí)行完成后,可以使用 --version 命令查看是否安裝成功
$go-bin-rpm--version
go-bin-rpmversion1.0.0
# 2. 配置文件
go-bin-rpm 的配置文件是 rpm.json ,當(dāng)然你也可以用其他文件名,我這里直接使用默認(rèn)的,這樣后面打包時(shí)就不用指定配置文件的名字。
rpm.json 的內(nèi)容相當(dāng)精簡(jiǎn),且直觀易懂,模板如下
{
"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!相當(dāng)于變量,會(huì)取前面rpm包名稱
"files":[
{
"from":"./bin/!name!",
"to":"/usr/local/!name!/",
"base":"",
"type":""
},
{
"from":"./!name!.service",
"to":"/usr/lib/systemd/system/",
"base":"",
"type":""
}
]
}
如果你的 rpm 安裝后是以 service 運(yùn)行的,那 files 要包含如下幾項(xiàng)內(nèi)容:
-
二進(jìn)制文件
-
service 文件
-
配置文件(如果需要的話)
其中 service 文件的模板,這邊也給出來(lái)
[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
一切準(zhǔn)備好了,就可以使用如下命令
#VERSION和RELEASE請(qǐng)對(duì)應(yīng)替換
go-bin-rpmgenerate-orpms/xxxx-$(VERSION)-$(RELEASE).rpm
如果在不同的平臺(tái)或系統(tǒng)有不同的二進(jìn)制,則可以準(zhǔn)備多個(gè) rpm.json,然后在打包時(shí),使用 -f rpm.json 來(lái)指定配置文件。
# 3. 使用 Makefile
go-bin-rpm 的命令還是比較長(zhǎng),我習(xí)慣寫一個(gè) Makefile 來(lái)方便編譯
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 就可以直接一步實(shí)現(xiàn) 編譯 + 打包 ,使用上更加順手。
-
Go
+關(guān)注
關(guān)注
0文章
45瀏覽量
12620 -
編譯
+關(guān)注
關(guān)注
0文章
696瀏覽量
35296 -
RPM
+關(guān)注
關(guān)注
0文章
45瀏覽量
18203
原文標(biāo)題:Go 程序打成 rpm 包,也太簡(jiǎn)單了
文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
強(qiáng)場(chǎng)太赫茲產(chǎn)生及其前沿應(yīng)用綜述
PCB別人包地你包地,但別人的隔離度比你好10dB不止
深入解析SMSC EMC2102:RPM風(fēng)扇控制器的卓越之選
MAX31790:6通道PWM輸出風(fēng)扇RPM控制器的深度解析
如何使用wireshark進(jìn)行遠(yuǎn)程抓包
linux-arm開發(fā)環(huán)境的簡(jiǎn)單配置
低成本TLI4971/TLE4971電流傳感器評(píng)估套件——MS2Go與S2Go
KIT_XMC14_2GO開發(fā)板:功能特性與硬件解析
探索TLE493D-P3XX-MS2GO 3D 2Go套件:開啟3D磁傳感器評(píng)估之旅
太誘TAC系列是哪種封裝形式的電容?
Go程序打成rpm包,也太簡(jiǎn)單了
評(píng)論