过去两周我一直在寻找,把自己逼入多个死胡同,试图找出一条能带我去往我想去的地方的道路。然而我最终不得不承认我的答案没有明确地发布在任何地方,而我们就在这里。
我将开始澄清:我不想构建一个可再发行的 Django“应用程序”,这似乎意味着“插件” - 这不是一个 python 插件,它是一个带有 FCGI 服务器的完整网站,/etc/ init.d 脚本、/etc/djangoapps 中的配置文件以及我的网站使用的插件的requirements.txt。
我想构建一个 deb 包,以允许我从构建服务器部署到开发和生产服务器(我使用的是 Bamboo,但 Jenkins 应该是相同的原理。)
我还想在 Debian 7 Wheezy 上执行此操作,而不是 Ubuntu。 PKGME 似乎可以在 Ubuntu 和 Debian 8 上完成这项工作,但它无法在 Wheezy 中以功能状态安装,而且我无法找到修复它的方法。
因此,我尝试使用 setuptools、steb 和 debuild 来创建我的包,这导致我最终在 deb 中得到一个鸡蛋,它不包含任何我的 /etc 或 /usr 文件。
那么这里正确的方法是什么?
答案1
一个.deb
文件显然可以安装/etc
和下的文件/usr
,否则你的 Debian 7 系统无法使用这些文件安装,所以这就是要走的路。
您的问题似乎来自于您在尝试完成任务时所使用的工具,要么您以错误的方式使用它们,要么它们的“易用性”隐藏了.deb
完成任务所需的基础包的功能。
一个.deb
文件只是一个ar
包含 3 个文件的存档:一个版本号文件和两个tar
存档(通常是压缩的)。使用一些命令(ar x ...
分别)可以轻松解压tar xvf ..
并再次组合(
tar cvzf ...
分别ar mc ....
)。请注意,必须首先将 `debian_version 文件移至存档中。
当我必须制作.deb
软件包时,我从现有的软件包开始,该软件包已经完成了我需要的部分功能,并根据需要添加/更改内容。
更多的详细资料如果您需要了解安装程序如何执行包中的各种特殊脚本以及添加依赖项,当然可以使用。