--force-overwrites: A report
I figured out that the Contents and Packages files that are present on
the Debian mirrors contain enough information to scan for overlaps
between packages, which means I don't need to have an actual CD to
scan. (Gawk almost choked on the 10 MB Contents file, though. It's
time I learned perl :-)
I scanned both bo (1.3.1) and hamm (unstable), and I've combined the
results into one report. The Contents and Packages files for unstable
were dated Aug 18 16:59 on the ftp.nluug.nl mirror.
These scans include the packages from contrib and non-free, which the
previous two scans (of buzz and rex) did not. To make them easier to
compare, I have added "contrib" or "non-free" to the package names
where appropriate.
My script ignores directories, and ignores overlaps between packages
that conflict with each other directly.
I'll put my conclusion here rather than bury it at the foot of this
mail. The number of _new_ overlaps in unstable suggests that the
default of --force-overwrites is better turned off now than later.
Very few overlaps date back to the time that the decision to make it a
default was made (presumably for backward compatibility).
Of course, it would be a Good Thing if all overlaps were resolved
first, so if no-one disagrees, I will start filing bug-reports against
the packages in unstable that still overlap.
Richard Braakman
=== Overlaps in stable ===
Overlap between efax_08a-3 and mgetty-fax_1.1.2-1:
usr/man/man1/fax.1.gz
This overlap is still present in unstable, with efax_08a-4 and
mgetty-fax_1.1.7-4. Dirk Eddelbuettel said that it has been fixed in
newer releases of mgetty, but there's a bug in the fix. The rules
file for mgetty moves usr/man/man1/fax.1 to usr/man/man1/mgetty-fax.1,
but then calls debstd which puts the fax.1 manpage right back :-)
Overlap between efax_08a-3 and addressbook_0.6.1-1:
usr/bin/fax
This looks like a true filename conflict: different programs both
called "fax". Also see bug #10294, "Executable names in addressbook
are much too general".
The overlap is gone in unstable.
Overlap between mgetty_1.1.2-1 and pvftools_1.1.2-1:
usr/man/man1/pvf.1.gz
pvftools conflicts with mgetty-voice, but not with mgetty.
This overlap is gone in unstable.
Overlap between gnuchess-book_1.0 and gnuchess_4.0.pl77-1:
usr/lib/games/gnuchess/gnuchess.data
gnuchess-book depends on gnuchess, and gnuchess suggests gnuchess-book.
This overlap is not a problem because gnuchess-book diverts the file.
Overlap between inews_2.1-2, cnews_cr.g7-4 and inewsinn_1.5.1-2:
usr/bin/inews
This one is still present in unstable (with cnews_cr.g7-8).
Both inews and cnews conflict with inewsinn, but they do not conflict
with each other. In fact, inews depends on cnews. This overlap is
not a problem because inews diverts /usr/bin/inews.
Overlap between libmagick-lzw-dev_3.8.2-1 (non-free) and libmagick-dev_3.8.2-1:
usr/X11R6/include/X11/magick/PreRvIcccm.h
usr/X11R6/include/X11/magick/X.h
usr/X11R6/include/X11/magick/compress.h
usr/X11R6/include/X11/magick/error.h
usr/X11R6/include/X11/magick/gems.h
usr/X11R6/include/X11/magick/image.h
usr/X11R6/include/X11/magick/magick.h
usr/X11R6/include/X11/magick/monitor.h
usr/X11R6/include/X11/magick/plug-ins.h
usr/X11R6/include/X11/magick/utility.h
usr/X11R6/include/X11/magick/widget.h
usr/X11R6/lib/libMagick.a
usr/X11R6/lib/libMagick.so
This one is still present in unstable, with version 3.8.9-1 for both.
This overlap is not a problem, since libmagick-dev depends on libmagick
and libmagick-lzw-dev depends on libmagick-lzw, and libmagick-lzw and
libmagick conflict. (My script doesn't catch these indirect conflicts.)
Overlap between apsfilter_4.9.1-10 and a2ps_4.4-1 (non-free):
usr/man/man1/a2ps.1
This one is still present in unstable (same versions).
a2ps installs usr/bin/a2ps and usr/man/man1/a2ps.1
apsfilter installs usr/lib/apsfilter/bin/a2ps and usr/man/man1/a2ps.1
Overlap between lprng_3.2.1-1, apsfilter_4.9.1-10 and lpr_5.9-13.1:
etc/printcap
lprng and lpr conflict, but neither conflicts with apsfilter.
This overlap is still present in unstable, with lprng_3.2.6-2 and lpr_5.9-20.
I tried to figure out what apsfilter does with etc/printcap but its
postinst scares me. (It even _beeps_).
Overlap between postgres95_1.09-1 and lprng_3.2.1-1:
usr/man/man1/monitor.1.gz
This overlap is still present in unstable, with lprng version 3.2.6-2.
Since lprng does not install a monitor binary, it can probably leave
out the manpage.
Overlap between xless_1.7-4 and scilab_2.2-4 (non-free):
usr/X11R6/lib/X11/app-defaults/XLess
This overlap is still present in unstable (same versions).
scilab provides usr/lib/scilab/bin/xless. If this is not an xless
version, then this is a widget name collision. If it is, then it
should probably be made to use the xless package instead.
Overlap between xless_1.7-4 and linux86_0.0.11-0:
usr/man/man3/regexp.3.gz
This one is still present in unstable (same versions).
Overlap between xemacs-support_19.14-1 and cvs-pcl_1.9-4:
usr/info/pcl-cvs.info.gz
cvs-pcl depends on emacs, and xemacs-support conflicts with emacs, so
this overlap is not a problem.
This overlap is gone in unstable, because xemacs-support is gone. (It has
been replaced by xemacs-support19 and xemacs-support20).
Overlap between psgml_1a12-1 and xemacs-support_19.14-1:
usr/info/psgml.info.gz
This overlap is gone in unstable, same reason as above.
Overlap between amaya-static_0.95-1 (non-free) and amaya_0.95-1 (non-free):
usr/bin/amaya
usr/lib/Thot/LINUX-ELF/bin/amaya
usr/lib/Thot/amaya/HTML.STR
usr/lib/Thot/amaya/HTMLP.PRS
usr/lib/Thot/amaya/HTMLPBW.PRS
usr/lib/Thot/amaya/HTMLPP.PRS
usr/lib/Thot/amaya/HTMLPPUS.PRS
usr/lib/Thot/amaya/HTMLT.TRA
usr/lib/Thot/config/amaya.keyboard
usr/lib/Thot/config/en-amayadialogue
usr/lib/Thot/config/en-amayamsg
usr/lib/Thot/config/fr-amayadialogue
usr/lib/Thot/config/fr-amayamsg
These packages should probably conflict with each other.
This one is still present in unstable (same versions).
Overlap between xview-clients_3.2p1.3-2 and olvwm_4.1-5:
usr/X11R6/man/man1/olwm.1x.gz
This one is still present in unstable (with olvwm_4.1-7)
It is not a problem, because olvwm diverts the file.
Overlap between lapack_2.0.1-1 and lapack-doc_2.0.1-1:
usr/man/man3/lapack.3.gz
This overlap is gone in unstable.
Overlap between bsdmainutils_3.2-0 and sysvbanner_1.0-1:
usr/bin/banner
This overlap is gone in unstable.
Overlap between shellutils_1.16-2 and secure-su_961025-2:
bin/su
usr/man/man1/su.1.gz
This one is still present in unstable (with shellutils 1.16-4).
It is not a problem because secure-su diverts both files.
Overlap between libc5-dev_5.4.33-3 and libatalk-dev_1.4b2-4:
usr/include/netatalk/at.h
This overlap is gone in unstable, because libc5-dev has been replaced
by libc5-altdev which has its files in a different location.
Overlap between dpkg-cross_0.1 and dpkg-dev_1.4.0.8:
usr/bin/dpkg-buildpackage
usr/bin/dpkg-shlibdeps
dpkg-cross depends on dpkg-dev.
This overlap is still present in unstable, with dpkg-cross_0.3 and
dpkg-dev_1.4.0.19. It is not a problem, because dpkg-cross diverts
both files.
Overlap between ircii_2.9.3roof-1 and bitchx-lib_0.70-2:
usr/lib/irc/script/2.8script
usr/lib/irc/script/action
usr/lib/irc/script/alias
usr/lib/irc/script/autoop
usr/lib/irc/script/basical
usr/lib/irc/script/bigcheese
usr/lib/irc/script/brc
usr/lib/irc/script/channel
usr/lib/irc/script/columns
usr/lib/irc/script/commander
usr/lib/irc/script/compl.mods
usr/lib/irc/script/complete
usr/lib/irc/script/cursor
usr/lib/irc/script/deutsch
usr/lib/irc/script/disc
usr/lib/irc/script/edit
usr/lib/irc/script/english
usr/lib/irc/script/events
usr/lib/irc/script/finger
usr/lib/irc/script/fnet
usr/lib/irc/script/functions
usr/lib/irc/script/global
usr/lib/irc/script/history
usr/lib/irc/script/history-match
usr/lib/irc/script/imap
usr/lib/irc/script/ircprimer
usr/lib/irc/script/ircrc
usr/lib/irc/script/kickmenu
usr/lib/irc/script/killpath
usr/lib/irc/script/kpstat
usr/lib/irc/script/list
usr/lib/irc/script/log
usr/lib/irc/script/lynx_ircrc
usr/lib/irc/script/meta1
usr/lib/irc/script/msg
usr/lib/irc/script/mudlike
usr/lib/irc/script/nemesis
usr/lib/irc/script/netsplit
usr/lib/irc/script/newaway
usr/lib/irc/script/newformat
usr/lib/irc/script/nicks
usr/lib/irc/script/oldping
usr/lib/irc/script/ping
usr/lib/irc/script/prefix
usr/lib/irc/script/recursion
usr/lib/irc/script/repeat
usr/lib/irc/script/screen
usr/lib/irc/script/shell
usr/lib/irc/script/silent
usr/lib/irc/script/smileys
usr/lib/irc/script/tabkey
usr/lib/irc/script/time
usr/lib/irc/script/troy
usr/lib/irc/script/uhnotify
usr/lib/irc/script/wallopstat
usr/lib/irc/script/window
usr/lib/irc/translation/ASCII
usr/lib/irc/translation/CP437
usr/lib/irc/translation/CP850
usr/lib/irc/translation/DANISH
usr/lib/irc/translation/DEC_MCS
usr/lib/irc/translation/DG_MCS
usr/lib/irc/translation/DUTCH
usr/lib/irc/translation/FINNISH
usr/lib/irc/translation/FRENCH
usr/lib/irc/translation/FRENCH_CANADIAN
usr/lib/irc/translation/GERMAN
usr/lib/irc/translation/HP_MCS
usr/lib/irc/translation/IRV
usr/lib/irc/translation/ITALIAN
usr/lib/irc/translation/JIS
usr/lib/irc/translation/MACINTOSH
usr/lib/irc/translation/NEXT
usr/lib/irc/translation/NORWEGIAN_1
usr/lib/irc/translation/NORWEGIAN_2
usr/lib/irc/translation/PORTUGUESE
usr/lib/irc/translation/PORTUGUESE_COM
usr/lib/irc/translation/RUSSIAN
usr/lib/irc/translation/RUSSIAN_ALT
usr/lib/irc/translation/SPANISH
usr/lib/irc/translation/SWEDISH
usr/lib/irc/translation/SWEDISH_NAMES
usr/lib/irc/translation/SWEDISH_NAMES_COM
usr/lib/irc/translation/SWISS
usr/lib/irc/translation/UNITED_KINGDOM
usr/lib/irc/translation/UNITED_KINGDOM_COM
It looks like these packages should conflict, or else bitchx (the
newcomer) should use a different location for its library files, if
possible. If the library files for both packages are identical,
it might be possible to put them in a separate package.
This overlap is still present in unstable (same versions).
Overlap between ppd-adobe-extra_96.06.12-1 (non-free) and ppd-adobe-misc_96.06.12-1 (non-free):
usr/share/ppd/en/Monotype_ImageMaster_1200_v52_3.ppd
usr/share/ppd/en/Monotype_Imagesetter_v52_2.ppd
usr/share/ppd/en/Monotype_Systems_Limited_RipExpress-J.ppd
usr/share/ppd/en/Monotype_Systems_Limited_RipExpress.ppd
This one is still present in unstable (same versions).
Overlap between oldmitpthreads_0.0 and libpthread0-dev_0.5-2:
usr/include/pthread.h
This overlap is gone in unstable.
Overlap between xtar-dmotif_1.4-2 (contrib) and xtar-smotif_1.4-2 (contrib):
usr/X11R6/bin/xtar
usr/X11R6/lib/X11/app-defaults/XTar
usr/X11R6/lib/X11/xtar/xtar.doc
usr/X11R6/man/man1/xtar.1x.gz
usr/doc/xtar/README
usr/doc/xtar/README.HPPD
usr/doc/xtar/README.debian
usr/doc/xtar/buildinfo.Debian
usr/doc/xtar/changelog.Debian
usr/doc/xtar/copyright
These should probably conflict.
This overlap is still present in unstable (same versions).
=== New overlaps in unstable ===
Overlap between speak-freely_6.1b-3 (non-free) and libgsm-dev_1.0.10-2:
usr/man/man3/gsm.3.gz
It looks like speak-freely is compiled with its own gsm library and
debstd is picking up the manpage automatically. (Several gsm
manpages, actually).
Overlap between speak-freely_6.1b-3 (non-free) and libgsm-bin_1.0.10-2:
usr/man/man1/toast.1.gz
Same problem as above. (There is a gsm/man/toast.1 in the speak-freely
source).
Overlap between ncsa_1.4.2-6 and cgi-scripts_1.0.3:
usr/lib/cgi-bin/imagemap
This one is not really new since it showed up in 1.2 as well. I don't
know where it went in 1.3.
Overlap between bsdmainutils_3.4 and zmailer_2.99.48.2-3:
usr/bin/vacation
usr/man/man1/vacation.1.gz
Overlap between ftape-2.0.30_3.03a-1 and kernel-image-2.0.30_2.0.30-8:
lib/modules/2.0.30/misc/ftape.o
ftape checks in its preinst whether a lib/modules/`uname -r`/misc/ftape.o
exists and aborts if that is the case. But that will not help if
ftape is installed before kernel-image-2.0.30 is.
Overlap between libdl1-dev_1.9.5-1 and manpages-dev_1.17-2:
usr/man/man3/dlclose.3.gz
usr/man/man3/dlerror.3.gz
usr/man/man3/dlopen.3.gz
usr/man/man3/dlsym.3.gz
manpages-dev replaces libdl1-dev (<=1.9.4-1). But this is 1.9.5-1 :-)
Overlap between abuse-lib_2.00-1 and abuse-sfx_2.00-1 (non-free):
var/lib/games/abuse/sfx
abuse-lib_2.00-2 is out, and I can't find this overlap in its source,
so perhaps this was fixed.
Overlap between lclint_2.2a-1 (non-free) and freetype_0.4-1:
usr/bin/lint
The "lint" program in freetype is a little debugging tool that tests
a freetype font for consistency. It's not meant to be a user interface.
It should probably be renamed.
Overlap between javalex_1.1.5-1 and java-lex_1.1.4-1:
usr/bin/javalex
These seem to be different packages for the same program.
Overlap between menu_1.5-2 and tkrat_1.0.3-3:
usr/lib/menu/menu
This is almost certainly a mistake in tkrat. usr/lib/menu/ is the
standard place for menu entries, and the files there should be named
after the packages that provides them. usr/lib/menu/menu is menu's
entry for itself. tkrat copies its own debian/menu file to
usr/lib/menu/ without renaming it in the process.
Overlap between libg++27-dev_2.7.2.1-9 and libg++272-dev_2.7.2.5-2:
[very long list of filenames deleted]
This overlap is not a problem because libg++27-dev depends on libc5-dev
and libg++272-dev depends on libc6-dev.
Overlap between xemacs19_19.15-3.1 and xemacs20_20.2-1:
usr/bin/pstogif
usr/bin/xemacs
I didn't check out xemacs. 20 MB is a bit too much for my little modem :-)
Overlap between xemacs19-support_19.15-3.1 and xemacs20-support_20.2-1:
usr/lib/xemacs/lock
usr/lib/xemacs/site-lisp/debian-rundir.el
usr/lib/xemacs/site-lisp/site-start.el
Overlap between gnats_3.101-2, gnats-user_3.101-2 and xemacs20_20.2-1:
usr/bin/install-sid
usr/bin/send-pr
gnats conflicts with gnats-user, but neither conflicts with xemacs20.
Overlap between libkde0_0.10.01-1(contrib) and libkde0.9.00_0.9.00-1(contrib):
usr/X11R6/lib/libkdecore.so.0
usr/X11R6/lib/libkdeui.so.0
usr/X11R6/lib/libkhtmlw.so.0
These are the symlinks, right? Perhaps they could be generated by ldconfig
in the postinst. (Both packages already run ldconfig in their postinst.)
Overlap between amanda-client_2.3.0.4-2 and amanda_2.3.0.4-2:
usr/lib/amanda/amcat.awk
usr/lib/amanda/amplot.awk
usr/lib/amanda/amplot.g
usr/lib/amanda/amplot.gp
usr/lib/amanda/versionsuffix
usr/man/man8/amplot.8.gz
usr/man/man8/amrecover.8.gz
usr/man/man8/amrestore.8.gz
usr/sbin/amplot
usr/sbin/amrecover
usr/sbin/amrestore
The debian/rules file copies these from the amanda tree to the
amanda-client tree, so the overlap is probably not a mistake. If
these are really needed by both the server and client packages, then
perhaps there should be an amanda-common as well.
Overlap between libgdbmg1-dev_1.7.3-21 and libc6-dev_2.0.4-1:
usr/include/ndbm.h
The file is identical in both packages. Since libgdbmg is designed
to be used with libc6, it should be able to assume that any program
that needs it will also need libc6-dev, and thus already have ndbm.h.
Overlap between perlmagick_1.14-1, adbbs_2.1-1 and perl-curses_1.01-1:
usr/lib/perl5/i386-linux/5.00307/perllocal.pod
Overlap between ncurses3.4-dbg_1.9.9g-3 and ncurses3.0-dev_1.9.9e-1:
usr/lib/libform_g.a
usr/lib/libmenu_g.a
usr/lib/libncurses_g.a
usr/lib/libpanel_g.a
This overlap is not a problem, because ncurses3.4-dbg depends (indirectly)
on libc6-dev, and ncurses3.0-dev depends on libc5-dev.
Overlap between ax25-utils_2.1.37a-1 and rspfd_0.04:
etc/ax25/rspfd.conf
Strangely, ax25-utils includes an rspfd binary but rspfd does not.
Overlap between perl_5.004.02-1 and libcgi-perl_2.76-1:
usr/lib/perl5/CGI/Carp.pm
usr/man/man3/CGI::Carp.3pm.gz
libcgi-perl depends on perl.
Overlap between man-db_2.3.10-41 and libc6-dev_2.0.4-1:
usr/bin/gencat
See bugs #10704, #9841, and #11941 .
=== The script I used is now mature enough to see the light of day ===
#!/usr/bin/gawk
function make_header(pkgs, pk, hdr, count, i) {
hdr = "Overlap between ";
count = 0;
for (pk in pkgs) {
count = count + 1;
}
i = 0;
for (pk in pkgs) {
if (!(pk in version)) {
printf "Error: %s in Contents but not in Packages\n", pk >"/dev/stderr";
exit 2;
}
i = i + 1;
if (i == 1) {
hdr = hdr (pk "_" version[pk]);
} else if (i == count) {
hdr = hdr " and " (pk "_" version[pk]) ":\n";
} else {
hdr = hdr ", " (pk "_" version[pk]);
}
}
return hdr;
}
function store_overlap(filename, hdr) {
hdr = make_header(packages);
overlaps[hdr] = overlaps[hdr] " " filename "\n";
}
function print_overlaps() {
for (ovl in overlaps) {
printf "%s%s\n", ovl, overlaps[ovl];
}
}
function conflicts_with(pkg1, pkg2, pkgcf, i, pkgpr, j) {
split(conflicts[pkg2], pkgcf, ",");
split(provides[pkg1], pkgpr, ",");
for (i in pkgcf) {
# Ignore version numbers for now. This means that any
# kind of version-dependent conflict is not counted as
# a conflict at all.
if (pkg1 == pkgcf[i])
return 1;
for (j in pkgpr) {
if (pkgpr[j] == pkgcf[i])
return 1;
}
}
split(conflicts[pkg1], pkgcf, ",");
split(provides[pkg2], pkgpr, ",");
for (i in pkgcf) {
if (pkg2 == pkgcf[i])
return 1;
for (j in pkgpr) {
if (pkgpr[j] == pkgcf[i])
return 1;
}
}
return 0;
}
function find_overlap(filename, pkg1, pkg2) {
# Check each combination of packages.
for (pkg1 in packages) {
for (pkg2 in packages) {
if (pkg1 == pkg2)
continue;
if (!conflicts_with(pkg1, pkg2)) {
# List all packages if any of them fail to conflict.
store_overlap(filename);
return;
}
}
}
}
BEGIN {
OFS="";
while (getline <"Packages") {
hdr = $1;
# The assignment to $1 has the side-effect of modifying $0 to
# be what we want. The OFS="" above plays a major role.
# This trick confuses a2p ;-)
$1 = "";
if (hdr == "Package:") {
pk = $0;
} else if (hdr == "Version:") {
version[pk] = $0;
} else if (hdr == "Provides:") {
provides[pk] = $0;
} else if (hdr == "Conflicts:") {
conflicts[pk] = $0;
}
}
while (getline <"Contents") {
if ($1 == "FILE")
break;
}
while (getline <"Contents") {
file = $1;
# ignore directories
if ($1 !~ /\/$/) {
# ignore filenames with only one package
if (split($2, pck, ",") > 1) {
split("", packages);
for (i in pck) {
sub(".*/", "", pck[i]);
packages[pck[i]] = 1;
}
find_overlap(file);
}
}
}
print_overlaps();
}
--
TO UNSUBSCRIBE FROM THIS MAILING LIST: e-mail the word "unsubscribe" to
debian-devel-request@lists.debian.org .
Trouble? e-mail to templin@bucknell.edu .
Reply to: