拆分debian包 - 如何正确处理文件?

时间:2014-02-06 09:25:01

标签: build debian packaging deb

我正在尝试将debian包拆分为更小的包。

原始广告资源MyPackage-1.0.deb被拆分为几个小包(MyPackage-2.0.debMyPackage-config-2.0.deb)。

MyPackage-1.0.deb包含所有文件,在拆分期间,我将所有文件从目录 / etc 移动到包MyPackage-config-2.0.deb

dpkg-buildpackage进程没有错误。

当我尝试apt-get upgrade升级时,我收到此消息。

Unpacking MyPackage-config (from .../MyPackage-config-2.0.deb) ...
dpkg: error processing /var/cache/apt/archives/MyPackage-config-2.0.deb (--unpack):
 trying to overwrite '/etc/MyPackage.conf', which is also in package MyPackage 1.0
dpkg-deb: subprocess paste killed by signal (Broken pipe)

包没有安装unitil我强迫它 apt-get -o Dpkg::Options::="--force-overwrite" upgrade

在档案debian/control中有:

Source: MyPackage
Section: metapackages
Priority: optional
Maintainer: Just Me <me@example.com>
Standards-Version: 3.9.3
Build-Depends: debhelper (>= 4)

Package: MyPackage
Architecture: i386
Conflicts: gnumeric
Pre-depends: MyPackage-config
Depends: libreoffice-common
Description: This package

Package: MyPackage-config
Essential: yes
Architecture: i386
Depends: openssh-server
Description: config files

我应该如何拆分包以防止错误?

1 个答案:

答案 0 :(得分:2)

您可能希望将这些行添加到MyPackage-config:

Breaks: MyPackage (<< 2.0)
Replaces: MyPackage (<< 2.0)

这告诉dpkg不允许同时安装MyPackage 1.0和MyPackage-config 2.0(显然,他们都希望拥有/etc/MyPackage.conf),并且它也适用于MyPackage-config 2.0接管以前由MyPackage 1.0拥有的一些文件。

有关详细信息,请参阅http://www.debian.org/doc/debian-policy/ch-relationships.html

另外,在MyPackage-config上使用“Essential:yes”可能是一个坏主意。