FPM主要特点: 把一种包打包成另一种包的格式


支持的源类型包
DIR 将目录打包成所需要的类型,可以用于源码编译的安装包.
RPM    对rpm进行转换
gem    对rubygem包进行转换.
python    将python模块打包成相应的类型

支持的目标类型包格式:
RPM    转换为RPM包
deb     转换为deb包
solaris    转换为solaris包
puppet   转换为puppet包


安装FPM工具:
    fpm是使用ruby语言编写的,因此系统环境需要ruby这个软件,并且版本号需要大于1.8.5

## 安装ruby模块
yum  -y install ruby rubygems ruby-devel     ## 安装ruby的模块,ruby模块需要大于1.8.5

## 添加阿里云的rubygems仓库,移除原生的yum仓库
gem sources -a  http://mirrors.aliyun.com/rubygems/            ##增加阿里云的仓库gem sources --remove  http://rubygems.org                                 ##移除原有的仓库

##安装FPM工具
gem install fpm -v 1.3.3    
 ##指定安装1.3.3 版本,我们需求不大,只要能打包就足够了,没必要追求高版本
 
这里有可能会出现错误, 系统会提示: 安装 fpm 1.3.3版本之前需要首先安装ruby1.9.18
#为解决ruby版本过低1.8.7 降低json 和ffi 版本
 所以这里首先要安装 以下两个软件后继续

可能的报错信息:
[root@localhost ~]# gem install fpm -v 1.3.3
ERROR: Error installing fpm:
 json requires Ruby version >= 1.9.

遇到以上错误请先安装以下两个软件,然后继续安装fpm1.3.3:
gem install json -v 1.8.3
gem install ffi -v 1.9.18

-----------------------------------------------------------------------------------------------------------------
以上软件都安装好后 开始进行 实战定制nginx包

环境的准备:
1. 创建目录 /application/tools/
1 .系统环境:    CentOS release 6.7 (Final)
2. 内核版本:    2.6.32-573.el6.x86_64
3. 关闭selinux 
4.清空本机已经有的yum缓存
(find /var/cache/ 0type f -name "*.rpm")
5. 上传nginx软件包到 /application/tools/ 目录   ##(需要有lrzsz软件, yum -y install lrzsz  安装上传软件)
如果是实验环境 请在这里做个快照 以备恢复

6.开启yum缓存
 sed -i 's#keepcache=0#keepcache=1#g' /etc/yum.conf  
更改为:

7.  查找有没有多余的rpm报缓存,排除一些不必要的干扰包

----------------------------------------------------------------------------

1.  编译安装nginx (就安装我们上传的1.6.3版本)
 yum -y install pcre-devel openssl-devel   #安装必备的包

2. 装完后另存这些rpm包,因为系统的不一致,所需要的安装包也就不同,找到收集这些包..
 find /var/cache/ -type f -name "*.rpm" 

[root@localhost ~]# find /var/cache/ -type f -name "*.rpm"
     
/var/cache/yum/x86_64/6/base/packages/libcom_err-1.41.12-23.el6.x86_64.rpm
/var/cache/yum/x86_64/6/base/packages/openssl-1.0.1e-57.el6.x86_64.rpm
/var/cache/yum/x86_64/6/base/packages/e2fsprogs-libs-1.41.12-23.el6.x86_64.rpm
/var/cache/yum/x86_64/6/base/packages/libsepol-devel-2.0.41-4.el6.x86_64.rpm
/var/cache/yum/x86_64/6/base/packages/openssl-devel-1.0.1e-57.el6.x86_64.rpm
/var/cache/yum/x86_64/6/base/packages/zlib-devel-1.2.3-29.el6.x86_64.rpm
/var/cache/yum/x86_64/6/base/packages/libcom_err-devel-1.41.12-23.el6.x86_64.rpm
/var/cache/yum/x86_64/6/base/packages/keyutils-libs-devel-1.4-5.el6.x86_64.rpm
/var/cache/yum/x86_64/6/base/packages/libss-1.41.12-23.el6.x86_64.rpm
/var/cache/yum/x86_64/6/base/packages/libselinux-utils-2.0.94-7.el6.x86_64.rpm
/var/cache/yum/x86_64/6/base/packages/krb5-devel-1.10.3-65.el6.x86_64.rpm
/var/cache/yum/x86_64/6/base/packages/libkadm5-1.10.3-65.el6.x86_64.rpm
/var/cache/yum/x86_64/6/base/packages/libselinux-devel-2.0.94-7.el6.x86_64.rpm
/var/cache/yum/x86_64/6/base/packages/krb5-libs-1.10.3-65.el6.x86_64.rpm
/var/cache/yum/x86_64/6/base/packages/pcre-devel-7.8-7.el6.x86_64.rpm
/var/cache/yum/x86_64/6/base/packages/e2fsprogs-1.41.12-23.el6.x86_64.rpm
/var/cache/yum/x86_64/6/base/packages/libselinux-2.0.94-7.el6.x86_64.rpm

3. 查找这些包 然后移动到/tmp 目录  (移动前请确保/tmp 目录是空的)
find /var/cache/ -type f -name "*.rpm" | xargs cp -t /tmp

4. 把这些包打包起来并下载到本地
 cd / && tar zcf nginx_yum.tar.gz tmp/*.rpm    ##打包放入了根目录
    [root@localhost /]# ls /nginx_yum.tar.gz
    /nginx_yum.tar.gz


5.  创建nginx账户
[root@localhost tools]# useradd nginx -M -s /sbin/nologin

6.解压软件包
 tar xf nginx-1.6.3.tar.gz 

7.编译安装:
mkdir /application/nginx-1.6.3 -p
cd /application/tools/
tar xf nginx-1.6.3.tar.gz
cd nginx-1.6.3
./configure --prefix=/application/nginx-1.6.3 --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module
make && make install

8.创建软连接(疑问,这里能启动吗?为什么我像启动没能启动??)
ln -s /application/tools/nginx-1.6.3 /application/nginx

9.编写脚本
vi nginx.sh
--------------------------------------
#!/bin/bash
useradd nginx -M -s /sbin/nologin
ln -s /application/nginx-1.6.3/ /application/nginx
--------------------------------------


10.开始fpm打包
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
----------------------------
成功结果:

查看这个包:
[root@localhost ~]# ls -hl nginx-1.6.3-1.x86_64.rpm
-rw-r--r-- 1 root root 2.2M Apr 14 02:50 nginx-1.6.3-1.x86_64.rpm

显示这个 代表打包完成了
----------------------------------------------------------检查安装结果: ---------------------------------------------

报错 说需要两个依赖包 一个是 pcre-devel   一哥是 openssl-devel  
解决办法: 
1.  yun 来安装这些依赖包

2.  rpm 来安装这两个依赖包 

3. 如果已经有这些依赖包 就可以 使用 rpm -ivh -aid *.rpm 来安装

------------------------------------------------------------------------------------

## 打包的注意事项:
rpmbuild软件不存在的时候 打包就会失败
命令地址: /usr/bin/rpmbuild

如果没有rpmbuild命令 则需要安装这个命令 
yum -y install rpmbuild


回顾rpm包的常用命令组合
man rpm ## 获取帮助

rpm -qpi nginx-1.6.3-1.x86_64.rpm ## 查看安装包的信息


rpm -qpl nginx-1.6.3-1.x86_64.rpm ## 查看安装包的内容


rpm -qpR nginx-1.6.3-1.x86_64.rpm ## 查看安装包的依赖

   

## 查看rpm包带的执行脚本,执行脚本不是以文件形式放在rpm包中的

rpm -qpi nginx-1.6.3-1.x86_64.rpm ## 查看安装包的信息

   

rpm -ivh nginx-1.6.3-1.x86_64.rpm ## 安装rpm包


rpm -ivh --aid *.rpm # --aid 参数 解决rpm包循环依赖的问题,即当前目录所有互相依赖的rpm包 可以用这种办法

安装报错处理
[root@chenleilei ~]# rpm -ivh nginx-1.6.3-1.x86_64.rpm

error: Failed dependencies:

 pcre-devel is needed by nginx-1.6.3-1.x86_64

 openssl-devel is needed by nginx-1.6.3-1.x86_64


        解决办法:

        1. yum 安装 这两个包

        2. rpm -ivh openssl-devel-1.0.1e-42.e16.x86_64.rpm

            rpm -ivh pcre-devel-7.8-7.e16.x86_64.rpm

FPM工具 实战定制nginx包的更多相关文章

  1. fpm工具来制作rpm包软件

    第1章 rpm包的制作 1.1 fpm的概念介绍 FPM功能简单说就是将一种类型的包转换成另一种类型 1.1.1.支持的源类型 类型 说明 dir   将目录打包成所需要的类型,可以用于源码编译安装的 ...

  2. linux系统之定制rpm包

    FPM打包工具 FPM的作者是jordansissel FPM的github:https://github.com/jordansissel/fpm FPM功能简单说就是将一种类型的包转换成另一种类型 ...

  3. FPM定制RPM包实践

    1.1 快速部署方案 ✔ 问题:当领导给你 100 台已经安装好系统的服务器,然后让优化,让你提出一个快速部署方案. 解答: 1.tar 打包 先编译安装 打包-->分发-->解包(比如 ...

  4. FPM定制RPM包

    安装FPM FPM是ruby写的打包工具,ruby版本要大于1.8.5 #安装ruby环境和gem包管理器 [root@test88 ~]# yum install -y ruby rubygems ...

  5. FPM简介(定制rpm包)

    FPM简介 fpm是生成rpm包的工具.rpm包的制作,采用fpm工具完成,FPM非常易用,此命令可以把rpm包的安装.卸载做得更加优雅,在安装前可以做一些准备工作,安装后可以做一些收尾工作,在卸载前 ...

  6. linux 软件管理--yum工具及源码包

    目录 linux 软件管理--yum工具及源码包 一.yum基本概述 二.yum源的配置 三.yum实践案例 四.yum全局配置文件 五.yum签名检查机制 五.制作本地yum仓库 六.构建企业级yu ...

  7. 自动化部署必备技能—部署yum仓库、定制rpm包

    部署yum仓库.定制rpm包 目录 第1章 扩展 - yum缓存 1.1 yum缓存使用步骤... 1 1.1.1 导言... 1 1.1.2 修改配置文件... 1 1.1.3 使用缓存... 1 ...

  8. 搭建yum仓库与定制rpm包

    笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 当我们自动化部署集群的时候,想要快速的安装所有服务,搭建yum仓库与定制rpm包是我们首先要做的 原创作品,转载请 ...

  9. yum工具及源码包

    目录 yum工具及源码包 yum yum源 yum实战案例 yum全局配置文件 制作本地yum仓库 构建企业级yum仓库 源码包 yum工具及源码包 yum yum是RedHat以及CentOS中的软 ...

随机推荐

  1. HIVE-默认分隔符的(linux系统的特殊字符)查看,输入和修改

    这段时间做hive的时候,用到了系统默认分隔符.通常下面2中情况我们需要需要用到分隔符 1,制作table的输入文件,有时候我们需要输入一些特殊的分隔符 2,把hive表格导出到本地时,系统默认的分隔 ...

  2. poj 2096 , zoj 3329 , hdu 4035 —— 期望DP

    题目:http://poj.org/problem?id=2096 题目好长...意思就是每次出现 x 和 y,问期望几次 x 集齐 n 种,y 集齐 s 种: 所以设 f[i][j] 表示已经有几种 ...

  3. WPF案例:如何设计搜索框(自定义控件的原则和方法)

    我们平时自定义WPF控件的方法有:Style,DataTemplate,ControlTemplate, DependencyProperty, CustomControl等几个方法. 按照优先顺序应 ...

  4. hihoCoder#1050(树中最长路)

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 上回说到,小Ho得到了一棵二叉树玩具,这个玩具是由小球和木棍连接起来的,而在拆拼它的过程中,小Ho发现他不仅仅可以拼凑成一 ...

  5. svn Can't revert without reverting children 解决方案

    EMZ3.0 qrh$ svn commit -m ""svn: E155010: Commit failed (details follow):svn: E155010: '/U ...

  6. centos 虚拟机联网

    在windows主机安装centos虚拟机后,遇到虚拟机连接外网问题. 解决方案:http://blog.csdn.net/pang040328/article/details/12427359 经过 ...

  7. Oracle 静默安装oracle client

    静默安装oracle clint比较简单,修改instantclient.crsp文件的几个位置即可 [root@localhost ~]# vi /etc/oralnstloc inventory_ ...

  8. [我的CVE][CVE-2017-15709]Apache ActiveMQ Information Leak

    问题原因: Apache ActiveMQ默认消息队列61616端口对外,61616端口使用了OpenWire协议,这个端口会暴露服务器相关信息,这些相关信息实际上是debug信息. 会返回应用名称, ...

  9. java线程面试题及答案

    1)2017Java面试题及答案:什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务 ...

  10. 正则表达式计算 origin = "1 - 2 * ( ( 60 - 30 + ( -40.0 / 5 ) * ( 9 - 2 * 5 / 3 + 7 / 3 * 99 / 4 * 2998 + 10 * 568 / 14 )) - ( - 4 * 3 ) / ( 16 - 3 * 2))"

    #!/usr/bin/env python import re def f1(arg): return 1 origin = "1 - 2 * ( ( 60 - 30 + ( -40.0 / ...