Bug#605744: breaks-without-version does not make much sense in many cases
Package: lintian
Version: 2.4.3
Severity: normal
Hello,
I don't think that breaks-without-version makes much sense, especially after
policy 3.9.0 has clarified Replaces/Breaks/Conflicts usage. At least, it should
not be a "warning" as it says nothing about quality of the package and in many
cases it could be misleading.
Breaks is more package manager friendly relationship when it comes to upgrades
and there is absolutely nothing wrong with having Breaks without version in
almost all (if not all) cases when Replaces for the same package is also
present. One of the most common example from my experience is the following:
Suppose you want to split a package (app-common) into smaller parts (app-data
and app-doc). Then a very apt-friendly approach (in the spirit of policy 3.9.0)
would be:
Package: app-data
Replaces: app-common
Breaks: app-common
Package: app-doc
Replaces: app-common
Breaks: app-common
However, instead lintian suggests using Conflicts here which clearly
contradicts policy 7.4 recommendation:
------------------------------------------------------------------------------
Normally, Breaks should be used instead of Conflicts since Conflicts imposes a
stronger restriction on the ordering of package installation or upgrade and can
make it more difficult for the package manager to find a correct solution to an
upgrade or installation problem. Breaks should be used:
* when moving a file from one package to another (see Overwriting files and
replacing packages - Replaces, Section 7.6),
* when splitting a package (a special case of the previous one), or
....
------------------------------------------------------------------------------
I could also think of more examples with moving of files if needed.
So generally I have a couple of suggestions here. They are listed in the order
of my preference:
* Drop breaks-without-version completely (at least for 3.9.0 compliant packages).
* Do not emit breaks-without-version when the same package is found in
Replaces field (provided it's not Breaks/Replaces against itself). Though I
still prefer complete removal of breaks-without-version as I don't believe it
makes much sense in general (as it's worded) and it's too prone to false
positives.
* Downgrade breaks-without-version to info/pedantic level. This would be the
worst case scenario but I could probably accept it as I generally do not care
much about false positives at those levels.
-- System Information:
Debian Release: squeeze/sid
APT prefers unstable
APT policy: (500, 'unstable'), (100, 'experimental')
Architecture: amd64 (x86_64)
Kernel: Linux 2.6.36-trunk-amd64 (SMP w/4 CPU cores)
Locale: LANG=lt_LT.UTF-8, LC_CTYPE=lt_LT.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Versions of packages lintian depends on:
ii binutils 2.20.1-15 The GNU assembler, linker and bina
ii diffstat 1.53-1 produces graph of changes introduc
ii dpkg-dev 1.15.8.6 Debian package development tools
ii file 5.04-5 Determines file type using "magic"
ii gettext 0.18.1.1-3 GNU Internationalization utilities
ii intltool-debian 0.35.0+20060710.1 Help i18n of RFC822 compliant conf
ii libapt-pkg-perl 0.1.24+b1 Perl interface to libapt-pkg
ii libclass-accessor-perl 0.34-1 Perl module that automatically gen
ii libipc-run-perl 0.89-1 Perl module for running processes
ii libparse-debianchangel 1.1.1-2.1 parse Debian changelogs and output
ii libtimedate-perl 1.2000-1 collection of modules to manipulat
ii liburi-perl 1.56-1 module to manipulate and access UR
ii locales 2.11.2-7 Embedded GNU C Library: National L
ii man-db 2.5.7-6 on-line manual pager
ii perl [libdigest-sha-pe 5.10.1-16 Larry Wall's Practical Extraction
lintian recommends no packages.
Versions of packages lintian suggests:
ii binutils-multiarch 2.20.1-15 Binary utilities that support mult
pn libtext-template-perl <none> (no description available)
ii man-db 2.5.7-6 on-line manual pager
-- no debconf information
Reply to: