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'
方法一:
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'
相关文章推荐
- Linux下USB设备的原理、配置、常见问题
- pclint vc6/linux 工程,测试正常
- 通过Linux 定时任务、Shell脚本进行文件备份
- linux下查看已经安装的jdk 并卸载jdk
- 学习Linux第二天
- 15个实用的Linux find命令示例
- 如何更新linux服务器的系统时间
- [知其然不知其所以然-6] 为什么initrd尝试从休眠中恢复失败了?
- linux下的OpenCV安装&学习笔记
- Linux下设置发邮件
- Linux下安装Matlab2014及破解
- Linux 下编译安装OpenCV
- Linux下Opencv的安装及配置使用
- linux文件复制与权限赋值
- linux下解压
- linux下常用解压缩命令
- 在linux环境下编译一个c/c++工程
- LINUX学习
- Python在Linux下的Tab补齐(附代码)
- centos的sed命令修改文件(备忘)