python - 如何对 Python 包进行 Debian 打包?

标签 python debian

我需要编写或找到一个脚本来创建一个 Debian 包,使用包 python-support ,来自 Python 包。 Python 包将是没有 C 扩展的纯 Python。

用于测试的 Python 包将只是一个包含空 __init__.py 文件和单个 Python 模块 package_test.py 的目录。

打包脚本必须使用 python-support 为目标平台上可能的多个 Python 安装提供正确的字节码,即 v2.5 和 v2.6 Ubuntu 9.04 (活泼的鹿角羚)。

我在谷歌搜索时发现的大多数建议只是不使用 python-supportpython-central 的讨厌的 hack 示例。

我花了好几个小时研究这个,我能想到的最好的办法就是破解现有开源项目的脚本,但我不知道我正在做的事情需要哪些位。

这里有没有人以合理的非 hacky 方式从 Python 包制作 Debian 包?

我开始认为从不了解 Debian 打包和 python-support 到获得工作脚本需要一个多星期的时间。别人花了多长时间?

最佳答案

构建 .deb 包的正确方法是使用 dpkg-buildpackage ,但有时它有点复杂。相反,您可以使用 dpkg -b <folder> ,它将创建您的 Debian 软件包。

这些是使用 dpkg -b <folder> 创建 Debian 软件包的基础知识。使用任何二进制文件或任何无需手动编译即可自动运行的脚本(Python、Bash、Perl 和 Ruby):

  1. 创建文件和文件夹以重新创建以下结构:

     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/ 调用您的脚本.

  2. 将所有文件夹权限改为root:

     chown root:root -R /path/to/ProgramName-Version
    
  3. 更改脚本的权限:

     chmod 0755 /path/to/the/script
    
  4. 最后,你可以运行:dpkg -b /path/to/the/ProgramName-Version并且您的 .deb 包将被创建! (您还可以添加 post/pre install 脚本和您想要的所有内容。它的工作方式与普通的 Debian 软件包一样。)

这是 control 的示例文件。您只需将其复制粘贴到一个名为“control”的空文件中,并将其放入 DEBIAN文件夹。

Package: ProgramName
Version: VERSION
Architecture: all
Maintainer: YOUR NAME <EMAIL>
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 软件包的完整文章可以阅读 here .

关于python - 如何对 Python 包进行 Debian 打包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1382569/

相关文章:

linux - debian wheezy 上的最新 nginx 源代码

删除 site.py 后 Python 失败

python - 如何获取/抓取 Play 商店或应用商店中应用的所有评论,我只获得前 40 条评论?

Python:如何根据位置输出FASTA头或染色体索引图?

python - 将 Django 管理显示时间设置为本地时间?

image - 您可以将Docker镜像转换/构建为完整的OS镜像吗?

python - 将嵌套的 Python 对象转换为字典的最经济的方法是什么?

python - 在virtualbox debian机器中使用python读取文件时的“IOError: [Errno 71] Protocol error”

debian -/etc/apt/sources.list.d的作用是什么?

mysql - 错误 : 'Access denied for user ' debian-sys-maint' @'localhost' (using password: YES)'