简单直接的方式打包Python程序到Debian?

7 投票
2 回答
1624 浏览
提问于 2025-04-15 23:16

我在处理Python和Debian的分发工具时遇到了麻烦,像什么cdbsdebhelperpython-supportpython-central等等,搞得我一头雾水。

我的应用其实很简单,就是一个Python包(包含模块和一个__init__.py文件的目录)、一个用来运行程序的脚本(script.py)以及一些图标(.png格式)和菜单项(.desktop文件)。

我想知道,如何从这些文件开始,自己动手制作一个简单、干净的.deb安装包,而不使用上面那些让人摸不着头脑的工具呢?

我主要是想在Ubuntu上使用,但如果这个包也能在普通的Debian上运行就更好了。

2 个回答

3

首先,答案是制作一个 dpkg 并没有简单的方法,而且相关的文档分散在很多地方,像是碎片一样。不过,ubuntu 的 Python 打包指南 还是挺有用的。

对于简单的包(那些容易用 setuptools 描述的包),一旦你有了 debian 控制结构,步骤就比较简单了:

  • 运行 setup.py --sdist --prune,并确保将 dist-dir 设置为一个合理的值
  • 用适合你包的选项调用 dpkg-buildpackage(至少可能需要 -b

你需要一个 debian/rules 文件来让 buildpackage 正常工作,但幸运的是,如果你使用 cdbs,这部分工作已经为你做好了,你需要的东西大概像这样:

#!/usr/bin/make -f

DEB_PYTHON_SYSTEM := pysupport

include /usr/share/cdbs/1/rules/debhelper.mk
include /usr/share/cdbs/1/class/python-distutils.mk

如果你不使用 distutils,你可能想看看维基上的 DebianPython/Policy 页面(在“CDBS + 硬路子”下)。还有一个 pycentral 选项可以用于 DEB_PYTHON_SYSTEM,如果你想了解更多信息,可以在网上搜索一下。

5

python-stdeb 应该适合你使用。它在 Debian 的测试版和不稳定版,以及 Ubuntu(从 Lucid 开始)上都可以用。你可以通过 apt-get install python-stdeb 来安装它。

这并不是一个简单的快捷方式,而是一个工具,旨在尽可能多地生成源代码包。它实际上可以构建一个既能正常工作又几乎符合标准的包。如果你想让你的包符合 Debian、Ubuntu 等的质量标准,你需要填写一些文件,比如 debian/copyright 等。

虽然很多人说 cdbs 非常简单,但我想指出 Nick 提到的规则文件其实也可以用 debhelper7 来完成。而且,dh7 的自定义程度远比 cdbs 更容易。

#!/usr/bin/make -f
%:
    dh $@

注意:在提交到 Debian 之前,你应该检查你的包是否符合 Debian 政策、Debian Python 政策等。你实际上需要阅读相关文档——没有捷径可走。

撰写回答