一键搭建yum仓库定制rpm包
自动化部署必备技能―定制化RPM包回顾下安装软件的三种方式:1、编译安装软件,优点是可以定制化安装目录、按需开启功能等,缺点是需要查找并实验出适合的编译参数,诸如MySQL之类的软件编译耗时过长。 这里也不介绍rpm的概念,想了解的朋友可以查看http://www.ibm.com/developerworks/cn/linux/l-rpm/。 这里也不介绍rpmbuild这个打包工具了,想了解的朋友自行谷歌百度。但我不建议大家花太多的时间去学习这个命令,比较晦涩,而且我会在下面介绍更简单的命令。 FPM打包工具FPM的作者是jordansissel 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. 安装nginxyum-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包的三种方法:
[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-ylocalinstallnginx-1.6.2-1.x86_64.rpm这个命令会自动先安装rpm包的依赖,然后再安装rpm包。
注意事项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/ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |