我编写了一个 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
- 从其中一个镜像网站下载该软件包。
- 使用档案管理器打开它。
- 您将看到一些目录。它们的结构就像文件系统的绝对根目录一样。
结论:
运行器必须进入 /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 应用程序开发者网站。