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. git clone 远程仓库报错error setting certificate verify locations

    系统:windows10 今天从github上克隆项目时报错: 原因: 1.git配置没有修改 之前配置的是公司gitlab账号的信息,和我当前要克隆的github的配置信息不同,没有注意修改 2.执 ...

  2. vue实现图书管理demo

    年后公司的项目要求用到vue.js知识,我angular没有学,node.js和react也只是了解了一点点,所以学起来比较困难.如果你想学vue.js的知识,推荐网址:http://vuejs.or ...

  3. HBase介绍

    欢迎和大家交流技术相关问题:邮箱: jiangxinnju@163.com博客园地址: http://www.cnblogs.com/jiangxinnjuGitHub地址: https://gith ...

  4. 使用JS实现手风琴效果

    想要实现简单的手风琴切换效果,需要使用JS实现,如下是使用javascript源码实现,后续会更新使用jQuery实现. 1. 先进行简单的布局:我们可以再ul下添加几个li实现html的简单布局,再 ...

  5. Java多线程——深入重入锁ReentrantLock

    简述 ReentrantLock 是一个可重入的互斥(/独占)锁,又称为“独占锁”. ReentrantLock通过自定义队列同步器(AQS-AbstractQueuedSychronized,是实现 ...

  6. 记录一次EF优化

    问题描述:1.第一次加载过慢(EntityFramework 6 code-first).2.一段时间间不访问页面同样变慢. 原因分析:1.第一次启动(Code First)会对比程序中的Model与 ...

  7. 自定义分页Gridview中Excel导出

    先上图,如图所示导出所有查询出的数据 用的是AspNetPager分页控件,这个导出方法,不受分页和gridview列中数据的约束,可以导出您想导出的数据 首先前台页面代码,lblink即为导出exc ...

  8. Maven与Eclipse使用中遇到的问题解决之道

    在使用Maven以及Eclipse的Maven插件时,我和同事遇到了一下几个问题,本着知其然知其所以然的学习精神,总结如下: Unrecognised tag 问题 由于我使用本地代理仓库,所以set ...

  9. java基础:学员状态查询

    package kaoshi; /* * 学员状态查询 * @作者:向往的生活 * @时间:2017.3.7 */ import java.util.Scanner; public class Stu ...

  10. 1036: [ZJOI2008]树的统计Count

    1036: [ZJOI2008]树的统计Count Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 7496  Solved: 3078[Submit] ...