Malcontent package dependency setting

I am currently trying to deploy Fedora 35 with GNOME onto a few workstations. These machines will not have any relationship with parental control, and I am trying to remove the malcontent package to minimize the surface.

However, this package cannot be removed directly using dnf, as its dependency has been set to gnome-control-center, which is in turn the dependency of gnome-shell. Thus, it becomes impossible to remove this package individually without rpm --nodep, which does not prevent it from installing back whenever an update of gnome-shell lands. Nor will it be possible to block install via exluding from dnf.conf.

I researched a bit into them and cannot find a reason why the dependency relationship is being set like this. Is this something intentional or just wrong interpretation? I would say that the better way to manage it shall be making it a weak dependency to gnome-software.

Thanks.

Loc

Looks like its required by polkit so I doubt you will be able to remove it.

$ dnf repoquery --requires malcontent
Last metadata expiration check: 0:08:45 ago on Mon 14 Feb 2022 05:53:56 PM EST.
polkit

Nope, I believe you made it the opposite way.

If my knowledge is correct, what your command shows is that the malcontent package depends on polkit, not the other way around. To inquire the packages which requires malcontent, you should use the following command:

$ dnf repoquery --whatrequires malcontent
gnome-control-center

I have been looking at a few other distros for their dependency relationship on malcontent, and it seems that none of them takes it as dependency of gnome-control-center. It is kinda meaningless to me that this thing is forced as a hard requirement of gnome-shell. On the other hand, removing it with rpm --nodep does not cause any issue currently.

As we can see from the spec file for gnome-control-center here, malcontent is required to build it, and then also pulled in explicitly as a Requires:

https://src.fedoraproject.org/rpms/gnome-control-center/blob/rawhide/f/gnome-control-center.spec#_63

https://src.fedoraproject.org/rpms/gnome-control-center/blob/rawhide/f/gnome-control-center.spec#_106

I guess, one could think of malcontent as an optional dependency, but in this case, the maintainers clearly feel that it is an important enough feature/function to be treated as a necessary dependency. Maintainers (and developers) have to choose defaults, and sometimes defaults may not work for every use case. You can discuss this with the maintainers directly by filing a bug, or you could speak to the workstation SIG. They discussed its inclusion here, for example:

https://pagure.io/fedora-workstation/issue/186

This has come up before too. See:

https://discussion.fedoraproject.org/t/fedora-35-beta-malcontent/76319/2

The thing here is: it seems that the gnome-control-center is not explicitly using this malcontent. This dependency relationship looks a bit weird on my side, and I shall fill a bug ticket later to discuss about it.

1 Like

I think it’s used in “users” there where an administrator account can enable parental controls for other accounts.

It’s a dependency when gnome control center is built with malcontent support

https://src.fedoraproject.org/rpms/gnome-control-center/blob/rawhide/f/gnome-control-center.spec

After 2 years later on F39 I have found this app by accident and it’s still impossible
to remove it without --nodeps as it have 20+ deps. It looks so weird for me so
I have to necropost this…

dnf remove malcontent
Dependencies resolved.
================================================================================
 Package                                  Arch   Version         Repo      Size
================================================================================
Removing:
 malcontent                               x86_64 0.11.1-2.fc39   @fedora  521 k
Removing dependent packages:
 gdm                                      x86_64 1:45.0.1-4.fc39 @fedora  5.1 M
 gnome-browser-connector                  x86_64 42.1-4.fc39     @fedora  120 k
 gnome-classic-session                    noarch 45.2-1.fc39     @updates  32 k
 gnome-control-center                     x86_64 45.5-1.fc39     @updates  22 M
 gnome-initial-setup                      x86_64 45.0-1.fc39     @fedora  1.9 M
 gnome-session-wayland-session            x86_64 45.0-3.fc39     @fedora   16 k
 gnome-session-xsession                   x86_64 45.0-3.fc39     @fedora   15 k
 gnome-shell                              x86_64 45.8.1-1.fc39   @updates  13 M
 gnome-shell-extension-appindicator       noarch 57-1.fc39       @fedora  237 k
Removing unused dependencies:
 bolt                                     x86_64 0.9.8-1.fc39    @updates 511 k
 colord-gtk4                              x86_64 0.3.0-4.fc39    @fedora   36 k
 gcr                                      x86_64 4.1.0-2.fc39    @fedora  132 k
 gnome-session                            x86_64 45.0-3.fc39     @fedora  1.5 M
 gnome-shell-extension-apps-menu          noarch 45.2-1.fc39     @updates  23 k
 gnome-shell-extension-common             noarch 45.2-1.fc39     @updates 533 k
 gnome-shell-extension-launch-new-instance
                                          noarch 45.2-1.fc39     @updates 1.4 k
 gnome-shell-extension-places-menu        noarch 45.2-1.fc39     @updates  21 k
 gnome-shell-extension-window-list        noarch 45.2-1.fc39     @updates  72 k
 gnome-tour                               x86_64 45.0-2.fc39     @updates 2.3 M
 malcontent-control                       x86_64 0.11.1-2.fc39   @fedora  122 k
 malcontent-ui-libs                       x86_64 0.11.1-2.fc39   @fedora  112 k
 power-profiles-daemon                    x86_64 0.21-3.fc39     @updates 178 k
 qadwaitadecorations-qt5                  x86_64 0.1.5-2.fc39    @updates 148 k
 qadwaitadecorations-qt6                  x86_64 0.1.5-2.fc39    @updates 170 k
 switcheroo-control                       x86_64 2.6-4.fc39      @fedora  102 k
 tecla                                    x86_64 45.0-1.fc39     @fedora  119 k

Transaction Summary
================================================================================
Remove  27 Packages

As a solution I have removed it by

rpm --erase malcontent --nodeps
rpm --erase malcontent-control --nodeps
rpm --erase malcontent-libs --nodeps  # beware this will kill your flatpacks
rpm --erase malcontent-ui-libs --nodeps

but I dont’t like this way as there’s no entry records in my dnf history about the action.

Update:
Very shortly I found that that killed my flatpacks as malcontent-libs required by flatpacks so I had no options but revert malcontent-libs back.

flatpak: error while loading shared libraries: libmalcontent-0.so.0: cannot open shared object file: No such file or directory

Perhaps I did something wrong?
Why it’s so impossible to just not to have malcontent installed ?