165 lines
5.4 KiB
Bash
165 lines
5.4 KiB
Bash
#!/bin/bash
|
||
|
||
source <(curl -f -s --connect-timeout 10 --retry 3 https://dl.acepanel.net/public.sh)
|
||
if [ $? -ne 0 ]; then
|
||
echo "Download public.sh failed, please check the network or try again later."
|
||
exit 1
|
||
fi
|
||
|
||
name=${1}
|
||
channel=${2}
|
||
version=${3}
|
||
action=${4:-install} # install 或 update
|
||
mysql_path="${setup_path}/server/mysql"
|
||
|
||
# 安装依赖
|
||
if [ ${OS} == "rhel" ]; then
|
||
dnf makecache -y
|
||
dnf groupinstall "Development Tools" -y
|
||
dnf install -y cmake ninja-build doxygen graphviz bison ncurses-devel libtirpc-devel openssl-devel pkg-config systemd-devel openldap-devel libudev-devel cyrus-sasl-devel cyrus-sasl-scram patchelf rpcgen rpcsvc-proto-devel krb5-devel zlib-devel bzip2-devel lz4-devel xz-devel readline-devel libcurl-devel libxml2-devel pcre2-devel libaio libaio-devel libatomic
|
||
# x86_64 安装 libquadmath-devel
|
||
if [ "${ARCH}" == "x86_64" ]; then
|
||
dnf install libquadmath-devel -y
|
||
fi
|
||
elif [ ${OS} == "debian" ] || [ ${OS} == "ubuntu" ]; then
|
||
apt-get update
|
||
# Debian 13+ 及 Ubuntu 25+ 需要单独安装 systemd-dev,旧版系统不能安装否则会出现严重问题
|
||
if { [ ${OS} == "debian" ] && [ ${VERSION} -ge 13 ]; } || { [ ${OS} == "ubuntu" ] && [ ${VERSION} -ge 25 ]; }; then
|
||
apt-get install systemd-dev -y
|
||
fi
|
||
# Debian 13+ 及 Ubuntu 24+ 需要单独安装 libaio1t64,其他系统安装 libaio1 即可
|
||
# https://activemq.apache.org/components/artemis/documentation/latest/libaio.html#runtime-dependencies
|
||
if { [ ${OS} == "debian" ] && [ ${VERSION} -ge 13 ]; } || { [ ${OS} == "ubuntu" ] && [ ${VERSION} -ge 24 ]; }; then
|
||
apt-get install libaio1t64 -y
|
||
ln -s /usr/lib/x86_64-linux-gnu/libaio.so.1t64 /usr/lib/x86_64-linux-gnu/libaio.so.1
|
||
else
|
||
apt-get install libaio1 -y
|
||
fi
|
||
# x86_64 安装 libquadmath0
|
||
if [ "${ARCH}" == "x86_64" ]; then
|
||
apt-get install libquadmath0 -y
|
||
fi
|
||
apt-get install -y build-essential cmake ninja-build doxygen graphviz bison libncurses5-dev libtirpc-dev libssl-dev pkg-config libsystemd-dev libldap2-dev libudev-dev libsasl2-dev libsasl2-modules-gssapi-mit patchelf libkrb5-dev zlib1g-dev libbz2-dev liblz4-dev liblzma-dev libreadline-dev libcurl4-openssl-dev libxml2-dev libpcre2-dev libaio-dev libatomic1
|
||
else
|
||
error "Unsupported operating system"
|
||
fi
|
||
if [ "$?" != "0" ]; then
|
||
error "Failed to install dependencies"
|
||
fi
|
||
|
||
mysql_user_check=$(cat /etc/passwd | grep mysql)
|
||
if [ "${mysql_user_check}" == "" ]; then
|
||
groupadd mysql
|
||
useradd -s /sbin/nologin -g mysql mysql
|
||
fi
|
||
|
||
# 准备目录
|
||
[[ ${action} == "install" ]] && rm -rf ${mysql_path}
|
||
[[ ${action} == "install" ]] && mkdir -p ${mysql_path}
|
||
cd ${mysql_path}
|
||
|
||
# 下载源码
|
||
dl "${mysql_path}" "/mysql/src/${name}-${version}.7z"
|
||
|
||
7z x ${name}-${version}.7z
|
||
rm -f ${name}-${version}.7z
|
||
mv ${name}-${version} src
|
||
cd src
|
||
|
||
# 编译
|
||
mkdir build
|
||
cd build
|
||
|
||
# 57 和 80 需要 boost 和禁用 TOKUDB
|
||
if [[ ${channel} == "57" ]] || [[ ${channel} == "80" ]]; then
|
||
WITH_BOOST="-DWITH_BOOST=../boost"
|
||
WITHOUT_TOKUDB="-DWITH_TOKUDB=0"
|
||
fi
|
||
MAX_INDEXES=255
|
||
# MariaDB 只能设置 128
|
||
[[ ${channel} == "mariadb" ]] && MAX_INDEXES=128
|
||
WITH_SYSTEMD=ON
|
||
# MariaDB 要使用 yes
|
||
[[ ${channel} == "mariadb" ]] && WITH_SYSTEMD="yes"
|
||
|
||
# 内存大于 8GB 启用 RocksDB
|
||
WITH_ROCKSDB=0
|
||
WITH_ROCKSDB2=NO
|
||
[[ ${MEM} -ge 7900 ]] && WITH_ROCKSDB=1
|
||
[[ ${MEM} -ge 7900 ]] && WITH_ROCKSDB2=YES
|
||
|
||
cmake -G Ninja .. \
|
||
-DCMAKE_C_COMPILER=gcc \
|
||
-DCMAKE_CXX_COMPILER=g++ \
|
||
-DCMAKE_INSTALL_PREFIX=${mysql_path} \
|
||
-DMYSQL_DATADIR=${mysql_path}/data \
|
||
-DSYSCONFDIR=${mysql_path}/conf \
|
||
-DINSTALL_SYSCONFDIR=${mysql_path}/conf \
|
||
-DWITH_MYISAM_STORAGE_ENGINE=1 \
|
||
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
|
||
-DWITH_ARCHIVE_STORAGE_ENGINE=0 \
|
||
-DWITH_EXAMPLE_STORAGE_ENGINE=0 \
|
||
-DWITH_FEDERATED_STORAGE_ENGINE=0 \
|
||
-DWITH_BLACKHOLE_STORAGE_ENGINE=0 \
|
||
-DWITH_PARTITION_STORAGE_ENGINE=0 \
|
||
-DWITH_NDBCLUSTER_STORAGE_ENGINE=0 \
|
||
-DPLUGIN_CONNECT=NO \
|
||
-DPLUGIN_COLUMNSTORE=NO \
|
||
-DPLUGIN_SPHINX=NO \
|
||
-DPLUGIN_SPIDER=NO \
|
||
-DPLUGIN_S3=NO \
|
||
-DPLUGIN_ARCHIVE=NO \
|
||
-DPLUGIN_BLACKHOLE=NO \
|
||
-DPLUGIN_FEDERATED=NO \
|
||
-DPLUGIN_FEDERATEDX=NO \
|
||
-DPLUGIN_EXAMPLE=NO \
|
||
-DPLUGIN_PARTITION=NO \
|
||
-DPLUGIN_PERFSCHEMA=NO \
|
||
-DPLUGIN_MROONGA=NO \
|
||
-DPLUGIN_ROCKSDB=${WITH_ROCKSDB2} \
|
||
-DWITH_TOKUDB=0 \
|
||
-DWITH_ROCKSDB=${WITH_ROCKSDB} \
|
||
-DWITH_COREDUMPER=0 \
|
||
-DDEFAULT_CHARSET=utf8mb4 \
|
||
-DDEFAULT_COLLATION=utf8mb4_general_ci \
|
||
-DMAX_INDEXES=${MAX_INDEXES} \
|
||
-DWITH_RAPID=OFF \
|
||
-DWITH_NDBMTD=OFF \
|
||
-DENABLED_LOCAL_INFILE=ON \
|
||
-DWITH_BUILD_ID=OFF \
|
||
-DWITH_DEBUG=OFF \
|
||
-DWITH_UNIT_TESTS=OFF \
|
||
-DINSTALL_MYSQLTESTDIR= \
|
||
-DCMAKE_BUILD_TYPE=Release \
|
||
-DWITH_SYSTEMD=${WITH_SYSTEMD} \
|
||
-DSYSTEMD_PID_DIR=${mysql_path} \
|
||
-DWITH_EMBEDDED_SERVER=OFF \
|
||
-DWITH_EMBEDDED_SHARED_LIBRARY=OFF \
|
||
${WITH_BOOST} \
|
||
-DWITH_MYSQLX=OFF \
|
||
-DWITH_ROUTER=OFF \
|
||
-DWITH_MEB=OFF \
|
||
-DWITH_LTO=ON \
|
||
-DCOMPRESS_DEBUG_SECTIONS=ON
|
||
if [ "$?" != "0" ]; then
|
||
[[ ${action} == "install" ]] && rm -rf ${mysql_path}
|
||
error "Compilation initialization failed"
|
||
fi
|
||
|
||
ninja
|
||
if [ "$?" != "0" ]; then
|
||
[[ ${action} == "install" ]] && rm -rf ${mysql_path}
|
||
error "Compilation failed"
|
||
fi
|
||
|
||
# 安装
|
||
ninja install
|
||
if [ "$?" != "0" ]; then
|
||
[[ ${action} == "install" ]] && rm -rf ${mysql_path}
|
||
error "Installation failed"
|
||
fi
|
||
|
||
echo -e $HR
|
||
echo "Installation successful"
|
||
echo -e $HR
|