制作MySQL RPM安装包Spec「建议收藏」

制作MySQL RPM安装包Spec「建议收藏」适用环境: 数据库版本:MySQL 5.7.26 操作系统:CentOS 7 制作思路: 将数据库初始化和配置工作放到安装脚本中方便定制: 1、打包MySQL应用目录 2、不自动生成配置文件 3、不自

制作MySQL RPM安装包Spec

适用环境:

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

代码100分

 

制作思路:

代码100分将数据库初始化和配置工作放到安装脚本中方便定制:
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}
# setup把boost和mysql压缩包解压到下面路径
# ./rpmbuild/BUILD/mysql-5.7.28/mysql-5.7.28/
# ./rpmbuild/BUILD/mysql-5.7.28/boost_1_59_0/

%setup -q -T -a 0 -a 10 -c -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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/10287.html

(0)
上一篇 2022-12-30
下一篇 2022-12-30

相关推荐

  • 如何优雅的导出Excel

    如何优雅的导出Excel公司项目最近有一个需要:报表导出。整个系统下来,起码超过一百张报表需要导出。这个时候如何优雅的实现报表导出,释放生产力就显得很重要了。下面主要给大家分享一下该工具类的使用方法与实现思路。 对于每个报表都相同的操作,我们很自然的会抽离出来,这个很简单。而最重要的是:如何把那些每个…

    2023-03-02
    109
  • 利用Python的Dictionary提取键对应的值

    利用Python的Dictionary提取键对应的值Dictionary(字典)是Python中的内置数据类型之一,它是一个可变的、无序的、以键值对(key-value)形式存储数据的集合。一个字典中包含多个键和对应的值,每个键和值之间用冒号“:”分隔,不同的键值对之间用逗号“,”分隔,整个字典用花括号“{}”括起来。字典中的键必须是唯一的,而值则可以是任意类型。

    2024-01-14
    48
  • SQL Server2008安装教程[通俗易懂]

    SQL Server2008安装教程[通俗易懂]1.Sql Server2008的下载 近期项目使用到C#,为了学习.NET相关的技术,开始着手学习Sql Server数据库。 Sql Server2008是比较经典的数据库版本,这里简单写一下Sq

    2023-03-13
    100
  • 【12c】Oracle 统计信息搜集工具DBMS_STATS介绍「终于解决」

    【12c】Oracle 统计信息搜集工具DBMS_STATS介绍「终于解决」可以使用Oracle内置的程序包DBMS_STATS来查看或修改搜集的数据库统计信息,本篇主要介绍GATHER_TABLE_STATS过程,通过该过程,可以搜集表和列(或索引)的统计信息。 1 语法

    2023-03-05
    101
  • php替代品_工具镊子

    php替代品_工具镊子phpMyAdmin是管理MySQL数据库最流行的Web界面。但也有许多其他的工具,我们可代替phpMyAdmin的使用。通过本文,我想向你提供的phpMyAdmin的替代品清单。 1. Admin…

    2023-03-18
    103
  • python张量分解去噪(张量分解python代码)

    python张量分解去噪(张量分解python代码)主成分分析(PCA)是一种基于变量协方差矩阵对数据进行压缩降维、去噪的有效方法。

    2023-11-20
    69
  • linux 环境下 怎么导出制表符分割的 mysql数据「建议收藏」

    linux 环境下 怎么导出制表符分割的 mysql数据「建议收藏」mysql -h abc.com -P 1234 -uname -p**** -D dbinfo -s -e “SELECT * FROM t_info” > out.1 参数解释 -h 域名 -P…

    2023-03-27
    104
  • 使用Python的print函数

    使用Python的print函数Python是一种强大的编程语言,它拥有众多的内置函数和模块,其中print函数是最常用的函数之一。使用print函数可以将想要输出的信息在控制台或者文件中打印出来。本文将介绍使用Python的print函数的几个方面。

    2024-04-13
    22

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注