当前位置: 首页 > news >正文

FPM打包工具

支持的源类型包:

  •  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

 

  

转载于:https://www.cnblogs.com/saneri/p/5265661.html

相关文章:

  • 随笔一个dom节点绑定事件
  • 程序员的美:极致与疯狂
  • 大脑暗能量
  • 2013551813 张燕燕 第二周作业
  • 一个7200转/分钟,20G的给力风扇
  • 页面刷新 整个页面刷新和局部刷新
  • 如何编译MFDeploy
  • 系统设计
  • QT(3)对象和继承-Addressbook例子1
  • 很想写些CMMI的东西
  • 关于JAVA EE项目在WEB-INF目录下的jsp页面如何访问WebRoot中的CSS和JS文件
  • #include到底该写在哪
  • ANDROID模拟器访问本地WEB应用10.0.2.2
  • 两道考研试题
  • Windows_CMD_临时环境变量
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • 0x05 Python数据分析,Anaconda八斩刀
  • 2017 年终总结 —— 在路上
  • Git的一些常用操作
  • java第三方包学习之lombok
  • JS变量作用域
  • js如何打印object对象
  • PHP变量
  • python 学习笔记 - Queue Pipes,进程间通讯
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • vue2.0项目引入element-ui
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 读懂package.json -- 依赖管理
  • 蓝海存储开关机注意事项总结
  • 前端之Sass/Scss实战笔记
  • 使用 @font-face
  • 收藏好这篇,别再只说“数据劫持”了
  • 通过npm或yarn自动生成vue组件
  • 异步
  • PostgreSQL之连接数修改
  • 阿里云重庆大学大数据训练营落地分享
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • #AngularJS#$sce.trustAsResourceUrl
  • #单片机(TB6600驱动42步进电机)
  • $.ajax()
  • (20050108)又读《平凡的世界》
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (Python第六天)文件处理
  • (差分)胡桃爱原石
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (强烈推荐)移动端音视频从零到上手(上)
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (转)C#调用WebService 基础
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • (转)德国人的记事本
  • (转载)深入super,看Python如何解决钻石继承难题
  • .net 4.0 A potentially dangerous Request.Form value was detected from the client 的解决方案
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .NET 将多个程序集合并成单一程序集的 4+3 种方法