加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

一键搭建yum仓库定制rpm包

发布时间:2020-12-15 16:56:06 所属栏目:安全 来源:网络整理
导读:自动化部署必备技能―定制化RPM包 回顾下安装软件的三种方式: 1、编译安装软件,优点是可以定制化安装目录、按需开启功能等,缺点是需要查找并实验出适合的编译参数,诸如MySQL之类的软件编译耗时过长。 2、yum安装软件,优点是全自动化安装,不需要为依赖

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

回顾下安装软件的三种方式:

1、编译安装软件,优点是可以定制化安装目录、按需开启功能等,缺点是需要查找并实验出适合的编译参数,诸如MySQL之类的软件编译耗时过长。
2、yum安装软件,优点是全自动化安装,不需要为依赖问题发愁了,缺点是自主性太差,软件的功能、存放位置都已经固定好了,不易变更。
===>如果你现在还为是使用编译安装软件还是使用yum安装软件发愁,那你就out了。
3、编译源码,根据自己的需求做成定制RPM包?C>搭建内网yum仓库?Cyum安装。结合前两者的优点,暂未发现什么缺点。可能的缺点就是RPM包的通用性差,只能适用于本公司的环境。另外一般人不会定制RPM包。这是中大型互联网企业运维自动化的必要技能。

这里也不介绍rpm的概念,想了解的朋友可以查看http://www.ibm.com/developerworks/cn/linux/l-rpm/。

这里也不介绍rpmbuild这个打包工具了,想了解的朋友自行谷歌百度。但我不建议大家花太多的时间去学习这个命令,比较晦涩,而且我会在下面介绍更简单的命令。

FPM打包工具

FPM的作者是jordansissel
FPM的github:https://github.com/jordansissel/fpm
FPM功能简单说就是将一种类型的包转换成另一种类型。

1. 支持的源类型包

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

2. 支持的目标类型包

rpm转换为rpm包deb转换为deb包solaris转换为solaris包puppet转换为puppet模块

3. FPM安装

fpm是ruby写的,因此系统环境需要ruby,且ruby版本号大于1.8.5。#安装ruby模块yum-yinstallrubyrubygemsruby-devel#查看当前使用的rubygems仓库gemsourceslist#添加淘宝的Rubygems仓库,外国的源慢,移除原生的Ruby仓库gemsources--addhttps://ruby.taobao.org/--removehttp://rubygems.org/#安装fpm,gem从rubygem仓库安装软件类似yum从yum仓库安装软件。首先安装低版本的json,高版本的json需要ruby2.0以上,然后安装低版本的fpm,够用。geminstalljson-v1.8.3geminstallfpm-v1.3.3#上面的2步安装仅适合CentOS6系统,CentOS7系统一步搞定,即geminstallfpm

4. FPM参数

详细使用见fpm ?Chelp

常用参数

-s指定源类型-t指定目标类型,即想要制作为什么包-n指定包的名字-v指定包的版本号-C指定打包的相对路径Changedirectorytoherebeforesearchingforfiles-d指定依赖于哪些包-f第二次打包时目录下如果有同名安装包存在,则覆盖它-p输出的安装包的目录,不想放在当前目录下就需要指定--post-install软件包安装完成之后所要运行的脚本;同--after-install--pre-install软件包安装完成之前所要运行的脚本;同--before-install--post-uninstall软件包卸载完成之后所要运行的脚本;同--after-remove--pre-uninstall软件包卸载完成之前所要运行的脚本;同--before-remove

使用实例?C实战定制nginx的RPM包

1. 安装nginx

yum-yinstallpcre-developenssl-develuseraddnginx-M-s/sbin/nologintarxfnginx-1.6.2.tar.gzcdnginx-1.6.2./configure--prefix=/application/nginx-1.6.2--user=nginx--group=nginx--with-http_ssl_module--with-http_stub_status_modulemake&&makeinstallln-s/application/nginx-1.6.2//application/nginx

2. 编写脚本

[root@oldboy~]#cd/server/scripts/[root@oldboyscripts]#vimnginx_rpm.sh#这是安装完rpm包要执行的脚本#!/bin/bashuseraddnginx-M-s/sbin/nologinln-s/application/nginx-1.6.2//application/nginx

3. 打包

[root@oldboy~]#fpm-sdir-trpm-nnginx-v1.6.2-d'pcre-devel,openssl-devel'--post-install/server/scripts/nginx_rpm.sh-f/application/nginx-1.6.2/novalueforepochisset,defaultingtonil{:level=>:warn}novalueforepochisset,defaultingtonil{:level=>:warn}Createdpackage{:path=>"nginx-1.6.2-1.x86_64.rpm"}[root@oldboy~]#ll-hnginx-1.6.2-1.x86_64.rpm-rw-r--r--1rootroot6.7MNov110:02nginx-1.6.2-1.x86_64.rpm

4. 安装rpm包

安装rpm包的三种方法:

  • rpm命令安装

[root@LB-nginx-01~]#rpm-ivhnginx-1.6.2-1.x86_64.rpmerror:Faileddependencies:pcre-develisneededbynginx-1.6.2-1.x86_64openssl-develisneededbynginx-1.6.2-1.x86_64但会报如上依赖错误,需要先yum安装依赖才能安装rpm包。
  • yum命令安装rpm包

yum-ylocalinstallnginx-1.6.2-1.x86_64.rpm这个命令会自动先安装rpm包的依赖,然后再安装rpm包。
  • 搭建内网yum仓库
    YUM仓库搭建

注意事项

1. 相对路径问题

#相对路径[root@oldboynginx]#fpm-sdir-trpm-nnginx-v1.6.2.novalueforepochisset,defaultingtonil{:level=>:warn}Createdpackage{:path=>"nginx-1.6.2-1.x86_64.rpm"}[root@oldboynginx]#rpm-qplnginx-1.6.2-1.x86_64.rpm/client_body_temp/conf/extra/dynamic_pools/conf/extra/static_pools…………#绝对路径[root@oldboy~]#fpm-sdir-trpm-nnginx-v1.6.2/application/nginx-1.6.2/novalueforepochisset,defaultingtonil{:level=>:warn}Createdpackage{:path=>"nginx-1.6.2-1.x86_64.rpm"}[root@oldboy~]#rpm-qplnginx-1.6.2-1.x86_64.rpm/application/nginx-1.6.2/client_body_temp/application/nginx-1.6.2/conf/extra/dynamic_pools/application/nginx-1.6.2/conf/extra/static_pools/application/nginx-1.6.2/conf/fastcgi.conf/application/nginx-1.6.2/conf/fastcgi.conf.default…………使用rpm-qpl命令可以查看rpm包的内容。注:fpm类似tar打包一样,只是fpm打的包能够被yum命令识别而已。

2. 软链接问题

[root@oldboy~]#fpm-sdir-trpm-nnginx-v1.6.2/application/nginxnovalueforepochisset,defaultingtonil{:level=>:warn}Filealreadyexists,refusingtocontinue:nginx-1.6.2-1.x86_64.rpm{:level=>:fatal}#报错是因为当前目录存在同名的rpm包,可以使用-f参数强制覆盖。[root@oldboy~]#fpm-sdir-trpm-nnginx-v1.6.2-f/application/nginxnovalueforepochisset,defaultingtonil{:level=>:warn}Forceflaggiven.Overwritingpackageatnginx-1.6.2-1.x86_64.rpm{:level=>:warn}novalueforepochisset,defaultingtonil{:level=>:warn}Createdpackage{:path=>"nginx-1.6.2-1.x86_64.rpm"}打包看似成功,但查看包的内容,只是这一个软链接文件。[root@oldboy~]#rpm-qplnginx-1.6.2-1.x86_64.rpm/application/nginx原因:目录结尾的/问题,类似rm删除软链接目录

定制LNMP的RPM包思路

编译安装好nginx,mysql,php,此处有个问题,就是php的大部分依赖环境是通过yum安装的,但有一个libiconv-1.14.tar.gz包需要编译安装,安装时已经指定了安装目录,只需一同打包即可。

还有一个问题,就是mysql这个目录比较大,用fpm打包耗时长。平时我们有可能需要对nginx或php做优化,这样又得重新打包。因此我们可以将mysql分离出来,分别打包。只需在制作nginx+php的rpm包时添加mysql的依赖即可。

#参考命令[root@web2~]#fpm-sdir-trpm-nweb2-v1.1--description'lnmp.cms,bbs.blog'-d‘libxslt-devel,nfs-utils,rpcbind,mysql,libmcrypt-devel,mhash,mhash-devel,mcrypt'--post-install/server/scripts/lnmp-init.sh/application/usr/local/libiconv//app/logs//data0//server/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读