2014-10-22 27 views
1

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

debian/control看起来是这样的:

Source: demopackage 
Section: web 
Priority: extra 
Maintainer: myself <[email protected]> 
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 [email protected] --buildsystem=python_distutils --with=python2 

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

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

让我更清楚:所得demopackage应该是相同的,以通过debuild创建的时候我只有在debian/control所列的一种包装(即它包含装在/usr/share/pyshared代码,在/usr/lib/python2.7/...等创建的符号链接)。

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

您可以下载软件包的测试代码here

回答

0

你主要得到的答案 - dh_install是指定哪些文件到哪里的简单方法。

如果您可以轻松地枚举要在demopackage中访问的文件和/或目录,则创建debian/demopackage.install文件将解决该问题。对于很多Python包,它结束了足够的能有像

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

线但是,如果你需要比dh_install更多的灵活性可以提供,你可能需要使用一些明确的shell命令来替代,或者除了dh_install。例如,为了使一切是被安装到debian/tmp走在demopackage除了一个测试/ 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 

你几乎可以做任何你想要的将正确的文件放到正确的位置,只要不从构建树外拉取文件,并且沿途使用的所有工具都由构建依赖关系来解决。