build rpm
This commit is contained in:
@@ -16,72 +16,15 @@ TOP_DIR="$PROJECT_ROOT/rpmbuild"
|
||||
# 3. 定义其他重要目录的绝对路径
|
||||
SOURCES_DIR="$TOP_DIR/SOURCES"
|
||||
SPECS_DIR="$TOP_DIR/SPECS"
|
||||
SPEC_FILE="$SPECS_DIR/smarttms.spec" # SPEC 文件的绝对路径
|
||||
SPEC_FILE="$SPECS_DIR/smarttms-mysql.spec" # SPEC 文件的绝对路径
|
||||
# 应用程序源代码的实际目录,它位于 SOURCES_DIR 下面
|
||||
SOURCE_CODE_ORIGINAL_DIR="$SOURCES_DIR/smarttms"
|
||||
SOURCE_CODE_ORIGINAL_DIR="$SOURCES_DIR/smarttms-mysql"
|
||||
|
||||
echo "脚本路径: $SCRIPT_PATH"
|
||||
echo "项目根目录: $PROJECT_ROOT"
|
||||
echo "RPM构建顶层目录 (_topdir): $TOP_DIR"
|
||||
echo "SOURCES目录: $SOURCES_DIR"
|
||||
echo "SPEC文件: $SPEC_FILE"
|
||||
echo "原始源代码目录 (待打包): $SOURCE_CODE_ORIGINAL_DIR"
|
||||
|
||||
|
||||
# 4. 检查原始源代码目录是否存在
|
||||
if [ ! -d "$SOURCE_CODE_ORIGINAL_DIR" ]; then
|
||||
echo "错误:找不到应用程序原始源代码目录 '$SOURCE_CODE_ORIGINAL_DIR'。"
|
||||
echo "请确保你的 'smarttms/' 目录位于 '$SOURCES_DIR' 下。"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 5. 确保 SOURCES 目录存在
|
||||
mkdir -p "$SOURCES_DIR"
|
||||
|
||||
# 6. 从 SPEC 文件中提取 Name 和 Version
|
||||
# rpmbuild 期望 Source0 的格式为 %{name}-%{version}.tar.gz
|
||||
# 因此,我们需要确保生成的 tarball 名称和其内部的顶层目录名匹配这个约定。
|
||||
SPEC_NAME=$(grep "^Name:" "$SPEC_FILE" | awk '{print $2}')
|
||||
SPEC_VERSION=$(grep "^Version:" "$SPEC_FILE" | awk '{print $2}')
|
||||
|
||||
if [ -z "$SPEC_NAME" ] || [ -z "$SPEC_VERSION" ]; then
|
||||
echo "错误:无法从 '$SPEC_FILE' 中提取 Name 或 Version。"
|
||||
echo "请确保 SPEC 文件中包含 'Name: <package_name>' 和 'Version: <package_version>'。"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# rpmbuild 期望的解压后的顶层目录名 (例如 smarttms-1.0)
|
||||
EXPECTED_UNPACK_DIR_NAME="${SPEC_NAME}-${SPEC_VERSION}"
|
||||
# 最终生成的 tarball 文件名 (例如 smarttms-1.0.tar.gz),与 Source0 匹配
|
||||
TARBALL_NAME="${EXPECTED_UNPACK_DIR_NAME}.tar.gz"
|
||||
TARBALL_PATH="$SOURCES_DIR/$TARBALL_NAME"
|
||||
|
||||
echo "从SPEC文件获取到: Name=$SPEC_NAME, Version=$SPEC_VERSION"
|
||||
echo "rpmbuild预期的解压目录名: $EXPECTED_UNPACK_DIR_NAME"
|
||||
echo "最终的tarball名称 (应与SPEC文件中的Source0匹配): $TARBALL_NAME"
|
||||
|
||||
|
||||
# 7. 清理旧的 tarball
|
||||
echo "清理旧的 tarball: $TARBALL_PATH"
|
||||
rm -f "$TARBALL_PATH"
|
||||
|
||||
# 8. 创建新的 tarball,使其解压后为期望的目录名 (例如 smarttms-1.0)
|
||||
echo "创建新的 tarball: $TARBALL_PATH"
|
||||
|
||||
# 创建一个临时目录作为打包的暂存区
|
||||
STAGING_TEMP_DIR=$(mktemp -d)
|
||||
# 确保脚本退出时清理临时目录
|
||||
trap "rm -rf '$STAGING_TEMP_DIR'" EXIT
|
||||
|
||||
# 将原始源代码复制到暂存区,并重命名为 rpmbuild 期望的目录名
|
||||
echo "将原始源代码 '$SOURCE_CODE_ORIGINAL_DIR' 复制到临时暂存区并重命名为 '$EXPECTED_UNPACK_DIR_NAME'"
|
||||
cp -r "$SOURCE_CODE_ORIGINAL_DIR" "$STAGING_TEMP_DIR/$EXPECTED_UNPACK_DIR_NAME"
|
||||
|
||||
# 在暂存区内执行 tar 命令,压缩重命名后的目录
|
||||
# 这样生成的 tarball 解压后就会得到 EXPECTED_UNPACK_DIR_NAME/ 目录
|
||||
(cd "$STAGING_TEMP_DIR" && tar -czvf "$TARBALL_PATH" "$EXPECTED_UNPACK_DIR_NAME")
|
||||
|
||||
echo "Tarball '$TARBALL_PATH' 已创建,其内容解压后将为顶层目录 '$EXPECTED_UNPACK_DIR_NAME/'。"
|
||||
|
||||
# 9. 执行 rpmbuild
|
||||
echo "执行 rpmbuild 命令..."
|
||||
|
||||
BIN
rpmbuild/RPMS/x86_64/smarttms-mysql-5.6.47-1.el9.x86_64.rpm
Normal file
BIN
rpmbuild/RPMS/x86_64/smarttms-mysql-5.6.47-1.el9.x86_64.rpm
Normal file
Binary file not shown.
34
rpmbuild/SOURCES/my.cnf
Normal file
34
rpmbuild/SOURCES/my.cnf
Normal file
@@ -0,0 +1,34 @@
|
||||
# For advice on how to change settings please see
|
||||
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
|
||||
# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
|
||||
# *** default location during install, and will be replaced if you
|
||||
# *** upgrade to a newer version of MySQL.
|
||||
|
||||
[mysqld]
|
||||
datadir=/data/mysql #指定mysql的数据目录
|
||||
innodb_file_per_table=on #在mariadb5.5以上版的是默认值,可不加
|
||||
skip_name_resolve=on #禁止主机名解析,建议使用
|
||||
|
||||
# Remove leading # and set to the amount of RAM for the most important data
|
||||
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
|
||||
# innodb_buffer_pool_size = 128M
|
||||
|
||||
# Remove leading # to turn on a very important data integrity option: logging
|
||||
# changes to the binary log between backups.
|
||||
# log_bin
|
||||
|
||||
# These are commonly set, remove the # and set as required.
|
||||
# basedir = .....
|
||||
# datadir = .....
|
||||
# port = .....
|
||||
# server_id = .....
|
||||
# socket = .....
|
||||
|
||||
# Remove leading # to set options mainly useful for reporting servers.
|
||||
# The server defaults are faster for transactions and fast SELECTs.
|
||||
# Adjust sizes as needed, experiment to find the optimal values.
|
||||
# join_buffer_size = 128M
|
||||
# sort_buffer_size = 2M
|
||||
# read_rnd_buffer_size = 2M
|
||||
|
||||
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
|
||||
BIN
rpmbuild/SOURCES/mysql-5.6.47-linux-glibc2.12-x86_64.tar.gz
Normal file
BIN
rpmbuild/SOURCES/mysql-5.6.47-linux-glibc2.12-x86_64.tar.gz
Normal file
Binary file not shown.
27
rpmbuild/SOURCES/mysqld.service
Normal file
27
rpmbuild/SOURCES/mysqld.service
Normal file
@@ -0,0 +1,27 @@
|
||||
[Unit]
|
||||
Description=MySQL Server
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=mysql
|
||||
Group=mysql
|
||||
|
||||
# 直接使用 mysqld
|
||||
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
|
||||
ExecStop=/usr/local/mysql/bin/mysqladmin shutdown
|
||||
|
||||
# 重启策略
|
||||
Restart=on-failure
|
||||
RestartSec=5s
|
||||
|
||||
# 超时设置
|
||||
TimeoutStartSec=300
|
||||
TimeoutStopSec=60
|
||||
|
||||
# 资源限制
|
||||
LimitNOFILE=65536
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
|
||||
1794
rpmbuild/SOURCES/tms_db_s3.sql
Normal file
1794
rpmbuild/SOURCES/tms_db_s3.sql
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,135 +1,189 @@
|
||||
Name: smarttms
|
||||
Version: 1.0
|
||||
Release: 1%{?dist}
|
||||
Summary: SmartTMS application suite for managing smart devices.
|
||||
# smarttms-mysql.spec
|
||||
#
|
||||
# 这个 spec 文件用于将 MySQL 5.6.47 及其相关配置打包成 RPM。
|
||||
# 它会创建 mysql 用户和组,初始化数据库,设置root密码,并导入初始SQL数据。
|
||||
|
||||
Name: smarttms-mysql
|
||||
Version: 5.6.47
|
||||
Release: 1%{?dist}
|
||||
Summary: MySQL 5.6.47 Database Server for SmartTMS Application
|
||||
# 禁用 debuginfo 包的生成
|
||||
%define debug_package %{nil}
|
||||
%global __debug_install_post %{nil}
|
||||
Group: Applications/Databases
|
||||
License: GPLv2
|
||||
URL: https://www.mysql.com/
|
||||
BuildArch: x86_64
|
||||
|
||||
License: Proprietary
|
||||
URL: https://your.company.com/smarttms
|
||||
Source0: %{name}-%{version}.tar.gz
|
||||
# Source0 是 MySQL 预编译二进制包
|
||||
Source0: mysql-5.6.47-linux-glibc2.12-x86_64.tar.gz
|
||||
# Source1 是自定义的 my.cnf 配置文件
|
||||
Source1: my.cnf
|
||||
# Source2 是 systemd 服务单元文件
|
||||
Source2: mysqld.service
|
||||
# Source3 是 SmartTMS 应用程序的初始数据库 SQL 文件
|
||||
Source3: tms_db_s3.sql
|
||||
|
||||
# BuildRequires 是构建 RPM 包所需的工具,这里主要是复制和打包,所以通常不需要太多
|
||||
# BuildRequires: tar, gzip # 这些通常是系统自带的,不需要显式列出
|
||||
|
||||
# Requires 是安装 RPM 包后,应用程序运行时所需的依赖。
|
||||
# 如果你的 smarttms.service 依赖 Java 或特定的运行时环境,需要在这里添加。
|
||||
# 例如:Requires: java-1.8.0-openjdk
|
||||
# 构建依赖
|
||||
BuildRequires: systemd
|
||||
BuildRequires: tar
|
||||
BuildRequires: gzip
|
||||
|
||||
# 运行时依赖
|
||||
Requires: systemd
|
||||
Requires: shadow-utils
|
||||
Requires: libaio
|
||||
Requires: perl-Data-Dumper
|
||||
|
||||
%description
|
||||
This package installs the SmartTMS application suite, including a
|
||||
Tomcat server, a starter application, a custom command-line tool,
|
||||
and a systemd service for automatic startup. It also configures
|
||||
sudoers for the 'smart' user and places application shortcuts.
|
||||
This package provides the MySQL 5.6.47 database server specifically configured
|
||||
for the SmartTMS application. It includes the necessary binaries,
|
||||
configuration files, systemd service unit, and initial database schema.
|
||||
|
||||
# --- 准备阶段 ---
|
||||
%prep
|
||||
%setup -q
|
||||
# 解压 Source0 (MySQL二进制包)
|
||||
# -q: 静默模式
|
||||
# -n: 指定解压后目录名,与 Source0 的 tarball 内部顶层目录名一致
|
||||
%setup -q -n mysql-5.6.47-linux-glibc2.12-x86_64
|
||||
|
||||
# 修复模糊的 Python shebangs
|
||||
# 假设这些脚本是 Python 3。如果它们是 Python 2 脚本,请将 'python3' 改为 'python2'。
|
||||
# 查找所有 .py 文件,将 #!/usr/bin/env python 替换为 #!/usr/bin/env python3
|
||||
find . -type f -name "*.py" -exec sed -i 's|^#!/usr/bin/env python$|#!/usr/bin/env python3|g' {} +
|
||||
# 查找所有 .py 文件,将 #!/usr/bin/python 替换为 #!/usr/bin/python3
|
||||
find . -type f -name "*.py" -exec sed -i 's|^#!/usr/bin/python$|#!/usr/bin/python3|g' {} +
|
||||
# 针对日志中提到的 websockify/run 文件,它没有 .py 后缀
|
||||
sed -i 's|^#!/usr/bin/python$|#!/usr/bin/python3|g' apache-tomcat-7.0.63/webapps/noVNC-master/utils/websockify/run
|
||||
|
||||
|
||||
|
||||
# --- 构建阶段 ---
|
||||
%build
|
||||
# 你的原始脚本没有编译步骤,所以此部分为空。
|
||||
# 对于预编译二进制包,通常不需要编译步骤。
|
||||
# 如果需要,可以在这里添加编译命令。
|
||||
|
||||
# --- 安装阶段 ---
|
||||
%install
|
||||
# %{buildroot} 是一个临时目录,模拟最终的根文件系统。
|
||||
# 清理构建根目录
|
||||
rm -rf %{buildroot}
|
||||
|
||||
# 1. 创建目标目录
|
||||
mkdir -p %{buildroot}/home/smart/.tms3/apache-tomcat-7.0.63
|
||||
mkdir -p %{buildroot}/home/smart/.tms3/starter
|
||||
mkdir -p %{buildroot}%{_bindir} # /usr/bin
|
||||
mkdir -p %{buildroot}%{_sysconfdir}/sudoers.d # /etc/sudoers.d
|
||||
mkdir -p %{buildroot}%{_unitdir} # /etc/systemd/system 或 /usr/lib/systemd/system
|
||||
mkdir -p %{buildroot}%{_datadir}/applications # /usr/share/applications
|
||||
# 创建安装路径
|
||||
mkdir -p %{buildroot}/usr/local
|
||||
mkdir -p %{buildroot}%{_unitdir}
|
||||
mkdir -p %{buildroot}/etc
|
||||
mkdir -p %{buildroot}/etc/profile.d
|
||||
mkdir -p %{buildroot}/usr/share/smarttms-mysql # 用于存放 SQL 导入文件
|
||||
|
||||
# 2. 复制文件
|
||||
cp -r apache-tomcat-7.0.63/* %{buildroot}/home/smart/.tms3/apache-tomcat-7.0.63/
|
||||
cp -r starter/* %{buildroot}/home/smart/.tms3/starter/
|
||||
cp smarttms %{buildroot}%{_bindir}/smarttms
|
||||
cp smart %{buildroot}%{_sysconfdir}/sudoers.d/smart # sudoers.d 文件
|
||||
cp smarttms.service %{buildroot}%{_unitdir}/smarttms.service # systemd 服务文件
|
||||
cp starter/tmsrestart.desktop %{buildroot}%{_datadir}/applications/tmsrestart.desktop # 桌面快捷方式
|
||||
# 复制 MySQL 二进制文件到 /usr/local/
|
||||
# 注意:%setup 已经将内容解压到当前目录 (即 %{_builddir}/mysql-5.6.47-linux-glibc2.12-x86_64)
|
||||
cp -a . %{buildroot}/usr/local/mysql-5.6.47-linux-glibc2.12-x86_64
|
||||
|
||||
# --- 文件列表 ---
|
||||
%files
|
||||
# 列出 RPM 包中包含的所有文件和目录。
|
||||
# 路径必须是相对于根目录 (/) 的绝对路径。
|
||||
# %attr(MODE, USER, GROUP) 用于设置文件权限和所有者。
|
||||
# %dir 用于明确声明一个目录。
|
||||
# 创建 /usr/local/mysql 软链接
|
||||
ln -s mysql-5.6.47-linux-glibc2.12-x86_64 %{buildroot}/usr/local/mysql
|
||||
|
||||
# /home/smart/.tms3 目录及其内容
|
||||
# 警告:此路径假设 /home/smart 存在且可写。
|
||||
# 777 权限非常开放,请确保这是你的意图。
|
||||
# 如果该目录可能包含用户生成的数据,RPM 卸载时不会强制删除非 RPM 跟踪的文件。
|
||||
%attr(0777, root, root) %dir /home/smart/.tms3
|
||||
%attr(0777, root, root) %dir /home/smart/.tms3/apache-tomcat-7.0.63
|
||||
/home/smart/.tms3/apache-tomcat-7.0.63/*
|
||||
%attr(0755, root, root) %dir /home/smart/.tms3/starter
|
||||
/home/smart/.tms3/starter/*
|
||||
# 复制配置文件
|
||||
cp %{SOURCE1} %{buildroot}/etc/my.cnf
|
||||
|
||||
# /usr/bin/smarttms
|
||||
%attr(0755, root, root) %{_bindir}/smarttms
|
||||
# 复制 systemd 服务文件
|
||||
cp %{SOURCE2} %{buildroot}%{_unitdir}/mysqld.service
|
||||
|
||||
# /etc/sudoers.d/smart
|
||||
%attr(0440, root, root) %config(noreplace) %{_sysconfdir}/sudoers.d/smart
|
||||
# 创建 PATH 环境变量配置脚本
|
||||
echo 'PATH=/usr/local/mysql/bin:$PATH' > %{buildroot}/etc/profile.d/mysql.sh
|
||||
chmod 0644 %{buildroot}/etc/profile.d/mysql.sh
|
||||
|
||||
# /etc/systemd/system/smarttms.service
|
||||
%attr(0755, root, root) %config(noreplace) %{_unitdir}/smarttms.service
|
||||
# 复制初始 SQL 导入文件
|
||||
cp %{SOURCE3} %{buildroot}/usr/share/smarttms-mysql/tms_db_s3.sql
|
||||
|
||||
# /usr/share/applications/tmsrestart.desktop
|
||||
%attr(0644, root, root) %{_datadir}/applications/tmsrestart.desktop
|
||||
%clean
|
||||
rm -rf %{buildroot}
|
||||
|
||||
%pre
|
||||
# 在安装包之前执行的脚本
|
||||
# 创建 mysql 用户和组,如果不存在的话
|
||||
getent group mysql >/dev/null || groupadd -r -g 306 mysql
|
||||
getent passwd mysql >/dev/null || useradd -r -g 306 -u 306 -d /data/mysql -s /sbin/nologin mysql
|
||||
|
||||
# 创建数据目录并设置权限
|
||||
# 注意:/data/mysql 是数据目录,不直接打包在 RPM 中,而是在 %pre 或 %post 中创建和管理
|
||||
mkdir -p /data/mysql
|
||||
chown mysql:mysql /data/mysql
|
||||
chmod 0750 /data/mysql
|
||||
|
||||
# --- 安装后脚本 ---
|
||||
%post
|
||||
# 这个脚本在 RPM 包安装完成后执行。
|
||||
# 1. 重新加载 systemd 配置,启用并启动服务
|
||||
systemctl daemon-reload >/dev/null 2>&1 || :
|
||||
systemctl enable smarttms.service >/dev/null 2>&1 || :
|
||||
systemctl start smarttms.service >/dev/null 2>&1 || :
|
||||
# 在安装包之后执行的脚本
|
||||
# $1 是安装类型,1 表示安装,2 表示升级
|
||||
|
||||
# 2. 更新桌面快捷方式缓存 (重要,让系统识别新的 .desktop 文件)
|
||||
update-desktop-database %{_datadir}/applications >/dev/null 2>&1 || :
|
||||
# 重新加载 systemd 配置,启用并启动 MySQL 服务
|
||||
%systemd_post mysqld.service
|
||||
|
||||
# 仅在首次安装时初始化数据库、设置密码和导入数据
|
||||
if [ "$1" -eq 1 ]; then
|
||||
echo "Initializing MySQL database..."
|
||||
# 切换到 MySQL 安装目录
|
||||
cd /usr/local/mysql/
|
||||
|
||||
# 初始化数据库
|
||||
./scripts/mysql_install_db --datadir=/data/mysql --user=mysql
|
||||
# 确保数据目录权限正确
|
||||
chown -R mysql:mysql /data/mysql
|
||||
|
||||
# 等待 MySQL 服务启动并可用
|
||||
echo "Waiting for MySQL server to start..."
|
||||
for i in $(seq 1 60); do
|
||||
/usr/local/mysql/bin/mysqladmin ping -h 127.0.0.1 -P 3306 &>/dev/null && break
|
||||
sleep 1
|
||||
done
|
||||
|
||||
if ! /usr/local/mysql/bin/mysqladmin ping -h 127.0.0.1 -P 3306 &>/dev/null; then
|
||||
echo "Error: MySQL server did not start in time for post-install setup." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "MySQL server is running. Performing initial setup..."
|
||||
# 设置 root 密码
|
||||
/usr/local/mysql/bin/mysqladmin -uroot password PythA90ra5
|
||||
|
||||
# 删除匿名用户和 test 数据库
|
||||
/usr/local/mysql/bin/mysql -uroot -pPythA90ra5 -e "DROP USER ''@'localhost'"
|
||||
/usr/local/mysql/bin/mysql -uroot -pPythA90ra5 -e "DROP DATABASE test"
|
||||
/usr/local/mysql/bin/mysql -uroot -pPythA90ra5 -e "FLUSH PRIVILEGES"
|
||||
|
||||
# 导入初始数据库
|
||||
echo "Importing initial database schema from %{_datadir}/smarttms-mysql/tms_db_s3.sql..."
|
||||
/usr/local/mysql/bin/mysql -uroot -pPythA90ra5 < %{_datadir}/smarttms-mysql/tms_db_s3.sql
|
||||
echo "Database initialization and import complete."
|
||||
else
|
||||
echo "MySQL package upgraded. Skipping database initialization."
|
||||
fi
|
||||
|
||||
# --- 卸载前脚本 ---
|
||||
%preun
|
||||
# 这个脚本在 RPM 包卸载前执行。
|
||||
# 1. 停止并禁用 systemd 服务
|
||||
systemctl stop smarttms.service >/dev/null 2>&1 || :
|
||||
systemctl disable smarttms.service >/dev/null 2>&1 || :
|
||||
# 在卸载包之前执行的脚本
|
||||
# 停止 MySQL 服务
|
||||
%systemd_preun mysqld.service
|
||||
|
||||
%postun
|
||||
# 这个脚本在 RPM 包卸载后执行。
|
||||
# 1. 重新加载 systemd 配置 (清理服务配置)
|
||||
systemctl daemon-reload >/dev/null 2>&1 || :
|
||||
# 在卸载包之后执行的脚本
|
||||
# $1 是卸载类型,0 表示完全卸载,1 表示升级
|
||||
|
||||
# 2. 更新桌面快捷方式缓存 (移除旧的 .desktop 文件)
|
||||
update-desktop-database %{_datadir}/applications >/dev/null 2>&1 || :
|
||||
# 禁用 MySQL 服务并重新加载 systemd 配置
|
||||
%systemd_postun mysqld.service
|
||||
|
||||
# 3. 清理 /home/smart/.tms3 目录 (可选,如果确定没有用户数据)
|
||||
# 注意:RPM 会自动删除 %files 中列出的文件。
|
||||
# 如果该目录中存在非 RPM 安装的文件,RPM 不会删除该目录。
|
||||
# 如果你希望在卸载时强制删除整个 .tms3 目录,即使里面有其他文件,
|
||||
# 可以添加以下命令,但请慎重考虑数据丢失的风险。
|
||||
# if [ -d /home/smart/.tms3 ] && [ -z "$(ls -A /home/smart/.tms3)" ]; then
|
||||
# rmdir /home/smart/.tms3 >/dev/null 2>&1 || :
|
||||
# fi
|
||||
# 如果是完全卸载 (即 $1 为 0),则清理用户、组和数据目录
|
||||
if [ "$1" -eq 0 ]; then
|
||||
echo "Performing full uninstallation cleanup..."
|
||||
# 删除数据目录 (请谨慎操作,这会删除所有数据!)
|
||||
rm -rf /data/mysql
|
||||
# 删除用户和组
|
||||
userdel mysql
|
||||
groupdel mysql
|
||||
# 删除 PATH 环境变量配置脚本
|
||||
rm -f /etc/profile.d/mysql.sh
|
||||
echo "Full uninstallation cleanup complete."
|
||||
fi
|
||||
|
||||
%files
|
||||
# 列出所有属于这个 RPM 包的文件和目录
|
||||
%defattr(-,root,root,-)
|
||||
# MySQL 安装目录及其内容
|
||||
/usr/local/mysql-5.6.47-linux-glibc2.12-x86_64/
|
||||
# 软链接
|
||||
/usr/local/mysql
|
||||
# 配置文件 (noreplace 表示如果文件被修改,升级时不会覆盖)
|
||||
%config(noreplace) /etc/my.cnf
|
||||
# systemd 服务文件
|
||||
%{_unitdir}/mysqld.service
|
||||
# PATH 环境变量配置脚本
|
||||
/etc/profile.d/mysql.sh
|
||||
# 初始 SQL 导入文件 (作为文档或辅助文件)
|
||||
%{_datadir}/smarttms-mysql/tms_db_s3.sql
|
||||
|
||||
%changelog
|
||||
* Fri Dec 05 2025 Your Name <your.email@example.com> - 1.0-1
|
||||
- Initial RPM packaging of SmartTMS application suite with systemd, sudoers.d,
|
||||
- and /usr/share/applications desktop shortcut.
|
||||
* Fri Dec 06 2025 Your Name <your.email@example.com> - 5.6.47-1
|
||||
- Initial RPM package for SmartTMS MySQL 5.6.47.
|
||||
|
||||
BIN
rpmbuild/SRPMS/smarttms-mysql-5.6.47-1.el9.src.rpm
Normal file
BIN
rpmbuild/SRPMS/smarttms-mysql-5.6.47-1.el9.src.rpm
Normal file
Binary file not shown.
Reference in New Issue
Block a user