1.Rpm打包程序

1.1为什么要使用rpm打包

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

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

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

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

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

2   fpm工具打包详解

FPM的作者是jordansissel

FPM的github:https://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.实战定制Nginx的Rpm包

编写脚本

[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.实战定制LNMP的Rpm包

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

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

Rpm安装报错

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

解决:yum remove prelink -y

自动化利器-RPM自定义打包的更多相关文章

  1. maven-使用assembly自定义打包

    用maven管理项目引用依赖很方便,但是打包的时候如果是web包还好,会直接把依赖的jar包打到lib目录中,如果是jar包的话,依赖默认是不打入进去的 这样如果运行环境中没有依赖的jar包,就麻烦了 ...

  2. 自动化利器-Zabbix

    1.1为何需要监控系统 在一个IT环境中会存在各种各样的设备,例如:硬件设备.软件设备.其系统的构成也是非常复杂的. 多种应用构成负载的IT业务系统,保证这些资源的正常运转,是一个公司IT部门的职责. ...

  3. 云原生之旅 - 7)部署Terrform基础设施代码的自动化利器 Atlantis

    前言 前面有几篇文章讲述了如何使用Terraform创建资源 (基础设施即代码 Terraform 快速入门, 使用 Terraform 创建 Kubernetes) 以及 Kubernetes时代的 ...

  4. Android studio 自定义打包apk名

    Android Studio打包应用默认生成的apk名称是:app-release.apk .如果我们要让生成的apk名跟我们版本包名有联系的话,那我们就要自定义生成的apk名了 需要在build.g ...

  5. Android studio 自定义打包APK名称

    Android Studio打包应用默认生成的apk名称是:app-release.apk .如果我们要让生成的apk名跟我们版本包名有联系的话,那我们就要自定义生成的apk名了,要怎么做呢. 我们只 ...

  6. 使用Maven的assembly插件实现自定义打包

    一.背景 最近我们项目越来越多了,然后我就在想如何才能把基础服务的打包方式统一起来,并且可以实现按照我们的要求来生成,通过研究,我们通过使用maven的assembly插件完美的实现了该需求,爽爆了有 ...

  7. FAutoTest-微信小程序 / 公众号H5 自动化利器

    X5内核H5自动化背景 近来有很多童靴咨询如何做微信小程序/公众号等H5页面来做自动化,之前写了一篇文章微信小程序自动化测试实践 https://www.cnblogs.com/yyoba/p/945 ...

  8. 在基于vue-cli的项目自定义打包环境

    在工作当中,遇到了下面这个问题: 测试环境与生产环境中的用户权限不一样,因此,就需要根据测试环境打一个包,生产环境又打一个包.可是,如果每次打包都需要更改权限的配置文件的话,会很麻烦,而且,体现不出一 ...

  9. Maven学习总结(27)——Maven自定义打包插件maven-assembly-plugin详解

    Assembly插件会生成 "assemblies", 此特性等同于的Maven 1 distribution plug-in..该插件不仅支持创建二进制归档文件,也支持创建源码归 ...

随机推荐

  1. APP中的 H5和原生页面如何分辨、何时使用

    一.APP内嵌H5和原生的区别 1.原生的页面运行速度快,比较流畅. H5页面相对原生的运行性能低,特别是一些动画效果有明显卡顿. 2.H5页面的很多交互都没有原生的好,比如弹层.输入时候的页面滑动 ...

  2. 一个Python小白5个小时爬虫经历

    前言 最近业余在做一个基于.NET Core的搜索项目,奈何基层代码写好了,没有看起来很华丽的数据供测试.很巧的也是博客搜索,于是乎想到了博客园.C#也能做做页面数据抓取的,不过在博客园看到的大部分都 ...

  3. KMP算法的正确性证明及一个小优化

    直接把作业帖上来是不是有点不太公道呀... 无所谓啦反正各位看着开心就行 KMP算法 对于模式串$P$,建立其前缀函数$ N$ ,其中$N [q] $ 表示在$P$中,以$q$位置为结束的可以匹配到前 ...

  4. EFcore与动态模型(三)

    紧接着上面的内容,我们继续看下动态模型页面交互实现方式,内容如下: 1,如何实现动态表单 2,如何接收表单数据并绑定到动态模型上 一.如何实现动态表单 由于模型信息都是后台自定义配置的,并不是固定不变 ...

  5. 每天一个linux命令(55)--at命令

    在Windows系统中,Windows提供了计划任务这一功能,在控制面板  ->  性能与维护  ->  任务计划,它的功能就是安排自动运行的任务.通过 ‘ 添加任务计划’ 的一步步引导, ...

  6. HTML复习

  7. Thread类常用方法

    Thread类构造方法: 1.Thread(): 2.Thread(String name): 3.Thread(Runable r): 4.Thread(Runable r, String name ...

  8. javascript组成概述认识

    这里的JavaScript组成概述是说的在浏览器端渲染的JavaScript而不是nodejs js组成概述 js的完整实现是由ECMAscript.DOM.BOM三个部分组成的: -ECMAscri ...

  9. 配置虚拟主机(windows环境下nginx+php)

    需要给一个ip绑定不同域名,例如有两个项目/www/,/www2/ 需要http://a.com时访问的是www 项目 http://b.com访问的是www2项目   那么需要在nginx/conf ...

  10. BOM基础(三)

    在我之前关于DOM的文章里,其实已经有提到过事件的概念.在讲事件之前,首先要知道的就是javascript是由事件驱动的.什么叫事件驱动呢?打个比方,比如我们在页面中点击一个按钮,才会跳出一个窗口或者 ...