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包的时候,按照指定的格式安装到指定的目录下。
Linux下基于官方源代码RPM包构建自定义MySQL RPM包相关推荐
- linux 下基于jrtplib库的实时传送实现
linux 下基于jrtplib库的实时传送实现 一.RTP 是进行实时流媒体传输的标准协议和关键技术 实时传输协议(Real-time Transport Protocol,PRT)是在 Inter ...
- linux下基于jrtplib库的实时传送实现
linux 下基于jrtplib库的实时传送实现 一.RTP 是进行实时流媒体传输的标准协议和关键技术 实时传输协议(Real-time Transport Protocol,PRT)是在 Inte ...
- Linux下电骡aMule Kademlia网络构建分析2
读代码读到现在,补充一点关于Kademlia网络的理论知识. Kademlia网络的基本原理 Kademlia 是一种结构化的覆盖网络(Structured Overlay Network).所谓覆盖 ...
- Linux下电骡aMule Kademlia网络构建分析5 —— 资源的发布
资源发布请求消息的发送 在aMule中,主要用CSharedFileList class来管理共享给其它节点的文件.如我们前面在 Linux下电骡aMule Kademlia网络构建分析3 一文中分析 ...
- Linux下基于密钥的安全验证实现方法
Linux下基于密钥的安全验证实现方法 -------OpenSSH+WinSCP+putty密钥生成器+putty 实验背景: 小诺公司目前已使用Linux搭建了各个服务器(FTP.DNS.Apac ...
- Linux下基于GTK人脸识别界面设计
Linux下基于GTK人脸识别界面设计 1.人脸识别简介 人脸识别,是基于人的脸部特征信息进行身份识别的一种生物识别技术.用摄像机或摄像头采集含有人脸的图像或视频流,并自动在图像中检测和跟踪人脸, ...
- Linux下基于ffmpeg音视频解码
Linux下基于ffmpeg音视频解码 1.ffmpeg简介 FFmpeg是一套可以用来记录.转换数字音频.视频,并能将其转化为流的开源计算机程序.采用LGPL或GPL许可证.它提供了录制.转换以 ...
- Linux下基于SDL库贪吃蛇游戏
Linux下基于SDL库贪吃蛇游戏 SDL(Simple DirectMediaLayer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成.SDL提供了数种控制图像.声音.输出入的函数,让开 ...
- Linux下电骡aMule Kademlia网络构建分析3
将本节点加入Kademlia网络 连接请求的发起 aMule在启动的时候,会起一些定时器,以便于定期的执行一些任务.其中比较重要的就是core_timer,相关code如下(amule-2.3.1/s ...
最新文章
- 什么镜头最适合拍风景_尼康Z口20mm的镜头拍什么好
- linux开机关机命令
- 2012年初二晚越秀公园游灯有感一二
- ubuntu 12.04 /sbin/ldconfig.real: /usr/local/lib/*.so.8 不是符号连接 解决办法
- php 抽象类 静态方法吗,php中的抽象类和静态方法是什么
- 【1】刷了1000道二级C语言的题,这些题竟然还是易错题!!(附C语言完整知识点)
- 学习web前端要了解的HTML5知识有哪些?
- 竞价排名才是万恶之源
- Windows 系统部署之创建应答文件
- 深入浅出交换类排序算法(冒泡排序,快速排序)
- linux系统国产制图软件,国产操作系统也能用的国产图表绘制软件,替代Visio就用它了...
- 从网站建设看中外差异
- 饿了么UI框架表格的动态增减表单项里面有坑!
- 如何将网页保存保存为PDF格式?或者打印网页
- 深海迷航坐标传送代码_深海迷航代码大全_深海迷航作弊码汇总及代码使用教程_咖绿茵手游站...
- 作为应聘者 面试结束时应该问面试官一些什么问题呢
- 解决谷歌浏览器最新chrome94版本CORS跨域问题(海康视频插件无法播放的问题)
- 荣耀7升级android8,华为+荣耀7款老爷机齐升安卓8.0:最近两年全覆盖
- NBUT1582 比赛吃鸡腿
- 软件项目管理读书体会
热门文章
- python打印表格_使用 Python 打印漂亮的表格,这两项基本功你可会?
- 计算机文化基础4作业,计算机文化基础试题4
- 不歧视双非的计算机院校,公平!考研西工大,双非院校倒数第一名考生上岸,本校考生被刷...
- 智能车竞赛技术报告 | 智能车视觉 - 中国地质大学(武汉) - 2021 地大乘风队
- 2021年春季学期-信号与系统-第十四次作业参考答案-第八小题参考答案
- WAV文件中使用有符合整形数
- android内存取证实现,[内存取证]Volatility基本用法
- 怎么看rabbitmq的浏览器信息_买房沙盘怎么看?沙盘也可以看出很多信息的
- Oracle执行exists优化,PHP_解决Oracle性能优化中的问题, 在Oracle性能优化时,用exists - phpStudy...
- cad能整体比例缩小吗_手机玻璃背板直接整体变色你能想象吗?有厂商已经做到了...