构建 RPM 包¶
本项目使用 cargo-generate-rpm 自动生成 RPM 安装包,支持 RHEL / CentOS /
Fedora / openSUSE / Rocky Linux / AlmaLinux 等 RPM 系发行版。
快速开始¶
1. 安装 cargo-generate-rpm¶
2. 构建 rpm 包¶
# 先构建 release 二进制(如尚未构建)
cargo build --release -p shortener-server
# 构建 rpm
cargo generate-rpm -p shortener-server
# 输出位置
# target/generate-rpm/shortener-server_<version>-<release>.<arch>.rpm
3. 安装测试¶
# 安装
sudo rpm -i target/generate-rpm/shortener-server-*.rpm
# 或使用 dnf/yum(推荐,会自动处理依赖)
sudo dnf install ./target/generate-rpm/shortener-server-*.rpm
# 编辑配置
sudo nano /opt/shortener/config/config.toml
# 配置数据库路径(SQLite 示例)
# [database]
# url = "sqlite:///opt/shortener/data/shortener.db?mode=rwc"
# 启动服务
sudo systemctl start shortener-server
# 查看状态
sudo systemctl status shortener-server
4. 卸载¶
配置说明¶
RPM 打包配置在 shortener-server/Cargo.toml 中,资产与 DEB 包保持一致:
[package.metadata.generate-rpm]
vendor = "Jetsung Chan <i@jetsung.com>"
release = "1"
summary = "High-performance URL shortener service written in Rust"
pre_install_script = "../scripts/preinst"
post_install_script = "../scripts/postinst"
pre_uninstall_script = "../scripts/prerm"
requires = { systemd = "" }
[[package.metadata.generate-rpm.assets]]
source = "target/release/shortener-server"
dest = "/usr/local/bin/shortener-server"
mode = "755"
[[package.metadata.generate-rpm.assets]]
source = "../config/config.toml"
dest = "/opt/shortener/config.toml.example"
mode = "644"
config = true
[[package.metadata.generate-rpm.assets]]
source = "../deploy/systemd/shortener-server.service"
dest = "/lib/systemd/system/shortener-server.service"
mode = "644"
[[package.metadata.generate-rpm.assets]]
source = "../README.md"
dest = "/usr/share/doc/shortener-server/README.md"
mode = "644"
doc = true
字段说明:
vendor:包维护者(RPM 没有 deb 的maintainer字段,用vendor承载同一信息)release:RPM 的 release 字段,独立于版本号requires:显式依赖;动态库依赖(GLIBC、OpenSSL 等)由--auto-req自动检测- 资产项的
config = true对应 deb 的conffiles(升级时不覆盖用户修改的配置文件),doc = true对应 deb 的文档文件标记
安装后的文件布局¶
与 DEB 包一致:
/usr/local/bin/shortener-server # 二进制文件
/opt/shortener/config/config.toml # 配置文件(postinst 创建)
/opt/shortener/config.toml.example # 配置示例
/opt/shortener/data/ # 数据目录(数据库、GeoIP 等)
/opt/shortener/logs/ # 日志目录
/lib/systemd/system/shortener-server.service # systemd 服务
/usr/share/doc/shortener-server/README.md # 文档
维护脚本¶
RPM 通过 *_script 字段直接引用 scripts/ 目录下的脚本(同一批文件也供
DEB 包使用):
preinst:创建用户和组,备份配置postinst:创建目录,设置权限,启用服务prerm:停止并禁用服务