用fpm来做rpm打包
说明:此文章为腾讯云机器自动从本人csdn博客搬迁过来。是本人授权操作。
申明:无本人授权,不可转载本文。如有转载,本人保留追究其法律责任的权利。
龚浩华,QQ 29185807,月牙寂 道长
第一时间获取文章,可以关注本人公众号 月牙寂道长 yueyajidaozhang
以前都是测试来做rpm打包的。现在自己写的程序需要自己做打包。 用rpmbuild做了打包,但总感觉很不方便。
于是便找到了fpm工具。下面总结下fpm工具的使用
1、安装
首次安装
yum -y install ruby rubygems ruby-devel
添加淘宝sources
gem sources -a https://ruby.taobao.org/
移除国外sources
gem sources--remove http://rubygems.org/
安装fpm
gem install fpm -v 1.4.0
2、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
支持的源类型包:
dir: 将目录打包成所需要的类型,可以用于源码编译安装的软件包 rpm: 对rpm进行转换 gem: 对rubygem包进行转换 python: 将Python模块打包成相应的类型 支持的目标类型包:
rpm: 转换为rpm包 deb: 转换为deb包 solaris: 转换为solaris包 puppet: 转换为puppet包
3、打包
以我自己的一个小工具为例子
3.1、在当前目录下创建临时目录
tmp
├── etc
│ └── supervisor
│ └── conf.d
│
└── home
└── gonghh
└── log
3.2、编译项目
go build hot
3.3、拷贝运行项目到临时目录
tmp
├── etc
│ └── supervisor
│ └── conf.d
│ └── hot.supervisor.conf
└── home
└── gonghh
├── hot
├── hot.conf
├── hot.supervisor.conf
└── log
3.4、打包
fpm -s dir -t rpm -n hot -v 1.0.2 -C tmp -f
便生成了hot-1.0.2-1.x86_64.rpm
3.5、查看rpm包
rpm -qpl hot-1.0.2-1.x86_64.rpm
/etc/supervisor/conf.d/hot.supervisor.conf
/home/gonghh/hot.conf
/home/gonghh/hot
/home/gonghh/hot.supervisor.conf
/home/gonghh/log
3.6、安装
rpm -i hot-1.0.2-1.x86_64.rpm
查看安装信息
rpm -qi hot
Name : hot Relocations: /
Version : 1.0.2 Vendor: ***********
Release : 1 Build Date: Tue 29 Nov 2016 06:26:58 PM CST
Install Date: Tue 29 Nov 2016 06:34:38 PM CST Build Host: *********
Group : default Source RPM: hot-1.0.2-1.src.rpm
Size : 1507 License: unknown
Signature : (none)
Packager : ******************
URL : ****************
Summary : no description given
Description :
no description given
查看安装目录
/home/gonghh/
├── hot.conf
├── hot
├── hot.supervisor.conf
└── log
/etc/supervisor/conf.d/
├── hot.supervisor.conf
3.7、卸载rpm
rpm -e hot
查看卸载后的安装目录
/home/gonghh/
0 directories, 0 files
ll /etc/supervisor/conf.d/hot.supervisor.conf
ls: cannot access /etc/supervisor/conf.d/hot.supervisor.conf: No such file or directory
- ZooKeeper 可视化监控 zkui
- 关于RBAC(Role-Base Access Control)的理解
- Spring Boot 中使用 Kafka
- 如何评价一段代码
- java系统高并发的解决方案
- Spring Boot 中使用 Redis
- 使用 Jedis 连接操作 Redis
- 浅析ReDoS的原理与实践
- 使用 Executors,ThreadPoolExecutor,创建线程池,源码分析理解
- CentOS+Nginx+Tomcat搭建高性能负载均衡集群
- Java 四种线程池的使用
- 搭建 Jenkins-2.83 服务,部署 spring boot 项目
- Spring Boot 中使用 Java API 调用 lucene
- Spring Boot 中使用 Java API 调用 Elasticsearch
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法