我如何做一个Python包的Debian包装?

我需要编写或者查找一个脚本来使用Python包中的python-support来创build一个Debian包。 Python包将是没有C扩展名的纯Python。

用于testing目的的Python包只是一个带有空的__init__.py文件和一个Python模块package_test.py

打包脚本必须使用python-support为目标平台上可能的Python安装提供正确的字节码,例如Ubuntu Jaunty上的v2.5和v2.6。

我在Google上find的大部分build议都只是恶意黑客的例子,甚至不使用python-support或python-central。

我花了好几个小时来研究这个问题,我能想到的最好的办法就是从现有的开源项目中破解脚本,但是我不知道我正在做什么。

有没有人在这里以一种合理的方式制作了一个Python包的Debian软件包?

我开始认为,从不了解Debian包装和Python支持到获得工作脚本需要一周多的时间。 他人用了多久?

我将采取现有的Debian软件包的来源,并用您的软件包取代其中的实际软件包。 要find依赖python支持的软件包列表,请执行

  apt-cache rdepends python-support 

select一个名为Architecture: all的包,以便它是一个纯Python包。 通过这个列表,我发现,例如python-flup可能是一个很好的起点。 为了得到这样一个包的来源,做

 apt-get source <package> 

build立它,做

 cd <packagesrc> dpkg-buildpackage -rfakeroot 

编辑它时,只需要debian文件夹中的文件; 用您自己的软件包名称replace所有对flup的引用。

一旦你开始,它应该需要你一天的时间来完成。

我想你想要的是http://pypi.python.org/pypi/stdeb

stdeb通过一个新的distutils命令sdist_dsc从Python包生成Debian源码包。 为Debian软件包提供了自动默认设置,但可以自定义生成软件包的许多方面(请参阅下面的自定义部分)。 另一个命令bdist_deb创build一个Debian二进制包,一个.deb文件。

这里发布的大部分答案已经过时了,幸运的是最近有一篇出色的Debian wiki文章,它解释了当前的最佳实践,并介绍了如何为Python模块和应用程序构buildDebian软件包。

构builddeb包的正确方法是使用dpkg-buildpackage但是有时候它有点复杂。 相反,您可以使用dpkg -b <folder> ,它将创build您的Debian软件包。

这些是使用dpkg -b <folder>创buildDebian软件包的基础知识,包含任何二进制文件或任何types的脚本,无需手动编译即可自动运行(Python,Bash,Pearl,Ruby):

  1. 创build文件和文件夹为了重新创build以下结构:
  ProgramName-Version/ ProgramName-Version/DEBIAN ProgramName-Version/DEBIAN/control ProgramName-Version/usr/ ProgramName-Version/usr/bin/ ProgramName-Version/usr/bin/your_script 

放置在/usr/bin/的脚本直接从terminal调用,请注意我没有为脚本添加扩展。 另外你可以注意到deb程序包的结构将会是程序安装后的结构。 所以如果你的程序有一个单独的文件,你可以直接把它放在ProgramName-Version/usr/bin/your_script ,但是如果你有多个文件,你应该把它们放在ProgramName-Version/usr/share/ProgramName/all your files并且只在/usr/bin/下面放置一个文件,它将从/usr/share/ProgramName/

  1. 将所有文件夹权限更改为root:

     chown root:root -R /path/to/ProgramName-Version 
  2. 更改脚本的权限:

     chmod 0755 /path/to/the/script 
  3. 最后,你可以运行: dpkg -b /path/to/the/ProgramName-Version ,你的deb包将被创build! (你也可以添加post / pre inst脚本和你想要的所有东西,就像一个普通的Debian软件包一样)


这是一个control文件的例子。 您只需将其复制粘贴到名为“control”的空文件中,并将其放入DEBIAN文件夹中

 Package: ProgramName Version: VERSION Architecture: all Maintainer: YOUR NAME <EMAIL> Depends: python2.7, etc , etc, Installed-Size: in_kb Homepage: http://foo.com Description: Here you can put a one line description. This is the short Description. Here you put the long description, indented by 1 space. 

首先,Debian已经有很多Python包了; 您可以使用apt-get source或通过访问http://packages.debian.org来下载其中的任何源代码(包括所有的包装)。;

您可能会发现以下使用资源:

  • Debian新维护者指南
  • Debian政策手册
  • Debian Python策略
  • Debian Python模块团队