【问题标题】:Should a source code repository be laid out to match the .deb build directory structure?是否应该布置源代码存储库以匹配 .deb 构建目录结构?
【发布时间】:2014-04-20 20:05:21
【问题描述】:
我有一个现有的 git 存储库,其中包含我想打包到 .deb 中的文件。目前,我的源代码主要位于一个平面目录中,并且我有一个构建脚本,它将相关文件复制到 Debian 包构建目录中。例如
myapp.conf
myexecutable
运行 build.sh 后我得到:
./build/etc/myapp.conf
./build/usr/bin/myexecutable
然后我将此目录构建到我的.deb。
但是我可以通过将我的所有源代码维护在一个镜像.deb 构建目录结构的目录结构中来省略这个中间复制步骤吗?缺点是什么?
【问题讨论】:
标签:
git
version-control
packaging
deb
【解决方案1】:
我假设您是相关软件的维护者。
您要做的是将debian/ 目录添加到软件包的顶层,并在其中创建Debian 软件包文件。有一个工具(dh_make,来自dh-make 包)。
使用dh_make 创建一个“Debian 原生包”。在这种情况下,“本地”意味着软件的维护者和 Debian 软件包的维护者是同一个人(您),而不是您打包其他人的软件。
进入你的源目录,运行dh_make -n,然后在命令行回答问题。然后,切换到已创建的debian/ 目录并编辑各种文件。删除您不需要的示例文件(您可能不需要其中的大部分)。
如果您的项目使用make,并且您使用标准的make 目标,那么之后您可能没有太多工作要做。 Debian 工具链非常聪明地为您解决问题。
如果你使用 Git 来管理源代码,你应该安装 git-buildpackage 并使用它来构建你的包和发布版本。请参阅其文档。
你的包目录结构根本不需要改变——只会添加debian/目录。 Debian 软件包总是从“Debian 源代码包”构建而成,它是软件的源代码树,加上 debian/ 目录(可能还有补丁,因为您控制上游源,所以这不适用于您的情况)。