fpm制作rpm包
一、前言
在企业中我们有事安装软件包。部分都是源码安装,如nginx安装路径都已经固化了,但实际业务中,我们都是把软件包安装到固定目录下,不满足需要,这是其一、其二,编译安装很耗时,比如mysql,特别是一些公司推行自动化,编译安装也不方便,容易出错。这是rpm包就很有用,废话少说,开始制作rpm包之旅吧。
二、rpm制作工具-fpm
FPM功能简单说就是将一种类型的包转换成另一种类型。对!就是简单易懂,不废话。
三、fpm软件的参数介绍
1、支持的源类型包
dir 将目录打包成所需要的类型,可以用于源码编译安装的软件包
rpm 对rpm进行转换
gem 对rubygem包进行转换
python 将python模块打包成相应的类型
2、支持的目标类型包
rpm 转换为rpm包
deb 转换为deb包
solaris 转换为solaris包
puppet 转换为puppet模块
3、常用参数
-s 指定源类型
-t 指定目标类型,即想要制作为什么包
-n 指定包的名字
-v 指定包的版本号
-C 指定打包的相对路径 Change directory to here before searching forfiles
-d 指定依赖于哪些包
-f 第二次打包时目录下如果有同名安装包存在,则覆盖它
-p 输出的安装包的目录,不想放在当前目录下就需要指定
--post-install 软件包安装完成之后所要运行的脚本;同--after-install
--pre-install 软件包安装完成之前所要运行的脚本;同--before-install
--post-uninstall 软件包卸载完成之后所要运行的脚本;同--after-remove
--pre-uninstall 软件包卸载完成之前所要运行的脚本;同--before-remove
四、fpm安装
fpm是ruby写的,因此系统环境需要ruby,且ruby版本号大于1.8.5。
# 安装ruby模块
yum -y install ruby rubygems ruby-devel gcc rpm-build
# 查看当前使用的rubygems仓库
gem sources list
# 添加淘宝的Rubygems仓库,外国的源慢,移除原生的Ruby仓库
gem sources --add https://ruby.taobao.org/ && gem sources --remove https://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
五、制作rpm包
以nginx为例
1、下载nginx的源码包
wget http://nginx.org/download/nginx-1.14.0.tar.gz
2、安装nginx依赖
yum install openssl openssl-devel pcre pcre-devel zlib zlib-devel gcc -y
3、解压
tar -zxvf nginx-1.14.0.tar.gz
4、进入目录预编译[root@localhost opt]# cd nginx-1.14.0
[root@localhost nginx-1.14.0]#
[root@localhost nginx-1.14.0]# ./configure \
--prefix=/opt/pmo/nginx \
--user=nginx \
--group=nginx \
--with-pcre \
--with-stream \
--with-http_ssl_module \
--with-http_flv_module \
--with-http_realip_module \
--with-http_sub_module \
--with-http_dav_module \
--with-http_addition_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--with-debug \
5、编译
make -j24 //使用多核编译
6、创建目录
mkdir -p /temp/fpm_install/
7、安装到制定的目录中
make -j24 install DESTDIR=/temp/fpm_install/
8、脚本
[root@localhost nginx-1.6.2]# cat install_after.sh
#!/bin/bash
source /etc/rc.d/init.d/functions
groupadd -r nginx
useradd -r -g nginx
nginx exit $?
[root@localhost nginx-1.6.2]# cat remove_after.sh
#!/bin/bash
source /etc/rc.d/init.d/functions
rm -rf /usr/local/nginx
rm -rf /etc/nginx userdel
nginx exit $?
9、制作nginx的rpm包
fpm -f -s dir \
-t rpm \
-n nginx \
-v 1.14.0 \
--iteration 1.el6 \
-C /opt/nginx-1.14.0/ \
-p /temp/nginx_rpm/ \
--description 'nginx1.14.0_rpm' \
--url 'http://nginx.org/en/' \
--after-install /opt/fpm_install/install_after.sh \
--after-remove /opt/fpm_install/remove_after.sh
8、出现的错误:

1、创建缺少的目录
mkdir -p /temp/nginx_rpm
2、安装rpm-build
yum install rpm-build -y
fpm制作rpm包的更多相关文章
- 利用fpm制作rpm包
使用fpm制作rpm包 安装如下 [root@web01 ~]# yum install -y gcc zlib zlib-devel wget http://ruby.taobao.org/mirr ...
- fpm 制作rpm包
使用fpm命令制作rpm包并安装 工作中有如下情况需要将文件打包rpm: 避免重复工作,将源码程序打包为rpm 使用yum发布项目,项目打包为rpm 将自己写好的程序打包为rpm,提供给用户下载 其他 ...
- fpm 制作 rpm 包
支持的 源类型包 ① dir : 将目录打包成所需要的类型, 可用于源码编译安装软件包 ② rpm : 对 rpm 包进行转换 ③ gem : 对 rubygem 包进行转换 ④ python : 将 ...
- Linux基于FPM制作RPM包(以Nginx为例)
1.搭建Epel Yum源 安装在线yum源 [root@localhost ~]# rpm -ivh epel-release-latest-.noarch.rpm //安装扩展源 [root@ ...
- linux制作RPM包
制作rpm包 1.制作流程1.1 前期工作 1)创建打包用的目录rpmbuild/{BUILD,SPECS,RPMS, SOURCES,SRPMS} 建议使用普通用户,在用户家目录中创建 2)确定好制 ...
- 制作RPM包
RPM包制作过程 1.1 前期工作 1)创建打包用的目录rpmbuild/{BUILD,SPECS,RPMS, SOURCES,SRPMS} 建议使用普通用户,在用户家目录中创建 2)确定好制作的对象 ...
- fpm工具来制作rpm包软件
第1章 rpm包的制作 1.1 fpm的概念介绍 FPM功能简单说就是将一种类型的包转换成另一种类型 1.1.1.支持的源类型 类型 说明 dir 将目录打包成所需要的类型,可以用于源码编译安装的 ...
- 速成制作rpm包
FPM 由于很多软件在安装时需要编译,这会浪费不少的时间,为了提升部署效率,于是就想到制作rpm包.通常rpm包的制作是使用rpmbuild命令来制作,但是你需要知道它的语法,比较繁琐.这就用到了FP ...
- FPM定制RPM包实践
1.1 快速部署方案 ✔ 问题:当领导给你 100 台已经安装好系统的服务器,然后让优化,让你提出一个快速部署方案. 解答: 1.tar 打包 先编译安装 打包-->分发-->解包(比如 ...
随机推荐
- FFT自看
https://www.cnblogs.com/RabbitHu/p/FFT.html 先去看这个... 我觉得代码还是https://blog.csdn.net/WADuan2/article/d ...
- 【题解】 Codeforces 919F A Game With Numbers(拓扑排序+博弈论+哈希)
懒得复制,戳我戳我 Solution: 我感觉我也说不太好,看Awson的题解吧. 说一点之前打错的地方: 连边存的是hash后的数组下标 if(ans[ num( C[a.hash()] , C[b ...
- HGOI 20181030晚 题解
Problem:给出全班人的个数总分和小明的分数(满分100分),求小明最低排名和最高排名 sol:假设小明的排名为k,总分为sum,小明的分数是r, 贪心求解, 最坏情况下,小明前面的比小明高一分( ...
- bzoj1030: [JSOI2007]文本生成器(AC自动机+DP)
第一次写这类题...懵 直接计算答案不好计算,所以补集转化求不合法的方案. 首先考虑朴素的DP,设$f(i, s)$表示前$i$个字符,字符串为$s$的方案数,且任意一个给定串都不存在$s$中. 我们 ...
- Java: 扩大字节缓存区的大小,提升AIO的处理性能(并发性能)
前些日了,对AIO与NIO的并发性能进行了比较,在低并发的情况下,NIO性能表现比AIO好一些,主要原因是,NIO中可以使用FileChannel.transferTo(long position, ...
- (转)flask的context机制
本文转自:https://blog.tonyseek.com/post/the-context-mechanism-of-flask/ 作者:无知的 TonySeek 注意:本文仅仅作为个人mark, ...
- 一个java版本的简单邮箱小爬虫
//趁着有空回头复习了一把正则表达式/* 以下代码以百度某个贴吧的 URL 作为源,实现了读取 EmailAddress 并写入文件保存起来的两个功能,如果要爬取其它信息,可以改写正则实现相应功能 要 ...
- 第5月第13天 node cnpm安装 babel
1. https://nodejs.org/en/download/ http://www.runoob.com/react/react-install.html 2. npm install --s ...
- Metasploit输出重定向到文件
Metasploit是我们经常会使用到的神器,但是运行exploit/run无法保存输出信息,查看不是很方便. 现在可以使用spool来保存输出信息: Metasploit Framework Con ...
- mybatis一对一关联查询——(八)
1.需求 查询所有订单信息,关联查询下单用户信息. 注意: 因为一个订单信息只会是一个人下的订单,所以从查询订单信息出发关联查询用户信息为一对一查询.如果从用户信息出发查询用户下的订单信息则为一对多查 ...