利用源码制作 RPM 包(三):制作MySQL RPM包

1.建立用于制作RPM包的目录:
     默认,我们在 /usr/src 目录下建立 rpmbuild 目录:
     再在 rpmbuild 目录下建立:BUILD RPMS SOURCES SPECS SRPMS  [目录均为大写]
          [root@localhost rpmbuild]# mkdir  BUILD RPMS SOURCES SPECS SRPMS
   注:
          在centos 系统中,默认为root/rpmbuild/{ BUILD RPMS SOURCES SPECS SRPMS}
          在redhat 系统中,默认为/usr/src/redhat/{BUILD RPMS SOURCES SPECS SRPMS}
          但往往我们需要重新定义这个目录:
          如下命令:
               将新目录路径写入到 当前用户家目录下的  .rpmmacros
                    echo “%_topdir /usr/src/rpmbuild” >> $HOME/.rpmmacros
 

2.安装mysql 编译需要的相关依赖包:
      yum -y  install gcc-c++ ncurses-devel  make perl bison ncurses cmake
 
3.编写spec文件 【 spec 文件参考网站:http://www.percona.com/downloads/percona-release/percona-release.spec 】
 [ 这个spec文件,没有初始化数据库,只做编译]

Summary: MySQL 5.5.37
Name: mysql
Version:5.5.37
Release: 1%{?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: cloud_data@163.com
Autoreq: no
Source: %{name}-%{version}.tar.gz
prefix: /project/class/mysql
 
       %description
%define MYSQL_USER mysql
%define MYSQL_GROUP mysql
%define __os_install_post %{nil}
 
       %prep
/usr/sbin/groupadd mysql
/usr/sbin/useradd -g mysql mysql
 
       %setup -q
 
       %build
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 .                                                                     \
-DCMAKE_INSTALL_PREFIX:PATH=%{prefix}               \
-DSYSCONFDIR:PATH=%{prefix}                                \
-DCMAKE_BUILD_TYPE:STRING=Release                     \
-DENABLE_PROFILING:BOOL=ON                                 \
-DWITH_DEBUG:BOOL=OFF                                        \
-DWITH_VALGRIND:BOOL=OFF                                   \
-DENABLE_DEBUG_SYNC:BOOL=OFF                            \
-DWITH_EXTRA_CHARSETS:STRING=all                      \
-DWITH_SSL:STRING=bundled                                    \
-DWITH_UNIT_TESTS:BOOL=OFF                                \
-DWITH_ZLIB:STRING=bundled                                    \
-DWITH_PARTITION_STORAGE_ENGINE:BOOL=ON        \
-DWITH_INNOBASE_STORAGE_ENGINE:BOOL=ON         \
-DWITH_ARCHIVE_STORAGE_ENGINE:BOOL=ON           \
-DWITH_BLACKHOLE_STORAGE_ENGINE:BOOL=ON        \
-DWITH_PERFSCHEMA_STORAGE_ENGINE:BOOL=ON     \
-DDEFAULT_CHARSET=utf8                                         \
-DDEFAULT_COLLATION=utf8_general_ci                      \
-DWITH_EXTRA_CHARSETS=all                                   \
-DENABLED_LOCAL_INFILE:BOOL=ON                            \
-DWITH_EMBEDDED_SERVER=0                                   \
-DINSTALL_LAYOUT:STRING=STANDALONE                  \
-DCOMMUNITY_BUILD:BOOL=ON  ;
make -j `cat /proc/cpuinfo | grep processor| wc -l`
 
       %install
make DESTDIR=$RPM_BUILD_ROOT install#%pre%post
#ln -s %{prefix}/lib %{prefix}/lib64
mkdir  -p  %{prefix}/log
chown -R %{MYSQL_USER}:%{MYSQL_GROUP} %{prefix}/log%preun%clean
rm -rf $RPM_BUILD_ROOT%files
%defattr(-, %{MYSQL_USER}, %{MYSQL_GROUP})
%attr(755, %{MYSQL_USER}, %{MYSQL_GROUP}) %{prefix}

%changelog


 
4.进入SPECS目录:
     执行如下命令:
     以下命令 二 选 一
          rpmbuild -ba mysql.spec      # 这个制作成功会在RPMS里生成rpm包,在SRPMS里生成 源码的 RPM包
          rpmbuild -bb mysql.spec      # 这个只在在RPMS里生成rpm包
 
5.下面就可以利用刚才的RPM包安装了
         这个安装包相当于 二进制安装包,安装完成后,需要手动初始化数据库,启动数据库
 

Author: Michael

关注数据分析,挖掘数据金矿。

Leave a Reply

Your email address will not be published. Required fields are marked *