[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

--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: