源代码rpm包 mysql_Linux下基于官方源代码RPM包构建自定义MySQL RPM包

rpmbuild时不要以root用户执行!

方法一:

1、首先安装rpmbuild

#yum install rpm-build gcc gcc-c++ cmake bison ncurses-devel zlib glibc libaio-devel  gperf  -y

2、下载官方源码包(tar.gz格式),并解压

#wget  http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.15.tar.gz

#tar -xvf mysql-5.6.15.tar.gz

3、新建RPM文件夹

#cd  mysql-5.6.15

#mkdir rpm

4、把准备好的spec文件拷贝到新建的rpm文件夹,然后开始重建RPM包,生成的RPM包放在~/rpmbuild/RPMS/x86_64 文件夹下。

#rpmbuild -bb mysql.spec      (会在当前用户家目录生成rpmbuild文件夹)

方法二:

如果想要查看原版spec文件,在原版基础上进行修改spec文件的话用以下方法:

1、首先安装rpmbuild

#yum install rpm-build gcc gcc-c++ cmake bison ncurses-devel zlib glibc  libaio-devel gperf   -y

2、下载官方源代码RPM包

wget http://cdn.mysql.com/Downloads/MySQL-5.6/MySQL-5.6.26-1.el6.src.rpm

3、把上述下载的RPM包下载到home目录,然后执行

#rpmbuild  ~            会在家目录生成rpmbuil以及下面的BUILD  BUILDROOT  RPMS  SOURCES  SPECS  SRPMS子空目录结构

#rpm -ivh   MySQL-5.6.26-1.el6.src.rpm

#ls  rpmbuild  -R       目录结构显示如下:

rpmbuild: BUILD  BUILDROOT  RPMS  SOURCES  SPECS  SRPMS

rpmbuild/BUILD:

rpmbuild/BUILDROOT:

rpmbuild/RPMS:

rpmbuild/SOURCES:

mysql-5.6.26.tar.gz

rpmbuild/SPECS:

mysql.spec

rpmbuild/SRPMS:

4、开始修改生成的mysql.spec文件

#vim  rpmbuild/mysql.spec

主要修改 #Build full release 部分的安装mysql时所需的编译参数。注意增加参数时,上一行尾添加 \

5、根据 mysql.spec 文件构建自定义生成的RPM包,生成的RPM包放在~/rpmbuild/RPMS/x86_64 文件夹下

#rpmbuild -bb mysql.spec

------------------------------------------

rpmbuild这个工具打包的过程大致如下:

编写spec指定打包的过程

将源码压缩包放在SOURCES目录下,

将源码解压缩到BUILD目录,执行make命令

将make install 的结果放在BUILDROOT目录下,

最后将BUILDROOT下编译好的二进制文件制作成RPM包。

并且可以指定在RPM安装之前,安装之后,卸载等过程执行的命令

mysql.spec文件示例:

Name: mysql

Version:5.5.37

Release: %(echo $RELEASE)%{?dist}

License: GPL

URL: http://downloads.mysql.com/archives/get/file/mysql-5.5.37.tar.gz

Group: applications/database

BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root

BuildRequires: cmake

Packager: wjoyxt@126.com

Autoreq: no

#Source: %{name}-%{version}.tar.gz

prefix: /project/class2/mysql

Summary: MySQL 5.5.37

%description

The MySQL(TM) software delivers a very fast, multi-threaded, multi-user,

and robust SQL (Structured Query Language) database server. MySQL Server

is intended for mission-critical, heavy-load production systems as well

as for embedding into mass-deployed software.

%define MYSQL_USER mysql

%define MYSQL_GROUP mysql

%define __os_install_post %{nil}

%build

cd $OLDPWD/../

CFLAGS="-O3 -g -fno-exceptions -static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing"

CXX=g++

CXXFLAGS="-O3 -g -fno-exceptions -fno-rtti -static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing"

export CFLAGS CXX CXXFLAGS

cmake .                                        \

-DSYSCONFDIR="%{prefix}"                      \

-DCMAKE_INSTALL_PREFIX="%{prefix}"            \

-DCMAKE_BUILD_TYPE=Release                   \

-DENABLE_PROFILING=1                         \

-DWITH_DEBUG=0                               \

-DWITH_VALGRIND=0                            \

-DENABLE_DEBUG_SYNC=0                        \

-DWITH_EXTRA_CHARSETS=all                    \

-DWITH_SSL=bundled                           \

-DWITH_UNIT_TESTS=0                          \

-DWITH_ZLIB=bundled                          \

-DWITH_PARTITION_STORAGE_ENGINE=1            \

-DWITH_INNOBASE_STORAGE_ENGINE=1             \

-DWITH_ARCHIVE_STORAGE_ENGINE=1              \

-DWITH_BLACKHOLE_STORAGE_ENGINE=1            \

-DWITH_PERFSCHEMA_STORAGE_ENGINE=1           \

-DDEFAULT_CHARSET=utf8                       \

-DDEFAULT_COLLATION=utf8_general_ci          \

-DWITH_EXTRA_CHARSETS=all                    \

-DENABLED_LOCAL_INFILE=1                     \

-DWITH_EMBEDDED_SERVER=0                     \

-DINSTALL_LAYOUT=STANDALONE                  \

-DCOMMUNITY_BUILD=1                          \

-DWITH_READLINE=1                            \

-DMYSQL_SERVER_SUFFIX='-r5436'

make -j `cat /proc/cpuinfo | grep processor| wc -l`

%install

cd $OLDPWD/../

make DESTDIR=$RPM_BUILD_ROOT install

%clean

rm -rf $RPM_BUILD_ROOT

%files

%defattr(-, %{MYSQL_USER}, %{MYSQL_GROUP})

%attr(755, %{MYSQL_USER}, %{MYSQL_GROUP}) %{prefix}/*

%pre

%post ln -s %{prefix}/lib %{prefix}/lib64

%preun

%changelog

参考资料:http://blog.csdn.net/renfengjun/article/details/41635101

cmake .                                        \

-DSYSCONFDIR="/opt/mysql"                      \

-DCMAKE_INSTALL_PREFIX="/opt/mysql"            \

-DCMAKE_BUILD_TYPE=Release                   \

-DENABLE_PROFILING=1                         \

-DWITH_DEBUG=0                               \

-DWITH_VALGRIND=0                            \

-DENABLE_DEBUG_SYNC=0                        \

-DWITH_EXTRA_CHARSETS=all                    \

-DWITH_SSL=bundled                           \

-DWITH_UNIT_TESTS=0                          \

-DWITH_ZLIB=bundled                          \

-DWITH_PARTITION_STORAGE_ENGINE=1            \

-DWITH_INNOBASE_STORAGE_ENGINE=1             \

-DWITH_ARCHIVE_STORAGE_ENGINE=1              \

-DWITH_BLACKHOLE_STORAGE_ENGINE=1            \

-DWITH_PERFSCHEMA_STORAGE_ENGINE=1           \

-DDEFAULT_CHARSET=utf8                       \

-DDEFAULT_COLLATION=utf8_general_ci          \

-DWITH_EXTRA_CHARSETS=all                    \

-DENABLED_LOCAL_INFILE=1                     \

-DWITH_EMBEDDED_SERVER=0                     \

-DINSTALL_LAYOUT=STANDALONE                  \

-DCOMMUNITY_BUILD=1                          \

-DWITH_READLINE=1                            \

-DMYSQL_SERVER_SUFFIX='-r5436'

---------------------------------------------------------------------------------------

RPM包制作过程

1、  将需要制作的源码包放到/usr/src/redhat/SOURCES 目录下

2、  在/usr/src/redhat/SPECS 目录下编写SPEC脚本

3、  在/usr/src/redhat/SPECS目录下,输入 rpmbuild –bb  “spec文件的名字” 以后,就开始编译了

4、   编译成功以后,在/usr/src/redhat/RPMS/x86_64下会找到所编译成功的RPM包

实际上RPM包的制作原理就是根据spec脚本文件,将软件安装到指定的虚拟目录中,按照指定的格式进行打包。安装RPM包的时候,按照指定的格式安装到指定的目录下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值