zoukankan      html  css  js  c++  java
  • 自动化利器-RPM自定义打包

    1.Rpm打包程序

    1.1为什么要使用rpm打包

    1、编译安装软件,优点是可以定制化安装目录、按需开启功能等,缺点是需要查找并实验出适合的编译参数,诸如MySQL之类的软件编译耗时过长。

    2yum安装软件,优点是全自动化安装,不需要为依赖问题发愁了,缺点是自主性太差,软件的功能、存放位置都已经固定好了,不易变更。

    ===>如果你现在还为是使用编译安装软件还是使用yum安装软件发愁,那你就out了。

    3、编译源码,根据自己的需求做成定制RPM-->搭建内网yum仓库--yum安装。结合前两者的优点,暂未发现什么缺点。可能的缺点就是RPM包的通用性差,只能适用于本公司的环境。另外一般人不会定制RPM包。这是中大型互联网企业运维自动化的必要技能。

     rpm的概念,想了解的朋友可以查看http://www.ibm.com/developerworks/cn/linux/l-rpm/

    2   fpm工具打包详解

    FPM的作者是jordansissel

    FPMgithubhttps://github.com/jordansissel/fpm

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

    2.1 支持的源类型包

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

    rpm        #rpm进行转换

    gem        #rubygem包进行转换

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

    2.2支持的目标类型包

    rpm        #转换为rpm

    deb        #转换为deb

    solaris      #转换为solaris

    puppet     #转换为puppet模块

    2.3 fpm安装

    [root@student ~]# yum -y install ruby rubygems ruby-devel        ß安装ruby模块

    [root@student ~]# gem sources -a http://mirrors.aliyun.com/rubygems/            ß添加阿里云的Rubygems仓库,国外资源会影响下载速度

    http://mirrors.aliyun.com/rubygems/ added to sources

    [root@student ~]# gem sources --remove http://rubygems.org/  ß移除原生的ruby仓库

    http://rubygems.org/ removed from sources

    [root@student ~]# gem install fpm        ß安装fpm

    3.fpm常用参数

    -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

     

    4.实战定制NginxRpm

    编写脚本

    [root@oldboy ~]# cd /server/scripts/     ß进入到/server/scripts

    [root@oldboy scripts]# vim nginx_rpm.sh     ß这是安装完rpm包要执行的脚本

    #!/bin/bash

    useradd nginx -M -s /sbin/nologin

    ln -s /application/nginx-1.6.2/ /application/nginx

     

    [root@student scripts]# fpm -s dir -t rpm -n nginx -v 1.6.3 -d 'pcre-devel,openssl-devel' --post-install /server/scripts/nginx_rpm.sh -f /application/nginx-1.6.3/                ß打包

    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.3-1.x86_64.rpm"}

    [root@student scripts]# rpm -qpl nginx-1.6.3-1.x86_64.rpm                ß查看包内容

    [root@student scripts]#  rpm -qp --scripts nginx-1.6.3-1.x86_64.rpm                 ß查看脚本

    postinstall scriptlet (using /bin/sh):

    #!/bin/sh

    useradd nginx -M -s /sbin/nologin

    ln -s /application/nginx/nginx-1.6.3/ /application/nginx

    5.实战定制LNMPRpm

    如果是rpm 直接依赖---然后替换配置文件,启动即可。

    如果是源码直接打包目录。

    Rpm安装报错

    安装制作好的rpm包报错:Errorcpio: Digest mismatch

    解决:yum remove prelink -y

  • 相关阅读:
    [小知识]如何查看IIS6应用程序池所对应的进程ID
    继续向大家汇报服务器情况
    CNBlogs DotText 1.0 Beta 2 重要更新
    垃圾广告记录
    Firefox 11正式发布
    Firefox 10正式发布
    Firefox 6 正式发布
    Firefox 5 正式发布
    Firefox 9正式发布
    Firefox 8正式发布
  • 原文地址:https://www.cnblogs.com/xuliangwei/p/6395573.html
Copyright © 2011-2022 走看看