Hi!

On Tue, 2025-02-25 at 08:14:52 -0800, Otto Kekäläinen wrote:
> Salsa CI has had for many years the job 'missing-breaks' that
> complements piuparts by checking that the files a package introduce
> don't clash with files shipped by any other package in the
> distribution without having proper Breaks/Replaces in the
> `debian/control` file. This job works well, being quick to run and has
> had zero false positives in our experience.

I think that while this check seems worthwhile to me to avoid file
conflicts, the check name itself…

> ## Error examples
> 
> Example output when end users run into this category of issues:
> 
> $ apt upgrade
> ...
> Unpacking example (from .../foo_1.0-1_all.deb) ...
> dpkg: error processing /var/cache/apt/archives/foo_1.0-1_all.deb (--unpack):
>  trying to overwrite '/usr/share/man/man8/example.8.gz', which is also
> in package bar 2.2
> 
> Example output from the job on failure:
> 
> $ check_for_missing_breaks_replaces.py -o
> ${WORKING_DIR}/missing_breaks.xml --changes-file
> ${WORKING_DIR}/*.changes
> [ERROR] Missing Breaks/Replaces found
> [ERROR] foo conflicts with bar files: {'/usr/share/man/man8/example.8.gz'}

…and this advice, are not ideal, and can lead to potentially worse
problems.

I think the check should be renamed to something like
check-file-conflicts (probably with compat names for existing repos
using the old name). And the advice should probably point to a Wiki
page or similar, where the various cases can be explained, and how to
solve them. For example for conflicting programs with different
interfaces the advice would incur in a policy violation, for conflicts
between a current shared library SOVERSION and the one in the archive
with a lower SOVERSION that makes upgrades and transitions harder,
etc.

Thanks,
Guillem

Reply via email to