Package: dpkg Version: 1.13.22 If A -Conflicts-> B, then dpkg correctly refuses to unpack A if B is installed and to unpack B if A is installed. Furthermore, dpkg correctly refuses to unpack A even if B is merely unpacked or half-installed etc.
However, if A is unpacked or half-installed, the conflict is not checked and it is possible to unpack B. This is a mistake. Between two packages, Conflicts is a relationship with symmetrical effects (in the absence of Replaces). I think it might also be possible to remove the predependencies of merely-unpacked packages, but I haven't tested this. The cause lies in depcon.c, in depisok: /* The dependency is always OK if we're trying to remove the depend*ing* * package. */ switch (dep->up->clientdata->istobe) { case itb_remove: case itb_deconfigure: return 1; case itb_normal: /* Only `installed' packages can be make dependency problems */ switch (dep->up->status) { case stat_installed: break; case stat_notinstalled: case stat_configfiles: case stat_halfinstalled: case stat_halfconfigured: case stat_unpacked: return 1; default: internerr("unknown status depending"); } It is not true that only `installed' packages can cause dependency problems. Both Conflicts and Pre-Depends, and soon Breaks, can cause problem even if the `source' package for the dependency is not completely installed. I _think_ simply saying something like this: case stat_halfinstalled: case stat_halfconfigured: case stat_unpacked: if (dep->type == dep_conflicts || dep->type == dep_predepends || dep->type == dep_breaks) break; /* fall through */ case stat_notinstalled: case stat_configfiles: return 1; ought to fix it but I haven't tested this. Ian. -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]