制作MySQL RPM安装包Spec

适用环境:

数据库版本:MySQL 5.7.26
操作系统:CentOS 7 

制作思路:

将数据库初始化和配置工作放到安装脚本中方便定制:
1、打包MySQL应用目录
2、不自动生成配置文件
3、不自动生成数据目录
4、不自动初始化数据

Spec代码:

# ========================================= #
# MySQL参数配置
# mysql源码路径
# 源码包版本
%global src_base              mysql
%global version                  5.7.26
%global src_dir               %{src_base}-%{version}
%global cmake_bin              /home/rpmbuilder/cmake-3.16.2-Linux-x86_64/bin/cmake

Name:        %{src_base}
Version:    %{version}

# 安装版本
Release:    1

# 安装包介绍
Summary:    MySQL Server        

# 遵循协议
License:    GPLv2

# 打包需要
# BuildRequires:  cmake /sbin/useradd /sbin/groupadd /bin/bash /bin/sh /bin/chown

# 安装需要
# Requires:    ncurses ncurses-devel pcre numactl-libs numactl bison libaio libaio-devel

# 安装的虚拟环境,在rpmbuild/BUILDROOT目录下
BuildRoot:      %(mktemp -ud %{_tmppath}/%{name}-%{version}-XXXXXX)

# Sorce信息
Source0:        %{name}-%{version}.tar.gz
Source10:       boost_1_59_0.tar.bz2
Source90:       filter-provides.sh
Source91:       filter-requires.sh

%if 0%{?rhel} > 6
# For rpm => 4.9 only: https://fedoraproject.org/wiki/Packaging:AutoProvidesAndRequiresFiltering
%global __requires_exclude ^perl\\((GD|hostnames|lib::mtr|lib::v1|mtr_|My::)
%global __provides_exclude_from ^(/usr/share/(mysql|mysql-test)/.*|%{_libdir}/mysql/plugin/.*\\.so)$
%else
# https://fedoraproject.org/wiki/EPEL:Packaging#Generic_Filtering_on_EPEL6
%global __perl_provides %{SOURCE90}
%global __perl_requires %{SOURCE91}
%endif

# mysql安装目录
%define     mysql_server_path     /data0/software/mysql/server
# mysql数据目录
%define     mysql_data_path     /data0/software/mysql/data

%define     MYSQL_USER             mysql
%define     MYSQL_GROUP         mysql 

# mysql配置文件目录
%define        mysql_conf_path        /data0/software/mysql/server/etc/my.cnf

# mysql描述
%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. 

# ========================================= #
# 环境准备
%prep
rm -rf $RPM_BUILD_ROOT/%{name}-%{version}
# 安装前先将mysql包和boost包解压至下面路径
# ./rpmbuild/BUILD/mysql-5.7.28/
# ./rpmbuild/BUILD/boost_1_59_0/

%setup -q -n %{src_dir}

groupadd %{MYSQL_GROUP} >/dev/null 2>&1 || :
useradd -g %{MYSQL_GROUP} %{MYSQL_USER} -s /bin/nologin >/dev/null 2>&1 || :

# ========================================= #
# 编译
%build
%{cmake_bin} ../%{src_dir} -DCMAKE_INSTALL_PREFIX=%{mysql_server_path} -DMYSQL_DATADIR=%{mysql_data_path} -DSYSCONFDIR=%{mysql_server_path}/etc -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_UNIX_ADDR=%{mysql_data_path}/tmp/mysql.sock -DMYSQL_TCP_PORT=3306 -DMYSQL_USER=mysql -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DENABLE_DOWNLOADS=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=..

make -j3 %{?_smp_mflags}

# ========================================= #
# 安装
%install
rm -rf %{buildroot}
make DESTDIR=%{buildroot} install

# ========================================= #
# 制作RPM包
%files
%defattr(-, %{MYSQL_USER}, %{MYSQL_GROUP})
%attr(755, %{MYSQL_USER}, %{MYSQL_GROUP}) %{mysql_server_path}/* 

%changelog

未处理问题:

1、打包过程中会自动下载boost压缩文件,数据源信息应该存在问题

原文地址:https://www.cnblogs.com/gaogao67/p/12148214.html

时间: 2024-10-07 15:00:20

制作MySQL RPM安装包Spec的相关文章

RPM安装包-Spec文件参数详解与示例分析

spec文件是整个RPM包建立过程的中心,它的作用就如同编译程序时的Makefile文件. 1.Spec文件参数 spec文件包含建立一个RPM包必需的信息,包括哪些文件是包的一部分以及它们安装在哪个目录下.这个文件一般分为如下的几节: (1) Preamle(序言) 序言包含用户请求包的信息时所显示的内容.它可以包含包的功能描述.包的软件版本.版权信息和所属的包组等.Summary 是一行关于该软件包的描述,Name 是该软件包的基名,Version 是该软件的版本号,Release 是 RP

web项目集成tomcat+jdk+mysql+java项目源码rpm安装包一键安装

由于公司的需求,在全国各地现场客户安装javaweb项目,为了方便项目安装,需要在Linux系统中进行一键安装部署操作,本人采用xshell脚本集成jdk+tomcat+mysql+web项目进行打包处理,销售人员只需在客户现场的Linux系统中安装rpm安装包就可以成功部署项目.与此同时,在网上看到很多人提出需要将项目打成rpm安装的问题,在网上也没有一个很详细的资料可以参考,刚好我做了一个现成的rpm安装包,希望能帮到需要的朋友! 操作: 1.修改pea.spec文件内容,修改里面的mysq

中标麒麟学习笔记3:试验制作wireshark二进制安装包

Wireshark是个优秀的网络包嗅探工具,对于学习理解网络知识有很大的帮助.中标麒麟桌面版本没有集成这一软件,所以想自己试着安装并学习一下如何制作RPM包. 学习了<fedora官网RPM包制作指南>后,觉得事情比较简单,主要就是编辑一个SPEC配置文件嘛,加上configure.make.make  install等指令,修改修改描述说明什么的就完活了.于是想先找个wireshark源码包,再找一个现成的SPEC文件,比如fedora21的SRPM包中就有,然后稍作修改就可以用rpmbui

用inno Setup制作web项目安装包

原文:用inno Setup制作web项目安装包 用inno Setup制作安装包 新建一个文件夹exambody,放apache-tomcat-6.0.33.mysql-5.1.37-win32.java(注:jdk)和图标exambody.ico 1.       批处理安装mysql服务: 在mysql-5.1.37-win32\bin 的目录下: 新建一个文件:启动服务.bat 里面写: cd /d %~dp0                                       

centos7下使用mysql离线安装包安装mysql5.7

服务器环境: centos7 x64 需要安装mysql5.7+ 一.卸载CentOS7系统自带mariadb # 查看系统自带的Mariadb [root@CDH-141 ~]# rpm -qa|grep mariadb mariadb-libs-5.5.44-2.el7.centos.x86_64 # 卸载系统自带的Mariadb [root@CDH-141 ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7.centos.x86_64 # 删除etc

制作iis自动安装包

原文:制作iis自动安装包 MS 一直没有提供可独立安装的 IIS 安装包,Windows 的缺省安装没有安装它,通常要到控制面板的"添加/删除 Windows 程序"中去选择安装.对于熟悉 Windows 安装的人来说这没有问题,但对于要独立发行的软件包却可能是一个问题,并非所有最终用户都熟悉如何去安装 IIS.各大网站都有不同版本的 iis 安装包可下载,可下载回来你仍然找不到其中有可以执行的安装程序.通过在网上查询,得出自己制作 IIS 一键安装的方法如下: 1. 根据使用的 W

用Inno Setup制作WEB程序安装包

原文 用Inno Setup制作WEB程序安装包 最近做了一个WEB程序的安装包,我把制作的过程做个介绍,贴出源码给大家做个参考 看看inno 的脚本 [Setup] AppCopyright=test AppName=test AppVerName=test v2.0 SolidCompression=true OutputDir=OutputOutputBaseFilename=test_setup DefaultDirName={pf}\Lms DefaultGroupName=Lms ;

制作linux内核安装包

升级linux内核 直接在一个有编译环境的设备上,编译升级内核很简单. make menuconfig 或者 拷贝现有系统的.config文件 修改.config文件  CONFIG_DEBUG_INFO=n (避免编译产生文件过大) make oldconfig make all -j4 make modules_install make install 制作linux内核安装包 有时需要在虚拟机上编译好内核后,安装到另外的设备上,而设备上工具有限,没有编译开发环境等.一种方式是通过nfs挂载

IS2009制作Oracle 静默安装包(一)感谢空白先生特许授权

原文:IS2009制作Oracle 静默安装包(一)感谢空白先生特许授权 上一篇: MyEclipse中消除frame引起的“the file XXX can not be found.Please check the location and try again.”的错误 本文经原作者特许授权于海洋女神发布,转载请务必注明出处与链接:原作者和海洋女神保留对该文的一切法律许可下的权益:需要发布在盈利性报刊.网站等请与原作者或海洋女神联系.序言 这份文档并非本人所写,而是一位朋友在最近做了安装包以