first commit

This commit is contained in:
zj
2025-12-12 23:36:00 +08:00
commit f492f6a281
8 changed files with 2192 additions and 0 deletions

102
PKGBUILD Normal file
View File

@@ -0,0 +1,102 @@
# Maintainer: Your Name <your.email@example.com>
pkgname=smarttms-mysql
pkgver=5.6.47
pkgrel=1
pkgdesc="MySQL 5.6.47 Database Server for SmartTMS Application (pre-compiled binary)"
arch=('x86_64')
url="https://www.mysql.com/"
license=('GPLv2')
# Arch Linux 通常不直接使用 group 字段,但可以作为 pkgdesc 的补充
# group="Applications/Databases"
# Source0 是 MySQL 预编译二进制包
# Source1 是自定义的 my.cnf 配置文件
# Source2 是 systemd 服务单元文件
# Source3 是 SmartTMS 应用程序的初始数据库 SQL 文件
# 注意:这里假设这些文件与 PKGBUILD 在同一目录。
# 对于 mysql-5.6.47-linux-glibc2.12-x86_64.tar.gz建议提供一个可下载的URL或确保本地存在。
# 如果你希望从官方下载,可以修改为:
# "mysql-5.6.47-linux-glibc2.12-x86_64.tar.gz::https://downloads.mysql.com/archives/get/file/mysql-5.6.47-linux-glibc2.12-x86_64.tar.gz"
source=(
"mysql-5.6.47-linux-glibc2.12-x86_64.tar.gz"
"my.cnf"
"mysqld.service"
"tms_db_s3.sql"
)
# 构建依赖
# systemd 是运行时依赖tar/gzip 是 pacman 自动处理的
makedepends=('systemd') # systemd 用于处理服务文件
# 运行时依赖
# shadow-utils 提供 useradd/groupadd
# libaio 是 MySQL 常见的运行时依赖
# perl-data-dumper 是 mysql_install_db 脚本的依赖
depends=(
'systemd'
'libaio'
'perl-data-dumper'
)
# 安装脚本,用于处理用户/组、数据目录、服务启用和数据库初始化
install="${pkgname}.install"
# 校验和,请使用 makepkg -g 生成
# makepkg -g >> PKGBUILD
sha256sums=('be2fa4fffc74dff626cfa8d62f16d9eef93bcd81bc8133ae500e04460e1fb795'
'a664d5b110640f877bd994e3218a0ae4531a0493f0a3869eea8973928f06e0cd'
'92cc61a5db1e791e463a030955566c1a6eb308f1cd3ff921f6d7bd1e4cdd48ff'
'b9e6e58cbc4809a2dd3432d36272ba71e0fc63af4a48288b24f30968c830e0c9')
# 配置备份,如果用户修改了这些文件,升级时会生成 .pacnew 文件
backup=(
'etc/my.cnf'
'etc/profile.d/mysql.sh'
'etc/systemd/system/mysqld.service' # 虽然是服务文件,但如果用户修改了,也可以备份
)
prepare() {
# 解压 MySQL 二进制包
# tar -xzf "${srcdir}/mysql-5.6.47-linux-glibc2.12-x86_64.tar.gz" -C "${srcdir}"
# 假设 tarball 内部顶层目录名为 mysql-5.6.47-linux-glibc2.12-x86_64
cd "${srcdir}/mysql-5.6.47-linux-glibc2.12-x86_64"
}
build() {
# 对于预编译二进制包,通常不需要编译步骤。
# 如果需要,可以在这里添加编译命令。
msg "No build step required for pre-compiled binaries."
}
package() {
# 清理构建根目录 (makepkg 会自动清理 $pkgdir)
# rm -rf "${pkgdir}"
# 创建安装路径
install -d "${pkgdir}/usr/local"
install -d "${pkgdir}/etc/systemd/system" # systemd 服务文件通常放在这里
install -d "${pkgdir}/etc/profile.d"
install -d "${pkgdir}/usr/share/${pkgname}" # 用于存放 SQL 导入文件
# 复制 MySQL 二进制文件到 /usr/local/
# 注意prepare 已经将内容解压到 "${srcdir}/mysql-5.6.47-linux-glibc2.12-x86_64"
cp -a "${srcdir}/mysql-5.6.47-linux-glibc2.12-x86_64/." "${pkgdir}/usr/local/mysql-5.6.47-linux-glibc2.12-x86_64"
# 创建 /usr/local/mysql 软链接
ln -s mysql-5.6.47-linux-glibc2.12-x86_64 "${pkgdir}/usr/local/mysql"
# 复制配置文件
install -m644 "${srcdir}/my.cnf" "${pkgdir}/etc/my.cnf"
# 复制 systemd 服务文件
install -m644 "${srcdir}/mysqld.service" "${pkgdir}/etc/systemd/system/mysqld.service"
# 创建 PATH 环境变量配置脚本
echo 'PATH=/usr/local/mysql/bin:$PATH' > "${pkgdir}/etc/profile.d/mysql.sh"
chmod 0644 "${pkgdir}/etc/profile.d/mysql.sh"
# 复制初始 SQL 导入文件
install -m644 "${srcdir}/tms_db_s3.sql" "${pkgdir}/usr/share/${pkgname}/tms_db_s3.sql"
}