如何简单直接地为Debian打包Python程序?

7
我在Python和Debian的分发工具迷宫中遇到了麻烦,其中包括cdbs、debhelper、python-support、python-central等等。
我的应用程序相当简单 - 一个单一的Python包(包含模块和一个__init__.py文件),一个用于运行程序的脚本(script.py)以及一些图标(.png文件)和菜单项(.desktop文件)。
从这些文件中,我如何构建一个简单、干净的.deb文件,而不使用上述荒谬的工具?
我主要针对Ubuntu,但希望该软件包也能在纯Debian上运行。
2个回答

5

python-stdeb 可以帮助你完成这项工作。它适用于Debian testing/unstable和Ubuntu (Lucid onwards)。使用命令apt-get install python-stdeb安装。

它不是一个简单的快捷方式,而是一种尝试生成尽可能多源代码包的工具。实际上,它可以构建一个既能正常工作又几乎符合标准的软件包。如果您希望您的软件包符合Debian、Ubuntu等标准并被纳入其中,您需要填写类似 debian/copyright等的文件。

尽管有很多人声称使用cdbs非常容易,但我想指出Nick提到的规则文件也可以很容易地使用debhelper7完成。更不要忘记的是,相比cdbs,dh7可以定制得更加容易。

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

注意:在提交到Debian之前,您应该检查您的软件包是否符合Debian政策、Debian Python政策等。您实际上需要阅读相关文档来完成这个过程——没有捷径。

3
首先,答案是没有一种简单的方法来制作dpkg包,文档来自许多地方的数百个小部分。然而,ubuntu的Python Packaging Guide非常有用。
对于简单的软件包(易于描述为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 + the hard way”下)。此外,还有一个pycentral选项可用于DEB_PYTHON_SYSTEM,如果您想要找到更多信息,可以搜索一下。

新的Ubuntu Python打包指南位于:http://packaging.ubuntu.com/html/python-packaging.html - Daniel Trebbien
@DanielTrebbien 那个链接已经失效了,但是archive.org的链接似乎提供了以前存在的内容。当前的Ubuntu维基似乎除了https://wiki.ubuntu.com/Python之外没有其他实质性的内容,基本上只是将有关打包的所有事情推迟到Debian维基上。 - tripleee

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接