Skip to content

```

!/bin/bash

centos8编译mysql的rpm包并利用sftp上传脚本

################变量

config=https://downloads.mysql.com/archives/get/p/23/file/mysql-community-5.7.32-1.el7.src.rpm

截取名称,截取包名-版本,为编译与传输做准备,这是该组件通用,不用修改;

var=$config

5.7.32-1.el7.src.rpm

rpmname="echo ${var#*community-}"

5.7.32

version="echo ${rpmname%-*}"

mysql-5.7.32.tar.gz

package="mysql-echo $version.tar.gz"

获取解压后的包

mysql-5.7.32

var2="mysql-echo $version"

为修改mysqld.cc做准备

route="echo $var2/sql/mysqld.cc"

获取大版本

bigver="echo ${version%%.*}"

连接sftp

user=sftp passwd='sftp' port=18884 ip=192.168.0.173

传输目的地

addr='/sftp/centos8/rpm'

依赖安装

yum install time libaio-devel ncurses-devel numactl-devel openssl-devel zlib-devel cyrus-sasl-devel openldap-devel perl-Env perl-Env.noarch cmake cmake3 gcc gcc-c++ make rpm-build vim perl-devel autoconf libaio perl-JSON.noarch perl-Data-Dumper perl wget bison perl-JSON libtirpc-devel automake libarchive -y yum install epel-release -y centos8安装rpcgen

配源

curl -o /etc/yum.repos.d/openEulerOS.repo https://repo.huaweicloud.com/repository/conf/openeuler_aarch64.repo yum install -y rpcgen mv /etc/yum.repos.d/openEulerOS.repo /etc/yum.repos.d/openEulerOS.repo.bak if [ $bigver -eq 5 ];then echo "正在centos8编译大版本为5的mysql"
else
echo "正在centos8编译大版本为8的mysq" #gcc高版本快速安装,防止修改MySQL源码包里的cmake配置文件 yum install devtoolset-10 -y source /opt/rh/devtoolset-10/enable #gcc -v fi

wget $var rpm -ivh *.rpm

执行编译#4表示并发数,要小于内存除以2G ,例如16G内存,则并发数小于8,_smp_mflags -j4 等于同时使用4个内核去并发执行。

rpmbuild -bb --define '_smp_mflags -j4' /root/rpmbuild/SPECS/mysql.spec

yum install createrepo -y createrepo /root/rpmbuild/RPMS/aarch64 cd /root/rpmbuild/RPMS/

mkdir $var2 cd /root/rpmbuild/RPMS/aarch64/ cp -r * ../$var2

利用sftp传输脚本生成的包

yum install vim wget -y yum install glibc-headers gcc-c++ make unzip -y cd /opt

编译tcl,expect编译依赖tcl

wget http://core.tcl.tk/tcl/zip/release/tcl.zip unzip tcl.zip cd ./tcl/unix ./configure && make -j4 && make install cd /opt

编译expect,expect提供了shell中的人机交互

wget https://jaist.dl.sourceforge.net/project/expect/Expect/5.45.3/expect5.45.3.tar.gz --no-check-certificate tar -xzvf expect5.45.3.tar.gz && cd expect5.45.3/ ./configure --build=arm-linux && make -j4 && make install

安装sftp,传输需要

yum install openssh-clients -y

cd /root/rpmbuild/RPMS

利用expect工具和sftp协议进行传输编译的包

/usr/local/bin/expect <<-EOF set timeout -1 spawn sftp -oPort=$port $user@$ip expect { "yes/no" { send "yes\r"; exp_continue } "Password:" { send "$passwd\r"; exp_continue } "sftp" { send "put -r ./$var2/ $addr\r" } } send "exit\r" expect eof EOF

echo "make over finishjrt"