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