有没有一种标准的方法来创建用于分发 Python 程序的 Debian 包?
问题描述
有大量关于如何做到这一点的信息,但由于给猫剥皮的方法不止一种",所有的教程/手册都涵盖了一些过程似乎做了一些与其他教程不同的假设,我仍然没有掌握它.
There is a ton of information on how to do this, but since "there is more than one way to skin a cat", and all the tutorials/manuals that cover a bit of the process seem to make certain assumptions which are different from other tutorials, I still didn't manage to grasp it.
到目前为止,这是我认为我理解的.
So far this is what I think I understood.
- 我的最终目标应该是创建一个二进制".deb 包.这样的包将是平台无关的(32/64 位),因为所有 Python 程序都是如此.
- 要创建二进制"包,我首先需要创建一个源包.
- 要创建源代码包,我可以使用
CDBS
或debhelper
.Debhelper 是初学者的推荐方式. - 创建源代码包的核心是在源目录中的
DEBIAN
目录中填充许多文件,说明文件需要复制的位置、它们受制于什么版权和许可方案、什么他们拥有的依赖项等等...... - 第 4 步可以在很大程度上自动化
dh_make
命令 if Python 源代码还带有 distutils 的setup.py
脚本.
- My final goal should be that of creating a "binary" .deb package. Such package will be platform-independent (32/64 bit) as all Python programs are such.
- To create a "binary" package I need first to create a source package.
- To create the source package I can use either
CDBS
ordebhelper
. Debhelper is the recommended way for beginners. - The core of creating a source package is populating the
DEBIAN
directory in the source directory with a number of files clarifying where files need to be copied, what copyright and licensing scheme they are subject to, what dependencies they have, etc... - Step #4 can be largely automated the
dh_make
command if the Python source also comes with a distutils'setup.py
script.
现在我的问题:
- 我对流程的理解是否正确?我是否遗漏了什么,或者我做错了什么?
- 第 5 步确实让我更加困惑:具体而言,我最不清楚的两点是:
- 如何编写安装独立程序的
setup.py
脚本? 作者:独立程序 我的意思是一个旨在供桌面用户使用的程序(与 module 不同,我理解它是一个导入后供其他软件使用的功能集合).在我的具体情况下,我实际上需要两个这样的程序":主软件和一个单独的实用程序(实际上是第二个程序",它应该与另一个程序在同一个包中). - 这种 DEB 包脚本的特殊性是什么?官方文档似乎只处理 RPM 和 Windows 的东西......
- 如何编写安装独立程序的
- Is my understanding of the process correct? Is there anything I am missing, or anything that I got wrong?
- Step #5 is really the more confusing to me: specifically the two points that remains most obscure to me are:
- How do I write a
setup.py
script that install a stand-alone programme? By standalone programme I mean a program intended to be used by a desktop user (as opposed to a module which I understand like a collection of functionality to be used by other software after having been imported). In my specific case I would actually need two such "programs": the main software and a separate utility (in effect a second "program" that should be in the same package with the other one). - What are the specificities of such a script for DEB packages? The official documentation only seems to deal with RPM and Windows stuff...
- How do I write a
顺便说一句:这些是迄今为止我能找到的最好的信息来源.如果你有比这更好的,请分享!:)
BTW: These are the best sources of information that I could find myself so far. If you have anything better than this, please share! :)
- Ubuntu 的 Python 打包指南
- 创建 .deb 包来自 python setup.py(它显示这些步骤,但它并没有解释足以让我跟随)
- ShowMeDo 视频使用 python 创建 .deb 包程序" (它似乎不是最新的,而且 - 如果我做对了 - 将生成供个人使用的包,没有依赖关系并且没有签名的变更日志和其他使其与 Debian 政策不兼容的关键数据).
- Ubuntu's Python packaging guide
- Creating a .deb package from a python setup.py (it shows the steps, but it doesn't explain them enough for me to follow along)
- ShowMeDo video on "creating a .deb package out of a python program" (it doesn't seem up-to-date and - if I got it right - will produce packages for personal use, without dependencies and without a signed changelog and other key data that will make it incompatible with the Debian policy).
解决方案
看起来像 stdeb会做你想做的.
It looks like stdeb will do what you want.
另外,对于安装脚本,我强烈推荐 distribute 的 console_scripts 入口点支持.
Also, for installing scripts, I strongly recommend distribute's console_scripts entry point support.
相关文章