zoukankan      html  css  js  c++  java
  • 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包的时候,按照指定的格式安装到指定的目录下。

  • 相关阅读:
    【数据结构】算法 Invert Binary Tree 翻转二叉树
    雪碧图
    闭包
    正则那些事
    JS添加,删除表格中的行那些事
    三目运算
    10个不能重复的随机数要求为55-109的整数, 要将10个随机数打印出来,并且将10个随机数里面能够被5整除的数打印出来,最后将能够被5整除的数叠加的结果打印出来
    输出从小到大排序好的五个不重复的随机整数,范围[10-23)。努力的人全世界都为你让路!你的努力终将美好!
    随机取10个在55-80之间的数,按照从小到大排序输出,冒泡排序
    求10个随机数,随机数要求为25-99的整数.能够被3整除的数
  • 原文地址:https://www.cnblogs.com/wjoyxt/p/4810837.html
Copyright © 2011-2022 走看看