我正在尝试将debian包拆分为更小的包。
原始广告资源MyPackage-1.0.deb
被拆分为几个小包(MyPackage-2.0.deb
,MyPackage-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
我应该如何拆分包以防止错误?
答案 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”可能是一个坏主意。