用fpm定制rpm安装包

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用fpm定制rpm安装包相关的知识,希望对你有一定的参考价值。

参考http://blog.oldboyedu.com/autodeploy-rpm/


FPM打包工具

FPM的github:https://github.com/jordansissel/fpm 

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

1. 支持的源类型包

dir 将目录打包成所需要的类型,可以用于源码编译安装的软件包

rpm 对rpm进行转换

gem 对rubygem包进行转换

python 将python模块打包成相应的类型

2 FPM参数

详细使用见fpm –help

常用参数

  1. -s 指定源类型

  2. -t 指定目标类型,即想要制作为什么包

  3. -n 指定包的名字

  4. -v 指定包的版本号

  5. -C 指定打包的相对路径 Change directory to here before searching forfiles

  6. -d 指定依赖于哪些包

  7. -f 第二次打包时目录下如果有同名安装包存在,则覆盖它

  8. -p 输出的安装包的目录,不想放在当前目录下就需要指定

  9. --post-install 软件包安装完成之后所要运行的脚本;同--after-install

  10. --pre-install 软件包安装完成之前所要运行的脚本;同--before-install

  11. --post-uninstall 软件包卸载完成之后所要运行的脚本;同--after-remove

  12. --pre-uninstall 软件包卸载完成之前所要运行的脚本;同--before-remove


3 FPM安装

  1. fpm是ruby写的,因此系统环境需要ruby,且ruby版本号大于1.8.5。

  2. # 安装ruby模块

  3. yum -y install ruby rubygems ruby-devel gcc

  4. # 添加阿里云的Rubygems仓库,外国的源慢

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

  6. # 移除原生的Ruby仓库

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

  8. # 安装fpm

  9. gem install fpm


遇到的错误

[[email protected] ~]# gem install fpm
Building native extensions.  This could take a while...
Building native extensions.  This could take a while...
ERROR:  Error installing fpm:
ruby-xz requires Ruby version >= 1.9.3.


解决方法是:我用的是第二种

 1 更新ruby

 

解决办法2: 安装旧版本的fpm

[[email protected] ~]# gem install fpm -v 1.4.0


###########################################################################################

我测试的是定制nginx安装包

1 nginx软件包安装

yum -y install pcre-devel openssl-devel
useradd nginx -M -s /sbin/nologin
wget http://nginx.org/download/nginx-1.6.2.tar.gz
tar xf nginx-1.6.2.tar.gz
cd nginx-1.6.2
./configure --prefix=/application/nginx-1.6.2 --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module
make && make install
ln -s /application/nginx-1.6.2/ /application/nginx


2. 编写脚本

  1. mkdir -p /server/scripts/
    [[email protected] ~]# cd /server/scripts/
    [[email protected] scripts]# vim nginx_rpm.sh # 这是安装完rpm包要执行的脚本
    #!/bin/bash
    useradd nginx -M -s /sbin/nologin
    ln -s /application/nginx-1.6.2/ /application/nginx

3. 打包

  1. [[email protected] ~]# fpm -s dir -t rpm -n nginx -v 1.6.2 -d ‘pcre-devel,openssl-devel‘ --post-install /server/scripts/nginx_rpm.sh -f /application/nginx-1.6.2/
  2. 运行这个的时候出现了一个错误 Need executable ‘rpmbuild‘ to convert dir to rpm {:level=>:error}

  3. 解决办法是yum install rpm-build  安装完成之后再次执行上面的命令出现下面这个即为正常

  4. no value for epoch is set, defaulting to nil {:level=>:warn}
    no value for epoch is set, defaulting to nil {:level=>:warn}
    Created package {:path=>"nginx-1.6.2-1.x86_64.rpm"}
  5. [[email protected] ~]# ll -h nginx-1.6.2-1.x86_64.rpm

  6. -rw-r--r-- 1 root root 6.7M Nov 1 10:02 nginx-1.6.2-1.x86_64.rpm

如果出现了这个软件包代表成功了!


最后在新的机器上面安装这个定制的软件包,依赖关系自动解除

yum -y localinstall nginx-1.6.2-1.x86_64.rpm


安装完成之后启动nginx服务 /application/nginx-1.6.2/sbin/nginx




本文出自 “渐行渐远” 博客,请务必保留此出处http://825536458.blog.51cto.com/4417836/1782863

以上是关于用fpm定制rpm安装包的主要内容,如果未能解决你的问题,请参考以下文章

fpm定制nginx-rpm包

mariadb定制rpm包

Centos定制化RPM包

FPM简介(定制rpm包)

yum仓库+fpm定制rpm包

FPM定制RPM包实践