FPM简介(定制rpm包)

FPM简介

fpm是生成rpm包的工具。rpm包的制作,采用fpm工具完成,FPM非常易用,此命令可以把rpm包的安装、卸载做得更加优雅,在安装前可以做一些准备工作,安装后可以做一些收尾工作,在卸载前也可以做一些准备,比如检测一下相应的服务是否停止了,在卸载软件再做一些扫尾的工作,只要把这些定义成一个个脚本,fpm中指定相应的选项即可轻松实现。
FPM的github: https://github.com/jordansissel/fpm

FPM安装

gem sources –a http://mirrors.aliyun.com/rubygems/
gem sources --remove http://rubygems.org/
gem install fpm -v 1.4.0
yum -y install ruby rubygems ruby-devel gcc

1. 准备操作

1.1准备好nginx的安装包,统一放在/application/tools/目录下

/home/oldboy/tools
cd /application/tools/
wget http://nginx.org/download/nginx-1.6.3.tar.gz

1.2开启yum缓存,这样yum下载的包都会在本地保存

sed -i ‘s#keepcache=0#keepcache=1#g‘ /etc/yum.conf

1.3清空本机已有的yum缓存

find /var/cache/ -type f -name "*rpm" | xargs rm –f

2.编译安装nginx

2.1更改为国内yum源:

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

2.2安装相关依赖

 yum install pcre-devel openssl-devel –y

2.3打包rpm包, 并下载到本地: 

[[email protected] tmp]# find /var/cache/ -type f -name "*rpm"|xargs cp -t /tmp/
[[email protected] tmp]# ls /tmp/
keyutils-libs-devel-1.4-5.el6.x86_64.rpm    libselinux-2.0.94-7.el6.x86_64.rpm        openssl-1.0.1e-48.el6_8.1.x86_64.rpm
krb5-devel-1.10.3-57.el6.x86_64.rpm         libselinux-devel-2.0.94-7.el6.x86_64.rpm  openssl-devel-1.0.1e-48.el6_8.1.x86_64.rpm
krb5-libs-1.10.3-57.el6.x86_64.rpm          libselinux-utils-2.0.94-7.el6.x86_64.rpm  pcre-devel-7.8-7.el6.x86_64.rpm
libcom_err-devel-1.41.12-22.el6.x86_64.rpm  libsepol-devel-2.0.41-4.el6.x86_64.rpm    zlib-devel-1.2.3-29.el6.x86_64.rpm
[[email protected] tmp]#
[[email protected] tmp]# cd /tmp/ && tar zcf nginx_yum.tar.gz *.rpm
[[email protected] tmp]# ls nginx_yum.tar.gz
nginx_yum.tar.gz
[[email protected] tmp]#
[[email protected] tmp]# sz nginx_yum.tar.gz

2.4安装nginx

cd /home/oldboy/tools/
useradd nginx -M -s /sbin/nologin
tar xf nginx-1.6.3.tar.gz
cd nginx-1.6.3
./configure --prefix=/application/nginx-1.6.3 --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module
make && make install
ln -s /application/nginx-1.6.3/ /application/nginx

2.5编写脚本

mkdir -p /server/scripts/
cd /server/scripts/
cat nginx_rpm.sh 

#!/bin/bash
useradd nginx -M -s /sbin/nologin
ln -s /application/nginx-1.6.3/ /application/nginx

2.6使用fpm制作rmp包

fpm -s dir -t rpm -n nginx -v 1.6.3 -d ‘pcre-devel,openssl-devel‘ --post-install /server/scripts/nginx_rpm.sh -f /application/nginx-1.6.3/
sz nginx-1.6.3-1.x86_64.rpm

2.7检查制作好的rpm包

[[email protected] scripts]# rpm -qpi nginx-1.6.3-1.x86_64.rpm
Name        : nginx                        Relocations: /
Version     : 1.6.3                             Vendor: [email protected]
Release     : 1                             Build Date: 2016年06月29日 星期三 07时13分07秒
Install Date: (not installed)               Build Host: m01
Group       : default                       Source RPM: nginx-1.6.3-1.src.rpm
Size        : 5252902                          License: unknown
Signature   : (none)
Packager    : <[email protected]>
URL         : http://example.com/no-uri-given
Summary     : no description given
Description :
no description given
[[email protected] scripts]# rpm -qp --scripts  nginx-1.6.3-1.x86_64.rpm
postinstall scriptlet (using /bin/sh):
#!/bin/bash
useradd nginx -M -s /sbin/nologin
ln -s /application/nginx-1.6.3/ /application/nginx
[[email protected] scripts]#

3. 安装rpm包

3.1 找一台需要安装nginx的机器,上传前面制作好的:nginx-1.6.3-1.x86_64.rpm和nginx_yum.tar.gz 到新的机器。

[[email protected] tools]# ls -l
总用量 6564
-rw-r--r-- 1 root root 2273452 6月  29 07:13 nginx-1.6.3-1.x86_64.rpm
-rw-r--r-- 1 root root 4442091 6月  29 06:57 nginx_yum.tar.gz
[[email protected] tools]#

3.2解压nginx_yum.tar.gz,把所有的依赖包放到同一个目录下,使用rpm 明确一起安装:

[[email protected] tools]# tar xf nginx_yum.tar.gz
[[email protected] tools]# ls
keyutils-libs-devel-1.4-5.el6.x86_64.rpm    libselinux-devel-2.0.94-7.el6.x86_64.rpm  openssl-1.0.1e-48.el6_8.1.x86_64.rpm
krb5-devel-1.10.3-57.el6.x86_64.rpm         libselinux-utils-2.0.94-7.el6.x86_64.rpm  openssl-devel-1.0.1e-48.el6_8.1.x86_64.rpm
krb5-libs-1.10.3-57.el6.x86_64.rpm          libsepol-devel-2.0.41-4.el6.x86_64.rpm    pcre-devel-7.8-7.el6.x86_64.rpm
libcom_err-devel-1.41.12-22.el6.x86_64.rpm  nginx-1.6.3-1.x86_64.rpm                  zlib-devel-1.2.3-29.el6.x86_64.rpm
libselinux-2.0.94-7.el6.x86_64.rpm          nginx_yum.tar.gz
[[email protected] tools]#

3.3开始安装

[[email protected] tools]# rpm -Uvh --aid *rpm
Preparing...                ########################################### [100%]
   1:libselinux             ########################################### [  8%]
   2:krb5-libs              ########################################### [ 15%]
   3:openssl                ########################################### [ 23%]
   4:zlib-devel             ########################################### [ 31%]
   5:pcre-devel             ########################################### [ 38%]
   6:libsepol-devel         ########################################### [ 46%]
   7:libselinux-devel       ########################################### [ 54%]
   8:libcom_err-devel       ########################################### [ 62%]
   9:keyutils-libs-devel    ########################################### [ 69%]
  10:krb5-devel             ########################################### [ 77%]
  11:openssl-devel          ########################################### [ 85%]
  12:nginx                  ########################################### [ 92%]
  13:libselinux-utils       ########################################### [100%]
[[email protected] tools]#

3.4查看安装结果

[[email protected] tools]# ls /application/nginx
conf  html  logs  sbin
[[email protected] tools]#

3.5定制LNMP的RPM包思路 

1. 编译安装好nginx,php,mysql,此处有一个问题,就是php的大部分依赖环境是通过yum安装的,但有一个libiconv-1.14.tar.gz包需要编译安装,安装时已经指定了安装目录,只需一同打包即可。
2. 还有一个问题,就是mysql这个目录比较大,用fpm打包耗时比较长,平时我们有可能需要对nginx或php做优化,这样又得重新打包。因此我们可以将mysql分离出来,分别打包,只需要在制作nginx+php的rpm包时添加mysql依赖即可。

时间: 2024-12-21 12:24:17

FPM简介(定制rpm包)的相关文章

FPM定制RPM包

软件安装的常见方式: 1.编译安装: 优点:可以定制化安装目录,按需开启功能等. 缺点:需要查找并实验出合适的编译参数,诸如MySQL之类的软件编译耗时过长. 2.yum安装软件 优点:全自动化安装,不需要为依赖问题发愁. 缺点:自主性太差,软件的功能.存放位置都固定好了,不易变更(定制rpm包恰好解决这一问题) FPM打包工具: 1.简介: FPM的作者是Jordansissel FPM的GITHUB:https://github.com/jordansissel/fpm 官网:http://

Fpm 之 Apache2 rpm 包定制

Fpm 之 Apache2 rpm 包定制 一.下载Apache2 的所需的安装编译包 apr包下载:(/app/software) wget http://mirror.bit.edu.cn/apache//apr/apr-1.6.3.tar.gz arp-util包下载:(/app/software) http://mirror.bit.edu.cn/apache//apr/apr-util-1.6.1.tar.gz httpd-2.4.33包下载:(/app/software) wget

定制RPM包

目录 1. 安装软件的方式... 1 2. 定制RPM包... 1 2.1 RPM简介... 2 2.2 fpm工具介绍... 2 2.3 FPM安装  *****. 3 2.4 yum安装时如何解决依赖问题的... 4 3. 实战定制nginx的RPM包  *****. 4 3. 安装rpm包  *****. 7 4. 定制LNMP的RPM包思路... 8 1. 安装软件的方式 1 编译安装软件 优点:定制优化安装目录:按需开启功能:可定制(定制安装目录和软件功能),一般情况下不需要网络,可选

Linux 定制rpm包

 定制rpm包 说明:这些操作全部在管理服务器内操作. 定制rpm包,搭建内网yum仓库,通过kickstart批量系统安装,这是互联网企业运维自动化的必要技能,自动化运维的基石. 1.1 面试题 有100台服务器想安装系统.你有什么方案快速部署并优化吗?需要多少时间搞定? 1.1.1 解决方案 (1) tar打包:先编译安装.打包.批量分发.解包: (2) saltstack.puppet.ansible批量部署: (3) 定制rpm所.搭建yum仓库.yum安装: (4) openstack

自动化部署必备技能——定制RPM包

回顾下安装软件的三种方式: 1.编译安装软件,优点是可以定制化安装目录.按需开启功能等,缺点是需要查找并实验出适合的编译参数,诸如MySQL之类的软件编译耗时过长. 2.yum安装软件,优点是全自动化安装,不需要为依赖问题发愁了,缺点是自主性太差,软件的功能.存放位置都已经固定好了,不易变更. ===>如果你现在还为是使用编译安装软件还是使用yum安装软件发愁,那你就out了. 3.编译源码,根据自己的需求做成定制RPM包–>搭建内网yum仓库–yum安装.结合前两者的优点,暂未发现什么缺点.

一键自动化部署(定制rpm包,yum仓库)

部署--前篇 上午将MySQL多实例部署完成,由于有公司特定一些需求,需要源码安装,现在需要批量部署,如果一台台部署,就太过麻烦,而且浪费时间,这个时候自动化部署 就体现出价值了 我们将MySQL制作定制化rpm包,然后放到我们的yum仓库中,在将yum所有客户端,都指向yum源,之后就是喝喝茶,看看片,轻松批量部署了,废话不多说,开干. 如果MySQL多实例还没配置的,或不了解软件的安装方式 的 请参考:http://qiuyt.blog.51cto.com/1229789/1920686 一

如何搭建yum仓库与定制rpm包

当我们自动仳部署集群的时候,想要快速的安装所有服务,搭建yum仓库与定制rpm包是我们首先要做的 原创作品,转载请注明出处.http://www.cnblogs.com/Csir/  本人导师---悠久之翼 #服务端1.#先保留平常下载下来的rpm包 sed -i 's#keepcache=0#keepcache=1#g' /etc/yum.conf 这样当我们yum安装软件的时候,文件就是被保存下来: /var/cache/yum/ #部署nginx,提供80端口服务#安装依赖包 yum in

定制rpm包及搭建yum仓库

定制rpm包及搭建yum仓库 第1章 定制rpm包 1.FPM打包工具 FPM的作者是jordansisselFPM的github:https://github.com/jordansissel/fpmFPM功能简单说就是将一种类型的包转换成另一种类型. 支持的源类型包: dir         将目录打包成所需要的类型,可以用于源码编译安装的软件包 rpm         对rpm进行转换 gem         对rubygem包进行转换 python      将python模块打包成相应

定制rpm包、搭建yum仓库

一.定制rpm包 1.环境 [[email protected] ~]# cat /etc/redhat-release  CentOS release 6.9 (Final) [[email protected] ~]# uname -r2.6.32-696.el6.x86_64 [[email protected] ~]# /etc/init.d/iptables status iptables: Firewall is not running. [[email protected] ~]#