2014-10-22 73 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 

你幾乎可以做任何你想要的將正確的文件放到正確的位置,只要不從構建樹外拉取文件,並且沿途使用的所有工具都由構建依賴關係來解決。