如何为我的 pygtk 应用程序制作 deb pkg?

如何为我的 pygtk 应用程序制作 deb pkg?

我编写了一个 pygtk 应用程序并想为其制作一个 deb pkg。

$ tree WebPad/
WebPad/
|-- jspad
|   |-- __init__.py
|   |-- main.py
|   |-- t.py
|-- pixmaps
|   |-- c.png
|   |-- run.png
|   `-- webpad.png
|-- README
|-- run.py
`-- templates
    `-- webpad.tpl

3 directories, 19 files

我需要更改目录布局吗?

答案1

首先,您需要setup.py使用创建一个文件分布式实用程序在项目的根目录中。它应该包含类似以下内容的文本:

#!/usr/bin/env python

from distutils.core import setup
from glob import glob

setup(name = "WebPad",
    version="0.1",
    author="znetor",
    packages=["jspad"],
    data_files=[('share/webpad/pixmaps', glob("pixmaps/*"), ('share/webpad/templates', ['templates/webpad.tpl'])],
    scripts=['run.py'])

您还应该创建一个 MANIFEST.in 文件:

recursive-include pixmaps *
recursive-include templates *

完成后,您可以在终端上运行各种命令来分发您的项目:

chmod +x setup.py
sudo ./setup.py install # installs your project to /usr/local
./setup.py sdist # creates a source distribution in dist/

最后一个命令是我们感兴趣的。一旦你有了一个带有 distutils setup.py 脚本的源代码分发,你就可以按照Ubuntu 的 Python 打包指南。基本上,它涉及debian/在项目根目录中创建一个包含各种信息的目录并运行debuild

我写教程关于如何做到这一点,其中一些不是最佳实践,但它可以帮助您理解一些概念。

答案2

我一直很喜欢“通过示例学习”的方法,因此如下: http://packages.ubuntu.com/natty/all/software-center/download

  1. 从其中一个镜像网站下载该软件包。
  2. 使用档案管理器打开它。
  3. 您将看到一些目录。它们的结构就像文件系统的绝对根目录一样。

结论:

运行器必须进入 /usr/bin/ 目录。将其重命名为“web-pad”或“webpad”,并确保其以“#!/usr/bin/python”开头。这样,您可以轻松地从命令行启动它,而不必编写“python web-pad”。相反,“web-pad”就足够了。

其他文件必须放入 /usr/share/web-pad/ 或 /usr/share/webpad/ 中。要使启动器正常工作,您需要创建一个 /usr/share/pyshared-data/web-pad 或 /usr/share/pyshared-data/webpad 文件。我认为它会将您的源文件添加到包含路径,以便启动器可以启动它们。再次作为一个例子,使用包内的 /usr/share/pyshared-data/software-center 文件。

您还应该查看软件中心包中的其他文件。它们可以提供一些非常有用的信息。

是的,查看 DEBIAN 目录中的文件。特别是控制文件,因为它是设置依赖项、描述、版本、冲突等的地方……

触发器文件允许您为应用程序设置触发器。(可能在完成某件事时启动应用程序,但我不确定。您可以随时尝试...)prerm 脚本在文件被删除之前运行。(软件包删除)preinst 脚本在文件被复制到其位置之前运行。(软件包安装)postrm 脚本在文件被删除后运行。(软件包删除)postinst 脚本在文件被复制到其位置之后运行。(软件包安装)md5sums 文件包含内部文件的 md5 校验和。conflies 文件可能包含配置文件,但我对此不确定。

正如 @Flimm 所说,File roller 具有以更友好的方式打开 deb 档案的内置功能 - 这包括将 control.tar.gz 解压到 DEBIAN 目录中,将 data.tar.gz 解压到根目录中(其中包含您的文件)并隐藏 debian-binary 文件。在 Ark 中打开 deb 文件不会执行这些操作。

使用 FILE ROLLER 制作 DEB 包将不起作用!FILE ROLLER 仅支持读取 DEB!

你可以尝试这个应用程序,我看了一下,它看起来相当不错:http://debcreator.cmsoft.net/#download

答案3

您可能还想将您的应用程序移植到迅速地,然后使用quickly package命令自动为您打包。还有有关快速命令的更多信息Ubuntu 应用程序开发者网站

相关内容