博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
RPM包定制-实战
阅读量:6955 次
发布时间:2019-06-27

本文共 6406 字,大约阅读时间需要 21 分钟。

Rpm-red hat包管理器

Rpm命令有五种基本功能;安装、卸载、升级、查询、验证

实战环境

[root@m01 ~]# cat /etc/redhat-release CentOS release 6.7 (Final)[root@m01 ~]# uname -r2.6.32-573.el6.x86_64[root@m01 ~]# getenforce Disabled[root@m01 ~]# /etc/init.d/iptables statusiptables:未运行防火墙。###设置yum缓存#####[root@m01 tools]# cat /etc/yum.conf [main]cachedir=/var/cache/yum/$basearch/$releaseverkeepcache=1 设置为1 yum后包保存下来/var/cache/yum/x86_64/6/base/packages/######清空本机已经有的yum缓存(find /var/cache/ -type f -name "*.rpm")

FPM常用参数

RPM包定制-实战

支持的源类型包

DIR 将目录打包成所需要的类型,可以用于源码编译的安装包.
RPM 对rpm进行转换
gem 对rubygem包进行转换.
python 将python模块打包成相应的类型

支持的目标类型包格式:

RPM 转换为RPM包
deb 转换为deb包
solaris 转换为solaris包
puppet 转换为puppet包

准备工作

安装FPM工具:
fpm是使用ruby语言编写的,因此系统环境需要ruby这个软件,并且版本号需要大于1.8.5

安装ruby模块

yum -y install ruby rubygems ruby-devel

  • 安装ruby的模块,ruby模块需要大于1.8.5*

添加阿里云的rubygems仓库,移除原生的yum仓库

gem sources -a http://mirrors.aliyun.com/rubygems/ ##增加阿里云的仓库gem sources --remove  http://rubygems.org   ##移除原有的仓库

安装FPM工具

gem install fpm -v 1.3.3

##指定安装1.3.3 版本,我们需求不大,只要能打包就足够了,没必要追求高版本

Fpm是ruby编写,因此系统吸引ruby且大于1.8.5

安装ruby

[root@m01 ~]# yum -y install ruby rubygems ruby-devel安装fpm[root@m01 ~]# gem sources -a http://mirrors.aliyun.com/rubygems/http://mirrors.aliyun.com/rubygems/ added to sources[root@m01 ~]# gem sources --remove http://rubygems.org/http://rubygems.org/ removed from sources

报错信息

[root@m01 ~]# gem install fpm -v 1.3.3ERROR:  Error installing fpm:    json requires Ruby version >= 1.9.
[root@m01 ~]# ruby -vruby 1.8.7 (2013-06-27 patchlevel 374) [x86_64-linux]

遇到以上错误请先安装以下两个软件,然后继续安装fpm1.3.3:

[root@m01 ~]# gem install json -v 1.8.3[root@m01 ~]# gem install ffi -v 1.9.18

再次安装fpm

[root@m01 ~]# gem install fpm -v 1.3.3

实战-定制nginx的rpm包

[root@m01 ~]# cd /application/[root@m01 application]# ll[root@m01 application]# mkdir -p tools

Wget编译包

[root@m01 tools]# wget http://10.0.0.61/nginx-1.6.3.tar.gz--2018-04-28 09:45:37--  http://10.0.0.61/nginx-1.6.3.tar.gz正在连接 10.0.0.61:80... 已连接。已发出 HTTP 请求,正在等待回应... 200 OK长度:805253 (786K) [application/x-gzip]正在保存至: “nginx-1.6.3.tar.gz”100%[=====================================>] 805,253     --.-K/s   in 0.08s   2018-04-28 09:45:42 (9.28 MB/s) - 已保存 “nginx-1.6.3.tar.gz” [805253/805253])

#####编译安装nginx (就安装我们上传的1.6.3版本)

yum -y install pcre-devel openssl-devel #安装必备的包

[root@m01 base]# find packages/ -type f -name "*rpm"packages/krb5-devel-1.10.3-65.el6.x86_64.rpmpackages/libselinux-utils-2.0.94-7.el6.x86_64.rpmpackages/libss-1.41.12-23.el6.x86_64.rpmpackages/openssl-1.0.1e-57.el6.x86_64.rpmpackages/libselinux-devel-2.0.94-7.el6.x86_64.rpmpackages/libselinux-2.0.94-7.el6.x86_64.rpmpackages/zlib-devel-1.2.3-29.el6.x86_64.rpmpackages/libsepol-devel-2.0.41-4.el6.x86_64.rpmpackages/libcom_err-1.41.12-23.el6.x86_64.rpmpackages/keyutils-libs-devel-1.4-5.el6.x86_64.rpmpackages/krb5-libs-1.10.3-65.el6.x86_64.rpmpackages/pcre-devel-7.8-7.el6.x86_64.rpmpackages/e2fsprogs-1.41.12-23.el6.x86_64.rpmpackages/e2fsprogs-libs-1.41.12-23.el6.x86_64.rpmpackages/libcom_err-devel-1.41.12-23.el6.x86_64.rpmpackages/libkadm5-1.10.3-65.el6.x86_64.rpmpackages/openssl-devel-1.0.1e-57.el6.x86_64.rpm

将依赖包移动到空的目录下并打包

[root@m01 base]# find packages/ -type f -name "*rpm"|xargs cp -t /tmp/[root@m01 ~]# cd /tmp/ && tar zcf nginx_yum.tar.gz *.rpm

编译安装nginx

[root@m01 tmp]# useradd nginx -M -s /sbin/nologin[root@m01 tmp]# cd /application/tools/[root@m01 tools]# tar xf nginx-1.6.3.tar.gz [root@m01 tools]# cd nginx-1.6.3[root@m01 nginx-1.6.3]# ./configure --prefix=/application/nginx-1.6.3 --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module[root@m01 nginx-1.6.3]#make && make install[root@m01 nginx-1.6.3]# ln -s /application/nginx-1.6.3/ /application/nginx

编写脚本

[root@m01 ~]# mkdir -p /server/scripts/[root@m01 scripts]# vim nginx_rpm.sh#!/bin/bashuseradd nginx -M -s /sbin/nologinln -s /application/nginx-1.6.3/ /application/nginx

* Fpm-打包**

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

格式语法解释:

-s 指定目录源类型 –t 打包类型 rpm  -n 包名称 –v 版本 –d ‘依赖包以逗号分隔多个’ --post-install 安装完程序后执行的脚本  -f 重名强制覆盖 ,可不带     整体类似tar  苹果+框
[root@m01 scripts]# 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.3no value for epoch is set, defaulting to nil {:level=>:warn}no value for epoch is set, defaulting to nil {:level=>:warn}Created package {:path=>"nginx-1.6.3-1.x86_64.rpm"}

RPM包定制-实战

[root@m01 scripts]# sz nginx-1.6.3-1.x86_64.rpm

Fpm命令与rpmbuild命令关系

Fpm命令其实是对rpmbuild命令进行封装,其实底层还是rpmbuild命令,因此系统必须要有rpmbuild命令

查看rpm包信息

RPM包定制-实战

查看包内容:
[root@m01 scripts]# rpm -qpl nginx-1.6.3-1.x86_64.rpm

/application/nginx-1.6.3/conf/fastcgi.conf/application/nginx-1.6.3/conf/fastcgi.conf.default/application/nginx-1.6.3/conf/fastcgi_params/application/nginx-1.6.3/conf/fastcgi_params.default/application/nginx-1.6.3/conf/koi-utf/application/nginx-1.6.3/conf/koi-win/application/nginx-1.6.3/conf/mime.types/application/nginx-1.6.3/conf/mime.types.default/application/nginx-1.6.3/conf/nginx.conf/application/nginx-1.6.3/conf/nginx.conf.default/application/nginx-1.6.3/conf/scgi_params/application/nginx-1.6.3/conf/scgi_params.default/application/nginx-1.6.3/conf/uwsgi_params/application/nginx-1.6.3/conf/uwsgi_params.default/application/nginx-1.6.3/conf/win-utf/application/nginx-1.6.3/html/50x.html/application/nginx-1.6.3/html/index.html/application/nginx-1.6.3/logs/application/nginx-1.6.3/sbin/nginx

查看包依赖

[root@m01 scripts]# rpm -qpR nginx-1.6.3-1.x86_64.rpm

pcre-devel  openssl-devel  /bin/sh  rpmlib(PayloadFilesHavePrefix) <= 4.0-1rpmlib(CompressedFileNames) <= 3.0.4-1

查看执行脚本,执行脚本不是以文件形式存在rpm中

[root@m01 scripts]# rpm -qp --scripts nginx-1.6.3-1.x86_64.rpm

postinstall scriptlet (using /bin/sh):#!/bin/bashuseradd nginx -M -s /sbin/nologinln -s /application/nginx-1.6.3/ /application/nginx
  • Fpm打包注意事项*
    RPM包定制-实战

安装rpm包

上传两个包依赖tar包以及nginx的rpm包

[root@m01 tools]# ll -h总用量 7.1M-rw-r--r-- 1 root root 2.2M 4月  28 2018 nginx-1.6.3-1.x86_64.rpm-rw-r--r-- 1 root root 5.0M 4月  28 2018 nginx_yum.tar.gz[root@m01 tools]# pwd/application/tools

RPM包定制-实战

安装报错处理

[root@chenleilei ~]# rpm -ivh nginx-1.6.3-1.x86_64.rpm
error: Failed dependencies:
pcre-devel is needed by nginx-1.6.3-1.x86_64
openssl-devel is needed by nginx-1.6.3-1.x86_64

解决办法:    1. yum 安装 这两个包    2. rpm -ivh openssl-devel-1.0.1e-42.e16.x86_64.rpm        rpm -ivh pcre-devel-7.8-7.e16.x86_64.rpm

转载于:https://blog.51cto.com/jungiewolf/2108800

你可能感兴趣的文章
Oracle使用rman进行表空间基于时间点的恢复
查看>>
DNS 多网段的反向记录
查看>>
mac效率工具
查看>>
Oracle imp和exp的使用
查看>>
软件工程---典型用户
查看>>
Acunetix Web Vulnerability Scanner 8.x.x 逆向
查看>>
判断是否是IP地址格式
查看>>
我心目中的牛程序员、我们可以对比看看(人家还是看多年朋友面子上才肯帮忙1周,至少需支付1万元辛苦费)...
查看>>
实际工作中遇到的技术难题与大家交流(工作流条件表达式计算部分),希望技术高手能给于指点...
查看>>
Yii 2 —— 记住密码
查看>>
javascript面向对象技术基础(六)
查看>>
HBase-1.0.1学习笔记(八)启动脚本解析
查看>>
Spring学习笔记AOP(四)
查看>>
运维工程师的职责和前景(下)
查看>>
Qt学习:QDomDocument
查看>>
复制本贴地址传给QQ/MSN好友的代码
查看>>
Nodejs的HTTP服务器
查看>>
thinkphp-execute
查看>>
bootstrap-缩略图-默认样式的实例
查看>>
Spring4-BeanPropertyRowMapper
查看>>