当前位置:  开发笔记 > 编程语言 > 正文

如何对Python包进行Debian打包?

如何解决《如何对Python包进行Debian打包?》经验,为你挑选了5个好方法。

我需要编写或找到一个脚本来使用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支持到获得工作脚本需要一个多星期的时间.其他人需要多长时间?



1> rsm..:

构建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软件包的完整文章可以在这里阅读.


@Gleb前/后脚本必须放在`DEBIAN`文件夹中.只需添加正确的名称`preinst`,`postinst`,`prerm` [etc ..](https://www.debian.org/doc/debian-policy/ch-maintainerscripts.html).我很高兴它帮助你:)

2> Martin v. Lö..:

我将获取现有Debian软件包的来源,并将其中的实际软件包替换为您的软件包.要查找依赖于python-support的软件包列表,请执行

 apt-cache rdepends python-support

选择一个包Architecture: all,这样它就是一个纯Python包.通过这个列表,我发现例如python-flup可能是一个很好的起点.要获得一个这样的包的来源,做

apt-get source 

要建立它,做

cd 
dpkg-buildpackage -rfakeroot

编辑时,期望您只需要文件debian夹中的文件; 用您自己的包名替换所有对flup的引用.

一旦开始,你需要花一天时间才能完成.


注意:既然写了这个答案,就不推荐使用`python-support`来支持`dh_python2`.[转发到dh_python2](http://wiki.debian.org/Python/TransitionToDHPython2)在Debian wiki上进行了简要描述.

3> Nikratio..:

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

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



4> jpoppe..:

这里发布的大多数答案都已过时,幸运的是最近发布了一篇很棒的Debian wiki帖子,它解释了当前的最佳实践,并描述了如何为Python模块和应用程序构建Debian软件包.

http://wiki.debian.org/Python/Packaging



5> derobert..:

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

您可以找到以下使用资源:

Debian新维护者指南

Debian政策手册

Debian Python政策

Debian Python模块团队

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有