update
This commit is contained in:
120
tms-mysql.install
Normal file
120
tms-mysql.install
Normal file
@@ -0,0 +1,120 @@
|
||||
# smarttms-mysql.install
|
||||
#
|
||||
# 这个脚本处理 smarttms-mysql 包的安装、升级和卸载时的操作。
|
||||
|
||||
pkgname="tms-mysql"
|
||||
mysql_install_dir="/usr/local/mysql"
|
||||
mysql_data_dir="/data/mysql"
|
||||
mysql_user="mysql"
|
||||
mysql_group="mysql"
|
||||
mysql_uid="306" # 与 RPM spec 保持一致
|
||||
mysql_gid="306" # 与 RPM spec 保持一致
|
||||
mysql_root_password="PythA90ra5"
|
||||
mysql_sql_file="/usr/share/${pkgname}/tms_db_s3.sql"
|
||||
mysql_service="mysqld.service"
|
||||
|
||||
# pre_install 钩子在安装文件复制到系统之前运行
|
||||
pre_install() {
|
||||
# 创建 mysql 用户和组,如果不存在的话
|
||||
if ! getent group "${mysql_group}" >/dev/null; then
|
||||
echo "Creating group '${mysql_group}' with GID ${mysql_gid}..."
|
||||
groupadd -r -g "${mysql_gid}" "${mysql_group}"
|
||||
fi
|
||||
if ! getent passwd "${mysql_user}" >/dev/null; then
|
||||
echo "Creating user '${mysql_user}' with UID ${mysql_uid}..."
|
||||
useradd -r -g "${mysql_gid}" -u "${mysql_uid}" -d "${mysql_data_dir}" -s /sbin/nologin "${mysql_user}"
|
||||
fi
|
||||
|
||||
# 创建数据目录并设置权限
|
||||
if [ ! -d "${mysql_data_dir}" ]; then
|
||||
echo "Creating MySQL data directory '${mysql_data_dir}'..."
|
||||
mkdir -p "${mysql_data_dir}"
|
||||
chown "${mysql_user}":"${mysql_group}" "${mysql_data_dir}"
|
||||
chmod 0750 "${mysql_data_dir}"
|
||||
fi
|
||||
}
|
||||
|
||||
# post_install 钩子在安装文件复制到系统之后运行
|
||||
post_install() {
|
||||
local install_type="$1"
|
||||
local timeout=60 # 等待 MySQL 启动的超时时间
|
||||
|
||||
# 由于数据库初始化和导入已在 PKGBUILD 的 package() 函数中完成,
|
||||
# post_install 钩子现在只负责在目标系统上启动和启用服务。
|
||||
|
||||
echo "Reloading systemd daemon..."
|
||||
systemctl daemon-reload
|
||||
|
||||
# 确保数据目录的权限正确,即使在 PKGBUILD 中已设置 root:root
|
||||
# 这里再次设置确保在目标系统上是 mysql 用户拥有
|
||||
echo "Setting ownership for MySQL data directory '${mysql_data_dir}' to ${mysql_user}:${mysql_group}..."
|
||||
chown -R "${mysql_user}":"${mysql_group}" "${mysql_data_dir}"
|
||||
|
||||
echo "Enabling MySQL service..."
|
||||
systemctl enable "${mysql_service}"
|
||||
|
||||
echo "Starting MySQL service..."
|
||||
systemctl start "${mysql_service}"
|
||||
|
||||
echo "Waiting for MySQL server to start (up to ${timeout} seconds)..."
|
||||
for i in $(seq 1 "${timeout}"); do
|
||||
"${mysql_install_dir}/bin/mysqladmin" ping -h 127.0.0.1 -P 3306 &>/dev/null && break
|
||||
sleep 1
|
||||
done
|
||||
|
||||
if ! "${mysql_install_dir}/bin/mysqladmin" ping -h 127.0.0.1 -P 3306 &>/dev/null; then
|
||||
echo "Warning: MySQL server did not start in time. Please check system logs for '${mysql_service}'." >&2
|
||||
# 不再强制退出,因为数据库已预初始化,服务启动失败可能是其他配置问题
|
||||
else
|
||||
echo "MySQL server is running."
|
||||
fi
|
||||
|
||||
echo "SmartTMS MySQL installation/upgrade complete."
|
||||
}
|
||||
|
||||
# pre_remove 钩子在卸载文件被删除之前运行
|
||||
pre_remove() {
|
||||
echo "Stopping MySQL service before removal..."
|
||||
systemctl stop "${mysql_service}"
|
||||
}
|
||||
|
||||
# post_remove 钩子在卸载文件被删除之后运行
|
||||
post_remove() {
|
||||
local remove_type="0" # 0 表示完全卸载,1 表示升级
|
||||
|
||||
echo "Disabling MySQL service..."
|
||||
systemctl disable "${mysql_service}"
|
||||
echo "Reloading systemd daemon..."
|
||||
systemctl daemon-reload
|
||||
|
||||
# 如果是完全卸载 (即 $1 为 0),则清理用户、组和数据目录
|
||||
if [ "${remove_type}" -eq 0 ]; then
|
||||
echo "Performing full uninstallation cleanup..."
|
||||
|
||||
rm -rf /usr/local/mysql-5.6.47-linux-glibc2.12-x86_64
|
||||
rm -rf /usr/local/mysql
|
||||
|
||||
# 警告用户数据目录将被删除
|
||||
echo "WARNING: This will remove the MySQL data directory '${mysql_data_dir}' and all its data."
|
||||
echo "Removing MySQL data directory '${mysql_data_dir}'..."
|
||||
rm -rf "${mysql_data_dir}"
|
||||
|
||||
|
||||
# 删除用户和组
|
||||
if getent passwd "${mysql_user}" >/dev/null; then
|
||||
echo "Removing user '${mysql_user}'..."
|
||||
userdel "${mysql_user}"
|
||||
fi
|
||||
if getent group "${mysql_group}" >/dev/null; then
|
||||
echo "Removing group '${mysql_group}'..."
|
||||
groupdel "${mysql_group}"
|
||||
fi
|
||||
|
||||
# 删除 PATH 环境变量配置脚本
|
||||
echo "Removing PATH configuration script '/etc/profile.d/mysql.sh'..."
|
||||
rm -f /etc/profile.d/mysql.sh
|
||||
echo "Full uninstallation cleanup complete."
|
||||
else # remove_type is 1 (upgrade)
|
||||
echo "MySQL package upgraded. Data directory and user/group are retained."
|
||||
fi
|
||||
}
|
||||
Reference in New Issue
Block a user