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、进入目录预编译[[email protected] opt]# cd nginx-1.14.0

[[email protected] nginx-1.14.0]#
[[email protected] 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、脚本

[[email protected] 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 $?

[[email protected] 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

原文地址:https://www.cnblogs.com/heruiguo/p/8890489.html

时间: 2024-10-18 18:52:55

fpm制作rpm包的相关文章

fpm 制作rpm包

简介 fpm:对包的类型进行转换,从一种类型转换到另一种类型 1安装环境 fpm是ruby写的,系统环境需要rbuy yum install -y ruby ruby-devel rubygems rpm-bu ild 2 安装fpm gem install fpm 3.常用语法 常用命令: -a 系统架构名称,如果是noarch则为'-a all' 或者 '-a native' -s:指定源类型 -t:指定目标类型,即想要制作为什么包 -n:指定包的名字 -v:指定包的版本号 -C:指定打包的

基于FPM制作RPM包

1.搭建Epel  Yum源 安装在线yum源 [[email protected] ~]# rpm -ivh epel-release-latest-7.noarch.rpm //安装扩展源 [[email protected] yum.repos.d]# ls a epel-release-latest-7.noarch.rpm epel-testing.repo Centos-7.repo epel.repo或   [[email protected] ~]# ls /etc/yum.re

fpm制作rpm包的准备工作

# uname -r 2.6.32-642.el6.x86_64 # cat /etc/redhat-release  CentOS release 6.8 (Final) 一 首先安装ruby 备注:(我使用centos yum 安装的最新版本也是1.87,安装fpm包会提示版本太低必须是1.9.3 之后的版本.) 1.安装RVM(Ruby 版本管理器)     curl -L get.rvm.io | bash -s stable 2. 配置RVM运行环境     source /etc/p

fpm工具来制作rpm包软件

第1章 rpm包的制作 1.1 fpm的概念介绍 FPM功能简单说就是将一种类型的包转换成另一种类型 1.1.1.支持的源类型 类型 说明 dir?? 将目录打包成所需要的类型,可以用于源码编译安装的软件包 rpm?? 对rpm进行转换 gem?? 对rubygem包进行转换 python 将python模块打包成相应的类型 1.1.2 支持的目标类型包 类型 说明 rpm??? 转换为rpm包 deb??? 转换为deb包 solaris 转换为solaris包 puppet 转换为puppe

速成制作rpm包

FPM 由于很多软件在安装时需要编译,这会浪费不少的时间,为了提升部署效率,于是就想到制作rpm包.通常rpm包的制作是使用rpmbuild命令来制作,但是你需要知道它的语法,比较繁琐.这就用到了FPM.FPM功能简单说就是将一种类型的包转换成另一种类型.FPM是Ruby模块,其实打包时也是调用rpmbuild命令. 支持的源类型包: dir 将目录打包成所需要的类型,可以用于源码编译安装的软件包 rpm 对rpm进行转换 gem 对rubygem包进行转换 python 将python模块打包

通过nginx源码包制作rpm包

目录 目录... 1 版权声明:... 2 文档信息:... 2 一.通过nginx源码包制作rpm包... 2 1.制作前环境准备:... 3 2.创建普通用户... 3 二.编写spec规则... 3 1.在模板里添加规则... 3 2.关于保存*.spec报错的解决... 4 2.1解决办法:... 5 2.2使用rpmbuild命令生成 rpm包... 5 三.在其他主机测试rpm包... 5 1. 需要按照依赖包... 5 2. 上传并安装nginxRPM包... 5 3. 查看端口开

使用源码文件简单制作RPM包

实验环境: 实验的系统:Centos7.2_x86.64 源码包文件1:fastdfs-master 源码包文件2:libfastcommon-master 去github作者的站点克隆上面两个源码包文件 git clone https://github.com/happyfish100/fastdfs.git git clone https://github.com/happyfish100/libfastcommon.git 查看源码文件版本并修改文件名 -libfastcommon-mas

制作rpm包

生产环境配置一样,每次都需要重新编译软件包,太费时间了,制作成rpm包,搞好依赖,瞬间搞定 这里使用rpmbuild来制作rpm包 rpmbuild默认工作路径由%_topdir的宏变量来定义,这个变量在/usr/lib/rpm/macros里的定义.也可使用rpmbuild命令查 rpmbuild --showrc |grep _topdir 结果如下: -14: _builddir %{_topdir}/BUILD-14: _buildrootdir %{_topdir}/BUILDROOT

手动制作rpm包

制作RPM包的过程,简单的说,就是为制作过程提供一个“工作车间”,即一个目录,里面需要包含以下几个子目录: BUILD        ————编译相关源码包时的工作目录: RPMS         ————生成的二进制格式的RPM包存放的位置: SOURCES ————程序的源码文件及其其他辅助文件的存放位置: SPCES        ————spec文件的存放位置: SRPMS      ————生成的SRC格式的RPM包存放位置: 如果用户目录主目录下没有类似目录结构,可以通过一个工具软件