一:安装ruby环境和gem命令: fpm 是 ruby写的,所以系统环境须要ruby且版本必须大于1.8.5python
# yum -y install ruby rubygems ruby-develgit
查看当前ruby源 ruby
# gem source -l bash
添加国内源app
# gem sources -a http://mirrors.aliyun.com/rubygems/ide
删除国外源post
# gem sources --remove --remove http://rubygems.org/spa
安装fpm 可能要失败orm
# gem install fpmip
我这里解决方法安装旧版本的fpm
# gem install fpm -v 1.4.0
# gem -v
二:打包 以git-2.9.4.tar.gz打包为例子:
第1步:将git编译安装到:/tmp/installdir/Data/apps/git下
# tar xf git-2.9.4.tar.gz # cd git-2.9.4
# make prefix=/tmp/installdir/Data/apps/git all
# make prefix=/tmp/installdir/Data/apps/git install
/tmp/installdir/为fpm打包时指定的相对路径,rpm安装时会自动去掉这个目录,git会直接安装到生产环境的/Data/apps/git下,因此要保障这个/tmp/installdir 目录的纯净。
第2步:创建rpm安装后须要执行脚本 在/tmp/installtarget/install_after.sh #rpm安装后执行脚本
#!/bin/bash
/bin/cp -a /usr/bin/git /usr/bin/git.1.7.1 2> /dev/null
/bin/rm -f /usr/bin/git
/bin/ln -s /Data/apps/git/bin/git /usr/bin/git
exit 0
第3步:创建rpm卸载后须要的执行的脚本 在/tmp/installtarget/remove_after.sh
#!/bin/bash
unlink /usr/bin/git
/bin/mv /usr/bin/git.1.7.1 /usr/bin/git 2> /dev/null
/bin/rm -rf /Data/apps/git
exit 0
第4步打包
fpm -s dir -t rpm -n hdf-git-client -v 2.9.4 -C /tmp/installdir/ --description 'git for haodf.com' --post-install /tmp/installtarget/install_after.sh --post-uninstall /tmp/installtarget/remove_after.sh -p /root/
FPM:经常使用参数说明
-s:指定源类型:
dir: 将目录打包成所须要的类型,能够用于源码编译安装的软件包
rpm: 对rpm进行转换
gem: 对rubygem包进行转换
python: 将Python模块打包成相应的类型
-t:指定目标类型,即想要制做为何包
-n:指定包的名字 -v:指定包的版本号
-C:指定打包的相对路径
-d:指定依赖于哪些包,格式为-d 'name'
-f:第二次包时目录下若是有同名安装包存在,则覆盖它
-p:输出的安装包的目录,不想放在当前目录下就须要指定
--post-install:软件包安装完成以后所要运行的脚本;同--offer-install
--pre-install:软件包安装完成以前所要运行的脚本; 同--before-install
--post-uninstall:软件包卸载完成以后所要运行的脚本;同--offer-remove
--pre-uninstall:软件包卸载完成以前所要运行的脚本; 同—before-remove