RHEL9 and Clones

RedHat's Enterprise Linux 9 has been out since mid May, 2022, with AlmaLinux following shortly after, and Rocky Linux's version out by mid-July. I've been trying it as a desktop and have run into a few minor issues. I put this up for others who might have the same problem(s).

All this was done with AlmaLinux-9. I usually try on a VirtualBox install first, then on a multibooting laptop. (Thinkpad T495).

One thing to note is that RHEL9 and clones won't install on all x86_64 machines. See RH's announcement. For example, I have a core duo Gigabyte P35-DS3R motherboard and alma9 won't install on it. (Though Fedora 36 will, as well as almost all other Linux versions.) It will only build on x86_64-v2 machines.

This script, which I saw posted by Frank Cox on the rockylinux forums, should tell you if your motherboard can run alma or rocky (or RHEL)9.

#!/usr/bin/awk -f
    while (!/flags/) if (getline < "/proc/cpuinfo" != 1) exit 1
    if (/lm/&&/cmov/&&/cx8/&&/fpu/&&/fxsr/&&/mmx/&&/syscall/&&/sse2/) level = 1
    if (level == 1 && /cx16/&&/lahf/&&/popcnt/&&/sse4_1/&&/sse4_2/&&/ssse3/) level = 2  
    if (level == 2 && /avx/&&/avx2/&&/bmi1/&&/bmi2/&&/f16c/&&/fma/&&/abm/&&/movbe/&&/xsave/) level = 3
    if (level == 3 && /avx512f/&&/avx512bw/&&/avx512cd/&&/avx512dq/&&/avx512vl/) level = 4
    if (level > 0) { print "CPU supports x86-64-v" level; exit level + 1 }  
exit 1

Copy it, make it executable with chmod +x, call it what you want, and you can then run it with ./scriptname. (Assuming your path to awk is /usr/bin/awk.) In the case of my Gigabyte board, it read CPU supports x86-64-v1, so I'm out of luck running it on that machine. But, for now, let's assume your machine can install it without problems.

I couldn't even get it to boot on VirtualBox on that machine, so that might be another way to test it.

Since this was first written, RHEL, Alma, and Rocky are at version 9.2. So, more packages may be available without having to build from srpms. For example, Zathura, which I mention below, is now available, and I had to run dnf with --allowerasing to get rid of a couple of the dependencies I had built.

As I say later, I'm leaving the original because I suspect the same issues may arise in RHEL's next iteration. But, I would check what is available from repos, before building. (Which is stating the obvious.)

Even the workstation, which gives a Gnome desktop, has some trouble with videos (totem can't play mp4s, for example), but I prefer to do a minimal install and build up from there.

One thing I've noticed is that the default umask has changed from the 0002 in RHEL8 to 0022, meaning a file or directory will only be writeable by the owner.

When doing a minimal install via wireless, upon reboot, the machine won't connect even though nmtui will show correct settings that were created during the install. One must first run a wired connection and use that to install NetworkManger-wifi. Once it's installed, the machine will connect to wireless at its next boot. You may be able to avoid a reboot by stopping and starting the NetworkManager service. Note that you have to stop it, then start it, systemctl restart won't work.

I like to use openbox as my window manager and urxvt as my x terminal. Neither are available in the standard repos, so one of the first things I do is install epel-release. That has both openbox and urxvt available. This can be done with dnf -y install epel-release. I then also added the rpmfusion free and nonfree repos.

As I knew I'd have to build some rpms, I also set up a rpmbuild environment.

To get sound to work, aside from the rpmfusion repos, I also install pipewire-libs. To get mp4 videos to run, once I've set up the rpmfusion repos, I install ffmpeg and compat-ffmpeg4. This will play mp4 files, but to get sound working in firefox, we need more. At this point though, I can play an mp4 file on my system with ffplay.

If one uses brave-browser, they may not need pipewire-libs, but I haven't tested. You may have to reboot after installing pipewire-libs for sound to work. Another oddity which I haven't solved is that after the reboot, if you immediately go to an mp4 link in firefox, it will play but have no sound. Yet, if you first go to youtube and play any video there, which will have sound, then play an mp4 file it will then have sound.

You can, with patience, install mpv from existing Fedora 34 and Fedora 36 rpms. It has various dependencies which you'll have to hunt down. Flatpak is easier, but has a lot of bloat. I wound up building it, I mention a bit about it below, like having to use the fc36 uchardset srpm.

Note that since this page was first written, rpmfusion has added an mpv package for EL9 so now it can easily be installed, assuming you have the rpmfusion repos, with dnf -y install mpv.

If you use flatpak, which is installed with dnf -y install flatpak, once installed, it has to be configured. To do that, add the repo. Their page just says download the repo file which may work if you're using Gnome or KDE. However, on our minimal install, you have to do
sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

With the laptop, I had to increase the brightness, as the default was very dark. I suspect this may have been just my laptop, a Ryzen T495 Thinkpad. The brightness keys didn't work. I went to /sys/class/backlight/amdgpu_b10 (the model of my graphics card--if you have this problem, the name will depend upon your card). There is a file in there called max_brightness. In my case, it read 255. Just don't make brightness more than the maximum.

There is a second file called brightness. On my T495, it was set to 12 and was very dim. After some trial and error, I did
echo 70 > /sys/class/backlight/amdgpu_b610/brightness

This made the console easy to read You can even do this during installation, use Fn+Ctl+Alt+F3 to get to a command prompt, run the echo 70 line and go back to the installation screen, which will now be much easier to read. It will have to be set again, once the system is installed and rebooted.

Before using openbox, I wanted to install tint2, a lightweight panel, and feh, a fairly small imageviewer that I use to set an openbox background. For tint2, it needed ninja-build, which wasn't available in the repos. To get that, I had to enable the crb repo, basically what used to be CentOS powertools.
sudo dnf config-manager --enable crb

I used rpmfind.net to get an srpm file. The one for Fedora 34 worked without problems. For feh, I again got an F34 srpm. It can also be built from source. If you look at the webpage you see a list of Debian dependencies. For Alma, I did
sudo dnf -y install curl-devel openssl-devel libX11-devel libXt-devel imlib2-devel

If using the fc34 srpm, install perl-Test-Command, also from an fc34 srpm, before running dnf builddep.

(Fedora 34 srpms no longer seem to get mention on rpmfind. However, they can be found, as of June, 2023, at the archives. There was no mpv package when I first wrote this. There is now one that can be used, as I wrote above, in rpmfusion. When I first installed El9, there was none.

For playing simple videos, you can use ffplay. If you have more complex stuff to do, you may prefer to install vlc. Another program I use frequently, weechat, didn't yet have an el9 rpm. However, I used the fc34 srpm and edited the spec file. The spec file lists guile22-devel as a dependency. I change that to guile30-devel, which has an rpm. Then I can run dnf builddep, rpmbuild -ba and then install the rpm that I created. There is a request for an official package on RedHat's bugzilla. As of late August, 2022, there should now be an EPEL rpm for weechat.

A few other programs I use are fairly simple to install. There is a mutt rpm, but I prefer neomutt, which has its own repo. See the neomutt page for instructions. While on mail, I use getmail to get the mail and msmtp to send it. Getmail's creator has not yet created a python3 version, but someone has made a getmail6. They have instructions for building an rpm, but they have mentioned that python support can be spotty, and I found it easiest to install python3-pip and run pip install getmail6. Their page is here.

For msmtp, I rebuilt it using the Fedora 34 src.rpm, though there is an el8 rpm. I just grabbed the fc34 one because it was the first one I saw. For information about configuring these tools the interested reader can view my mutt page. Generally, using rpmfind, I found that I had the best luck with Fedora 34 srpms. There are various other packages I use, that are my personal taste, such as the zathura document viewer with the mupdf plugin. This required a bunch of rpms to be built, and usually, the Fedora 34 srpms did the trick.

There were exceptions. For example, when building jbig2dec, which I needed for mupdf, which I needed for zathura-pdf-mupdf (which is great for reading ebooks), if I used the Fedora 34 one, I would have to use dnf --nobest during the builddep part as it wanted the later jbig2dec and its libs and devel package. There is a jbig2dec-libs package but no devel or plain jbig2dec package. It gets pulled in during the dnf builddep step when installing girara. I was able to use the fc34 srpms for mupdf and zathura-pdf-mupdf, but used the fc36 srpm for jbig2dec. I could have used the fc34 one, but then I got messages that there was a conflict and to use it, use the --nobest option. Actually, mupdf itself can be used for epubs, but zathura does a better job, remembering your last position, etc.

The other exception was uchardet--one needs it and uchardet-devel to build the mpv rpm. Same issue--it looks for the newer version and says to use the fc34 version you have to use --nobest. So, for uchardet, I once again used the fc36 srpm with the fc34 mpv rpm which worked perfectly.

I am leaving the below as it was in late August, as we might have to go through the same thing for RHEL10 when it's released. However, as of August 28th, between epel and rpm fusion, there are now packages for zathura and mpv, though not mupdf and zathura-pdf-mupdf, so you no longer need to build zathura and girara, as both of them, and their devel packages, are available with dnf install.

You also no longer need the entire mpv section, as it's available from rpmfusion. As mentioned, a package for weechat is also now available.

So, summing up, this is what I installed to get a working openbox desktop with various applications that I frequently use.

Installed from repos with dnf -y install

This group has the main packages. I had to first enable the crb repo and install the epel-release as well as the rpmfusion free and non free repos. This next group may not be needed by most users. Most devel packages mentioned are to install dwm, another small window manager that I like, and the rest are for compiling rpms.

Installed from SRPMS

As mentioned, I have a page on building from srpms here. Most of the srpms are gotten from rpmfind's Fedora 34 rpms. When it's not, I mention it, it's only in a couple of cases, jbig2dec and uchardet. In both cases, it's because some of what is needed is already in repos, but one needs to build from srpms to get the devel package, and using the Fedora 36 packages prevents conflicting package errors. This next group is needed for mpv. libdvdnav, libguess, and uchardet all need the development package installed as well. (uchardet is in the repos, but we need uchardet-devel which can only be gotten from the srpm). I also install the srpm (from Fedora 34) for msmtp to send mail. As mentioned above, I get getmail6 from pip, and install the repo for neomutt, linked above. I imagine as time goes on, most of these packages will become readily available. I might as well mention that I was able to install PySolFC, after enabling a copr repo.
sudo dnf copr enable sergiomb/pysol
sudo dnf install PySolFC

Note that this is a COPR repo and may not work for everyone, but it worked for me.

I subitted a bug report and it may be fixed by the time you see this.

I like the librewolf browser and have been using it on Alma9. There is a flatpak for it, though I've just enabled the Fedora repo for it and installed it with dnf --nobest. It works well, but these are all test machines and I wouldn't recommend anyone does this on a production machine. It's quite likely to break something sooner or later. But for those who want to try it, it works for me, though I can't, in good conscience, recommend this method. It's much safer to use the official flatpak version as mentioned on their site.