简单直接的方式打包Python程序到Debian?
我在处理Python和Debian的分发工具时遇到了麻烦,像什么cdbs
、debhelper
、python-support
、python-central
等等,搞得我一头雾水。
我的应用其实很简单,就是一个Python包(包含模块和一个__init__.py
文件的目录)、一个用来运行程序的脚本(script.py
)以及一些图标(.png
格式)和菜单项(.desktop
文件)。
我想知道,如何从这些文件开始,自己动手制作一个简单、干净的.deb安装包,而不使用上面那些让人摸不着头脑的工具呢?
我主要是想在Ubuntu上使用,但如果这个包也能在普通的Debian上运行就更好了。
2 个回答
首先,答案是制作一个 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
,如果你想了解更多信息,可以在网上搜索一下。
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 政策等。你实际上需要阅读相关文档——没有捷径可走。