支持的源类型包:

  • dir: 将目录打包成所需要的类型,可以用于源码编译安装的软件包
  • rpm: 对rpm进行转换
  • gem: 对rubygem包进行转换
  • python: 将Python模块打包成相应的类型

支持的目标类型包:

  • rpm: 转换为rpm包
  • deb: 转换为deb包
  • solaris: 转换为solaris包
  • puppet: 转换为puppet包

FPM的安装:

安装ruby环境和gem命令:

yum -y install ruby rubygems ruby-devel

gem命令是从rubygem仓库安装软件类似yum从yum仓库安装软件

查看当前源:

[root@localhost~]# gem source list
*** CURRENT SOURCES ***
http://rubygems.org/

添加国内源:

[root@localhost~]# gem sources -a http://mirrors.aliyun.com/rubygems/

移除国外源:

[root@localhost~]# gem sources --remove http://rubygems.org/

安装FPM工具:

[root@localhost~]# gem install fpm
[root@loaclhost~]#sed -i 's#keepcache=0#keepcache=1#g' /etc/yum.conf    //开启yum缓存

FPM常用参数:

-s:指定源类型

-t:指定目标类型,即想要制作为什么包

-n:指定包的名字

-v:指定包的版本号

-C:指定打包的相对路径

-d:指定依赖于哪些包

-f:第二次包时目录下如果有同名安装包存在,则覆盖它

-p:输出的安装包的目录,不想放在当前目录下就需要指定

--post-install:软件包安装完成之后所要运行的脚本;同--offer-install

--pre-install:软件包安装完成之前所要运行的脚本;同--before-install

--post-uninstall:软件包卸载完成之后所要运行的脚本;同--offer-remove

--pre-uninstall:软件包卸载完成之前所要运行的脚本;同—before-remove

安装遇到问题:

1.Need executable 'rpmbuild' to convert dir to rpm {:level=>:error}
解决方法:
[root@localhost]# yum install -y rpm-build 2.如果里面有gcc make的错误.
解决方法:
yum install -y gcc  

fpm打包实例:

1.fpm打包Nginx

[root@localhost opt]# fpm -s dir -t rpm -n nginx -v 1.6.1 -d 'pcre-devel,openssl-devel' --post-install /opt/nginx_rpm.sh -f /opt/nginx/ 
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.1-1.x86_64.rpm"}

2.fpm相对路径打包:

[root@localhost~]# fpm -s dir -t rpm -n opt -v 1.1.1.1 -d 'gcc,gcc+' -C ../opt/
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=>"opt-1.1.1.1-1.x86_64.rpm"}

3.使用fpm将生成包指定到/tmp下:

[root@bogon ~]# fpm -s dir -t rpm -n ansible-v 1.1.1.1 -d 'gcc,gcc+' -f ansible-p /tmp/

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=>"/tmp/ansible-1.1.1.1-1.x86_64.rpm"}

查看rpm包信息:

1.查看rpm执行的脚本

[root@localhost opt]# rpm -qp --scripts nginx-1.6.1-1.x86_64.rpm
postinstallscriptlet (using /bin/sh):
#!/bin/bash
useraddnginx -M -s /sbin/nologin

2.查看rpm包的依赖

[root@localhost opt]# rpm -qpR nginx-1.6.1-1.x86_64.rpm
openssl-devel
/bin/sh
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1

3.查看rpm包中的内容:

rpm -qpl zabbix-3.0-1.x86_64.rpm

镜像同步公网YUM源:

centos官方标准源:
rsync://mirrors.ustc.edu.cn/centos/6/os/x86_64/
rsync://mirrors.ustc.edu.cn/centos/6/extras/x86_64/
rsync://mirrors.ustc.edu.cn/centos/6/updates/x86_64/

epel源:

rsync://mirrors.ustc.edu.cn/epel/6/x86_64/

命令:reposync

参考文档:

http://blog.oldboyedu.com/autodeploy-rpm/

http://www.zyops.com/autodeploy-rpm

  

FPM打包工具的更多相关文章

  1. 使用FPM打包工具打rpm包

    使用FPM打包工具打rpm包 一:安装ruby环境和gem命令 fpm 是 ruby写的,因此系统环境需要ruby且版本必须大于1.8.5 # yum -y install ruby rubygems ...

  2. FPM打包工具 可以把源码包制定为rpm包 是自动化部署的环节

    注意部FPM时的环境一定要跟生产环境的系统版本最好是保持一至,我第一次测试没通过,(我在CENTOS7和部属FPM打好的包在Centos6.x和安装,结果失败) 1:安装 FPM打包工具的依赖包: [ ...

  3. FPM打包工具使用

    author:headsen chen date: 2019-01-19  14:57:09 个人原创博客,转自请注明出处和作者,否则追究法律责任 1,安装依赖和语言包 yum -y install ...

  4. centos6.5安装fpm打包工具

    FPM功能简单说就是将一种类型的包转换成另一种类型.FPM的github:https://github.com/jordansissel/fpm 1.支持的源类型包: dir: 将目录打包成所需要的类 ...

  5. fpm 打包工具安装调试

    https://github.com/jordansissel/fpm  官方git yum install ruby-devel gcc make rpm-build rubygems gem so ...

  6. rpm打包工具---FPM

    FPM的安装:fpm是由ruby gem仓库里面安装的所以要先装ruby.yum安装的ruby版本是1.8.7版本,使用gem命令会报错: >= 1.9.3,所以要安装一个比1.9.3版本高的 ...

  7. fpm打包神奇rpm包升级python2.7.16

    fpm打包神器参考文档:https://www.cnblogs.com/flintlovesam/p/6594635.html FPM的安装:安装ruby环境和gem命令: yum -y instal ...

  8. Linux-源码安装及FPM打包

    目录 源码安装 制作RPM包(使用FPM工具) 安装rpm后要执行的脚本(优化版) 源码安装 这里举例Nginx的源码安装,需要前往Nginx官网找到稳定版本源码安装包下载. ## 源码安装nginx ...

  9. 细说前端自动化打包工具--webpack

    背景 记得2004年的时候,互联网开发就是做网页,那时也没有前端和后端的区分,有时一个网站就是一些纯静态的html,通过链接组织在一起.用过Dreamweaver的都知道,做网页就像用word编辑文档 ...

随机推荐

  1. jsrender for array 和for object语法

    for array 循环数组 循环使用案例 定义数组数据 var data = { names: ["Maradona","Pele","Ronald ...

  2. C# 后台获取WebApi 方法

    以下是方法 返货json数据 代码都有注释 /// <summary>        /// 请求webpapi        /// </summary>        // ...

  3. 【USACO 1.5】SuperPrime Rib

    /* TASK: sprime LANG: C++ SOLVE: dfs,后面每增加一位,判断当前是否为素数. 第一位不能为0 */ #include<cstdio> int n; voi ...

  4. 新手该学习Python2.x版本还是3.x版本

    如果你是一个初学者,或者你以前接触过其他的编程语言,你可能不知道,在开始学习python的时候都会遇到一个比较让人很头疼的问题:版本问题!!是学习python2 还是学习 python3 ?这是非常让 ...

  5. MySQL数据表格导入导出

    一 初始数据(共6条记录) username userpwd age admin admin 18 root root 18 cat cat 17 dog dog 15 dog1 dog1 15 zh ...

  6. bzoj4403: 序列统计

    我们很容易发现答案是C(R-L+N+1,N)-1 然后用一下lucas定理就行了 #include <iostream> #include <cstdio> #include ...

  7. 【BZOJ-1068】压缩 区间DP

    1068: [SCOI2007]压缩 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 1001  Solved: 615[Submit][Status][ ...

  8. 【BZOJ-3555】企鹅QQ 字符串Hash

    3555: [Ctsc2014]企鹅QQ Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 1545  Solved: 593[Submit][Statu ...

  9. 为什么要用hibernate 与基于数据库表结构的项目开发

    最近开始学习hibernate,其实并不知道要学习什么,有什么用.后来问了一下同事,他就说快捷方便简单,很多事情不用自己做他会帮你做好,但是我觉得不应该是这样的,于是我就去搜了一下,就搜到了一篇帖子, ...

  10. 虚拟机软件bochs编译使用问题

    bochs是一款具有调试功能的虚拟机软件,由C++编写,可用于调试操作系统.从ubuntu软件源中下载的很可能没有调试功能,需要先下载源码,可能比编译之后的可执行文件大的多. 编译时有很多选项,可以通 ...