使用nfpm制作rpm包,下面是做包使用到的关键文件。
.
|-- makefile
|-- nfpm.yaml
`-- scripts
|-- postinstall.sh
|-- postremove.sh
|-- preinstall.sh
`-- preremove.sh
preinstall:在npm install命令前执行
install,postinstall:在npm install命令后执行
preuninstall,uninstall:在npm uninstall命令前执行
postuninstall:在npm uninstall命令后执行
1>makefile 指定rpm包名称,设置打包操作
2>nfpm.yaml 指定rpm包安装阶段执行的解包、以及设置哪些文件需要拷贝
overrides:
rpm:
scripts:
preinstall: ./scripts/preinstall.sh
postinstall: ./scripts/postinstall.sh
preremove: ./scripts/preremove.sh
postremove: ./scripts/postremove.sh
nfpm.yaml文件内容参考:
contents里src填的是要拷贝的文件相对于nfpm.yaml文件的路径。dst填安装后,将文件/文件夹拷贝到设备上的哪个路径。contents里面就是填要拷贝的文件和文件夹。
name: "test"
arch: "amd64"
platform: "linux"
version: "v1.1.2"
section: "default"
priority: "extra"
maintainer: "py group"
description: |
test
vendor: "py group"
homepage: "http://"
license: "MIT"
contents:
- src: ./boydeploy/test
dst: /usr/bin/testoverrides:
rpm:
scripts:
preinstall: ./scripts/preinstall.sh
postinstall: ./scripts/postinstall.sh
preremove: ./scripts/preremove.sh
postremove: ./scripts/postremove.sh
makefile文件参考
VERSION = v1.1.2
DATETIME = $(shell date '+%Y%m%d%H%M%S')rpm:
@echo "package begin"
@rm -rf ./*.rpm
@sed -i "s/version: \"v[0-9]\{1,5\}\.[0-9]\{1,5\}\.[0-9]\{1,5\}\"/version: \"$(VERSION)\"/g" nfpm.yaml
@nfpm package -p rpm -t test_$(VERSION)_$(DATETIME).rpm
@echo "package end"