您的位置:首页 > 运维架构 > Linux

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

2015-09-15 17:14 671 查看
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'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: