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包的时候,按照指定的格式安装到指定的目录下。

Linux下基于官方源代码RPM包构建自定义MySQL RPM包的更多相关文章

  1. Linux下基于.NET5开发CAX应用

    <<.NET5下的三维应用程序开发>>一文中介绍了如何在.NET5下使用AnyCAD开发应用程序.相比.NET4.x,.NET5一大进步便是可以跨平台,即可以在Linux.Ma ...

  2. Linux下基于LDAP统一用户认证的研究

    Linux下基于LDAP统一用户认证的研究                   本文出自 "李晨光原创技术博客" 博客,谢绝转载!

  3. Linux下Maven私服Nexus3.x环境构建操作记录【转】

    Maven介绍Apache Maven是一个创新的软件项目管理和综合工具.Maven提供了一个基于项目对象模型(POM)文件的新概念来管理项目的构建,可以从一个中心资料片管理项目构建,报告和文件.Ma ...

  4. Linux下Maven私服Nexus3.x环境构建操作记录

    原文地址:https://blog.csdn.net/liupeifeng3514/article/details/79553747 私服介绍 私服是指私有服务器,是架设在局域网的一种特殊的远程仓库, ...

  5. Linux下基于LVM调整分区容量大小的方法

    Linux下调整分区容量大小的方法(适用于centos6-7) 说明:以下方法均使用centos6.9和centos7.4进行测试. Centos6分区容量调整方法 1.web分区空间不足,新添加一块 ...

  6. Linux下基于多线程的echo

    准备开始写一些Linux 下网络编程以及多线程的blog,就从这个简单的echo程序开始吧. 在echo的服务端使用多线程与客户进行通信,可以实现一个服务端程序同时连接多个客户的功能.那么,到底在服务 ...

  7. 【linux】linux下yum安装后Apache、php、mysql默认安装路径

    原文:http://blog.csdn.NET/u010175124/article/details/27322757apache:如果采用RPM包安装,安装路径应在 /etc/httpd目录下apa ...

  8. linux下memcached安装 和redis安装,jdk,tomcat,mysql 安装

    一.memcached安装yum  search  memcachedyum  -y install memcachedmemmcached -h service memcached restartc ...

  9. linux下部署php项目-Apache、php、mysql关联

    linux下部署php项目环境可以分为两种,一种使用Apache,php,mysql的压缩包安装,一种用yum命令进行安装. 使用三种软件的压缩包进行安装,需要手动配置三者之间的关系.apache和p ...

随机推荐

  1. 基于DRL和TORCS的自动驾驶仿真系统——之环境配置

    基于DRL和TORCS的自动驾驶仿真系统 --之环境配置 玩TORCS和DRL差不多有一整年了,开始的摸爬滚打都是不断碰壁过来的,近来在参与CMU的DRL10703课程学习和翻译志愿者工作,也将自己以 ...

  2. LOJ 572 「LibreOJ Round #11」Misaka Network 与求和——min_25筛

    题目:https://loj.ac/problem/572 莫比乌斯反演得 \( ans=\sum\limits_{D=1}^{n}\left\lfloor\frac{n}{D}\right\rflo ...

  3. 49个你应该了解的Android Studio技巧、插件与资源 http://www.apkbus.com/blog-822721-72630.html (出处: 安卓巴士 - 安卓开发 - Android开发 - 安卓 - 移动互联网门户)

    49个你应该了解的Android Studio技巧.插件与资源http://www.apkbus.com/blog-822721-72630.html(出处: 安卓巴士 - 安卓开发 - Androi ...

  4. hanlp中文自然语言处理的几种分词方法

    自然语言处理在大数据以及近年来大火的人工智能方面都有着非同寻常的意义.那么,什么是自然语言处理呢?在没有接触到大数据这方面的时候,也只是以前在学习计算机方面知识时听说过自然语言处理.书本上对于自然语言 ...

  5. 【shell】正则表达式语法

    一个正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式.该模式描述在查找文字主体时待匹配的一个或多个字符串.正则表达式作为一个模板,将某个字符模式与所搜索的字符串 ...

  6. HDU 2066 一个人的旅行 (Dijkstra算法)

    一个人的旅行 Time Limit : 1000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submis ...

  7. Splunk 交流

    1. 初识splunk Splunk Enterprise Splunk Free Splunk Universal Forwarder,通用转发器

  8. 1034 Head of a Gang (30 分)

    1034 Head of a Gang (30 分) One way that the police finds the head of a gang is to check people's pho ...

  9. 理解Storm Metrics

    在hadoop中,存在对应的counter计数器用于记录hadoop map/reduce job任务执行过程中自定义的一些计数器,其中hadoop任务中已经内置了一些计数器,例如CPU时间,GC时间 ...

  10. 解决“Can't bind to local 8630 for debugger”错误--查杀多余进程

    Can't bind to local 8630 for debugger 表明本地8630端口被占用 1.Windows平台 在windows命令行窗口下执行: 1.查看所有的端口占用情况 C:\& ...