为什么有些包会和自己冲突?

uli*_*tko 16 package-management aptitude apt dpkg

升级到 Oneiric 后,我在包管理器上遇到了一些麻烦(它想删除我系统的一半,包括 libc6、zlib1g 包等)。在与 aptitude 的斗争中,我注意到一些包具有元信息,表明它们与自身发生冲突。例子:

% aptitude show libc-bin
Package: libc-bin                        
Essential: yes
New: yes
State: installed
Automatically installed: no
Version: 2.13-20ubuntu5
Priority: required
Section: libs
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Uncompressed Size: 3,420 k
Conflicts: libc-bin
Breaks: libc0.1 (< 2.10), libc0.1 (< 2.10), libc0.3 (< 2.10), libc0.3 (< 2.10), libc6 (< 2.10), libc6 (< 2.10), libc6.1 (< 2.10), libc6.1 (< 2.10)
Replaces: libc0.1, libc0.1, libc0.3, libc0.3, libc6, libc6, libc6.1, libc6.1
Provides: libc-bin
Provided by: libc-bin
Description: Embedded GNU C Library: Binaries
Run Code Online (Sandbox Code Playgroud)

看到Conflicts: libc-bin线了吗?多一个:

% aptitude show qdbus   
Package: qdbus                           
New: yes
State: installed
Automatically installed: no
Version: 4:4.7.4-0ubuntu8.1
Priority: optional
Section: libs
Maintainer: Kubuntu Developers <kubuntu-devel@lists.ubuntu.com>
Uncompressed Size: 213 k
Depends: libc6 (>= 2.3.4), libgcc1 (>= 1:4.1.1), libqt4-dbus (= 4:4.7.4-0ubuntu8.1), libqt4-xml (= 4:4.7.4-0ubuntu8.1), libqtcore4 (= 4:4.7.4-0ubuntu8.1), libstdc++6 (>= 4.1.1)
Conflicts: qdbus
Breaks: libqt4-dbus (< 4:4.7.3-4ubuntu5), libqt4-dbus (< 4:4.7.3-4ubuntu5), qt4-dev-tools (< 4:4.7.3-4ubuntu6), qt4-dev-tools (< 4:4.7.3-4ubuntu6)
Replaces: libqt4-dbus (< 4:4.7.3-4ubuntu5), libqt4-dbus (< 4:4.7.3-4ubuntu5), qt4-dev-tools (< 4:4.7.3-4ubuntu6), qt4-dev-tools (< 4:4.7.3-4ubuntu6)
Provides: qdbus
Provided by: qdbus
Description: Qt 4 Dbus Tool
Run Code Online (Sandbox Code Playgroud)

相同的“与自身冲突”功能。

我现在已经解决了包管理器的问题,但问题仍然困扰着我:当包自身发生冲突时,这意味着什么?这是做什么用的?

Lek*_*eyn 25

Oneiric 支持 Multi-Arch,也就是说,允许您同时安装不同架构的包(目前 i386 和 amd64 又名 32 位和 64 位)。某些软件包不能同时安装(如 libc6:i386 和 libc6:amd64)。aptitude 无法处理这些情况,因此认为删除这些包可能是个好主意。建议apt-get现在使用。

如果您使用apt-cache show libc-bin,您可以看到提到此冲突的行:

多拱:外国

该字段的描述可以在http://wiki.debian.org/Multiarch/Implementation#Multi-Arch:_foreign_support_packages找到


Oli*_*Oli 8

Aptitude 不会向您展示整个故事。

$ apt-cache depends libc-bin | grep Conflicts
  Conflicts: libc-bin:i386
Run Code Online (Sandbox Code Playgroud)

我使用的是 64 位安装,因此它实际上仅与 32 位对应物发生冲突。


tum*_*eed 7

您遇到了错误 831768

aptitude恐怕还不了解 multiarch。最好避免,aptitude直到这个问题得到解决。一个可以生存apt-get