使用FPM打包工具打rpm包

时间:2021-07-21 18:37:04

一:安装ruby环境和gem命令: fpm 是 ruby写的,因此系统环境需要ruby且版本必须大于1.8.5

  # yum -y install ruby rubygems ruby-devel

查看当前ruby源  

  # gem source -l  

添加国内源

  # gem sources -a http://mirrors.aliyun.com/rubygems/

删除国外源

  # gem sources --remove --remove http://rubygems.org/

安装fpm 可能要失败

  # gem install fpm

我这里解决方法安装旧版本的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


本文出自 “centos6 运维学习” 博客,谢绝转载!