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包, 并下载到本地:
[root@backup tmp]# find /var/cache/ -type f -name "*rpm"|xargs cp -t /tmp/
[root@backup 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
[root@backup tmp]#
[root@backup tmp]# cd /tmp/ && tar zcf nginx_yum.tar.gz *.rpm
[root@backup tmp]# ls nginx_yum.tar.gz
nginx_yum.tar.gz
[root@backup tmp]#
[root@backup 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包
[root@db01 scripts]# rpm -qpi nginx-1.6.3-1.x86_64.rpm
Name : nginx Relocations: /
Version : 1.6.3 Vendor: root@m01
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 : <root@m01>
URL : http://example.com/no-uri-given
Summary : no description given
Description :
no description given
[root@db01 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
[root@db01 scripts]#
3. 安装rpm包
3.1 找一台需要安装nginx的机器,上传前面制作好的:nginx-1.6.3-1.x86_64.rpm和nginx_yum.tar.gz 到新的机器。
[root@grewan 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
[root@grewan tools]#
3.2解压nginx_yum.tar.gz,把所有的依赖包放到同一个目录下,使用rpm 明确一起安装:
[root@grewan tools]# tar xf nginx_yum.tar.gz
[root@grewan 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
[root@grewan tools]#
3.3开始安装
[root@grewan 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%]
[root@grewan tools]#
3.4查看安装结果
[root@grewan tools]# ls /application/nginx
conf html logs sbin
[root@grewan 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依赖即可。
FPM简介(定制rpm包)的更多相关文章
- FPM定制RPM包实践
1.1 快速部署方案 ✔ 问题:当领导给你 100 台已经安装好系统的服务器,然后让优化,让你提出一个快速部署方案. 解答: 1.tar 打包 先编译安装 打包-->分发-->解包(比如 ...
- 自动化部署必备技能—部署yum仓库、定制rpm包
部署yum仓库.定制rpm包 目录 第1章 扩展 - yum缓存 1.1 yum缓存使用步骤... 1 1.1.1 导言... 1 1.1.2 修改配置文件... 1 1.1.3 使用缓存... 1 ...
- 搭建yum仓库与定制rpm包
笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 当我们自动化部署集群的时候,想要快速的安装所有服务,搭建yum仓库与定制rpm包是我们首先要做的 原创作品,转载请 ...
- FPM定制RPM包
安装FPM FPM是ruby写的打包工具,ruby版本要大于1.8.5 #安装ruby环境和gem包管理器 [root@test88 ~]# yum install -y ruby rubygems ...
- 利用fpm定制rpm包
环境说明 系统版本 CentOS 6.9 x86_64 软件版本 fpm-1.4.0 1.安装ruby环境 fpm利用ruby编程语言开发,先安装ruby的环境 [root@m01 ~]# ...
- linux系统之定制rpm包
FPM打包工具 FPM的作者是jordansissel FPM的github:https://github.com/jordansissel/fpm FPM功能简单说就是将一种类型的包转换成另一种类型 ...
- 基于FPM制作nginx RPM包
目录 环境 配置 FPM安装 环境 系统 其它 CentOS 7.5 需提前配置好epel 配置 [root@localhost ~]# yum clean all && yum ma ...
- fpm打包神奇rpm包升级python2.7.16
fpm打包神器参考文档:https://www.cnblogs.com/flintlovesam/p/6594635.html FPM的安装:安装ruby环境和gem命令: yum -y instal ...
- fpm 打包跨平台rpm 包的一个问题
平时我们开发机器可能使用的是mac 系统,但是部署机器kennel是linux,默认会有一个操作系统的问题, 我们可以在打包的时候指定os版本信息 参考 --rpm-os linux 参考例子 一个构 ...
随机推荐
- 洛谷 2149 [SDOI2009]Elaxia的路线
题目描述 最近,Elaxia和w的关系特别好,他们很想整天在一起,但是大学的学习太紧张了,他们 必须合理地安排两个人在一起的时间.Elaxia和w每天都要奔波于宿舍和实验室之间,他们 希望在节约时间的 ...
- Flask——向博客文章中添加图片
未添加图片样式 添加图片设置: 1.允许渲染img标签 在数据库文章模型allowed_tags中添加img 2.给clean函数加个参数attributes=attrs, attrs = { '*' ...
- @雅礼集训01/10 - T1@ matrix
目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定一个矩阵.求它的所有子矩阵中本质不同的行的个数之和. inp ...
- 「POI2012」约会 Rendezvous
#2691. 「POI2012」约会 Rendezvous 这题我简直不想说什么了,什么素质,卡常数…… “每个顶点有且仅有一条出边”,所以是一道基环树的题,首先tarjan缩点,在缩完点后的图上求a ...
- 5、nginx配置
1.安装 sudo apt-get install nginx 2.启用 sudo service nginx start 3.若要将 Nginx 配置为转发请求向 ASP.NET Core 应用程序 ...
- BLOB类型对应Long binary,CLOB对应Long characters
BLOB类型对应Long binary,CLOB对应Long characters
- 第一次作业:C++ 函数重载
函数重载 函数重载是在C语言的学习中未涉及的新概念.我们在编程时经常会遇到这样一个问题:我们编写完一个函数准备准备调用时,一旦需要传入不同的数据类型的参数时,一个函数无法实现,我们又必须重写另一个或者 ...
- Chrome接口请求一直是pending状态,但接口实际上是正常的
1.现象 个别机器突然出现Chrome访问我司产品异常,本该通过接口获取的数据没有呈现,之前都是好好的,而且其他机器同样用同版本Chrome访问正常. 出现问题的机器重装Chrome问题依然存在,直到 ...
- 一个简单的hexo搭建博客网站的故事
首先安装hexo mkdir hexo #创建一个文件夹 cd hexo #切换到hexo目录下面 npm install -g hexo-cli npm install hexo --save 然后 ...
- HDU 2546 01背包问题
这里5元是个什么意思呢.差不多就是特殊情况了. 就是说最贵的那个东西先不买.并且最后要留下5元去买那个最贵的. 也就是说对现在金钱-5 拿剩下的钱去对减去最贵的商品后的商品dp.看这些剩下的钱能买多少 ...