为Go程序构建.deb包失败,提示找不到上游tarball
Go程序构建.deb包失败,提示找不到上游tarball
嗨,我来帮你分析下这个问题——你遇到的报错核心原因是Debian源码格式的配置和你的项目结构不匹配。
你当前用的是默认的3.0 (quilt)源码格式,这种格式是专门给「基于上游开源项目做Debian定制打包」的场景设计的:它要求必须有一个单独的上游原始代码tar包(也就是报错里的deploy_1.0.orig.tar.{bz2,gz,lzma,xz}),用来区分上游源码和你添加的Debian打包补丁。但你的项目是自己开发的Go程序,源码和debian打包目录都在同一个git仓库里,根本没有单独的上游tar包,所以打包工具就报错了。
给你两个解决办法,推荐第一个:
方法一:改用Native源码格式(适合自己开发的项目)
这是最适配你场景的方案,因为你的项目是原创的,不需要区分上游和Debian修改:
- 在项目根目录的
debian文件夹下创建source子目录(如果没有的话):mkdir -p debian/source - 在
debian/source/里创建format文件,写入内容:echo "3.0 (native)" > debian/source/format - 回到项目根目录,重新运行打包命令:
dpkg-buildpackage -us -uc
这样就不需要单独的上游tar包了,打包工具会直接用你当前仓库里的源码来构建。
方法二:生成上游tar包(适合基于上游项目的场景)
如果你确实需要用quilt格式(比如后续要给上游提交补丁),那你需要手动生成对应的上游tar包:
- 先退出你的项目目录(回到
~/deploy的上级目录):cd .. - 用git归档来生成符合要求的tar包:
这里的git archive --format=tar.gz --prefix=deploy_1.0/ HEAD > deploy_1.0.orig.tar.gzdeploy_1.0要和你debian/control里的版本号对应(你的是1.0),格式是项目名_版本号。 - 回到项目目录,重新运行打包命令即可。
另外检查了下你的debian/control和debian/rules配置,都是没问题的,主要就是源码格式的问题导致的报错。
备注:内容来源于stack exchange,提问作者Arnaud F.
相关产品推荐
相关产品推荐

