首页 > 数据库 >Centos 7 制作MySQL 5.7 RPM包

Centos 7 制作MySQL 5.7 RPM包

时间:2024-08-31 13:15:01浏览次数:9  
标签:Centos 5.7 -- RPM 44 rpmbuild export mysql root

系统:Centos 7.2

 

1、安装依赖包

yum install make gcc rpm-build rpmdevtools -y
yum install make cmake gcc gcc-c++ bison libaio ncurses-devel perl perl-DBI perl-DBD-MySQL perl-Time-HiRes readline-devel numactl zlib-devel curldevel

 

2、rpm工具相关路径

mkdir -p /root/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}

[root@A01-R21-I102-44-A000324 soft]# cd /root/rpmbuild/
[root@A01-R21-I102-44-A000324 rpmbuild]# ll
total 0
drwxr-xr-x 2 root root 6 Aug 29 14:03 BUILD
drwxr-xr-x 2 root root 6 Aug 29 14:03 RPMS
drwxr-xr-x 2 root root 6 Aug 29 14:03 SOURCES
drwxr-xr-x 2 root root 6 Aug 29 14:03 SPECS
drwxr-xr-x 2 root root 6 Aug 29 14:03 SRPMS

 

3、MySQL 源码包

将MySQL源码包拷贝到my.cnf文件也要拷贝放到 /root/rpmbuild/SOURCES 目录下

[root@A01-R21-I102-44-A000324 SOURCES]# pwd
/root/rpmbuild/SOURCES
[root@A01-R21-I102-44-A000324 SOURCES]# ll
total 52056
-rw-r--r-- 1 root root     3702 Aug 29 14:08 my.cnf
-rw-r--r-- 1 root root 53298645 Aug 29 14:07 mysql-boost-5.7.44.tar.gz

 

4、boost依赖包

将boost包拷贝到 /root/rpmbuild/BUILD 目录下,并进行解压 (源码包中的boost解压后才能用,即手动安装时才不需要单独下载)

[root@A01-R21-I102-44-A000324 BUILD]# pwd
/root/rpmbuild/BUILD
[root@A01-R21-I102-44-A000324 BUILD]# ll
total 81756
drwx------ 8  501   20     4096 Aug 12  2015 boost_1_59_0
-rw-r--r-- 1 root root 83709983 Aug 29 14:10 boost_1_59_0.tar.gz

 

5、spec文件

在路径 /root/rpmbuild/SPECS 下创建spec配置文件

[root@A01-R21-I102-44-A000324 SPECS]# pwd
/root/rpmbuild/SPECS
[root@A01-R21-I102-44-A000324 SPECS]# cat mysql.5.7.44.spec 
Name:       mysql
Version:    5.7.44
Release:    1%{?dist}
License:    GPL
URL:        http://downloads.mysql.com/archives/get/file/mysql-5.7.44.tar.gz
Group:       applications/database
Source:      %{name}-boost-%{version}.tar.gz
BuildRoot:  %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
BuildRequires:  cmake
Packager:   [email protected]
Autoreq:    no
prefix: /export/servers/mysql
Summary: MySQL 5.7.44


%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

# 准备构建环境的脚步,通常用于解压源代码
%prep
%setup -n mysql-%{version}

# 构建软件包脚本,通常用于编译源代码
%build

cmake \
-DCMAKE_INSTALL_PREFIX=/export/servers/mysql \
-DMYSQL_DATADIR=/export/data/mysql/data \
-DSYSCONFDIR=/export/servers/mysql/etc \
-DMYSQL_UNIX_ADDR=/export/data/mysql/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DMYSQL_TCP_PORT=3358 \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=../boost_1_59_0

make -j `cat /proc/cpuinfo | grep processor| wc -l`

# 安装软件包脚本
%install
rm -rf %{buildroot}
make install DESTDIR=%{buildroot}
cp %{_sourcedir}/my.cnf $RPM_BUILD_ROOT%{prefix}/

# 安装前执行脚本
%pre
groupadd mysql
useradd -g mysql -s /bin/nologin -M mysql >/dev/null 2>&1

mkdir -p /export/servers/mysql/etc
mkdir -p /export/data/mysql/data
mkdir -p /export/data/mysql/dumps
mkdir -p /export/data/mysql/log
mkdir -p /export/data/mysql/tmp
mkdir -p /export/data/mysql/undo

chown -R mysql:mysql /export/data/mysql

# 安装后执行脚本
%post
/bin/cp %{prefix}/support-files/mysql.server /etc/init.d/mysql
/bin/mv %{prefix}/my.cnf /export/servers/mysql/etc/my.cnf
chkconfig mysql on
%{prefix}/bin/mysqld --defaults-file=/export/servers/mysql/etc/my.cnf --initialize-insecure --user=mysql
service mysql start
echo "export PATH=$PATH:/export/servers/mysql/bin;" >> /etc/profile
source /etc/profile

# 卸载前执行脚本
%preun
service mysql stop
chkconfig --del mysql
userdel -r mysql >/dev/null 2>&1
rm -rf %{prefix} >/dev/null 2>&1
rm -rf /export/data/mysql >/dev/null 2>&1
rm -rf /etc/init.d/mysql >/dev/null 2>&1

%files
%defattr(-, %{MYSQL_USER}, %{MYSQL_GROUP})
%attr(755, %{MYSQL_USER}, %{MYSQL_GROUP}) %{prefix}/*

%changelog

 

上述配置文件对应的rpm包,在centos7上安装卸载都ok,配置文件中关于设置mysql服务和开机启动相关操作,也可以参考下面

# 复制服务脚本
cp /export/servers/mysql/support-files/mysql.server /etc/init.d/mysql

# 添加此服务到系统服务
chkconfig --add mysql

# 添加服务后,就可以使用systemctl命令进行管理了
# 启动服务
systemctl start mysql

# 停止服务
systemctl stop mysql

# 设置服务为开机自启动
systemctl enable mysql

# 查看服务运行状态
systemctl status mysql

 

6 打包

cd  /root
rpmbuild -bb rpmbuild/SPECS/mysql.5.7.44.spec

# 打包完毕,会在RMPS目录下看到2个rpm包
[root@A01-R21-I102-44-A000324 x86_64]# pwd
/root/rpmbuild/RPMS/x86_64
[root@A01-R21-I102-44-A000324 x86_64]# ll
total 232408
-rw-r--r-- 1 root root  75295324 Aug 29 15:04 mysql-5.7.44-1.el7.centos.x86_64.rpm
-rw-r--r-- 1 root root 162688444 Aug 29 15:05 mysql-debuginfo-5.7.44-1.el7.centos.x86_64.rpm

 

标签:Centos,5.7,--,RPM,44,rpmbuild,export,mysql,root
From: https://www.cnblogs.com/broadway/p/18390163

相关文章

  • CentOS 安装 GDAL
    需要离线安装GDAL(venv)[root@VM-8-12-centos~]#pipinstallgdalLookinginindexes:http://mirrors.tencentyun.com/pypi/simpleCollectinggdal Downloadinghttp://mirrors.tencentyun.com/pypi/packages/bd/10/85c41cc7c520be9cf755f5862e8c6c8b0c91c8987cb1c706f7092......
  • .Net 5.0 WebAPI 发布至 CentOS 7 系统
    〇、前言本文主要介绍了在CentOS7上部署WebAPI项目的过程。先安装.net5.0的环境,再创建一个示例项目并发布至CentOS上,同时列明了一些注意的点;最后将dotnet命令添加到系统自启动服务。一、Linux环境准备1.1centos7.x在线安装.net5.0第一行命令是添加包源,第二......
  • CentOS7 官网停更后的补救措施
    问题一:无法正常使用yum命令。问题描述:终端执行yum-yupdate,报以下错误提示:Couldnotretrievemirrorlisthttp://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock32errorwas14:curl#6-"Couldnotresolvehost:mirrorlist.centos.org;Unknown......
  • Centos-MinIO安装
    1.下载MinIO可执行文件首先,您需要下载MinIO可执行文件。确保您的系统上已经安装了wget,如果没有安装,可以先参考我之前的建议来解决yuminstallwget的问题。下载MinIO:也可以在window在官网或者中文镜像网站下好二进制文件再导入到linux上wgethttps://dl.minio.org.cn......
  • linux centos 启动 nginx 几种方式
    在CentOS上安装Nginx的方法有几种,具体取决于你的需求和系统版本。以下是几种常见的方法:1.使用EPEL仓库安装(推荐)安装EPEL仓库(如果还没有安装):sudoyuminstallepel-release安装Nginx:sudoyuminstallnginx启动Nginx:sudosystemctlstartnginx设置Nginx开机自启:sudos......
  • CentOS 7.9 内核从 3.10 升级到 5.4
    1.背景介绍环境需求:在搭建Kubernetes(K8S)环境时,内核版本最好大于4.4以支持K8S的所有特性。当前内核版本:CentOS7.9的默认内核版本为3.10.0-1160.el7.x86_64,不满足K8S的推荐内核版本要求。2.查看内核版本及相关包使用命令uname-r查看当前内核版本。使用命令r......
  • CentOS 7 的换源
    CentOS7概述CentOS7是一种基于RedHatEnterpriseLinux(RHEL)源代码构建的开源操作系统。它是一个稳定、安全且功能强大的Linux发行版,被广泛用于企业服务器和桌面环境中。CentOS7的版本是在2014年发布的,以下是CentOS7的一些主要特点:稳定性和可靠性:基于R......
  • java在centos7下部署运行jar包
    1、执行jar包的命令和在windows操作系统上是一样java-jarjarName-0.0.1-SNAPSHOT.jar;注:关闭服务器连接时会关闭此程序进程,(推荐测试可用)2、将jar程序设置成后台运行,并且将标准输出的日志重定向至文件msg.lognohupjava-jarjarName-0.0.1-SNAPSHOT.jar>msg.log2>&......
  • 关于linux系统镜像下载 ubuntu centos
    1.直接上观点:目前主流的linux:乌班图(Ubuntu):主要是个人使用,值得一提的是,目前ai服务器很多都选择乌班图,主要还是centos7官网停更了;centos7:这个可是主流,尽管官网停更,但是这些年积累的用户量是最多的,如果不知道自己服务器用什么,那选centos7肯定没错,各类技术文档,各种问题解决,c......
  • Linux-centos7目录结构
    目录说明1./根目录2./bin/ 可执行二进制文件的目录,如常用的命令ls,tar,mv,cat等.3./boot/  开机引导目录,包括Linux内核文件与开机所需要的文件.  建议单独分区,避免根                 ......