I was just upgrading my f19 box and saw: Updating : glibc-common-2.17-13.fc19.x86_64 2/112 /usr/sbin/build-locale-archive: incomplete set of locale files in "/usr/lib/locale/zh_HK" /usr/sbin/build-locale-archive: incomplete set of locale files in "/usr/lib/locale/pt_BR" /usr/sbin/build-locale-archive: incomplete set of locale files in "/usr/lib/locale/zh_TW" /usr/sbin/build-locale-archive: incomplete set of locale files in "/usr/lib/locale/en_GB" /usr/sbin/build-locale-archive: incomplete set of locale files in "/usr/lib/locale/zh_CN" /usr/sbin/build-locale-archive: incomplete set of locale files in "/usr/lib/locale/en_CA" After looking around I finally found the problem described in the comments of this old bug report: https://bugzilla.redhat.com/show_bug.cgi?id=650023 Apparently an (old) package had left some directories behind. In my case the package was already gone: rpm -qf /usr/lib/locale/en_CA file /usr/lib/locale/en_CA is not owned by any package It might be a nice enhancement if on an error like the above build-locale-archive would check if it actually owned the directory and if not tell which package did or if the package is gone to just silently clean up.
I agree it would be a good enhancement.
Given that build-locale-archive is Fedora specific we can actually query the RPM database to see who owns those directories and if it's not us we can ignore them or cleanup or issue a better warning.
*** Bug 960815 has been marked as a duplicate of this bug. ***
*** Bug 1001409 has been marked as a duplicate of this bug. ***
output of query of ownership shows none of the directories are owned by a package # cd /usr/lib/locale/; for i in `ls `; do rpm -qf $i ; done file /usr/lib/locale/am is not owned by any package file /usr/lib/locale/ar is not owned by any package file /usr/lib/locale/ast is not owned by any package file /usr/lib/locale/az is not owned by any package file /usr/lib/locale/bg is not owned by any package file /usr/lib/locale/ca is not owned by any package file /usr/lib/locale/ca@valencia is not owned by any package file /usr/lib/locale/cs is not owned by any package file /usr/lib/locale/da is not owned by any package file /usr/lib/locale/de is not owned by any package file /usr/lib/locale/dz is not owned by any package file /usr/lib/locale/el is not owned by any package file /usr/lib/locale/en_CA is not owned by any package file /usr/lib/locale/en_GB is not owned by any package file /usr/lib/locale/eo is not owned by any package file /usr/lib/locale/es is not owned by any package file /usr/lib/locale/et is not owned by any package file /usr/lib/locale/eu is not owned by any package file /usr/lib/locale/fi is not owned by any package file /usr/lib/locale/fr is not owned by any package file /usr/lib/locale/ga is not owned by any package file /usr/lib/locale/gl is not owned by any package file /usr/lib/locale/gu is not owned by any package file /usr/lib/locale/he is not owned by any package file /usr/lib/locale/hr is not owned by any package file /usr/lib/locale/hu is not owned by any package file /usr/lib/locale/id is not owned by any package file /usr/lib/locale/it is not owned by any package file /usr/lib/locale/ja is not owned by any package file /usr/lib/locale/kk is not owned by any package file /usr/lib/locale/ko is not owned by any package glibc-common-2.18-12.fc20.i686 glibc-common-2.18-12.fc20.i686 file /usr/lib/locale/lt is not owned by any package file /usr/lib/locale/lv is not owned by any package file /usr/lib/locale/mk is not owned by any package file /usr/lib/locale/ml is not owned by any package file /usr/lib/locale/mr is not owned by any package file /usr/lib/locale/ms is not owned by any package file /usr/lib/locale/nb is not owned by any package file /usr/lib/locale/ne is not owned by any package file /usr/lib/locale/nl is not owned by any package file /usr/lib/locale/nn is not owned by any package file /usr/lib/locale/oc is not owned by any package file /usr/lib/locale/pl is not owned by any package file /usr/lib/locale/pt is not owned by any package file /usr/lib/locale/pt_BR is not owned by any package file /usr/lib/locale/ro is not owned by any package file /usr/lib/locale/ru is not owned by any package file /usr/lib/locale/rw is not owned by any package file /usr/lib/locale/sk is not owned by any package file /usr/lib/locale/sl is not owned by any package file /usr/lib/locale/sr is not owned by any package file /usr/lib/locale/sr@latin is not owned by any package file /usr/lib/locale/sv is not owned by any package file /usr/lib/locale/ta is not owned by any package file /usr/lib/locale/te is not owned by any package file /usr/lib/locale/tr is not owned by any package file /usr/lib/locale/uk is not owned by any package file /usr/lib/locale/vi is not owned by any package file /usr/lib/locale/zh_CN is not owned by any package file /usr/lib/locale/zh_HK is not owned by any package file /usr/lib/locale/zh_TW is not owned by any package
https://bugzilla.redhat.com/show_bug.cgi?id=650023#c10 says that this is a packaging error: *.mo files belong in /usr/share/locale, not /usr/lib/locale. It does not seem to make much sense to work-around packaging errors in a low-level tool like glibc. I'll close this because offending packages were fixed in the F14-15 timeframe and this does not seem to be a problem anymore.
Maybe not a problem anymore, but it just happened to me today 2017/07/13, on the cleanup phase of glibc-2.24-8.fc25.x86_64. glibc packages upgraded in today's dnf update: glibc.i686 2.24-9.fc25 glibc.x86_64 2.24-9.fc25 glibc-all-langpacks.x86_64 2.24-9.fc25 glibc-common.x86_64 2.24-9.fc25 glibc-devel.x86_64 2.24-9.fc25 glibc-headers.x86_64 2.24-9.fc25 glibc-utils.x86_64 2.24-9.fc25
Probably because I had a lot of virtually empty directories in /usr/lib/locale, created on 2013/03/27 (some update to Fedora 18?). These directories do not exist on another system that may have been first installed past that Fedora version. Removed all but C.utf8 directory and the locale-archive and locale-archive.tmpl files, which were created or updated by the update that gave the warnings.