Your message dated Sat, 9 Jan 2010 16:11:39 +0100 (CET)
with message-id <[email protected]>
and subject line Re: Bug#563895: diffutils: undeclared conflict with
diff<=2.8.1-12 (from lenny)
has caused the Debian Bug report #563895,
regarding diffutils: undeclared conflict with diff<=2.8.1-12 (from lenny)
to be marked as done.
This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.
(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)
--
563895: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=563895
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: diffutils
Version: 1:2.8.1-18
Severity: serious
Justification: Policy 7.6.1
Hello,
I've added 'unstable' in my sources.list for some *noarch packages and after
the last dist-upgrade the 'diffutils' package was installed due to being
'Essential: yes'. However, I realized that this package is not a part of
lenny and I uninstalled. The problem is that the binary '/usr/bin/diff' is
now missing but is a part of 'diff=2.8.1-12' from lenny too.
In conclussion something is missing from 'diffutils' to force uninstall or
upgrade of diff<=2.8.1-12 from lenny. I don't know if Breaks: or Conflict:
is more appropriate for this configuration.
Thanks
-- System Information:
Debian Release: squeeze/sid
APT prefers testing
APT policy: (990, 'testing'), (500, 'unstable')
Architecture: i386 (i686)
Kernel: Linux 2.6.32-trunk-686 (SMP w/2 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Versions of packages diffutils depends on:
ii libc6 2.10.2-2 GNU C Library: Shared libraries
diffutils recommends no packages.
Versions of packages diffutils suggests:
pn diffutils-doc <none> (no description available)
-- no debconf information
--- End Message ---
--- Begin Message ---
On Fri, 8 Jan 2010, Teodor MICU wrote:
> It is not clear however what happens if diff=2.8.1-12 is purged after
> diffutils=1:2.8.1-18 is installed. Will dpkg remove these essential
> tools on postrm? These are owned by diffutils now and must not be
> removed because are no longer owned by 'diff' binary package.
Try this and see it got yourself:
[ add squeeze to sources.list ]
apt-get update
apt-get install diffutils
dpkg -L diffutils | grep usr/bin
/usr/bin
/usr/bin/cmp
/usr/bin/diff
/usr/bin/diff3
/usr/bin/sdiff
dpkg -L diff | grep usr/bin
/usr/bin
This is exactly what Replaces is for. dpkg takes note that diffutils
has files in common with diff and moves the "property" of common files
from diff to diffutils. Try this as well:
less /var/lib/dpkg/info/diff.list
less /var/lib/dpkg/info/diffutils.list
As /usr/bin/diff is not owned by the diff package anymore, you could
purge diff safely even before it's upgraded to the dummy package.
> However, there is one scenario that could create problems. If someone
> reinstalls diff=2.8.1-12 is will override the binaries from diffutils.
If we continue from the example above:
[ remove squeeze from sources.list ]
apt-get update
dpkg --purge --force-remove-essential diff
apt-get install diff
dpkg -L diff | grep usr/bin
/usr/bin
dpkg still knows that /usr/bin/diff belongs to diffutils
and there is no overwrite problem at all.
> And this is exactly what I'm trying to accomplish: avoid diff=2.8.1-12
> and diffutils>=1:2.8.1-18 to be installed at the same time.
As I've shown, there is no problem in diff and diffutils to be
installed at the same time.
There is, however, one more reason to not use a Conflicts in addition
to Replaces. If we have both Conflicts and Replaces, then dpkg would
remove diff *before* installing diffutils, which would create a time
window during which /usr/bin/diff isn't provided by *any* package in the
system.
*That* would be a serious bug.
So, diffutils has a Replaces and not a Conflicts not only because
upgrades are smoother thay way, but also because it's the only way to
ensure that /usr/bin/diff is always working in the system, as it's proper
for an essential package.
For the same reason the dummy diff has a Pre-Depends on diffutils, not
just a Depends. This ensures that diffutils is installed and configured
before the dummy diff is installed. If the dummy diff was installed
first, we would have a time window again during which /usr/bin/diff
would not work in the system.
I hope everything is clear now.
> (Just a notice unrelated to this bug report, diffutils has
> "Pre-Depends: libc6 (>= 2.3)" but on diff the restriction was higher
> to "2.5").
Sice you are curious, the tools in testing and unstable (dpkg-shlibdeps)
are smarter and create the versioned dependency that is really required
according to the symbols from libc actually used by the package.
--- End Message ---