打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
实战演练:MySQL RPM包定制化制作全过程

墨墨导读:本文详细介绍一键式安装部署,定制化制作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 -yyum 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.specName: mysqlVersion: 5.7.26Release: 1%{?dist}License: GPLURL: http://downloads.mysql.com/archives/get/file/mysql-5.7.26.tar.gzGroup: applications/databaseSource: %{name}-%{version}.tar.gzBuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)BuildRequires: cmakePackager: enmo@enmotech.comAutoreq: no#Source: %{name}-%{version}.tar.gzprefix: /opt/rpm/mysql-%{version}Summary: MySQL 5.7.26

%descriptionThe MySQL(TM) software delivers a very fast, multi-threaded, multi-user,and robust SQL (Structured Query Language) database server. MySQL Serveris intended for mission-critical, heavy-load production systems as wellas 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 CXXFLAGS
cmake \-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-dev
make -j `cat /proc/cpuinfo | grep processor| wc -l`
%installrm -rf %{buildroot}make install DESTDIR=%{buildroot}cp %{_sourcedir}/my.cnf $RPM_BUILD_ROOT%{prefix}/

%pregroupadd mysqluseradd -g mysql -s /bin/nologin -M mysql >/dev/null 2>&1
mkdir -p /datamkdir -p /data/mysqlmkdir -p /data/mysqltmpmkdir -p /data/dbdata
chown -R mysql:mysql /datachmod 700 /data/mysqltmp
%post/bin/cp %{prefix}/support-files/mysql.server /etc/init.d/mysql/bin/cp %{prefix}/my.cnf %{_sysconfdir}/my.cnfchkconfig mysql on%{prefix}/bin/mysqld --initialize-insecure --basedir=%{prefix} --datadir=/data/mysql --user=mysqlservice mysql startchown -R mysql:mysql /data/mysqlecho "export PATH=.:\$PATH:%{prefix}/bin;" >> ~/.bash_profilesource ~/.bash_profile
%preunservice mysql stopchkconfig --del mysqluserdel -r mysql >/dev/null 2>&1rm -rf %{prefix} >/dev/null 2>&1rm -rf /data/mysql >/dev/null 2>&1rm -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(复制到浏览器中打开或者点击“阅读原文”)
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
分享MySQL的自动化安装部署的方法
rpm 打包整理
Centos下使用rpmbuild以及checkinstall制作RPM包
请高手指点linux里如何制作用于安装软件的rpm包。
zh/HowTos/Custom Kernel
zh/HowTos/I need the Kernel Source
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服