Centos6 使用fpm构建rpm包

FPM功能简单说就是将一种类型的包转换成另一种类型。

FPM的github:https://github.com/jordansiss...

1.支持的源类型包:

dir: 将目录打包成所需要的类型,可以用于源码编译安装的软件包
rpm: 对rpm进行转换
gem: 对rubygem包进行转换
python: 将Python模块打包成相应的类型

yum install -y gcc

yum -y install ruby rubygems ruby-devel rpm-build

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

gem sources --remove http://mirrors.aliyun.com/rubygems/

gem sources --remove https://rubygems.org/

#fpm 是 ruby写的,因此系统环境需要ruby,且版本必须大于1.8.5

2.查看当前ruby源:

root># gem sources -l
*** CURRENT SOURCES ***

http://mirrors.aliyun.com/rubygems/

3.安装FPM工具:

# 安装fpm,gem从rubygem仓库安装软件类似yum从yum仓库安装软件。首先安装低版本的json,高版本的json需要ruby2.0以上,然后安装低版本的fpm,够用。

gem install json -v 1.8.3

gem install fpm -v 1.3.3


gpg2 --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3

    curl -L get.rvm.io | bash -s stable
    
    source /etc/profile.d/rvm.sh
    
    rvm install 1.9.3

https://www.cnblogs.com/iosdev/p/3320671.html


# 上面的2步安装仅适合CentOS6系统,CentOS7系统直接使用gem install fpm一步搞定。

4.FPM常用参数:

-s:指定源类型
-t:指定目标类型,即想要制作为什么包
-n:指定包的名字
-v:指定包的版本号
-C:指定打包的相对路径
-d:指定依赖于哪些包
-f:第二次包时目录下如果有同名安装包存在,则覆盖它
-p:输出的安装包的目录,不想放在当前目录下就需要指定
--post-install:软件包安装完成之后所要运行的脚本;同--offer-install
--pre-install:软件包安装完成之前所要运行的脚本;同--before-install
--post-uninstall:软件包卸载完成之后所要运行的脚本;同--offer-remove
--pre-uninstall:软件包卸载完成之前所要运行的脚本;同—before-remove

5.定制nginx的RPM包实例

1、在打包机器上先安装一次nginx

yum -y install pcre-developenssl-devel

useradd nginx -M -s /sbin/nologin

tar xf nginx-1.8.0.tar.gz

cd nginx-1.8.0

./configure --user=nginx --group=nginx --prefix=/application/nginx-1.8.0 --with-http_ssl_module--with-http_stub_status_module

make && make install

ln -s /application/nginx-1.8.0/application/nginx

2、编写脚本

mkdir /server/scripts/ -p

cd /server/scripts/

软件包卸载前、卸载后的脚本,可以根据情况是否编写,不编写问题也不大。但是rpm安装后的脚本是必须的。

vim nginx_post_install.sh #编写一个rpm安装后需要执行的脚本

参考文档
http://blog.51cto.com/lee90/1...

你可能感兴趣的:(fpm,rpm)