墨墨导读:本文详细介绍一键式安装部署,定制化制作MySQL RPM包的过程,希望可以帮助到读者朋友 。

在部署MySQL的时候,经常用RPM包简易安装。非常快,也非常有效。
rpm的全称是Redhat Package Manager,有五种基本的操作功能:安装、卸载、升级、查询和验证。

linux软件包分为两大类:
(1)二进制类包,包括rpm安装包(一般分为i386和x86等几种)
(2)源码类包,源码包和开发包应该归位此类(.src.rpm)。
通过官网提供rpmbuild工具,可自行打包软件。下面是制作过程。

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初始化目录结构
mkdir -p /opt/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}[root@ss30 ~]# ll rpmbuild/total 0drwxr-xr-x 3 root root 25 Jul 26 20:51 BUILDdrwxr-xr-x 2 root root  6 Jul 26 20:15 BUILDROOTdrwxr-xr-x 2 root root  6 Jul 26 20:15 RPMSdrwxr-xr-x 2 root root 65 Jul 26 20:51 SOURCESdrwxr-xr-x 2 root root 30 Jul 26 20:41 SPECSdrwxr-xr-x 2 root root  6 Jul 26 20:15 SRPM
3
下载源码包
1)下载mysql 源码:https://downloads.mysql.com/archives/community/

把下载源码包 放到/root/rpmbuild/SOURCES & 同时 把 my.cnf文件也要拷贝放到 目录下:

2)Mysql5.6后都要依赖boost_1_59_0.tar.gz包,所以这里我直接解压到BUILD目录下,不然检测不到;
下载地址如下:
https://www.boost.org/users/history/version_1_59_0.html

4

配置文件

[root@CS20190727 SPECS]# cat mysql5.7.26.spec
Name:       mysql
Version:    5.7.26
Release:    1%{?dist}
License:    GPL
URL:        http://downloads.mysql.com/archives/get/file/mysql-5.7.26.tar.gz
Group:       applications/database
Source:      %{name}-%{version}.tar.gz
BuildRoot:  %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
BuildRequires:  cmake
Packager:    enmo@enmotech.com
Autoreq:    no
#Source: %{name}-%{version}.tar.gz
prefix: /opt/rpm/mysql-%{version}
Summary: MySQL 5.7.26%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#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 CXXFLAGScmake \
-DCMAKE_INSTALL_PREFIX=%{prefix} \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DMYSQL_DATADIR=/data/mysql \
-DMYSQL_TCP_PORT=3310 \
-DSYSCONFDIR=/etc \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_BOOST=../boost_1_59_0  \
-Wno-devmake -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>&1mkdir -p /data
mkdir -p /data/mysql
mkdir -p /data/mysqltmp
mkdir -p /data/dbdatachown -R mysql:mysql /data
chmod 700 /data/mysqltmp%post
/bin/cp %{prefix}/support-files/mysql.server /etc/init.d/mysql
/bin/cp %{prefix}/my.cnf %{_sysconfdir}/my.cnf
chkconfig mysql on
%{prefix}/bin/mysqld --initialize-insecure --basedir=%{prefix} --datadir=/data/mysql --user=mysql
service mysql start
chown -R mysql:mysql /data/mysql
echo "export PATH=.:\$PATH:%{prefix}/bin;" >> ~/.bash_profile
source ~/.bash_profile%preun
service mysql stop
chkconfig --del mysql
userdel -r mysql >/dev/null 2>&1
rm -rf %{prefix} >/dev/null 2>&1
rm -rf /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

Name: 软件包的名称,后面可使用%{name}的方式引用
Summary: 软件包的内容概要
Version: 软件的实际版本号,例如:1.0.1等,后面可使用%{version}引用
Release: 发布序列号,例如:1linuxing等,标明第几次打包,后面可使用%{release}引用
Group: 软件分组,建议使用标准分组
License: 软件授权方式,通常就是GPL
Source: 源代码包,可以带多个用Source1、Source2等源,后面也可以用%{source1}、%{source2}引用
BuildRoot: 这个是安装或编译时使用的“虚拟目录”
URL: 软件的主页
Vendor: 发行商或打包组织的信息,例如RedFlag Co,Ltd
Disstribution: 发行版标识
Prefix: %{_prefix} 这个主要是为了解决今后安装rpm包时
%description 软件的详细说明

%build 开始构建包
%install 开始把软件安装到虚拟的根目录中
%clean 清理临时文件
%files 定义那些文件或目录会放入rpm中
%changelog 变更日志

%setu安装p -n %{name}-%{version} 把源码包解压并放好
%pre rpm前执行的脚本
%post rpm安装后执行的脚本
%preun rpm卸载前执行的脚本
%postun rpm卸载后执行的脚本

5

执行命令打包

[root@ss30 ~]# cd  /root[root@ss30 ~]# rpmbuild -bb rpmbuild/SPECS/mysql5.7.26.spec完成后在rpmbuild/RPM目录下就会两个rpm包

6

rpm安装MySQL

直接安装,安装完成后会直接启动Mysql:

7

参考

错误处理:
rpmbuild 构建rpm包时报错解决 error: Installed (but unpackaged) file(s) found:
解决的办法:
找到 /usr/lib/rpm/macros 中
%__check_files     /usr/lib/rpm/check-files %{buildroot}   注释掉

文档:
https://wiki.centos.org/HowTos/SetupRpmBuildEnvironment
https://blog.51cto.com/songhl/2152087
https://www.58jb.com/html/149.html
https://docs.fedoraproject.org/en-US/packaging-guidelines/RPMMacros/

墨天轮原文链接:https://www.modb.pro/db/25614(复制到浏览器中打开或者点击“阅读原文”)

推荐阅读:144页!分享珍藏已久的数据库技术年刊

数据和云

ID:OraNews

如有收获,请划至底部,点击“在看”,谢谢!

点击下图查看更多 ↓

云和恩墨大讲堂 | 一个分享交流的地方

长按,识别二维码,加入万人交流社群

请备注:云和恩墨大讲堂

  点个“在看”

你的喜欢会被看到❤

实战演练:MySQL RPM包定制化制作全过程相关推荐

  1. mysql rpm conflict_解决centos7 yum安装MySQL rpm包出现conflict problem

    解决centos7 yum安装MySQL rpm包出现conflict problem 发布时间:2020-07-24 06:33:51 来源:51CTO 阅读:1868 作者:运维天空 [root@ ...

  2. Unbuntu18.04系统定制化制作与再生龙镜像生成

    文章目录 目录 一.Unbuntu18.04系统定制化制作 二.再生龙镜像生成 一.Unbuntu18.04系统定制化制作 1)刻录原生版ubuntu18.04系统到U盘 由UltraISO在wind ...

  3. Centos安装mysql rpm包

    Centos安装mysql rpm包 安装mysql步骤: 清理环境 centos有可能会自带一个mariadb 查看是否已安装 rpm -qa |grep -i mysql #(centos7默认系 ...

  4. 模型展示|易模定制化制作的绿植模型

    今天给大家带来易模定制化制作出来的绿植模型. 秋天宜赏花,同时也是花卉电商悄然增长的时节. 现在越来越多的店家为了让消费者买得舒心放心,都支持"一物一拍"的服务,所谓"一 ...

  5. fpm制作mysql rpm包_FPM简介(定制rpm包)

    FPM简介 fpm是生成rpm包的工具.rpm包的制作,采用fpm工具完成,FPM非常易用,此命令可以把rpm包的安装.卸载做得更加优雅,在安装前可以做一些准备工作,安装后可以做一些收尾工作,在卸载前 ...

  6. 制作mysql rpm包_一步步制作RPM包

    一.RPM制作步骤 我们在企业中有的软件基本都是编译的,我们每次安装都得编译,那怎么办呢?那就根据我们的需求制作RPM安装包吧.先来说说基本布骤: 1.Planning what you want   ...

  7. Linux下基于官方源代码RPM包构建自定义MySQL RPM包

    rpmbuild时不要以root用户执行! 方法一: 1.首先安装rpmbuild #yum install rpm-build gcc gcc-c++ cmake bison ncurses-dev ...

  8. mysql rpm包_自制mysql.rpm安装包

    RPM安装比源码更快更方便,更利于统一版本,省去了繁琐的编译过程,下面以制作mysql的rpm安装包为例. 编译环境 1. 安装rpm-build: 检查是否配置rpm环境 1 # sudo yum ...

  9. 制作本地SCLo-scl镜像仓库(reposync下载rpm包、createrepo制作镜像仓库、httpd发布服务)

    记录:327 场景:在CentOS 7.9操作系统上,使用reposync从开源镜像站下载sclo镜像仓库的rpm包:使用createrepo制作本地SCLo-scl镜像仓库:使用httpd发布服务. ...

最新文章

  1. 灵活性是原则性基础上的灵活
  2. 清华大学孙茂松:自然语言处理一瞥,知往鉴今瞻未来
  3. 自定义Title(可以实现类似于携程网上价格的显示方式)
  4. LeetCode:3. Longest Substring Without Repeating Characters
  5. VMWare虚拟系统上网设置及VMWare虚拟机三种工作模式详解
  6. vue 组件中的钩子函数 不能直接写this
  7. “fatal error C1010”错误解决的三种方法
  8. 同步计数器 CountDownLatch
  9. python爬虫实例1:获取一个网页的列表数据
  10. 测试类写法以及几种常用方式
  11. Altium Designer 9 学习笔记(一)基础操作
  12. MySql嵌套查询+关联查询+多表查询+对应案例+mybatis动态sql 超详细
  13. 蓝牙温度检测系统(基于BT08-B蓝牙模块)
  14. Java后台+微信小程序实现推送 “服务通知”
  15. 微信、QQ可正常使用,但浏览器打不开网页解决办法
  16. 图片资源加密,Lua文件加密详解
  17. 51单片机之模拟IIC总线
  18. 创业者的噩梦 - 明明我先想到的
  19. format函数python生成列表_python 全栈开发,Day14(列表推导式,生成器表达式,内置函数)...
  20. Android 免 root 抓包简易教程

热门文章

  1. linux 窗口管理器_您最喜欢的Linux窗口管理器是什么?
  2. python pipenv_为什么Python开发人员应该使用Pipenv
  3. 开源项目面试重要吗_您的开源故事很重要
  4. HTTP协商缓存与HTTP强缓存
  5. Bootstrap显示或隐藏内容
  6. 访问 JSON 对象的值
  7. Bootstrap表单的默认布局
  8. 学习笔记-工业相机与普通相机优劣利弊
  9. python数据分类聚类案例_Python实现的KMeans聚类算法实例分析
  10. 电脑rar文件打开方式_新手使用苹果电脑Mac,知道这些让你用起来更舒心。