我如何做一个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):
- 创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/
-
将所有文件夹权限更改为root:
chown root:root -R /path/to/ProgramName-Version
-
更改脚本的权限:
chmod 0755 /path/to/the/script
-
最后,你可以运行:
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模块团队