#1133239 xkb-data has an undeclared file conflict on /usr/share/X11/xkb

#1133239#5
Date:
2026-04-11 07:51:41 UTC
From:
To:
xkb-data has an undeclared file conflict. This may result in an unpack
error from dpkg.

The file /usr/share/X11/xkb is contained in the packages
 * keyboards-rg/0.3+nmu2 as present in trixie|forky|unstable
 * xkb-data/2.47-1 as present in forky|unstable

These packages can be unpacked concurrently, because there is no
relevant Replaces or Conflicts relation. Attempting to unpack these
packages concurrently results in an unpack error from dpkg, because none
of the packages installs a diversion for the affected file.

Kind regards

Helmut Grohne

#1133239#12
Date:
2026-08-05 08:18:08 UTC
From:
To:
We believe that the bug you reported is fixed in the latest version of
xkeyboard-config, which is due to be installed in the Debian FTP archive.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to 1133239@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Timo Aaltonen <tjaalton@debian.org> (supplier of updated xkeyboard-config package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmaster@ftp-master.debian.org)
Format: 1.8
Date: Wed, 05 Aug 2026 10:41:18 +0300
Source: xkeyboard-config
Built-For-Profiles: derivative.ubuntu noudeb
Architecture: source
Version: 2.48-1
Distribution: unstable
Urgency: medium
Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
Changed-By: Timo Aaltonen <tjaalton@debian.org>
Closes: 1133239
Changes:
 xkeyboard-config (2.48-1) unstable; urgency=medium
 .
   * control: Add Conflicts on keyboards-rg (Closes: #1133239)
   * New upstream release.
Checksums-Sha1:
 a378cc66b396d27e40a1251e5f10e23b2222ef53 2437 xkeyboard-config_2.48-1.dsc
 db598181c33031e4bdf98acf8857bc722d12b735 953316 xkeyboard-config_2.48.orig.tar.xz
 324c17ec31cefcd18eaa1c41e35f04ab841d2c3a 488 xkeyboard-config_2.48.orig.tar.xz.asc
 29c50363aebd94a82c1075ccf3bc615518b1be66 16660 xkeyboard-config_2.48-1.debian.tar.xz
 6cbe9cfab5d86e07217dfc266ed4ab28947452fb 8904 xkeyboard-config_2.48-1_source.buildinfo
Checksums-Sha256:
 027c798c744abf31bd1cf9215121acf6a42b703c25ef135dadfdafac98608090 2437 xkeyboard-config_2.48-1.dsc
 b77041324f0109f77161ee43743fe04baa485866af8460d31e476ad3f7648fd5 953316 xkeyboard-config_2.48.orig.tar.xz
 8e16b08c27882915b7656d81dd9f196c673d280265071752e18ae4e5f51fef24 488 xkeyboard-config_2.48.orig.tar.xz.asc
 5a611277c6570a97b65f9175c48bf653fcb9074e5feb2670824cbf514e1816d9 16660 xkeyboard-config_2.48-1.debian.tar.xz
 0b0132d086e1a5e670cdd446ce8f4969b1973c2d7ca08849c1f51648bc2b5548 8904 xkeyboard-config_2.48-1_source.buildinfo
Files:
 67bd85b2a8ab40e68af2c4a6a1495af1 2437 x11 optional xkeyboard-config_2.48-1.dsc
 575106aff79b589abe4aff6c4bff4782 953316 x11 optional xkeyboard-config_2.48.orig.tar.xz
 d57e1455924eaa42bbdd87c67ff3335c 488 x11 optional xkeyboard-config_2.48.orig.tar.xz.asc
 b93f496de23b719021ec9e7735d3b524 16660 x11 optional xkeyboard-config_2.48-1.debian.tar.xz
 b94ca6e249c69502fd1c89ac8f80b034 8904 x11 optional xkeyboard-config_2.48-1_source.buildinfo
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEdS3ifE3rFwGbS2Yjy3AxZaiJhNwFAmpy6SgACgkQy3AxZaiJ
hNztHw//RSqeG2jTtoK8QMVLrmVXV4KW9a1VLJPkLiw2vgir6TXBeuMEpMHKTS0W
8IOAbruomoFyOilrdJGexvmPvjkJ7kpRcvRsuws2A64+8slNyIZB1X19iAfc09hR
pTKKkIzbYQjOwveh/EkkZabyCrwDvwPXfrCeTMPoY3iRDeJ43MUSjM4/WtnJYy3Z
NpVxn+T/bjz81WksJYXVIc+7BC5J119KKfmIMKJxxBOeq/p0EFamXsQ9KLAfe/14
S34cVTSL3d+lM8nxiwBDypdx/DdUlA2pQ43cx+xltvmUoMtUSRIf8w/0WhzuMPrX
2EXCiQTRPEgD85K38vgTtKe6P1U8Ne4djZ16k6HSXcJEzWjVZPE3Xnz8Ak/1iamN
s8Ooz90asazCyXeAK0floM/JOxmLOUef/Si3YFSnU+BxMI1TBb93WnyuvFVR4xlL
WEtZ7v5Wa8rWyAE2zJkPcHbMfupxfdkkF+rSNNgawd/pcOrcdNqR7XZUysz2LzyG
4sQWJmkEMSlb6fsh15jKy9QlxeJ51D1LRtE1EgwQxH0YfjJH/WXmTwNokz0f/DbB
rVxe8Vu0y8hniroash8qgCYEn2ZUS8S2Lh4MBpyrhp/SBMsHTO2YpSF/DOeOOSMV
NVUyjvIrwyD60PdWNcpU5qGY4QngUwYRmlF/uZp+lQbiMJv6+AQ=
=aYvV
-----END PGP SIGNATURE-----

#1133239#17
Date:
2026-08-20 21:39:21 UTC
From:
To:
Hello,

Helmut Grohne, le sam. 11 avril 2026 09:51:41 +0200, a ecrit:

? /usr/share/X11/xkb is not a file, but a directory. keyboards-rg
contains

keyboards-rg: /usr/share/X11/xkb/symbols/eo_rg
keyboards-rg: /usr/share/X11/xkb/symbols/pancyr
keyboards-rg: /usr/share/X11/xkb/symbols/sk_rg
keyboards-rg: /usr/share/X11/xkb/symbols/sk_snk

which are not in xkb-data, so I don't see why we would have a conflict.
I tried installing keyboards-rg, it does unpack fine concurrently with
xkb-data.

So adding a Conflicts is not necessary. Worse, it made keyboards-rg
uninstallable, since it depends on xkb-data, and now that xkb-data
conflicts with keyboards-rg, keyboards-rg has become uninstallable in
unstable, making xkb-data not migrating for 15 days.

We want to remove the Conflicts from xkb-data.

Samuel

#1133239#22
Date:
2026-08-21 07:05:20 UTC
From:
To:
Hi Samuel,

thanks for noticing this and reporting back.

Yes, and this is part of the problem.

The conflict is not on the files you mentioned but on /usr/share/X11/xkb
itself. If you look at the xkb-data side you notice that it is a
symbolic link there. This is an aliasing problem very similar to
/usr-merge.

Yes, that's correct. But how it unpacked now depends on the unpack
order. If you unpack xkb-data first, those files will be relocated to
/usr/share/xkeyboard-config-2. If you were to then remove xkb-data, the
symlink were going away and the files would no longer be available.
Worse, if you then remove keyboards-rg, it would fail remove the
installed files as the redirecting symbolic link is now gone. This very
much is a problem.

You make a very good case for the Conflicts declaration being the wrong
solution for the problem at hand. As keyboards-rg depends on xkb-data
(as you rightly observe), maybe it can instead rely on the presence of
that symbolic link and move its own files to
/usr/share/xkeyboard-config-2? At that point there would no longer be
any conflict.

Note that since this is an aliasing problem, you cannot just move the
files and call it done. It's the same situation as the /usr-merge that
caused the moratorium. If you were to do that, those files would readily
disappear in a package upgrade. So for facilitating the upgrade, we need
protective diversions for the aliased locations. keyboards-rg.preinst
needs to check whether it upgrades from a pre-moved version. If that
happens to be the case, it needs to install a protective diversion for
each of the files below /usr/share/X11/xkb/ (the symbolic link) as a
package that is not itself (can be one that never exists or it can be
xkb-data if the maintainer agrees). When dpkg unpacks the moved package,
the diversions will ensure that it does not unlink the moved files via
aliasing. Then keyboards-rg.postinst needs to get rid of the protective
diversions. This is not yet covering the error paths nor package
downgrading. Consider using prior art.
https://codesearch.debian.net/search?q=protective+diversion&literal=1

Things were becoming much easier if the files were to be renamed at the
same time or moved to an entirely different location (such that no
aliasing between the pre-upgrade and post-upgrade paths occurs).

Helmut