rpm 包构建工具
nfpm 是借鉴fpm使用golang实现的对deb,
rpm,
apk 打包的工具
安装nfpm
wget https://github.com/goreleaser/nfpm/releases/download/v2.41.3/nfpm_2.41.3_Linux_x86_64.tar.gz
tar xf nfpm_2.41.3_Linux_x86_64.tar.gz -C /usr/local/bin
书写打包需要的配置文件
.目录结构
├── nfpm.yaml # nfpm 配置文件
├── node_exporter # node_exporter 可执行文件
├── node_exporter.service # node_exporter通过systemd管理的配置文件
└── scripts
└── postinstall.sh # 安装后需要执行的文件
mkdir -p demo/scripts
tee demo/nfpm.yaml <<'EOF'
name: "node_exporter" # 包名称 (必需)
version: "1.6.1" # 版本号 (必需)
arch: "amd64" # 架构 (amd64/arm64/386等)
platform: "linux" # 目标平台 (linux/darwin/windows等)
# 元信息
description: "node_exporter application"
maintainer: "1209233066@qq.com"
vendor: "prometheus"
homepage: "http://prometheus.io"
license: "MIT"
# 文件映射 (必需)
contents:
- src: node_exporter # 打包构建时的本地文件
dst: /usr/bin/node_exporter # 安装后生成的文件位置
- src: node_exporter.service
dst: /usr/lib/systemd/system/node_exporter.service
scripts:
postinstall: "scripts/postinstall.sh" # 安装后执行的脚本
EOF
tee demo/scripts/postinstall.sh <<'EOF'
#!/bin/bash
systemctl daemon-reload
systemctl enable node_exporter --now
systemctl status node_exporter
EOF
打包rpm包
nfpm pkg --packager rpm --config nfpm.yaml
安装rpm包
[root@pcloud-hwgz-prod-0001 test]# rpm -ivh node_exporter-1.6.1-1.x86_64.rpm
Preparing... ################################# [100%]
Updating / installing...
1:node_exporter-1.6.1-1 ################################# [100%]