zoukankan      html  css  js  c++  java
  • fpm制作rpm包

    一、前言

           在企业中我们有事安装软件包。部分都是源码安装,如nginx安装路径都已经固化了,但实际业务中,我们都是把软件包安装到固定目录下,不满足需要,这是其一、其二,编译安装很耗时,比如mysql,特别是一些公司推行自动化,编译安装也不方便,容易出错。这是rpm包就很有用,废话少说,开始制作rpm包之旅吧。

    二、rpm制作工具-fpm

         FPM功能简单说就是将一种类型的包转换成另一种类型。对!就是简单易懂,不废话。

    三、fpm软件的参数介绍

    1、支持的源类型包

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

    rpm 对rpm进行转换

    gem 对rubygem包进行转换

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

    2、支持的目标类型包

    rpm 转换为rpm包

    deb 转换为deb包

    solaris 转换为solaris包

    puppet 转换为puppet模块

    3、常用参数

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

    四、fpm安装

    fpm是ruby写的,因此系统环境需要ruby,且ruby版本号大于1.8.5。
    # 安装ruby模块
    yum -y install ruby rubygems ruby-devel  gcc  rpm-build 
    # 查看当前使用的rubygems仓库
    gem sources list
    # 添加淘宝的Rubygems仓库,外国的源慢,移除原生的Ruby仓库
    gem sources  --add https://ruby.taobao.org/ && gem sources  --remove https://rubygems.org/

    # 安装fpm,gem从rubygem仓库安装软件类似yum从yum仓库安装软件。首先安装低版本的json,高版本的json需要ruby2.0以上,然后安装低版本的fpm,够用。
    gem install json -v 1.8.3
    gem install fpm -v 1.3.3
    # 上面的2步安装仅适合CentOS6系统,CentOS7系统一步搞定,即gem install fpm

    五、制作rpm包

    以nginx为例

    1、下载nginx的源码包

    wget http://nginx.org/download/nginx-1.14.0.tar.gz

    2、安装nginx依赖

    yum  install  openssl openssl-devel  pcre  pcre-devel  zlib  zlib-devel   gcc  -y

    3、解压

    tar  -zxvf nginx-1.14.0.tar.gz

    4、进入目录预编译[root@localhost opt]# cd nginx-1.14.0

    [root@localhost nginx-1.14.0]#
    [root@localhost nginx-1.14.0]# ./configure
     --prefix=/opt/pmo/nginx
    --user=nginx
    --group=nginx
    --with-pcre
    --with-stream
    --with-http_ssl_module
    --with-http_flv_module
    --with-http_realip_module
    --with-http_sub_module
    --with-http_dav_module
    --with-http_addition_module
    --with-http_stub_status_module
    --with-http_gzip_static_module
    --with-pcre
    --with-debug

     5、编译

    make -j24 //使用多核编译

    6、创建目录

    mkdir -p /temp/fpm_install/

    7、安装到制定的目录中

    make -j24 install DESTDIR=/temp/fpm_install/

    8、脚本

    [root@localhost nginx-1.6.2]# cat install_after.sh

    #!/bin/bash

    source /etc/rc.d/init.d/functions

    groupadd -r nginx

    useradd -r -g nginx

    nginx exit $?

    [root@localhost nginx-1.6.2]# cat remove_after.sh

    #!/bin/bash

    source /etc/rc.d/init.d/functions

    rm -rf /usr/local/nginx

    rm -rf /etc/nginx userdel

    nginx exit $?

    9、制作nginx的rpm包

    fpm -f -s dir
    -t rpm
    -n nginx
    -v 1.14.0
    --iteration 1.el6
    -C /opt/nginx-1.14.0/
    -p /temp/nginx_rpm/
    --description 'nginx1.14.0_rpm'
    --url 'http://nginx.org/en/'
    --after-install /opt/fpm_install/install_after.sh
    --after-remove /opt/fpm_install/remove_after.sh

     8、出现的错误:

     1、创建缺少的目录

    mkdir -p /temp/nginx_rpm

    2、安装rpm-build

    yum   install  rpm-build -y

  • 相关阅读:
    1091. Shortest Path in Binary Matrix (M)
    1342. Number of Steps to Reduce a Number to Zero (E)
    0242. Valid Anagram (E)
    京准为您提供选卫星时钟(NTP时钟服务器)技巧
    时统设备(NTP授时服务器)产品概述与介绍
    NTP母钟(NTP网络子钟)为医院提高办公效率
    基于NTP/SNTP的网络授时服务系统方案
    NTP子钟(GPS母钟)功能与调试安装配置
    GPS时间统一系统(时统设备)介绍与应用
    GPS子母钟系统(电子时钟系统)让医院信息化更有意义
  • 原文地址:https://www.cnblogs.com/heruiguo/p/8890489.html
Copyright © 2011-2022 走看看