如何签名Rust项目生成的Debian包?含cargo deb/debcargo相关疑问
解决方案
1. 从已有的.deb文件生成.changes文件
cargo deb确实没有直接生成.changes文件的功能,但可以用Debian原生工具dpkg-dev完成这个操作:
- 先确保安装了
dpkg-dev:sudo apt install dpkg-dev - 创建临时工作目录并进入:
mkdir deb-workdir && cd deb-workdir - 将目标.deb文件复制到当前目录,提取包的控制信息到
debian/DEBIAN目录:dpkg-deb -e ../your-package_<version>_<arch>.deb debian/DEBIAN - 创建符合Debian规范的
debian/changelog文件,推荐用dch工具快速生成:
手动编写的话要遵循以下格式:dch --create --package your-package --newversion <version> "Initial release for local repo"your-package (<version>) unstable; urgency=medium * Initial release for local APT repo. -- Your Full Name <your-email@domain.tld> <Date in "Wed, 01 Jan 2024 12:00:00 +0000" format> - 生成.changes文件:
其中dpkg-genchanges -b > your-package_<version>_<arch>.changes-b表示针对二进制包生成changes,若涉及源码包可改用-S参数。
生成后就可以用debsign命令对.changes文件签名:
debsign your-package_<version>_<arch>.changes
2. 为本地未托管在crates.io的Rust项目使用debcargo
debcargo支持直接处理本地项目,无需依赖crates.io:
- 确保已安装debcargo:
cargo install debcargo - 进入本地Rust项目的根目录(包含
Cargo.toml):cd /path/to/your/local/rust-project - 若要直接构建deb包,运行:
debcargo build --no-source--no-source参数强制debcargo使用本地代码,不从crates.io拉取源码。 - 若要生成完整的
debian目录结构(方便自定义构建配置),运行:
生成的debcargo init --no-sourcedebian目录包含控制文件、changelog等,可根据自有仓库需求修改这些文件。 - 后续可使用
dpkg-buildpackage完成构建,或者继续用debcargo生成最终的deb包。
内容的提问来源于stack exchange,提问作者Jamie
相关产品推荐
相关产品推荐

