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

时间:2014-10-22 09:04:14

标签: python linux package debian 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&#34; python包&#34;一个demopackage-test只包含test/unit_test.py(我的第二个包的数据文件)?

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

debian/demopackage-test.install我可以自行处理,我只需添加demopackage个文件,但我不知道如何处理{{1}}。

您可以下载包测试代码here

1 个答案:

答案 0 :(得分:0)

你大多得到了答案 - dh_install是指定哪些文件进入哪里的简单方法。

如果您可以轻松枚举要在demopackage中输入的文件和/或目录,那么创建debian/demopackage.install文件将解决问题。对于许多python包,它最终足以拥有像

这样的行
/usr/lib/python2.*/*-packages/whatever

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

debian/rules

只要您不从构建树外部提取文件,并且沿途使用的所有工具都会被占用,您几乎可以做任何想要将正确文件放到正确位置的内容通过构建依赖项。