如何对Python包进行Debian打包?
我需要编写或找到一个脚本,从Python包中使用package创建Debian包。Python包将是没有C扩展的纯Python 用于测试目的的Python包将只是一个目录,其中包含一个空的如何对Python包进行Debian打包?,python,debian,Python,Debian,我需要编写或找到一个脚本,从Python包中使用package创建Debian包。Python包将是没有C扩展的纯Python 用于测试目的的Python包将只是一个目录,其中包含一个空的\uuuu init\uuuu.py文件和一个Python模块package\u test.py 打包脚本必须使用python支持为目标平台上可能的多个python安装提供正确的字节码,即(Jaunty Jackalope)上的v2.5和v2.6 我在谷歌搜索时发现的大多数建议只是一些讨厌的黑客的例子,它们甚至
\uuuu init\uuuu.py
文件和一个Python模块package\u test.py
打包脚本必须使用python支持
为目标平台上可能的多个python安装提供正确的字节码,即(Jaunty Jackalope)上的v2.5和v2.6
我在谷歌搜索时发现的大多数建议只是一些讨厌的黑客的例子,它们甚至不使用python支持
或python中心
我花了几个小时研究这个,我能想出的最好办法就是从一个现有的开源项目中破解脚本,但我不知道我所做的工作需要哪些代码
这里有没有人用Python包以合理的非黑客方式制作了Debian包
我开始认为,从不了解Debian打包和
python支持到获得一个工作脚本需要一个多星期的时间。其他人花了多长时间?首先,Debian中已经有很多Python包;您可以使用apt get source
或通过访问下载其中任何一个的源代码(包括所有打包)
您可以找到以下可用资源:
我将获取现有Debian软件包的源代码,并用您的软件包替换其中的实际软件包。要查找依赖python支持的包的列表,请执行以下操作
apt-cache rdepends python-support
选择一个Architecture:all
包,使其成为纯Python包。浏览这个列表,我发现例如pythonflup可能是一个很好的起点。
要获取这样一个包的源,请执行以下操作
apt-get source <package>
apt获取源代码
要建造它,就要做
cd <packagesrc>
dpkg-buildpackage -rfakeroot
cd
dpkg buildpackage-rfakeroot
编辑时,您只需要debian
文件夹中的文件;用您自己的包名替换对flup的所有引用
一旦开始,您需要一天的时间才能完成。我想您需要:
stdeb产生Debian源代码包
通过新的
distutils命令,sdist\u dsc。
提供了自动默认值
Debian软件包,但有很多方面
生成的包的
自定义(请参见自定义
第节(见下文)。额外的
命令bdist_deb创建一个Debian
二进制软件包,一个.deb文件
这里发布的大多数答案都过时了,但幸运的是,最近发布了一篇很棒的Debian wiki文章,解释了当前的最佳实践,并描述了如何为Python模块和应用程序构建Debian包
构建.deb包的正确方法是使用
dpkg buildpackage
,但有时有点复杂。相反,您可以使用dpkg-b
,它将创建您的Debian包
以下是使用dpkg-b
创建Debian软件包的基础知识,该软件包使用任何二进制文件或任何类型的脚本自动运行,无需手动编译(Python、Bash、Perl和Ruby):
创建文件和文件夹以重新创建以下结构:
程序名版本/
程序名版本/DEBIAN
程序名版本/DEBIAN/control
程序名版本/usr/
程序名版本/usr/bin/
程序名版本/usr/bin/your_脚本
放置在/usr/bin/
的脚本直接从终端调用。请注意,我没有向脚本添加扩展。您还可以注意到.deb包的结构将是程序安装后的结构。因此,如果您遵循此逻辑,如果您的程序只有一个文件,您可以直接将其放在ProgramName Version/usr/bin/your_script
下,但是如果您有多个文件,您应该将它们放在ProgramName Version/usr/share/ProgramName/您的所有文件下,并且只将一个文件放在/usr/bin/
下,该文件将从/usr/share/ProgramName/
调用您的脚本
将所有文件夹权限更改为根目录:
chown root:root -R /path/to/ProgramName-Version
更改脚本的权限:
chmod 0755 /path/to/the/script
最后,您可以运行:dpkg-b/path/to/the/ProgramName Version
,您的.deb包将被创建!(您还可以添加安装后/安装前脚本和所有需要的内容。它的工作方式与普通Debian软件包类似。)
下面是控件
文件的示例。您只需将其复制粘贴到一个名为“control”的空文件中,并将其放入DEBIAN
文件夹中即可
包:程序名
版本:版本
建筑:全部
维护者:你的名字
取决于:python2.7等,
安装大小:以kb为单位
主页:http://example.com
描述:这里你可以放一行描述。这是简短的描述。
在这里,你把长描述,缩进一个空格。
可以阅读关于Debian软件包的完整文章。注意:由于这个答案是编写的,python支持
被弃用,取而代之的是dh_python2
。在Debian wiki上进行了简要描述。@drdaeman@Martin:dh_python2现在直接在python
包中提供,因此该配方不再有效。你将如何更新它?谢谢你的指导。如何添加安装前/安装后脚本?@Gleb安装前/安装后脚本必须放在DEBIAN
文件夹中。只需使用正确的名称添加脚本preinst
,postinst
,prerm
。我很高兴它帮了你:)结果,上面提到的(完整的)文章已经不见了。。(链接现在重定向到“”,链接可能(实际上)已断开。或者,哪个部分已被释放