【问题标题】:Create multiple deb packages from a single python project从单个 python 项目创建多个 deb 包
【发布时间】:2014-12-17 16:36:05
【问题描述】:

我有一个 Python 项目,我想用这段代码创建两个 Debian 包,一个用于项目本身,另一个用于一些数据文件。

我的debian/control 看起来像这样:

Source: demopackage
Section: web
Priority: extra
Maintainer: myself <myself@example.com>
Build-Depends: debhelper (>= 8.0.0), python (>=2.7), python-setuptools
Standards-Version: 3.9.3

Package: demopackage
Architecture: all
Depends: ${misc:Depends}, ${python:Depends}
Description: A demo package
  This is the demo package

#Package: demopackage-test
#Architecture: all
#Depends: ${misc:Depends}, ${python:Depends}
#Description: demo package unit test
# This is the demo package's unit test package :)

debian/rules:

#!/usr/bin/make -f
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1

%:
    dh $@ --buildsystem=python_distutils --with=python2

当我在debian/control 中列出了一个包时,它会正确创建;当我取消注释第二个包时,我得到两个或多或少的空包,这是预期的,因为debuild 不知道哪些文件属于哪个包。

问题是我应该改变什么来创建一个demopackage“python包”和一个只包含test/unit_test.pydemopackage-test(我的第二个包的数据文件)?

让我更清楚一点:当我在debian/control 中仅列出一个包时,生成的demopackage 应该与debuild 创建的相同(即它包含安装在/usr/share/pyshared 中的代码,创建符号链接在/usr/lib/python2.7/... 等)。

demopackage-test我自己搞定,我就加个debian/demopackage-test.install文件,但是不知道demopackage怎么办。

您可以下载包测试代码here

【问题讨论】:

    标签: python linux package debian deb


    【解决方案1】:

    你已经得到了答案 - dh_install 是指定哪些文件去哪里的简单方法。

    如果您可以轻松地在demopackage 中枚举您想要进入的文件和/或目录,那么创建一个debian/demopackage.install 文件将解决问题。对于许多 python 包来说,有这样一行就足够了

    /usr/lib/python2.*/*-packages/whatever
    

    但是,如果您需要比dh_install 提供的更大的灵活性,您可能需要使用一些显式的shell 命令来代替,或者在dh_install 之外使用。例如,要使安装到debian/tmp所有内容 进入demopackage,除了一个test/unit_test.py 文件,您可以将这一节放在debian/rules 中:

    override_dh_install:
            dh_install
            cp -a debian/tmp/* debian/demopackage/
            rm debian/demopackage/usr/share/whatever/unit_test.py
    

    您几乎可以做任何您想做的事情,将正确的文件放到正确的位置,只要您不从构建树之外拉入文件,并且您在此过程中使用的所有工具都会被考虑在内通过构建依赖项。

    【讨论】:

      猜你喜欢
      • 2021-12-29
      • 1970-01-01
      • 2011-01-04
      • 2011-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-10
      • 1970-01-01
      相关资源
      最近更新 更多