构建Deb包:如何计算安装大小并解决仓库Size信息警告
解决Deb包构建中Installed-Size不匹配与仓库警告问题
方法一:用dpkg-gencontrol自动生成合规的Control信息
dpkg-gencontrol是Debian打包工具链的核心组件,能自动计算Installed-Size并生成标准的control文件,推荐用完整打包流程替代手工编写:
调整包目录结构
新建源码包目录(比如my-package-1.0.0),将待打包的所有文件放入该目录,再在其中创建debian子目录。编写debian目录下的基础文件
- debian/control:填写包核心信息,无需手动写
Installed-SizePackage: my-package Version: 1.0.0 Section: custom Priority: optional Architecture: arm64 Essential: no Maintainer: martin Homepage: https://github.com/xxxx Description: xxxx Depends: net-tools, logrotate - debian/rules:打包规则脚本,赋予可执行权限
chmod +x debian/rules,最简内容如下:#!/usr/bin/make -f %: dh $@ - debian/install:指定文件安装路径,比如你的包文件在
src目录,要安装到/usr/local/bin,就写:src/* /usr/local/bin/
- debian/control:填写包核心信息,无需手动写
执行打包命令
在源码包目录(my-package-1.0.0)下运行:dpkg-buildpackage -rfakeroot -us -uc该命令会自动调用
dpkg-gencontrol计算Installed-Size,生成符合规范的deb包,同时自动处理依赖、权限等问题。
方法二:手动修正Installed-Size并消除仓库警告
如果坚持用fakeroot dpkg-deb --build的方式,可按以下步骤处理:
准确计算Installed-Size
Installed-Size是包内文件安装到系统后占用的磁盘空间,单位为KB(取整)。在待打包目录(比如my-package)下执行:du -s -k . | awk '{print $1}'将输出数值替换control文件中的
Installed-Size字段。解决仓库Size信息缺失警告
警告中的Size指deb包本身的大小,而非Installed-Size。将deb包放入本地仓库后,重新生成仓库索引文件:
在仓库目录下执行:dpkg-scanpackages . /dev/null | gzip -c > Packages.gz该命令会自动计算每个deb包的大小、MD5等信息,更新后的索引文件会消除警告。
内容的提问来源于stack exchange,提问作者martin
相关产品推荐
相关产品推荐

