我需要编写或找到一个脚本来使用Python包中的python-support创建Debian包。 Python包将是纯Python,没有C扩展。
用于测试目的的Python包只是一个带有空__init__.py
文件和单个Python模块package_test.py
的目录。
打包脚本必须使用python-support为目标平台上可能的多个Python安装提供正确的字节码,即Ubuntu Jaunty上的v2.5和v2.6。
我在google搜索时发现的大多数建议只是讨厌的黑客的例子,甚至没有使用python-support或python-central。
我花了几个小时研究这个,我能想到的最好的是从现有的开源项目中破解脚本,但我不知道我正在做什么需要哪些。
有没有人以合理的非hacky方式从Python包中创建Debian软件包?
我开始认为从不知道Debian打包和python支持到获取工作脚本需要一个多星期的时间。它花了多长时间?
答案 0 :(得分:20)
我会获取现有Debian软件包的来源,并将其中的实际软件包替换为您的软件包。要查找依赖于python-support的包列表,请执行
apt-cache rdepends python-support
选择一个Architecture: all
的包,这样它就是一个纯Python包。通过这个列表,我发现,例如python-flup可能是一个很好的起点。
要获得一个这样的包的来源,请执行
apt-get source <package>
要构建它,请执行
cd <packagesrc>
dpkg-buildpackage -rfakeroot
编辑时,您只需要debian
文件夹中的文件;用您自己的包名替换所有对flup的引用。
一旦开始,你需要一天时间才能完成。
答案 1 :(得分:20)
我认为你想要的是http://pypi.python.org/pypi/stdeb:
stdeb生成Debian源包 从Python包中通过一个新的 distutils命令,sdist_dsc。 提供自动默认值 Debian包,但很多方面 得到的包可以 定制(见定制 部分,见下文)。额外的 命令bdist_deb创建一个Debian 二进制包,一个.deb文件。
答案 2 :(得分:20)
构建deb包的正确方法是使用dpkg-buildpackage
,但有时它有点复杂。相反,您可以使用dpkg -b <folder>
,它将创建您的Debian软件包。
这些是使用dpkg -b <folder>
创建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/
下放置一个文件{1}}将从/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 <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软件包的完整文章可以阅读here。
答案 3 :(得分:16)
这里发布的大多数答案都已过时,幸运的是最近发布了一篇很棒的Debian wiki帖子,它解释了当前的最佳实践,并描述了如何为Python模块和应用程序构建Debian软件包。
答案 4 :(得分:5)
首先,Debian中已经有很多Python软件包;您可以使用apt-get source
或访问http://packages.debian.org下载任何来源(包括所有包装)。
您可以找到以下使用资源: