我需要编写或找到一个脚本来使用Python包中的python-support创建Debian包.Python包将是纯Python,没有C扩展.
用于测试目的的Python包只是一个包含空python-support
文件和单个Python模块的目录__init__.py
.
打包脚本必须使用python-support为目标平台上可能的多个Python安装提供正确的字节码,即Ubuntu Jaunty上的v2.5和v2.6.
我在谷歌搜索时发现的大多数建议只是讨厌的黑客的例子,甚至不使用python-support或python-central.
我花了几个小时研究这个,我能想到的最好的是从现有的开源项目中破解脚本,但我不知道我正在做什么需要哪些位.
有没有人以合理的非hacky方式从Python包中制作Debian软件包?
我开始认为,从不知道Debian打包和python支持到获得工作脚本需要一个多星期的时间.其他人需要多长时间?
构建deb包的正确方法是使用,dpkg-buildpackage
但有时它有点复杂.相反,你可以使用dpkg -b
它,它将创建你的Debian包.
这些是dpkg -b
使用任何二进制文件或任何类型的脚本创建Debian软件包的基础知识,无需手动编译(Python,Bash,Pearl,Ruby):
创建文件和文件夹以重新创建以下结构:
ProgramName-Version/
ProgramName-Version/DEBIAN
ProgramName-Version/DEBIAN/control
ProgramName-Version/usr/
ProgramName-Version/usr/bin/
ProgramName-Version/usr/bin/your_script
放置的脚本/usr/bin/
直接从终端调用,请注意我没有在脚本中添加扩展名.另外你可以注意到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包将被创建!(你也可以添加post/pre inst脚本和你想要的一切,就像普通的Debian软件包一样)
这是该control
文件的一个示例.您只需将其复制粘贴到名为"control"的空文件中,并将其放在DEBIAN文件夹中
Package: ProgramName
Version: VERSION
Architecture: all
Maintainer: YOUR NAME
Depends: python2.7, etc , etc,
Installed-Size: in_kb
Homepage: http://example.com
Description: Here you can put a one line description. This is the short Description.
Here you put the long description, indented by one space.
关于Debian软件包的完整文章可以在这里阅读.
我将获取现有Debian软件包的来源,并将其中的实际软件包替换为您的软件包.要查找依赖于python-support的软件包列表,请执行
apt-cache rdepends python-support
选择一个包Architecture: all
,这样它就是一个纯Python包.通过这个列表,我发现例如python-flup可能是一个很好的起点.要获得一个这样的包的来源,做
apt-get source
要建立它,做
cddpkg-buildpackage -rfakeroot
编辑时,期望您只需要文件debian
夹中的文件; 用您自己的包名替换所有对flup的引用.
一旦开始,你需要花一天时间才能完成.
我想你想要的是http://pypi.python.org/pypi/stdeb:
stdeb通过新的distutils命令sdist_dsc从Python包生成Debian源包.为Debian软件包提供了自动默认值,但可以自定义生成的软件包的许多方面(请参阅下面的自定义部分).另一个命令bdist_deb创建一个Debian二进制包,一个.deb文件.
这里发布的大多数答案都已过时,幸运的是最近发布了一篇很棒的Debian wiki帖子,它解释了当前的最佳实践,并描述了如何为Python模块和应用程序构建Debian软件包.
http://wiki.debian.org/Python/Packaging
首先,Debian中已经有很多Python软件包了; 您可以使用apt-get source
或访问http://packages.debian.org下载任何来源(包括所有包装).
您可以找到以下使用资源:
Debian新维护者指南
Debian政策手册
Debian Python政策
Debian Python模块团队