从一个python项目创建多个deb包



我有一个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.py(第二个包的数据文件)的demopackage-test,我应该更改什么?

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

demopackage-test我可以自己处理,我只添加一个debian/demopackage-test.install文件,但我不知道该如何处理demopackage

您可以在此处下载包测试代码。

您基本上已经得到了答案-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

你几乎可以做任何你想做的事情,把正确的文件放在正确的地方,只要你不从构建树外部拉入文件,并且你在这个过程中使用的所有工具都由构建依赖项负责。

最新更新