Description of problem: glibc-langpack-<local_code> are not remove when you use dnf remove langpacks-<local_code> Version-Release number of selected component (if applicable): dnf 1.1.10 How reproducible: always Steps to Reproduce: 1. dnf install langpacks-<locale_code> glibc-langpack-<local_code> is installed 2. dnf remove langpacks-<locale_code> Actual results: glibc-langpack-<local_code> is not remove Expected results: all langpacks-<local_code> package installed with dnf install langpacks-<local_code> should be remove. Additional info: https://fedoraproject.org//wiki/Changes/Glibc_locale_subpackaging If i try to remove manually glibc-langpacks-<locale_code> there is a lot of package that should be remove also like anaconda and other langpacks that i want to keep. Try with langpacks-fr and langpacks-ja
Run removal with --debugsolver and attach debugdata directory.
Created attachment 1205811 [details] debugdata from dnf remove langpacks-fr --debugsolver
This is bug in glibc packaging. glibc: Requires: glibc-langpack glibc-all-langpacks: Provides: glibc-langpack glibc-langpack-fr: Provides: glibc-langpack This is since https://github.com/openSUSE/libsolv/commit/4e245d61daa731ebab0ac7e0f7bd87ba6c63f116.
(In reply to Igor Gnatenko from comment #3) > This is bug in glibc packaging. > > glibc: > Requires: glibc-langpack > > glibc-all-langpacks: > Provides: glibc-langpack > > glibc-langpack-fr: > Provides: glibc-langpack > > > This is since > https://github.com/openSUSE/libsolv/commit/ > 4e245d61daa731ebab0ac7e0f7bd87ba6c63f116. Could you please explain why this is a bug in glibc packaging? glibc: Requires: glibc-langpack = %{version}-%{release} Suggests: glibc-all-langpacks = %{version}-%{release} glibc-all-langpacks: Provides: %{name}-langpack = %{version}-%{release} glibc-langpack-fr: Provides: %{name}-langpack = %{version}-%{release} Thus if you remove glibc-langpack-fr (your only language pack) you must install something that provides glibc-langpack (virtual) and that something _should_ be glibc-all-langpacks as it's suggested by glibc. You must have _some_ language packs installed for your system to work, either: glibc-minimal-lanpack glibc-all-langpacks or <Some installed langpack> This seems more like a libsolv issue in that it has become overly cautious about removing providers, which is wrong. You only need one provider to satisfy the requirements, and that should be a minimal install, and that should be what is produced. If users are having the wrong provider removed when two similar providers exist, _that_ is a packaging problem. I'm looking to the dnf team for guidance on this.
Basically libsolv doesn't know what's the better provider of 'glib-langpack', so it keeps all of them. I think changing Req: glibc-langpack + Sug: glibc-all-langpacks to Req: glibc-all-langpacks is the proper fix.
(In reply to Igor Gnatenko from comment #5) > Basically libsolv doesn't know what's the better provider of > 'glib-langpack', so it keeps all of them. It does know. The package with the require gave a suggestion. Use the suggestion. > I think changing Req: glibc-langpack + Sug: glibc-all-langpacks to Req: > glibc-all-langpacks is the proper fix. This is not an acceptable fix. The point of the glibc changes is to minimize localization information for cloud and containers, we do not want to force all locales to be installed anymore, not even on a desktop (which could be a minimally sized VM). In an era where storage costs money on a monthly basis, we want to make sure our installs are as small as possible. Your suggested fix of making glibc-all-langpacks required will install the +180MB "all languages" sub-package for _all_ fedora users, and this is unacceptable. Fundamentally the user has requested that langpack-fr removed, and dnf has failed to do that because it is being overly cautious. This needs to be fixed, not glibc. I'm reassigning to dnf. I have not seen a technical argument for why libsolv has to be made so cautious that it stops honouring user requests to remove packages (that have multiple providers).
Could we use Requires: (glibc-all-langpacks or glibc-langpack) instead? Would DNF do the intended thing? The problem is that rich/boolean dependencies in Requires:/Recommends: are still banned by the packaging guidelines.
glibc-all-langpacks does not require any of langpacks (it just contains 2 files: /usr/lib/locale/locale-archive, /usr/lib/locale/locale-archive.tmpl). Suggests is something to make favorite one implementation over the another, but it doesn't mean it has some real preference for providing. Imagine: # Pkg: systemd # Req: libsqlite.so.0 # Pkg: sqlite3 # Prv: libsqlite.so.0 # Pkg: hipchat # Prv: libsqlite.so.0 What should happen for "dnf autoremove"? It can safely remove "sqlite3" and your system will be broken due to wrong packaging.
(In reply to Igor Gnatenko from comment #8) > glibc-all-langpacks does not require any of langpacks (it just contains 2 > files: /usr/lib/locale/locale-archive, /usr/lib/locale/locale-archive.tmpl). The locale information from all langpacks combined is in this locale-archive database. This is a more compact and slightly faster format than the format used in the individual langpacks. That means, if you need very many or maybe even all languages, it is better to install glibc-all-langpacks. If you need only a few languages, it is better to install only the individual langpacks for the languages you really need.
The issue still happen (i18n test day today for F27!).
This message is a reminder that Fedora 25 is nearing its end of life. Approximately 4 (four) weeks from now Fedora will stop maintaining and issuing updates for Fedora 25. It is Fedora's policy to close all bug reports from releases that are no longer maintained. At that time this bug will be closed as EOL if it remains open with a Fedora 'version' of '25'. Package Maintainer: If you wish for this bug to remain open because you plan to fix it in a currently maintained version, simply change the 'version' to a later Fedora version. Thank you for reporting this issue and we are sorry that we were not able to fix it before Fedora 25 is end of life. If you would still like to see this bug fixed and are able to reproduce it against a later version of Fedora, you are encouraged change the 'version' to a later Fedora version prior this bug is closed as described in the policy above. Although we aim to fix as many bugs as possible during every release's lifetime, sometimes those efforts are overtaken by events. Often a more recent Fedora release includes newer upstream software that fixes bugs or makes them obsolete.
Fedora 25 changed to end-of-life (EOL) status on 2017-12-12. Fedora 25 is no longer maintained, which means that it will not receive any further security or bug fix updates. As a result we are closing this bug. If you can reproduce this bug against a currently maintained version of Fedora please feel free to reopen this bug against that version. If you are unable to reopen this bug, please file a new report against the current release. If you experience problems, please add a comment to this bug. Thank you for reporting this bug and we are sorry it could not be fixed.
This bug appears to have been reported against 'rawhide' during the Fedora 28 development cycle. Changing version to '28'.
The issue still happen (i18n test day for F28).
The issue still happen (i18n test day for F29).
The issue still occurs with F29 Beta 1.5 + with updates
(In reply to Florian Weimer from comment #7) > Could we use > > Requires: (glibc-all-langpacks or glibc-langpack) > > instead? Would DNF do the intended thing? Could we do this for F31? This seems like a good approach to me.
What if we change the glibc base package from "Requires: glibc-langpack = %{version}-%{release}" to "Recommends: glibc-langpack = %{version}-%{release}" (or maybe could even just directly "Recommends: glibc-all-langpacks = %{version}-%{release}"), and just get rid of glibc-minimal-langpack?
This bug appears to have been reported against 'rawhide' during the Fedora 31 development cycle. Changing version to '31'.
This bug appears to have been reported against 'rawhide' during the Fedora 31 development cycle. Changing version to 31.
This bug appears to have been reported against 'rawhide' during the Fedora 32 development cycle. Changing version to 32.
This bug appears to have been reported against 'rawhide' during the Fedora 33 development cycle. Changing version to 33.
This bug appears to have been reported against 'rawhide' during the Fedora 34 development cycle. Changing version to 34.
Still there for F39
Still true for F42+ I believe
While there is no direct progress, the situation is improved overall since individual langpacks are no longer pulled in if glibc-all-langpacks is installed. Of course in certain small environments it might still be desirable for the individual langpacks to be removed as per this RFE/report.
Probably worth retesting with dnf5 just to see if there is any subtle changes in the behavior
checked on Fedora 42 container with dnf5. The glibc-langpacks-<lang> package remained installed after removing langpacks-<lang> package. [root@92af9e693e48 /]# rpm -qa | grep langpack glibc-minimal-langpack-2.41-8.fc42.x86_64 [root@92af9e693e48 /]# sudo dnf install langpacks-vi Updating and loading repositories: Repositories loaded. Package Arch Version Reposit Size Installing: langpacks-vi noarch 4.2-4.fc42 fedora 406.0 B Installing dependencies: abattis-cantarell-vf-fonts noarch 0.301-14.fc42 fedora 192.7 KiB default-fonts-vi noarch 4.2-4.fc42 fedora 352.0 B fonts-filesystem noarch 1:2.0.5-22.fc42 updates 0.0 B google-noto-fonts-common noarch 20250301-1.fc42 fedora 17.7 KiB google-noto-sans-mono-vf-fonts noarch 20250301-1.fc42 fedora 561.2 KiB google-noto-sans-vf-fonts noarch 20250301-1.fc42 fedora 1.4 MiB google-noto-serif-vf-fonts noarch 20250301-1.fc42 fedora 1.6 MiB langpacks-core-vi noarch 4.2-4.fc42 fedora 404.0 B langpacks-fonts-vi noarch 4.2-4.fc42 fedora 347.0 B Installing weak dependencies: glibc-langpack-vi x86_64 2.41-8.fc42 updates 3.0 MiB Transaction Summary: Installing: 11 packages Total size of inbound packages is 2 MiB. Need to download 2 MiB. After this operation, 7 MiB extra will be used (install 7 MiB, remove 0 B). Is this ok [y/N]: y [ 1/11] langpacks-core-vi-0:4.2-4.fc42. 100% | 2.5 KiB/s | 11.0 KiB | 00m04s [ 2/11] langpacks-fonts-vi-0:4.2-4.fc42 100% | 2.3 KiB/s | 11.1 KiB | 00m05s [ 3/11] default-fonts-vi-0:4.2-4.fc42.n 100% | 4.4 KiB/s | 11.1 KiB | 00m02s [ 4/11] google-noto-sans-mono-vf-fonts- 100% | 72.2 KiB/s | 277.4 KiB | 00m04s [ 5/11] google-noto-serif-vf-fonts-0:20 100% | 269.2 KiB/s | 665.6 KiB | 00m02s [ 6/11] abattis-cantarell-vf-fonts-0:0. 100% | 27.7 KiB/s | 120.3 KiB | 00m04s [ 7/11] google-noto-sans-vf-fonts-0:202 100% | 143.4 KiB/s | 614.5 KiB | 00m04s [ 8/11] langpacks-vi-0:4.2-4.fc42.noarc 100% | 802.0 B/s | 10.9 KiB | 00m14s [ 9/11] fonts-filesystem-1:2.0.5-22.fc4 100% | 8.6 KiB/s | 8.7 KiB | 00m01s [10/11] google-noto-fonts-common-0:2025 100% | 4.9 KiB/s | 17.1 KiB | 00m03s [11/11] glibc-langpack-vi-0:2.41-8.fc42 100% | 148.7 KiB/s | 554.3 KiB | 00m04s -------------------------------------------------------------------------------- [11/11] Total 100% | 114.5 KiB/s | 2.2 MiB | 00m20s Running transaction [ 1/13] Verify package files 100% | 733.0 B/s | 11.0 B | 00m00s [ 2/13] Prepare transaction 100% | 161.0 B/s | 11.0 B | 00m00s [ 3/13] Installing fonts-filesystem-1:2 100% | 109.9 KiB/s | 788.0 B | 00m00s [ 4/13] Installing google-noto-fonts-co 100% | 3.6 MiB/s | 18.5 KiB | 00m00s [ 5/13] Installing google-noto-sans-mon 100% | 68.6 MiB/s | 562.2 KiB | 00m00s [ 6/13] Installing google-noto-serif-vf 100% | 132.5 MiB/s | 1.6 MiB | 00m00s [ 7/13] Installing google-noto-sans-vf- 100% | 139.1 MiB/s | 1.4 MiB | 00m00s [ 8/13] Installing abattis-cantarell-vf 100% | 47.5 MiB/s | 194.4 KiB | 00m00s [ 9/13] Installing default-fonts-vi-0:4 100% | 320.3 KiB/s | 656.0 B | 00m00s [10/13] Installing langpacks-core-vi-0: 100% | 345.7 KiB/s | 708.0 B | 00m00s [11/13] Installing langpacks-fonts-vi-0 100% | 320.3 KiB/s | 656.0 B | 00m00s [12/13] Installing langpacks-vi-0:4.2-4 100% | 230.5 KiB/s | 708.0 B | 00m00s [13/13] Installing glibc-langpack-vi-0: 100% | 27.1 MiB/s | 3.0 MiB | 00m00s Complete! [root@92af9e693e48 /]# sudo dnf remove langpacks-vi Package Arch Version Reposit Size Removing: langpacks-vi noarch 4.2-4.fc42 fedora 406.0 B Removing unused dependencies: abattis-cantarell-vf-fonts noarch 0.301-14.fc42 fedora 192.7 KiB default-fonts-vi noarch 4.2-4.fc42 fedora 352.0 B fonts-filesystem noarch 1:2.0.5-22.fc42 updates 0.0 B google-noto-fonts-common noarch 20250301-1.fc42 fedora 17.7 KiB google-noto-sans-mono-vf-fonts noarch 20250301-1.fc42 fedora 561.2 KiB google-noto-sans-vf-fonts noarch 20250301-1.fc42 fedora 1.4 MiB google-noto-serif-vf-fonts noarch 20250301-1.fc42 fedora 1.6 MiB langpacks-core-vi noarch 4.2-4.fc42 fedora 404.0 B langpacks-fonts-vi noarch 4.2-4.fc42 fedora 347.0 B Transaction Summary: Removing: 10 packages After this operation, 4 MiB will be freed (install 0 B, remove 4 MiB). Is this ok [y/N]: y Running transaction [ 1/11] Prepare transaction 100% | 714.0 B/s | 10.0 B | 00m00s [ 2/11] Removing langpacks-vi-0:4.2-4.f 100% | 500.0 B/s | 1.0 B | 00m00s [ 3/11] Removing langpacks-fonts-vi-0:4 100% | 1.0 KiB/s | 1.0 B | 00m00s [ 4/11] Removing google-noto-sans-mono- 100% | 2.4 KiB/s | 5.0 B | 00m00s [ 5/11] Removing google-noto-serif-vf-f 100% | 2.9 KiB/s | 6.0 B | 00m00s [ 6/11] Removing langpacks-core-vi-0:4. 100% | 1.0 KiB/s | 1.0 B | 00m00s [ 7/11] Removing default-fonts-vi-0:4.2 100% | 1.0 KiB/s | 1.0 B | 00m00s [ 8/11] Removing google-noto-sans-vf-fo 100% | 2.9 KiB/s | 6.0 B | 00m00s [ 9/11] Removing abattis-cantarell-vf-f 100% | 4.9 KiB/s | 10.0 B | 00m00s [10/11] Removing fonts-filesystem-1:2.0 100% | 4.9 KiB/s | 5.0 B | 00m00s [11/11] Removing google-noto-fonts-comm 100% | 93.0 B/s | 4.0 B | 00m00s Complete! [root@92af9e693e48 /]# rpm -qa | grep langpack glibc-minimal-langpack-2.41-8.fc42.x86_64 glibc-langpack-vi-2.41-8.fc42.x86_64 [root@92af9e693e48 /]# ll /usr/bin/dnf lrwxrwxrwx. 1 root root 4 Apr 24 00:00 /usr/bin/dnf -> dnf5 [root@92af9e693e48 /]#
Checked with Fedora rawhide Workstation as well with dnf5. Here I see because of glibc-all-langpacks default installed, installing langpacks-<lang> did not pull glibc-langpack-<lang> package. test@localhost-live:~$ rpm -qa |grep langpack glibc-all-langpacks-2.41.9000-20.fc43.x86_64 langpacks-fonts-en-4.2-4.fc42.noarch langpacks-core-en-4.2-4.fc42.noarch tesseract-langpack-eng-4.1.0-10.fc43.noarch evolution-data-server-langpacks-3.56.2-1.fc43.noarch libreoffice-langpack-en-25.8.0.0.beta1-0.2.fc43.x86_64 gnome-software-fedora-langpacks-49~alpha-1.fc43.x86_64 firefox-langpacks-139.0-2.fc43.x86_64 langpacks-en-4.2-4.fc42.noarch gawk-all-langpacks-5.3.2-1.fc43.x86_64 test@localhost-live:~$ sudo dnf install langpacks-vi [sudo] password for test: Updating and loading repositories: Fedora rawhide openh264 (From Cisco) - 100% | 1.9 KiB/s | 5.8 KiB | 00m03s Fedora - Rawhide - Developmental packa 100% | 2.2 MiB/s | 21.7 MiB | 00m10s Repositories loaded. Package Arch Version Repository Size Installing: langpacks-vi noarch 4.2-4.fc42 rawhide 406.0 B Installing dependencies: ibus-unikey x86_64 0.7.0~beta1-2.fc42 rawhide 323.7 KiB langpacks-core-vi noarch 4.2-4.fc42 rawhide 404.0 B langpacks-fonts-vi noarch 4.2-4.fc42 rawhide 347.0 B Installing weak dependencies: hunspell-vi noarch 0.20120418-18.fc42 rawhide 41.1 KiB man-pages-vi noarch 3:4.26.2-1.fc43 rawhide 327.0 KiB Transaction Summary: Installing: 6 packages Total size of inbound packages is 475 KiB. Need to download 475 KiB. After this operation, 693 KiB extra will be used (install 693 KiB, remove 0 B). Is this ok [y/N]: y [1/6] langpacks-core-vi-0:4.2-4.fc42.no 100% | 15.0 KiB/s | 11.0 KiB | 00m01s [2/6] langpacks-vi-0:4.2-4.fc42.noarch 100% | 14.7 KiB/s | 10.9 KiB | 00m01s [3/6] langpacks-fonts-vi-0:4.2-4.fc42.n 100% | 14.9 KiB/s | 11.1 KiB | 00m01s [4/6] hunspell-vi-0:0.20120418-18.fc42. 100% | 102.4 KiB/s | 19.7 KiB | 00m00s [5/6] ibus-unikey-0:0.7.0~beta1-2.fc42. 100% | 271.8 KiB/s | 103.3 KiB | 00m00s [6/6] man-pages-vi-3:4.26.2-1.fc43.noar 100% | 516.8 KiB/s | 319.4 KiB | 00m01s -------------------------------------------------------------------------------- [6/6] Total 100% | 348.0 KiB/s | 475.3 KiB | 00m01s Running transaction [1/8] Verify package files 100% | 187.0 B/s | 6.0 B | 00m00s [2/8] Prepare transaction 100% | 14.0 B/s | 6.0 B | 00m00s [3/8] Installing ibus-unikey-0:0.7.0~be 100% | 11.4 MiB/s | 326.6 KiB | 00m00s [4/8] Installing langpacks-core-vi-0:4. 100% | 76.8 KiB/s | 708.0 B | 00m00s [5/8] Installing langpacks-fonts-vi-0:4 100% | 64.1 KiB/s | 656.0 B | 00m00s [6/8] Installing langpacks-vi-0:4.2-4.f 100% | 115.2 KiB/s | 708.0 B | 00m00s [7/8] Installing man-pages-vi-3:4.26.2- 100% | 12.6 MiB/s | 347.4 KiB | 00m00s [8/8] Installing hunspell-vi-0:0.201204 100% | 14.5 KiB/s | 41.9 KiB | 00m03s Complete! test@localhost-live:~$ rpm -qa |grep langpack glibc-all-langpacks-2.41.9000-20.fc43.x86_64 langpacks-fonts-en-4.2-4.fc42.noarch langpacks-core-en-4.2-4.fc42.noarch tesseract-langpack-eng-4.1.0-10.fc43.noarch evolution-data-server-langpacks-3.56.2-1.fc43.noarch libreoffice-langpack-en-25.8.0.0.beta1-0.2.fc43.x86_64 gnome-software-fedora-langpacks-49~alpha-1.fc43.x86_64 firefox-langpacks-139.0-2.fc43.x86_64 langpacks-en-4.2-4.fc42.noarch gawk-all-langpacks-5.3.2-1.fc43.x86_64 langpacks-core-vi-4.2-4.fc42.noarch langpacks-fonts-vi-4.2-4.fc42.noarch langpacks-vi-4.2-4.fc42.noarch test@localhost-live:~$ sudo dnf remove langpacks-vi [sudo] password for test: Package Arch Version Repository Size Removing: langpacks-vi noarch 4.2-4.fc42 rawhide 406.0 B Removing unused dependencies: hunspell-vi noarch 0.20120418-18.fc42 rawhide 41.1 KiB ibus-unikey x86_64 0.7.0~beta1-2.fc42 rawhide 323.7 KiB langpacks-core-vi noarch 4.2-4.fc42 rawhide 404.0 B langpacks-fonts-vi noarch 4.2-4.fc42 rawhide 347.0 B man-pages-vi noarch 3:4.26.2-1.fc43 rawhide 327.0 KiB Transaction Summary: Removing: 6 packages After this operation, 693 KiB will be freed (install 0 B, remove 693 KiB). Is this ok [y/N]: y Running transaction [1/7] Prepare transaction 100% | 24.0 B/s | 6.0 B | 00m00s [2/7] Removing langpacks-vi-0:4.2-4.fc4 100% | 47.0 B/s | 1.0 B | 00m00s [3/7] Removing langpacks-core-vi-0:4.2- 100% | 125.0 B/s | 1.0 B | 00m00s [4/7] Removing langpacks-fonts-vi-0:4.2 100% | 125.0 B/s | 1.0 B | 00m00s [5/7] Removing man-pages-vi-3:4.26.2-1. 100% | 8.5 KiB/s | 139.0 B | 00m00s [6/7] Removing hunspell-vi-0:0.20120418 100% | 833.0 B/s | 5.0 B | 00m00s [7/7] Removing ibus-unikey-0:0.7.0~beta 100% | 11.0 B/s | 19.0 B | 00m02s Complete! test@localhost-live:~$ rpm -qa |grep langpack glibc-all-langpacks-2.41.9000-20.fc43.x86_64 langpacks-fonts-en-4.2-4.fc42.noarch langpacks-core-en-4.2-4.fc42.noarch tesseract-langpack-eng-4.1.0-10.fc43.noarch evolution-data-server-langpacks-3.56.2-1.fc43.noarch libreoffice-langpack-en-25.8.0.0.beta1-0.2.fc43.x86_64 gnome-software-fedora-langpacks-49~alpha-1.fc43.x86_64 firefox-langpacks-139.0-2.fc43.x86_64 langpacks-en-4.2-4.fc42.noarch gawk-all-langpacks-5.3.2-1.fc43.x86_64 test@localhost-live:~$ I see this issue is resolved for Workstation installation but it will remain for containers because of size difference between glibc-minimal-langpacks and glibc-all-langpacks packages and containers comes with default installed glibc-minimal-langpacks package. 18M glibc-all-langpacks-2.41.9000-20.fc43.x86_64.rpm 36K glibc-minimal-langpack-2.41.9000-20.fc43.x86_64.rpm
I wonder if we can get some kind of verbose or debug/logging output to understand better why dnf chooses to leave the glibc langpack behind? My suspicion/guess is it is probably due to the meta 'glibc-langpack' requires/provides. Though I am gradually leaning towards suggesting we could just close this as either "80% fixed" or wontfix, depending on one's interpretation of the status quo.
"dnf --debugsolver" dumps libsolv input, solution, and solving log into ./debugdata. Be warned, here be dragons.
(In reply to Jens Petersen from comment #30) > I wonder if we can get some kind of verbose or debug/logging output to > understand better why dnf chooses to leave the glibc langpack behind? > My suspicion/guess is it is probably due to the meta 'glibc-langpack' > requires/provides. > > Though I am gradually leaning towards suggesting we could just close this as > either "80% fixed" or wontfix, depending on one's interpretation of the > status quo. debugging dnf transaction is simple, use "--debugsolver". Already used this but not much of use. There is less information in debugdata directory. We need advanced debugging if it exists in dnf.
just to add what I observe in debugdata directory when I removed langpacks-hi package from rawhide container bash-5.3# grep -srni glibc packages/testcase.t:46:job allowuninstall pkg glibc-2.41.9000-24.fc43.x86_64@@System packages/testcase.t:47:job allowuninstall pkg glibc-common-2.41.9000-24.fc43.x86_64@@System packages/testcase.t:48:job allowuninstall pkg glibc-langpack-hi-2.41.9000-24.fc43.x86_64@@System packages/testcase.t:49:job allowuninstall pkg glibc-minimal-langpack-2.41.9000-24.fc43.x86_64@@System packages/testcase.t:169:job userinstalled pkg glibc-minimal-langpack-2.41.9000-24.fc43.x86_64@@System