mysql RPM打包

本文介绍如何通过mysql的源码包进行RPM包的打包。

主要的流程包括: 获取源码包-》解压-》在解压中编译并生成spec文件-》创建RPM工作目录-》拷贝spec文件和源码包到工作目录-》进行打包

获取源码包:
源码包可以到官网下载,或者到lanchpad上用bazaar下载。 从官网上一般只能下载最新GA的社区版,lanchpad上一般是最新的源码,虽然可以通过bazaar的版本管理revert到期望的版本,但有时候找不到期望版本对应的revno(bzr中标识修改版本的编号)。 如果想下载不同版本的GA的社区版和企业版对应的代码,可以到percona的网站上下载: http://s3.amazonaws.com/percona.com/downloads/community/mysql-5.5.18.tar.gz
具体的版本可以用来替换5.5.18。
注:mysql5.0以后,基本所有GA的社区版都是单数,GA的企业版都是双数。 企业版版本上一般要稍微落后与社区版。 例如目前,GA的社区版是5.5.19,GA的企业版是5.5.18。

生成spec文件
mysql中的spec文件需要通过编译生成,生成后的spec文件在support-file文件夹内。
注:在编译过程中mysql通过cmake的configure_file命令通过mysql.spec.sh文件生成mysql.spec文件

创建工作目录
新建一个工作目录,在其中新建如下文件夹:
shell>mkdir-prpm/{BUILD,RPMS/i386,SOURCES,SPECS,SRPMS}
BUILD目录:编译时存放临时文件
SOURCES目录:存放.tar.gz源码包
SPECS目录:存放spec文件
RPMS目录:存放打包好的rpm文件
SRPMS目录:存放src.rpm文件。
修改/home/【用户名】/.rpmmacros文件 (如果没有就新建)
添加如下内容:
%_topdir 工作目录路径
注:如果是X86_64机器,把i386替换一下就好

拷贝spec文件和源码包到工作目录
把spec文件放到SPECS目录 (通过指定 _topdir 可以在任意地方执行spec文件
把源码包放到SOURCES目录

进行打包
到SPECS目录,执行:
>rpmbuild -ba mysql.spec

执行结束后生成的rpm包就在 RPMS/i386下了。

关于打补丁
mysql默认生成的 mysql.spec并不支持打补丁,所以需要我们自己写脚本去打补丁,或修改mysql.spec.sh文件。

下面是一个脚本例子: 这个脚本是在解压后没有进行编译的源码的上运行的

#!/bin/sh

#take patches     这里是打补丁,使用的是patch命令,也可以使用quilt
PS_DIR=$PWD
echo $PS_DIR
(cd patches; cat `cat series`) | patch -p1 -N -d $PS_DIR

#build rpm directory
rm -rf ~/rpmbuild
mkdir ~/rpmbuild
mkdir ~/rpmbuild/BUILD && mkdir ~/rpmbuild/BUILDROOT
mkdir ~/rpmbuild/RPMS && mkdir ~/rpmbuild/SOURCES && mkdir ~/rpmbuild/SPECS && ~/rpmbuild/SRPMS

#create tar.gz file
cd ../ && tar -zcvf mysql-5.5.18.tar.gz mysql-5.5.18
mv mysql-5.5.18.tar.gz ~/rpmbuild/SOURCES/

#rpmbuild
cd mysql-5.5.18/support-files && rpmbuild -ba mysql.5.5.18.spec

关于直接修改mysql.spec.sh:
1. 添加依赖的gcc与libaio-devel
在spec.sh文件的的开始部分有个
# ----------------------------------------------------------------------------
# Distribution support
# ----------------------------------------------------------------------------
在其后的每个�fine distro_buildreq 中添加cmake libaio-devel
如:
  �fine distro_buildreq            gcc-c++ gdbm-devel gperf ncurses-devel openldap2-client readline-devel zlib-devel cmake libaio-devel

找到spec文件中如下部分
####################
# Main spec file section
####################
在其后添加patch定义:
Patch: p.patch
Patch1:p1.patch
Patch2:p2.patch

最后找到预处理脚本程序的地方:
%prep
%setup -T -a 0 -c -n %{src_dir}

在其后添加打补丁的操作:
cd %{src_dir}
%patch -p1
%patch1 -p1
%patch2 -p1


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值