最近不少人在问deb包怎么制作,尤其是用DebForge(deb包制作工具)的时候总会卡在各种奇怪的地方。我自己前阵子给几个小工具打包,前后折腾了差不多一周,把DebForge从头到尾摸了一遍,踩的坑不算少。这篇就把DebForge制作deb包常见问题解答整理出来,顺便把整个流程捋顺,新手照着走能少走点弯路。下面都是我实际操作的记录,不是照搬文档,有些细节文档里压根没提。
相关下载: DebForge(deb包制作工具) v1.9.2 安卓deb打包大小:12.7M
先说清楚,DebForge(deb包制作工具)不是那种大而全的官方工具链,它更像是一个把dpkg-deb那套命令包起来的图形化+命令行混合工具。你不需要手写debian/control里那一堆字段,也不用记一堆参数,界面里填一填就能出包。
我一开始是用dpkg-deb硬敲命令的,后来换成DebForge,最直观的感受就是依赖声明和目录结构自动化省事很多。尤其是做deb包依赖自动处理这块,它能帮你检查control文件里Depends写没写对,少打错字。
不过也别指望它啥都替你干,有些地方还是得自己动手,比如postinst脚本的逻辑,工具可猜不出来你想干啥。

先把流程说清楚,不然后面讲问题你没概念。整个deb包制作大概分四步:准备文件、写控制信息、打包、验证安装。
第一步,准备你的程序目录。 一般就是usr/bin放可执行文件,usr/share放资源。DebForge里有个“源目录”选项,你把这几个文件夹塞进去就行,它会自动按deb规范映射路径。这里提醒一句,文件权限别搞错,可执行文件记得给755,不然装完跑不起来。
第二步,填控制信息。 Package名、Version、Architecture、Maintainer这几个是必填的。Version建议带上版本号和修订号,比如1.0.0-1,后面升级好管理。Architecture选all还是amd64看你程序,纯脚本就all。
第三步,点打包。 DebForge会调dpkg-deb生成.deb文件。这一步最容易出问题,下面常见问题里细说。
第四步,验证。 用dpkg -i装一下,再dpkg -L看看文件都落哪了,最后跑一下程序确认能用。
这部分是重点,基本都是我或者群里朋友实际遇到的。
问题一:打包报错“control文件缺少Description”。 这个太常见了。DebForge的界面里Description分短描述和长描述两栏,短描述一行,长描述另起。很多人只填了短描述,长描述空着,生成时就会报错。补上就行,长描述随便写两句功能说明。
问题二:装的时候提示依赖不满足。 这就是deb包依赖自动处理没配好。DebForge里有个依赖检测按钮,点一下它会列出你程序用到的库。但注意,它只能检测动态链接库,脚本里调用的外部命令它查不出来。比如你脚本里用了curl,得自己手动在Depends里加curl。
问题三:打包成功但安装后程序找不到。 十有八九是路径映射错了。DebForge的源目录结构必须和deb规范对应,你如果把可执行文件放在源目录根下,装完它就在根下,不会自动进/usr/bin。老老实实建usr/bin目录再放进去。

问题四:版本号升级后旧包卸不干净。 这个跟DebForge关系不大,是postrm脚本的事。如果你在postinst里创建了配置文件,记得在postrm里清理。DebForge允许你挂脚本,但脚本内容得自己写,工具不背这个锅。
问题五:Architecture选错导致装不上。 在64位系统上打了一个i386的包,或者反过来。DebForge默认跟随当前系统架构,但你可以手动改。跨架构打包时一定确认清楚,不然dpkg会直接拒绝。
用熟之后我总结了几个小技巧。第一,把常用的control模板存下来,DebForge支持导入配置,下次新建直接套,不用每次重填。
第二,打好的包先在本机用dpkg-deb -c看看内容列表,确认文件都在该在的位置,比装完再找强。
第三,涉及deb包安装脚本编写的,postinst里别写太复杂的逻辑,能简单就简单,出问题不好排查。
第四,DebForge的日志面板别关,打包失败时错误信息都在那,比弹窗提示详细得多。
DebForge制作的deb包安全吗? 工具本身只是打包,包安不安全看你往里放了啥。自己写的程序自己清楚,别塞来路不明的二进制就行。
DebForge打包的deb包能上架软件源吗? 可以,但正规源一般要求签名,DebForge不负责签名,得自己用gpg处理,或者用reprepro建源时签。
DebForge在哪儿下载靠谱? 建议去项目官方仓库或者发行版自带的软件库里找,第三方下载站的包别乱装,尤其是要root权限运行的工具。
精彩推荐
用户评论