# Mond 打包系统架构 ## 1. 身份标识 - **定义:** 基于 Debian 打包规范的多平台软件分发系统 - **目的:** 提供标准化、可靠的软件安装和管理机制 ## 2. 核心组件 - `debian/control.template` (PackageMetadata): 定义包元数据 - `debian/postinst` (PostInstallScript): 安装后配置脚本 - `debian/mond.service` (SystemdService): systemd 服务配置 - `debian/build-deb.sh` (BuildScript): 构建 Debian 包的脚本 ## 3. 打包系统设计 ### Debian 包结构 - **元数据:** 版本、依赖、描述 - **文件布局:** - 二进制文件:`/opt/mond/mond` - 配置文件:`/var/lib/mond/params.conf`(首次安装时自动创建) - 数据目录:`/var/lib/mond/data/` - 日志目录:`/var/log/mond/` - systemd 服务:`/lib/systemd/system/mond.service` ### 安装后脚本逻辑 1. 创建必要的系统用户和组(`mond:mond`) 2. 创建日志目录和数据目录(包括 `/var/lib/mond/data` 子目录) 3. **生成默认配置文件**(如果不存在) - 位置:`/var/lib/mond/params.conf` - 包含所有默认运行参数 - 使用 INI 格式 - 设置正确的权限(640, mond:mond) 4. 设置文件和目录权限 5. 重载 systemd 配置 6. 显示安装后说明(包括配置文件位置和使用指引) **重要特性:** 配置文件只在首次安装时创建,升级时不会覆盖用户修改。 ### systemd 集成 - 支持标准服务管理命令 - 使用配置文件方式启动(`--config-file=/var/lib/mond/params.conf --non-interactive`) - 配置服务依赖和启动行为 - 提供日志和状态监控 - 安全沙箱设置(NoNewPrivileges, ProtectSystem, ProtectHome) - 允许写入配置目录、数据目录和日志目录(ReadWritePaths) - 自动重启策略(Restart=always) **配置管理优势:** - 用户修改配置文件后,`apt upgrade` 不会覆盖 - systemd 服务文件可以安全更新,不影响用户配置 - 配置集中管理,易于维护 - 数据与配置分离,便于管理 ## 4. 设计原理 - **标准合规:** 遵循 Debian 打包最佳实践 - **可配置性:** 灵活的服务和安装配置 - **可靠性:** 通过 systemd 提供健壮的服务管理