CentOS6.5系统自定义RPM包实践

前端之家收集整理的这篇文章主要介绍了CentOS6.5系统自定义RPM包实践前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

定制化RPM服务

第1章 RPM的原理及应用

1.1 RPM介绍

RPM全称是 Red Hat Package ManagerRed Hat包管理器)。几乎所有的 Linux 发行版本都使用这种形式的软件包管理安装、更新和卸载软件。

RPM是一个开放的软件包管理系统。它工作于Red Hat Linux以及其它LinuxUNIX 系统,可被任何人使用。redhat软件公司鼓励其它厂商来了解RPM并在自己的产品中使用它。RPM的发布基于GPL协议。对于最终用户来说,使用RPM所提供的功能来维护系统是比较容易和轻松的。安装、卸载和升级RPM软件包只需一条命令就可以搞定。RPM维护了一个所有已安装的软件包和文件数据库,可以让用户进行查询和验证工作。在软件包升级过程中,RPM会对配置文件进行特别处理,绝对不会丢失以往的定制信息。对于程序员RPM可以让我们连同软件的源代码打包成源代码和二进制软件包供最终用户使用。

RPM拥有功能强大的查询选项。我们可以搜索数据库查询软件包或文件。也可以查出某个文件属于哪个软件包或出自哪儿。RPM软件包中的文件是以压缩格式存放的,拥有一个定制的二进制头文件,其中包含有关包和内容的信息,可以让我们对单个软件包的查询简便又快速

RPM另一个强大的功能是进行软件包的验证。如果我们担心误删了某个软件包中的某个文件,我们就可以对它进行验证。任何非正常现象将会被通知。如果需要的话还可以重新安装该软件包。在重新安装过程中,所有被修改过的配置文件将被保留。

RPM设计目标之一就是要保持软件包的原始特征, 就象该软件的原始发布者发布软件时那样。通过使用RPM我们可以拥有最初的软件和最新的补丁程序,还有详细的软件构建信息。

概括的说:RPM有五种基本的操作功能(包括创建软件包):安装、卸载、升级查询、和验证。关于rpm命令的使用我们可以用以下命令:

rpm–help

1.2 RPM功能

1.2.1 安装

rpm-ivhname1.rpm...nameN.rpm

通过rpm -ivh可以把rpm软件包安装到系统中,使用该选项可以解决大部分rpm软件包的安装,可使用rpm --help查看详细的参数说明。

1.2.2 删除

rpm-ename1...nameN

可以使用-e参数卸载rpm包

1.2.3 升级

rpm-Uvhname1.rpm...nameN.rpm

由于开源软件更新速度快,用户当然要使用最新版本的软件包,此时最合适的就是rpm升级功能,当然最理想的参数选项就是-Uvh

1.2.4 查询

rpm-qoptionsname1

实际上我们通常使用rpm工具最多的功能还是它的查询功能,比如查看软件包的版本、依赖关系等软件包的详细说明都要用到。最有用的参数选项是-qpi

1.2.5 校验已安装的软件包

rpm-Vname1

可用通过-V参数来验证已安装软件包

第2章 FPM原理及应用

FPM的作者是jordansissel

FPMgithubhttps://github.com/jordansissel/fpm

FPM功能简单说就是将一种类型的包转换成另一种类型。

2.1 FPM支持的包类型

支持的源类型包:

包类型(源)

含义

dir

将目录打包成所需要的类型,可以用于源码编译安装的软件包

rpm

rpm包进行转换

gem

rubygem包进行转换

python

python模块打包成相应的类型

支持的目标类型包:

包类型(目标)

含义

rpm

转换为rpm

deb

转换为deb

solaris

转换为solaris

puppt

转换为puppet

2.2 安装FTP工具

fpmruby写的,因此系统环境需要ruby,且ruby版本号大于1.8.5

q 安装ruby模块

yum-yinstallrubyrubygemsruby-devel

q 查看当前使用的rubygems仓库

gemsourceslist

q 添加淘宝的Rubygems仓库,移除原生的Ruby仓库

gemsources--addhttps://ruby.taobao.org/--removehttp://rubygems.org/

q 安装一个低版本的json

geminstalljson-v1.8.3

q 安装FPM工具

geminstallfpm–v1.3.3

q 查看fpm版本

gemlistfpm
gemlistjson

注:centos7系统可直接gem install fpm安装

2.3 FTP参数详解

常用参数如下:

-s

指定源类型

-t

指定目标类型,即想要制作为什么包

-n

制定包的名字

-v

制定包的版本号

-C

指定打包的相对路径

-d

制定依赖于哪些包

-f

强制输出,会覆盖前一个版本(默认为false

-p

输出的安装包存放目录,如果不想放在当前目录就需要指定

--post-install

指定软件包安装完成后需要运行的脚本

--pre-install

指定软件包安装完成前需要运行的脚本

--post-uninstall

指定软件包卸载完成后需要运行的脚本

--pre-uninstall

指定软件包卸载完成前需要运行的脚本

第3章 定制Nginx服务实践

3.1 安装Nginx服务

yuminstallpcrepcre-developensshopenssl-devel-y
useradd-u888-s/sbin/nologin-Mwww
cd/usr/local/src
wgethttp://Nginx.org/download/Nginx-1.12.2.tar.gz
tarxfNginx-1.12.2.tar.gz
cdNginx-1.12.2
./configure--user=www--group=www--with-http_ssl_module--with-http_stub_status_module--prefix=/opt/Nginx-1.12.2
make&&makeinstall
ln-s/opt/Nginx-1.12.2/opt/Nginx

3.2 FPM打包脚本

安装之后需要执行的操作脚本:

[root@ntpscripts]#catNginx_rpm.sh
#!/bin/bash
#Date:2017-12-20
#Version:V1.0
#Description:dosomethingafterNginx.rpminstalled
user=`cat/etc/passwd|awk-F":"'{print$1}'|grep"www"|wc-l`
if[$user-eq0]
then
useradd-u888-s/sbin/nologin-Mwww
fi
ln-s/opt/Nginx-1.12.2/opt/Nginx

卸载之后需要执行的脚本:

#!/bin/bash
/opt/Nginx/sbin/Nginx-sstop
userdel-rfwww
rm-rf/opt/Nginx
rm-rf/opt/Nginx-1.12.2

3.3 FPM打包命令

[root@ntpscripts]#fpm-sdir-trpm-nNginx-v1.12.2-d"pcrepcre-developensshopenssl-devel"--post-install/service/scripts/Nginx_rpm.sh--pre-uninstall/service/scripts/Nginx_rpm_rm.sh-f/opt/Nginx-1.12.2
novalueforepochisset,defaultingtonil{:level=>:warn}
novalueforepochisset,defaultingtonil{:level=>:warn}
Createdpackage{:path=>"Nginx-1.12.2-1.x86_64.rpm"}

第4章 定制MysqL实践

4.1 安装MysqL数据库

cd/usr/local/src
wgethttp://mirrors.sohu.com/MysqL/MysqL-5.5/MysqL-5.5.55-linux2.6-x86_64.tar.gz
useradd-s/sbin/nologinMysqL-M
tarxfMysqL-5.5.55-linux2.6-x86_64.tar.gz
mvMysqL-5.5.55-linux2.6-x86_64/opt/MysqL-5.5.55
ln-s/opt/MysqL-5.5.55/opt/MysqL
chown-RMysqL.MysqL/opt/MysqL*

4.2 FPM打包脚本

安装前脚本:

#!/bin/bash

#addMysqL-serveruser
useradd-s/sbin/nologin-MMysqL

#createMysqLsoftlink
ln-s/opt/MysqL-5.5.55/opt/MysqL
chown-RMysqL.MysqL/opt/MysqL
chown-RMysqL.MysqL/opt/MysqL-5.5.55

#initMysqLdatabase
cd/opt/MysqL/scripts&&\
./MysqL_install_db--basedir=/opt/MysqL/--datadir=/opt/MysqL/data--user=MysqL>/dev/null

#configfile
\cp/opt/MysqL/support-files/my-small.cnf/etc/my.cnf

#startupscripts
cp/opt/MysqL/support-files/MysqL.server/etc/init.d/MysqLd
sed-i's#/usr/local/MysqL#/opt/MysqL#g'/etc/init.d/MysqLd
sed-i's#/usr/local/MysqL#/opt/MysqL#g'/opt/MysqL/bin/MysqLd_safe
sed-i's#basedir=$#basedir=/opt/MysqL#g'/etc/init.d/MysqLd
sed-i's#datadir=$#datadir=/opt/MysqL/data#g'/etc/init.d/MysqLd
chmod777/etc/init.d/MysqLd

#setenvvar
echo'exportPATH=/opt/MysqL/bin:$PATH'>>/etc/profile
source/etc/profile

卸载后脚本:

#!/bin/bash

#stopMysqLservice
/etc/init.d/MysqLdstop

#setenvvar
sed-i's#exportPATH=/opt/MysqL/bin:$PATH##g'/etc/profile
source/etc/profile

#removefile
rm-f/etc/init.d/MysqLd
rm-f/etc/my.cnf
rm-fr/opt/MysqL
rm-rf/opt/MysqL-5.5.55

#deleteMysqLuser
userdel-rMysqL

4.3 FPM打包命令

fpm-sdir-trpm-nMysqL-v5.5.55--post-install/service/scripts/MysqL_rpm.sh--post-uninstall/service/scripts/MysqL_rpm_rpm.sh-f/opt/MysqL-5.5.55
novalueforepochisset,defaultingtonil{:level=>:warn}
Createdpackage{:path=>"MysqL-5.5.55-1.x86_64.rpm"}

第5章 安装RPM

安装rpm包的三种方法

5.1 RPM命令安装

可以直接使用命令rpm安装,但此方法需要事先安装依赖包,有些时候很麻烦,不推荐:

rpm-ivhNginx-1.12.2-1.x86_64.rpm
Preparing...###########################################[100%]
1:Nginx###########################################[100%]

5.2 YUM本地安装

这个命令会自动先安装rpm包的依赖包,然后再安装rpm

yum-ylocalinstallNginx-1.12.2-1.x86_64.rpm

5.3 YUM仓库安装

搭建yum仓库,然后直接通过命令安装:

yum-yinstallNginx


自此,FPM自定义封装MysqLNginx服务完毕!
原文链接:https://www.f2er.com/centos/375004.html

猜你在找的CentOS相关文章