制作mysql的rpm包_MySQL RPM包 定制化制作

本文介绍了如何在Linux环境中制作MySQL的RPM包。首先,安装必要的工具和依赖,如make、gcc和rpm-build。然后,创建rpmbuild目录结构,下载MySQL源码和配置文件。接着,编辑spec文件,配置编译选项,并执行rpmbuild命令打包。最后,完成打包后,可以在rpmbuild/RPM目录下找到生成的RPM包进行安装。
摘要由CSDN通过智能技术生成

在部署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 0

drwxr-xr-x 3 root root 25 Jul 26 20:51 BUILD

drwxr-xr-x 2 root root 6 Jul 26 20:15 BUILDROOT

drwxr-xr-x 2 root root 6 Jul 26 20:15 RPMS

drwxr-xr-x 2 root root 65 Jul 26 20:51 SOURCES

drwxr-xr-x 2 root root 30 Jul 26 20:41 SPECS

drwxr-xr-x 2 root root 6 Jul 26 20:15 SRPMS

3.下载源码包

1)下载mysql 源码:

https://downloads.mysql.com/archives/community/

db5d49db4fcbcec78a9a006b54e2e80e.png

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

1ecc6d4c61dc2a11cadb7945ca554f70.png

2)Mysql5.6后都要依赖boost_1_59_0.tar.gz包,所以这里我直接解压到BUILD目录下,不然检测不到;

下载地址如下:

https://www.boost.org/users/history/version_1_59_0.html

f4f4a0bf3a2327ecdbb183f12b588b1f.png

dc0b103845f88784bb2e5690aed5aa9d.png

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 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`

%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 /data

mkdir -p /data/mysql

mkdir -p /data/mysqltmp

mkdir -p /data/dbdata

chown -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包

e9c169efc97ce4f012ab3e46b3620e9e.png

1b4098c1131d333503a30833c8f71a0f.png

6.rpm安装MySQL

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

573c956b27a287c09471d5d30729382a.png

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/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值