FPM定制RPM包实践
1.1 快速部署方案
✔ 问题:当领导给你 100 台已经安装好系统的服务器,然后让优化,让你提出一个快速部署方案。
解答:
1.tar 打包 先编译安装 打包--》分发--》解包(比如 mysql 打包后直接就可以使用
2.SaltStack,puppet,ansible
3.定制 rpm yum 仓库 yum 安装
4.openstack 虚拟机镜像和 docker 容器分发
1.2 回顾下安装软件的三种方式:
1、编译安装软件,优点是可以定制化安装目录、按需开启功能等,缺点是需要查找并实验出适合的编译参数,诸如MySQL之类的软件编译耗时过长。
2、yum安装软件,优点是全自动化安装,不需要为依赖问题发愁了,缺点是自主性太差,软件的功能、存放位置都已经固定好了,不易变更。
===>如果你现在还为是使用编译安装软件还是使用yum安装软件发愁,那你就out了。
3、编译源码,根据自己的需求做成定制RPM包–>搭建内网yum仓库–yum安装。结合前两者的优点,暂未发现什么缺点。可能的缺点就是RPM包的通用性差,只能适用于本公司的环境。另外一般人不会定制RPM包。这是中大型互联网企业运维自动化的必要技能。这里也不介绍rpm的概念,想了解的朋友可以查看http://www.ibm.com/developerworks/cn/linux/l-rpm/。
1.3 FPM打包工具
FPM的作者是jordansissel
FPM的github:https://github.com/jordansissel/fpm
FPM功能简单说就是将一种类型的包转换成另一种类型。
1.3.1 支持的源类型包
|
类型 |
说明 |
|
dir |
将目录打包成所需要的类型,可以用于源码编译安装的软件包 |
|
rpm |
对rpm进行转换 |
|
gem |
对rubygem包进行转换 |
|
python |
将python模块打包成相应的类型 |
1.3.2 支持的目标类型包
|
类型 |
说明 |
|
rpm |
转换为rpm包 |
|
deb |
转换为deb包 |
|
solaris |
转换为solaris包 |
|
puppet |
转换为puppet模块 |
1.4 FPM的安装与使用
1.4.1 安装FPM工具
fpm是ruby写的,因此系统环境需要ruby,且ruby版本号大于1.8.5。
# 安装ruby模块
yum -y install ruby rubygems ruby-devel [root@test ~]# rpm -qa ruby rubygems ruby-devel
ruby-1.8.7.374-5.el6.x86_64
ruby-devel-1.8.7.374-5.el6.x86_64
rubygems-1.3.7-5.el6.noarch
# 查看当前使用的rubygems仓库
gem sources list
# 添加阿里云的Rubygems仓库,外国的源慢,移除原生的Ruby仓库
gem sources -a http://mirrors.aliyun.com/rubygems/
gem sources --remove http://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
1.4.2 FPM工具常用参数
|
参数 |
参数说明 |
|
-s |
指定源类型 |
|
-t |
指定目标类型,即想要制作为什么包 |
|
-n |
指定包的名字 |
|
-v |
指定包的版本号 |
|
-C |
指定打包的相对路径 |
|
-d |
指定依赖于哪些包 |
|
-f |
第二次打包时目录下如果有同名安装包存在,则覆盖它 |
|
-p |
输出的安装包的目录,不想放在当前目录下就需要指定 |
|
--post-install |
软件包安装完成之后所要运行的脚本;同--after-install |
|
--pre-install |
软件包安装完成之前所要运行的脚本;同--before-install |
|
--post-uninstall |
软件包卸载完成之后所要运行的脚本;同--after-remove |
|
--pre-uninstall |
软件包卸载完成之前所要运行的脚本;同--before-remove |
至此,FPM工具安装完成。
1.5 【实例】定制nginx的RPM包
关于nginx的安装,可以参考:http://www.cnblogs.com/clsn/p/7750615.html
1.5.1 安装nginx(一键化脚本)
yum install -y pcre-devel openssl-devel
mkdir -p /server/tools
cd /server/tools
wget -q http://nginx.org/download/nginx-1.10.2.tar.gz
ls -l nginx-1.10.2.tar.gz
useradd www -s /sbin/nologin -M
tar xf nginx-1.10.2.tar.gz
cd nginx-1.10.2
./configure --user=www --group=www --prefix=/application/nginx-1.10.2 --with-http_stub_status_module --with-http_ssl_module
make
make install
ln -s /application/nginx-1.10.2 /application/nginx
1.5.2 编写脚本(for --post-install)
[root@test ~]# cd /server/scripts/
[root@test scripts]# vim nginx_install_devel.sh
#!/bin/bash
useradd -M -s /sbin/nologin www -u 666
ln -s /application/nginx/sbin/* /usr/local/sbin/
ln -sf /application/nginx-1.10.2 /application/nginx
1.5.3 打包-制作rpm包
注意:在进行打包的时候要将访问停止
killall nginx
[root@test ~]# fpm -s dir -t rpm -n nginx -v 1.10. -d 'pcre-devel,openssl-devel' --post-install /server/scripts/nginx_install_devel.sh -f /application/nginx-1.10./
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.10.2-1.x86_64.rpm"}
1.5.4 安装rpm包
推荐使用yum 安装
yum -y localinstall nginx-1.10.2-1.x86_64.rpm
这个命令会自动先安装rpm包的依赖,然后再安装rpm包。另:可以搭建本地yum仓库实现yum 安装自动解决依赖关系
#简易的搭建yum源的方法可以参考↓
http://www.cnblogs.com/clsn/p/7757868.html
FPM定制RPM包实践的更多相关文章
- 利用fpm定制rpm包
环境说明 系统版本 CentOS 6.9 x86_64 软件版本 fpm-1.4.0 1.安装ruby环境 fpm利用ruby编程语言开发,先安装ruby的环境 [root@m01 ~]# ...
- FPM定制RPM包
安装FPM FPM是ruby写的打包工具,ruby版本要大于1.8.5 #安装ruby环境和gem包管理器 [root@test88 ~]# yum install -y ruby rubygems ...
- 自动化部署必备技能—部署yum仓库、定制rpm包
部署yum仓库.定制rpm包 目录 第1章 扩展 - yum缓存 1.1 yum缓存使用步骤... 1 1.1.1 导言... 1 1.1.2 修改配置文件... 1 1.1.3 使用缓存... 1 ...
- 搭建yum仓库与定制rpm包
笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 当我们自动化部署集群的时候,想要快速的安装所有服务,搭建yum仓库与定制rpm包是我们首先要做的 原创作品,转载请 ...
- 利用fpm制作rpm包
使用fpm制作rpm包 安装如下 [root@web01 ~]# yum install -y gcc zlib zlib-devel wget http://ruby.taobao.org/mirr ...
- FPM简介(定制rpm包)
FPM简介 fpm是生成rpm包的工具.rpm包的制作,采用fpm工具完成,FPM非常易用,此命令可以把rpm包的安装.卸载做得更加优雅,在安装前可以做一些准备工作,安装后可以做一些收尾工作,在卸载前 ...
- fpm 制作 rpm 包
支持的 源类型包 ① dir : 将目录打包成所需要的类型, 可用于源码编译安装软件包 ② rpm : 对 rpm 包进行转换 ③ gem : 对 rubygem 包进行转换 ④ python : 将 ...
- linux系统之定制rpm包
FPM打包工具 FPM的作者是jordansissel FPM的github:https://github.com/jordansissel/fpm FPM功能简单说就是将一种类型的包转换成另一种类型 ...
- fpm制作rpm包
一.前言 在企业中我们有事安装软件包.部分都是源码安装,如nginx安装路径都已经固化了,但实际业务中,我们都是把软件包安装到固定目录下,不满足需要,这是其一.其二,编译安装很耗时,比如mysql,特 ...
随机推荐
- Java 网络 IO 模型
在进入主题之前先看个 Java 网络编程的一个简单例子:代码很简单,客户端和服务端进行通信,对于客户端的每次输入,服务端回复 get.注意,服务端可以同时允许多个客户端连接. 服务端端代码: // 创 ...
- ActiveMQ 入门helloworld
1.下载安装ActiveMQ 官网下载地址:http://activemq.apache.org/download.html ActiveMQ 提供了Windows 和Linux.Unix 等几个版本 ...
- appium启动运行log分析
1.手动启动appium 服务 > Launching Appium server with command: C:\Program Files (x86)\Appium\node.exe ...
- 实战系列之 Node.js 玩转 Java
这些年以来,Node.js的兴起,JavaScript已经从当年的“世界最被误解的语言”变成了“世界最流行的语言”.且其发展之势,从语言本身的进化,库和包的增长,工具支持的完善,star项目和领域解决 ...
- Musical Theme poj1743(后缀数组)
Musical Theme Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 16757 Accepted: 5739 De ...
- P1013
问题 D: P1013 时间限制: 1 Sec 内存限制: 128 MB提交: 33 解决: 21[提交][状态][讨论版] 题目描述 " 找啊找啊找GF,找到一个好GF,吃顿饭啊拉拉手 ...
- Ionic3学习笔记(二)主题化
本文为原创文章,转载请标明出处 目录 CSS实用属性 文本相关 位置相关 padding & margin 自定义颜色 平台样式 覆写Ionic Sass变量 RTL支持 1. CSS实用属性 ...
- 初学者易上手的SSH-struts2 01环境搭建
首先,SSH不是一个框架,而是多个框架(struts+spring+hibernate)的集成,是目前较流行的一种Web应用程序开源集成框架,用于构建灵活.易于扩展的多层Web应用程序. 集成SSH框 ...
- iptables使用实践
1.iptables 本质上是一组规则,报文从端口接收到之后,按照规则的顺序进行匹配,一旦匹配上则执行动作,后续就不再匹配. 2.为了体现出优先级,iptable分为4个表,5个链,如下: 优先级顺序 ...
- iOS中单例需要注意的
单例模式怎么定义的,可能在不同的语言,不同的书中不完全一样,但是概况开来都应该是:一个类有且仅有一个实例,并且自行实例化向整个系统提供. 因此,首先你可能需要确定你是真的需要一个单例类,还是说仅仅是需 ...