Installing 'Server (Text Mode)' pulls in GNOME and MESA libraries4

Dear all,

I am trying to install openSUSE Leap 42.2 onto a server and the goal is to install a very basic system, without any X11 and mostly no services (daemon) running on the system.

In the installer (network image) I select “Sever (Text Mode)” when asked to select a desktop. On the “Installation Settings” page I see the following summary:


Software
* Product: openSUSE
* System Type: Server (Text Mode)
  + Base System
  + Generic Server
  + Yast System Administration
* Size of Packages to Install: 1.4 GiB
* Downloading from Remote Repositories: 338.2 MiB

What strikes me is the “Size of Packages to Install” which seems to be rather large, I would have expected something like 600 to 800 MiB. Looking at “Installation Summary” (details of "Software Selection) I found packages related to X11 which I don’t want to install especially MESA and GNOME related packages. An incomplete list of packages that seem out-of-place when installing a “Server (Text Mode)” can be found at the end of the post.

Deselecting Mesa and Mesa-LibEGL1 (which does not break any dependencies) deselects a good chunk of packages to be automatically installed (maybe 2/5?) and the “Size of Packages to Install” goes down to 1 GiB. This doesn’t cause YaST to complain about unmet dependencies, so I assume it to be save.

‘Tabooing’ others which cannot simply be deselected like dbus-x11 will also deselect lots of packages, especially gnome related packages, but this causes a dependency error on ‘pattern-openSUSE-generic_server’. Also most PERL and Ruby packages will be deselected which seems unsave as YaST will also no longer be installed because it depends on Ruby if I remember correctly.

I know that the package selection for a ‘Server (Text Mode)’ installation will look very different depending on the people you ask but am not asking about server related packages like samba, cups. Instead, I was wondering what is the reason for installing (especially) the Mesa and GNOME packages as well as the gstreamer libraries in this environment. Also why are all those 32-bit libraries installed.

Any feedback will be appreciated. Thanks
Christian

I also tried to install 42.1 which would mostly install the same packages as 42.2. In 13.2, most of these packages are not included but doing a zypper dup to upgrade from a fully updated 13.2 to 42.1 and than to 42.2 will install the packages again. The only way to avoid installing the packages seems to be to set the packages at the top of the dependency chain to ‘Taboo’ :frowning:


Yast System Administration
* Mesa* (5 libraries total)
* PackageKit-gstreamer-plugin
* PackageKit-gtk3-module
* desktop-translations
* dejavu-fonts
* fontconfig
* fonts-config
* ft2demos
* gdk-pixbuf*
* glib-networking
* glib2*
* gnome-online-accounts*
* gsettings*
* gstreamer*
* gtk3*
* gvfs*
* hicolor-icon-theme*
* libX*
* libcairo*
* libdrm*
* libepoxy0
* libg* (almost all libraries starting with libg*, like libgphoto...)
* libvorbis*
* libwebkit*
* libwayland*
* libxcb*
* python-gobject
* typelib*
* wallpaper-branding-openSUSE
* webkit2gtk-4_injected_bundles
* *32bit

replying to my own thread: I just figured out that snapper-zypp-plugin depends on dbus-1-python which requires Mesa-libEGL1. This in turn pulls in all the 32bit libraries, libwayland and other X11 related packages.

Is this a mistake?

I haven’t looked at what you’re seeing, but from your description the solution can be simple if you don’t want the ability to snapshot your file system so that you can always easily roll back (undo) changes to your system…

When you install, just specify ext4 instead of btrfs(ext4 doesn’t support snapshotting by default. In the past I used a 3rd party app to do that, and it’s still an option).
Also, if you don’t intend to login as an interactive User and run Desktop applications, I’d recommend de-selecting the option to mount your /home directory in its own partition… That way your entire disk will be made available to your server applications which are typically installed in your root partition.

TSU

I just started a new install: changing the filesystem to ext4 or xfs doesn’t not change the list of installed packages. Deselecting snapper-zypp-plugin removes 242 packages from the list of installed packages - down to 530 from 772 (including 58 32bit packages).

So my question remains: Is it a ‘bug’ that snapper-zypp-plugin, to be more precise one of its dependencies, pulls in all these packages, especially X11/GNOME and 32bit packages, or is there no way around this?

In other words: can this be fixed in the future or do openSUSE installations always include 32bit packages in the future?

I am going to try to post the complete pakcages lists after I’ve finished the installation.

I’m surprised that snapper isn’t a dependency installed only when BTRFS is used… There is no reason to install or use snapper otherwise (today and likely ever).

If you want to start with something <really> minimal, then you might want to take a look at a JeOS instead…
JeOS(Just enough OS) are not “installed”
They are already working images that are written directly to storage, in openSUSE that will generally mean Linux plus YaST with minimal modules… I haven’t listed them but should include networking and software management. Of course, this means that you have to have fairly common hardware to begin with, primarily supported by the current Linux kernel.

Depending on the JeOS image, it’ll probably be between about 100MBytes (the versions typically found in Docker) and 650MBytes (Kiwi in 13.2 and earlier).
To me, JeOS is <the> image to use when you’re building something that will be replicated/cloned and therefor is usually with a specific purpose as opposed to the normal installs and images people use which are designed mainly for ubiquitous use. When you’re storing, maintaining and distributing a special use image, size becomes a big factor to minimize storage, maintenance and transfer issues.

You can find these images in Kiwi among other places.

TSU

It is nice to advise the OP to go and use another distribution, but that is not his question.

The question is if the inclusion of snapper software and triggered by this, the inclusion of X packages on a text only installation is a feature or a bug. When it is likely to be a bug, IMHO a bug report should be filed to improve openSUSE instead of running away to another distro.

Well,
by “use another distribution” you might mean a different <way> our openSUSE distro can be installed, I’d agree because the JeOS is still openSUSE.

Am simply suggesting that depending on the OP’s objectives how “slim” he wants openSUSE to be,
There are 2 approaches…

  • Start with a Text “Server” installation which has its ease of install benefits and is less of a footprint than installing a Desktop, but is not “minimal by default.”
  • If the objective is to aggressively start with a minimal base, then a JeOS image is far more “minimal by default” and doesn’t require looking for unnecessary packages to remove.

The regular “Server” option should be fine for most people, but if the requirement is to shave the last hundreds of megabytes and minimize running services, then it might be best to look at the images intended for Developers like JeOS.

TSU

I spent some more time on this and got the install down do to about 900 MiB (some X11 but no GNOME packages left) and more importantly once the system was installed I played with ‘tabooing’ packages to check which package will pull in which dependencies.

The most important thing to note here is that most of the packages are installed because they are ‘suggested’, so turning of to automatically install suggested packages (/etc/zypp/zypp.conf:solver.onlyRequires = true) reduces the list a lot (amongst others, the 32 Bit libraries are gone). I figured this out when I tried to install the man package which wanted to pull in Mesa and 5x other packages. Now that’s plain ‘stupid’ :wink:

With the ‘install suggested packages’ option turned off installing snapper-zypp-plugin will ‘only’ pull in Mesa, drm and XCB packages (full list at the bottom). I yet have to figure out which of the packages in this list pulls in the X11/Mesa stuff but my wild guess is that it comes down to the snapper-zypp-plugin package depending on dbus-1-python which in turn depends on pyhon-gobject which starts to pull in GTK related libraries. If this is actually the case then it is probably difficult to resolve this issue without refactoring some of the libraries involved and then there are probably good reasons why python-dbus depends on python-gobject :frowning:

The feature I am loosing is ‘automatic snapshots’ before doing any zypper install/remove operations but I can live with this as I can easily run snapper create or even btrfs subvolume snapshop manually (YaST still creates snapshot before ‘Software Management’). Yes this actually saved my butt in the past after a broken update…

Do you think it’s worthwhile to create a bug report to check if this can be fixed?

In my eyes it’s a regression as compared to 13.2 and everyone running an openSUSE based server upgrading to 42.x will be affected by this. But then again this is only my opinion (I am probably to old to accept X11, even worse GNOME and 32bit packages on a server) and the openSUSE devs might disagree. Which is totally fine as I can work my way around it.

At least turning off ‘install suggested packages’ should get rid of all the 32bit packages in a server install.

Thanks for the feedback
Christian.


  Mesa                   11.2.2-166.1
  Mesa-libEGL1           11.2.2-166.1
  Mesa-libGL1            11.2.2-166.1
  Mesa-libglapi0         11.2.2-166.1
  dbus-1-glib            0.100.2-4.7
  dbus-1-python          1.2.0-7.34
  fontconfig             2.11.1-2.2
  girepository-1_0       1.48.0-3.2
  libLLVM                3.8.0-1.23
  libX11-xcb1            1.6.3-7.1
  libXdamage1            1.1.4-10.3
  libXext6               1.3.3-4.19
  libXfixes3             5.0.1-8.1
  libXft2                2.3.2-4.22
  libXrender1            0.9.9-4.1
  libXxf86vm1            1.1.4-2.3
  libcairo2              1.15.2-4.2
  libdatrie1             0.2.4-20.5
  libdrm2                2.4.68-1.4
  libdrm_amdgpu1         2.4.68-1.4
  libdrm_intel1          2.4.68-1.4
  libdrm_nouveau2        2.4.68-1.4
  libdrm_radeon1         2.4.68-1.4
  libgbm1                11.2.2-166.1
  libgirepository-1_0-1  1.48.0-3.2
  libgraphite2-3         1.3.1-3.6
  libharfbuzz0           1.3.0-1.2
  libpango-1_0-0         1.40.1-1.5
  libpciaccess0          0.13.4-2.4
  libpixman-1-0          0.34.0-2.2
  libthai-data           0.1.25-1.2
  libthai0               0.1.25-1.2
  libwayland-client0     1.9.0-2.5
  libwayland-server0     1.9.0-2.5
  libxcb-dri2-0          1.11.1-2.25
  libxcb-dri3-0          1.11.1-2.25
  libxcb-glx0            1.11.1-2.25
  libxcb-present0        1.11.1-2.25
  libxcb-render0         1.11.1-2.25
  libxcb-shm0            1.11.1-2.25
  libxcb-sync1           1.11.1-2.25
  libxcb-xfixes0         1.11.1-2.25
  libxshmfence1          1.2-6.3
  python-gobject         3.20.1-3.2
  snapper-zypp-plugin    0.3.3-2.2
  typelib-1_0-Pango-1_0  1.40.1-1.

It’s a dependency pulled in by the YaST packages.

On a side note, I hope it will support ZFS in the future as I am using this for my data drives. But I am sure I am dreaming, please don’t wake me up :wink:

This is actually an interesting idea, haven’t done this for while (bootstrapping any Linux distribution from a live system). Unfortunately, this doesn’t really solve the problem if I want to have zypper snapshot support which I don’t really need as I can work around it. But it would help me to figure out why some of the libraries I am wondering about are installed.

It’s not really about the size than about the three hundred something packages that don’t have a reason of being installed on a server, especially those GNOME and 32 bit packages. But this is something that the openSUSE (and I am pretty sure SLES) devs have to consider. I was mostly surprised to see all these packages being installed as compared to openSUSE 13.x and I was wondering if the devs are aware of this and if this is to be expected.

A compromise might be to set ‘solver.onlyRequires’ for ‘Server (Text Mode)’ installations which would reduce the list a lot.

Like I said if you think submitting a bug report is worthwhile I will do so.

Thanks again
Christian.

I really think so. As you said, I am not sure the devs are aware of this.

I also think that others may be wondering, like you, why they get Gnome packages in this situation. And why not KDE ones?

And while you shouldn’t follow this into the extreme, I always learned that you should not install software you don’t need. At least on stable computer room (often called “server”) systems.

You should wake up ASAP, there have been packages for zfs (kernel modules and user space tools) in the “filesystems” Repo for years.

AK

To the @OP,

If you want to do a little sleuthing,

This is the spec file that defines all the installable patterns for 42.2. From this, you can inspect the required and recommended packages for each pattern.
https://build.opensuse.org/package/view_file/openSUSE:Leap:42.2/patterns-openSUSE/patterns-openSUSE.spec?rev=ec77e1961aecb1a86ebe595ccf547cda

You can list the installed patterns in a Server, the following is from one of mine

zypper se -i pattern

patterns-openSUSE-basepatterns-openSUSE-generic_server
patterns-openSUSE-minimal_base
patterns-openSUSE-yast2_base

From the above,
You should be able to create a comprehensive list of the packages installed in a default 42.2 Server… aside from hardware-specific packages.

If you don’t see your mystery packages in these patterns, you may want to re-think the history of your machine.

HTH,
TSU

and that’s why I wrote that I am using ZFS on all my data drives. I was talking about snapper being able to manage snapshots for ZFS volumes.

Best
Christian.

finally links to lists of packages that will be installed when selecting Server (Text Mode). These lists are taken from the installer when looking at the “Installation Summary” in the package/software manager (right click save this list) before starting the installation:

In 13.2 I had to manually select the snapper-zypp-plugin package as it is not selected by default in Server (Text Mode) because it conflicts with the minimal server pattern. I haven’t saved the package list when I checked 42.1 but it seems to be the same as the list in 42.2 (at least the installation size is the same).

To be clear, I am talking about an installation onto a fresh hard drive I picked up. There’s nothing on it, so I wouldn’t have any idea how the history of the computer should play any role in this. Also, it is the only hard drive in the computer during the installation. Further, I haven’t changed any setting in the installer except selecting Server (Text Mode) and of course selecting the snapper-zypp-plugin in 13.2 for comparison.

I am going to submit a bug report some time tomorrow and see if I get any responses.

Christian.