说明:此文章为腾讯云机器自动从本人csdn博客搬迁过来。是本人授权操作。
申明:无本人授权,不可转载本文。如有转载,本人保留追究其法律责任的权利。
龚浩华,QQ 29185807,月牙寂 道长
第一时间获取文章,可以关注本人公众号 月牙寂道长 yueyajidaozhang
以前都是测试来做rpm打包的。现在自己写的程序需要自己做打包。 用rpmbuild做了打包,但总感觉很不方便。
于是便找到了fpm工具。下面总结下fpm工具的使用
首次安装
yum -y install ruby rubygems ruby-devel
添加淘宝sources
gem sources -a https://ruby.taobao.org/
移除国外sources
gem sources--remove http://rubygems.org/
安装fpm
gem install fpm -v 1.4.0
-s:指定源类型
-t:指定目标类型,即想要制作为什么包
-n:指定包的名字
-v:指定包的版本号
-C:指定打包的相对路径
-d:指定依赖于哪些包
-f:第二次包时目录下如果有同名安装包存在,则覆盖它
-p:输出的安装包的目录,不想放在当前目录下就需要指定
–post-install:软件包安装完成之后所要运行的脚本;同–offer-install
–pre-install:软件包安装完成之前所要运行的脚本;同–before-install
–post-uninstall:软件包卸载完成之后所要运行的脚本;同–offer-remove
–pre-uninstall:软件包卸载完成之前所要运行的脚本;同—before-remove
支持的源类型包:
dir: 将目录打包成所需要的类型,可以用于源码编译安装的软件包 rpm: 对rpm进行转换 gem: 对rubygem包进行转换 python: 将Python模块打包成相应的类型 支持的目标类型包:
rpm: 转换为rpm包 deb: 转换为deb包 solaris: 转换为solaris包 puppet: 转换为puppet包
以我自己的一个小工具为例子
tmp
├── etc
│ └── supervisor
│ └── conf.d
│
└── home
└── gonghh
└── log
go build hot
tmp
├── etc
│ └── supervisor
│ └── conf.d
│ └── hot.supervisor.conf
└── home
└── gonghh
├── hot
├── hot.conf
├── hot.supervisor.conf
└── log
fpm -s dir -t rpm -n hot -v 1.0.2 -C tmp -f
便生成了hot-1.0.2-1.x86_64.rpm
rpm -qpl hot-1.0.2-1.x86_64.rpm
/etc/supervisor/conf.d/hot.supervisor.conf
/home/gonghh/hot.conf
/home/gonghh/hot
/home/gonghh/hot.supervisor.conf
/home/gonghh/log
rpm -i hot-1.0.2-1.x86_64.rpm
查看安装信息
rpm -qi hot
Name : hot Relocations: /
Version : 1.0.2 Vendor: ***********
Release : 1 Build Date: Tue 29 Nov 2016 06:26:58 PM CST
Install Date: Tue 29 Nov 2016 06:34:38 PM CST Build Host: *********
Group : default Source RPM: hot-1.0.2-1.src.rpm
Size : 1507 License: unknown
Signature : (none)
Packager : ******************
URL : ****************
Summary : no description given
Description :
no description given
查看安装目录
/home/gonghh/
├── hot.conf
├── hot
├── hot.supervisor.conf
└── log
/etc/supervisor/conf.d/
├── hot.supervisor.conf
rpm -e hot
查看卸载后的安装目录
/home/gonghh/
0 directories, 0 files
ll /etc/supervisor/conf.d/hot.supervisor.conf
ls: cannot access /etc/supervisor/conf.d/hot.supervisor.conf: No such file or directory