Unrelated packages pull in libX11 in leap 16

Does anyone know why installing samba package on a server installation pulls in various libX11 and gtk3 packages?

Also dependencies for cockpit-packagekit on a server installation includes libX11.

That’s easy to find out: In Myrlyn, select the samba package, go to the “Installation Summary” tab and try to deselect the X11 packages that samba dragged in. The dependency problem window will tell you about the dependencies. But beware: They might be very complex, going across several seemingly unrelated packages.

I think that is a very technical answer that will confirm in detail that the observation of the OP is true. But I guess he wants to know what the rationale behind it is.

I may be a bit old fashioned (I was involved in Samba usage ~ 30 or more years ago), but to me it is also not clear why a package that offers file server/client functionality (between Unix/Linux and Microsoft systems) on the system level, has anything to do with desktop software.

yes, this is exactly what i meant.

what @shundhammer has said helps confirm it, but doesnt really explain why.

i would understand that gnome/kde have dependency on samba (some plugin for nautilus or dolphin, or something from kcm), but the other way? this makes no sense at all.

for example cockpit-pacakgekit, this is a web component for package management, i dont understand what x11 has to do with it.

should i file this as a bug?

1 Like

Follow the dependencies trail. Or rather, the dependencies tangle; it’s typically a very complex graph.

At what point does one of the involved packages drag in another package that is too close to X11? Does it implement a real feature, is it more of an optional thing, or is it plain wrong? That’s a difficult decision to make.

Installing those packages or just downloading them and unpacking it with an unrpm script and then investigating each executable and each shared lib with ldd might help to spot a dependency to an X11-related shared library. But this is a tedious process. What I wrote in my previous comment can at least pinpoint it to one or two packages to start such an investigation.

Shared lib dependencies are added automatically by RPM or OBS during the build process. Other dependencies are added manually in the .spec file.

It is most likely a recommended package. This can easily be tested with —no-recommends before going down the spiral which is described by Stefan above…

Unfortunately not.

Here it doesnt mention

micro:/home/qf # zypper in --no-recommends samba
Refreshing service 'openSUSE'.
Loading repository data...
Reading installed packages...
Resolving package dependencies...

The following 29 NEW packages are going to be installed:
  gdk-pixbuf-loader-rsvg gtk3-tools libX11-6 libX11-data libXcomposite1 libXcursor1 libXdamage1
  libXext6 libXfixes3 libXft2 libXi6 libXinerama1 libXrandr2 libXrender1 libatk-bridge-2_0-0
  libatspi0 libcairo-gobject2 libcairo2 libgtk-3-0 libpango-1_0-0 librsvg-2-2
  policycoreutils-python-utils python313-gobject-Gdk python313-gobject-cairo
  python313-policycoreutils python313-pycairo samba typelib-1_0-Gtk-3_0 typelib-1_0-Pango-1_0

29 new packages to install.

Package download size:    13.3 MiB

Package install size change:
              |      35.6 MiB  required by packages that will be installed
    35.6 MiB  |  -      0 B    released by packages that will be removed

Backend:  classic_rpmtrans

but this is interesting:

on fedora, when removing libX11* this happens:

Package                           Arch     Version                            Repository                     Size
Removing:
 libX11                           x86_64   1.8.12-1.fc43                      fedora                      1.3 MiB
 libX11-common                    noarch   1.8.12-1.fc43                      fedora                      1.2 MiB
Removing dependent packages:
 libappstream-glib                x86_64   0.8.3-4.fc43                       fedora                      1.4 MiB
Removing unused dependencies:
 bubblewrap                       x86_64   0.11.0-2.fc43                      fedora                    135.0 KiB
 cairo                            x86_64   1.18.4-2.fc43                      fedora                      1.8 MiB
 cairo-gobject                    x86_64   1.18.4-2.fc43                      fedora                     31.1 KiB
 fontconfig                       x86_64   2.17.0-3.fc43                      fedora                    765.9 KiB
 fribidi                          x86_64   1.0.16-3.fc43                      fedora                    190.3 KiB
 gdk-pixbuf2                      x86_64   2.44.4-1.fc43                      updates                     2.5 MiB
 glycin-libs                      x86_64   2.0.4-1.fc43                       <unknown>                   4.4 MiB
 glycin-loaders                   x86_64   2.0.4-1.fc43                       <unknown>                  13.1 MiB
 highway                          x86_64   1.2.0-5.fc42                       fedora                      4.4 MiB
 lcms2                            x86_64   2.16-6.fc43                        fedora                    433.7 KiB
 libXau                           x86_64   1.0.12-3.fc43                      fedora                     72.9 KiB
 libXext                          x86_64   1.3.6-4.fc43                       fedora                     90.0 KiB
 libXft                           x86_64   2.3.8-9.fc43                       fedora                    164.4 KiB
 libXrender                       x86_64   0.9.12-3.fc43                      fedora                     46.0 KiB
 libaom                           x86_64   3.13.1-1.fc43                      fedora                      5.0 MiB
 libdatrie                        x86_64   0.2.13-12.fc43                     fedora                     53.8 KiB
 libdav1d                         x86_64   1.5.2-1.fc43                       <unknown>                   1.7 MiB
 libheif                          x86_64   1.20.2-6.fc43                      fedora                      1.6 MiB
 libjxl                           x86_64   1:0.11.1-6.fc43                    fedora                      3.1 MiB
 libopenjph                       x86_64   0.22.0-2.fc43                      fedora                    466.2 KiB
 librsvg2                         x86_64   2.61.0-2.fc43                      fedora                      5.0 MiB
 libthai                          x86_64   0.1.29-11.fc43                     fedora                    783.4 KiB
 libvmaf                          x86_64   3.0.0-4.fc43                       fedora                    827.0 KiB
 libwebp                          x86_64   1.6.0-2.fc43                       fedora                    956.6 KiB
 libxcb                           x86_64   1.17.0-6.fc43                      fedora                      1.1 MiB
 openh264                         x86_64   2.6.0-2.fc43                       fedora-cisco-openh264       1.1 MiB
 openjpeg                         x86_64   2.5.4-1.fc43                       fedora                    456.3 KiB
 pango                            x86_64   1.57.0-1.fc43                      fedora                      1.0 MiB
 rav1e-libs                       x86_64   0.7.1-8.fc43                       fedora                      3.0 MiB
 svt-av1-libs                     x86_64   3.1.2-1.fc43                       fedora                      5.6 MiB
 xml-common                       noarch   0.6.3-67.fc43                      fedora                     78.4 KiB

on leap16 when removing libX11*:

Reading installed packages...
Resolving package dependencies...

The following 29 packages are going to be REMOVED:
  gdk-pixbuf-loader-rsvg gtk3-tools libX11-6 libX11-data libXcomposite1 libXcursor1 libXdamage1 libXext6 libXfixes3 libXft2 libXi6 libXinerama1 libXrandr2
  libXrender1 libatk-bridge-2_0-0 libatspi0 libcairo-gobject2 libcairo2 libgtk-3-0 libpango-1_0-0 librsvg-2-2 policycoreutils-python-utils
  python313-gobject-Gdk python313-gobject-cairo python313-policycoreutils python313-pycairo samba typelib-1_0-Gtk-3_0 typelib-1_0-Pango-1_0

29 packages to remove.

Package install size change:
              |         0 B    required by packages that will be installed
   -35.6 MiB  |  -   35.6 MiB  released by packages that will be removed

Backend:  classic_rpmtrans
Continue? [y/n/v/...? shows all options] (y):

You are right - samba package really indirectly depends on X11.
It is caused by following dependency chain:

  • samba
  • policycoreutils-python-utils
  • python313-policycoreutils
  • typelib(Gtk) = 3.0 → typelib-1_0-Gtk-3_0
  • libgtk-3.so.0()(64bit) → libgtk-3-0
  • libX11.so.6()(64bit) → libX11-6

I used small trick to reveal that dependency:

  1. disable installation of libX11-6 locking it with: zypper al libX11-6
  2. iterating zypper in PACKAGE and examining following message:
not installable providers: NEXT_PACKAGE

And repeating zypper in NEXT_PACKAGE

So the unexpected dependency is that python313-policycoreutils depends on typelib-1_0-Gtk-3_0 which brings complete X11 libraries through GTK 3.0 dependency.

2 Likes

Good bug finding! I hope one of the involved people above files a bug report.

Done

https://bugzilla.opensuse.org/show_bug.cgi?id=1255638

1 Like

Thanks!

Great trick!

I will try to replicate this trick to track down same problem with cockpit-packagekit.

Edit:

Here is dependency list for cockpit-packagekit

  • cockpit-packagekit
  • libzypp-plugin-appdata-1.0.1+git.20240209-160000.3.2.noarch
  • appstream-glib-0.8.3-160000.2.2.x86_64
  • gdk-pixbuf-loader-rsvg-2.60.0-160000.2.2.x86_64
  • appstream-glib-0.8.3-160000.2.2.x86_64
  • libcairo2-1.18.4-160000.2.2.x86_64
  • libX11-6-1.8.10-160000.2.2.x86_64

opened a bug also for cockpit-packagekit:

https://bugzilla.opensuse.org/show_bug.cgi?id=1255639

1 Like