On 2017-09-08 22:49, Dirk Eddelbuettel wrote: > I still maintain that this is a useless "academic" consideration. If users > want to corrupt their systems by only upgrading one package I will not stop > them. They can simply fix them by also upgrading the package left behind.
If the package dependencies are not strict enough and allow known broken package combinations to be installed (without any --force switch), it's our fault, not the user. > I aim for 'apt-get dist-upgrade' doing the right thing for them. It will > automate this. Users running testing or sid are much more likely to perform partial upgrades. Or imagine someone backporting r-base 3.4.1 to stretch ... Breaks will really help here. But let's get back on the topic. I think a similar example to what you want to achive is #874413 + #873791. This is a ABI break in python (some internal module was removed), which requires a bunch of binNMUs. In addition to this, there were Breaks added in some core python packages (e.g. libpython2.7- stdlib) against all the packages that used the removed ABI. Since you already compiled a minimal list of affected packages (that need to be binNMUed), you just need to add appropriately versioned Breaks against all of them in r-base-core (or whichever package better fits this). These Breaks can be removed on the next r ABI bump. For the 42 packages listed in message #15 (even if you said there were 46) this would be ... hmm, wait, only 4 of the versions listed there are actually in sid, so the NMU list does not look too useful: $ rmadison -s unstable,stable r-cran-hdf5 r-cran-spam r-cran-spatstat r-cran-surveillance r-cran-hdf5 | 1.6.10-4 | stable | source r-cran-hdf5 | 1.6.10-4 | unstable | source r-cran-hdf5 | 1.6.10-4+b1 | stable | amd64, arm64, armel, armhf, i386, mips, mips64el, mipsel, ppc64el, s390x r-cran-hdf5 | 1.6.10-4+b1 | unstable | amd64, arm64, armel, armhf, hurd-i386, i386, kfreebsd-amd64, kfreebsd-i386, mips, mips64el, mipsel, powerpc, ppc64el, s390x r-cran-spam | 1.4-0-1 | stable | source, amd64, arm64, armel, armhf, i386, mips, mips64el, mipsel, ppc64el, s390x r-cran-spam | 1.4-0-1 | unstable | source, amd64, arm64, armel, armhf, hurd-i386, i386, kfreebsd-amd64, kfreebsd-i386, mips, mips64el, mipsel, powerpc, ppc64el, s390x r-cran-spatstat | 1.48-0-1 | stable | source, amd64, arm64, armel, armhf, i386, mips, mips64el, mipsel, ppc64el, s390x r-cran-spatstat | 1.48-0-1 | unstable | source, amd64, arm64, armel, armhf, hurd-i386, i386, kfreebsd-amd64, kfreebsd-i386, mips, mips64el, mipsel, powerpc, ppc64el, s390x r-cran-surveillance | 1.13.0-1 | stable | source, amd64, arm64, armel, armhf, i386, mips, mips64el, mipsel, ppc64el, s390x r-cran-surveillance | 1.13.0-1 | unstable | source, amd64, arm64, armel, armhf, hurd-i386, i386, kfreebsd-amd64, kfreebsd-i386, mips, mips64el, mipsel, powerpc, ppc64el, s390x Anyway, these are the Breaks for the list from comment #15: $ sort r-nmu-list | tr _ \ | awk 'BEGIN {print "Breaks:"} {print " " $2 " (<= " $3 "), "}' Breaks: r-cran-ade4 (<= 1.7-5-1), r-cran-bayesm (<= 3.0-2-2), r-cran-blockmodeling (<= 0.1.8-1), r-cran-brglm (<= 0.5-9-1), r-cran-caret (<= 6.0-73+dfsg1-1), r-cran-coin (<= 1.1-3-1), r-cran-contfrac (<= 1.1-10-1), r-cran-data.table (<= 1.10.0-1), r-cran-deldir (<= 0.1-12-1), r-cran-desolve (<= 1.14-1), r-cran-eco (<= 3.1-7-1), r-cran-expm (<= 0.999-0-1), r-cran-fields (<= 8.10-1), r-cran-gam (<= 1.14-1), r-cran-glmnet (<= 2.0-5-1), r-cran-goftest (<= 1.0-3-1), r-cran-hdf5 (<= 1.6.10-4+b1), r-cran-igraph (<= 1.0.1-1), r-cran-mapproj (<= 1.2-4-1), r-cran-maps (<= 3.1.1-1), r-cran-maptools (<= 1:0.8-41+dfsg-1), r-cran-mcmc (<= 0.9-4-2), r-cran-mcmcpack (<= 1.3-8-1), r-cran-medadherence (<= 1.03-2), r-cran-mixtools (<= 1.0.4-1), r-cran-mnp (<= 2.6-4-1), r-cran-ncdf4 (<= 1.15-1+b2), r-cran-phangorn (<= 2.1.1-1), r-cran-phylobase (<= 0.8.2-1), r-cran-qtl (<= 1.40-8-1), r-cran-randomfields (<= 3.1.36-1), r-cran-randomfieldsutils (<= 0.3.15-1), r-cran-rcurl (<= 1.95-4.8-2), r-cran-rniftilib (<= 0.0-35.r79-2), r-cran-sp (<= 1:1.2-4-1), r-cran-spam (<= 1.4-0-1), r-cran-spatstat (<= 1.48-0-1), r-cran-spdep (<= 0.6-9-1), r-cran-surveillance (<= 1.13.0-1), r-cran-treescape (<= 1.10.18-6), r-cran-vegan (<= 2.4-2-1), r-cran-vgam (<= 1.0-3-1), Also note that the nmu commands for the packages that already were binNMUed are wrong: you need the source version there, so no +bX suffix. Andreas