How to install Steam on Rocky Linux

Updated: July 7, 2021

Just a few short days ago - well, no, technically it's summertime, unless you're on the wrong side of the disc, so the days are long - I tested Rocky Linux, then subsequently wrote a guide on how to turn it into a perfect desktop, and therein noted one big omission. Steam.

My desktop enhancement article did not have any instructions for this gaming platform. The reason is, at the time of my testing and writing, it was near impossible installing Steam on Rocky. But it can be done, if you're diligent enough. Now, let me show you how.

Problem in more detail

If you add the extra repositories like RPM Fusion, Steam will be available. So technically, you can try to install it, but then, you will fail, most likely with this error:

Problem: package steam- requires libcurl(x86-32), but none of the providers can be installed
- conflicting requests
- nothing provides needed by libcurl-7.61.1-14.el8.1.i686
- nothing provides needed by libcurl-minimal-7.61.1-14.el8.1.i686
(try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)

As it turns out, the Steam client, being a 32-bit piece of software, requires a 32-bit version of the libnghttp2 library, but nothing in the active repos provides it. Now, please note: at the time of my testing and writing, Rocky Linux 8 hadn't yet been released officially, so any of my beta/pre-release findings could change, and the guidance here could be totally irrelevant and out of date. But if you do have this issue, read on.


My way around this problem is hacky - grabbing and installing the 32-bit library from an openSUSE repo! If you search online (on any of the package repositories tracking RPM packages in different distros), you will find that libnghttp2 is only available as 64-bit in the vast majority of distros EXCEPT openSUSE. This one offers it.

I downloaded the RPM from the openSUSE 15.2 repo, extracted it, just to see the content structure - the package only contains the one library, which is installed under /usr/lib or such. This meant I could install the downloaded package on Rocky Linux, too, without any great compatibility issues.

rpm2cpio libnghttp2-14-1.40.0-lp152.2.6.1.i586.rpm | cpio -idvm

And so, I installed the library:

sudo dnf install libnghttp2-14-1.40.0-lp152.2.6.1.i586.rpm
Last metadata expiration check: 0:04:27 ago on Wed 02 Jun 2021 03:19:03 PM.
Dependencies resolved.
 Package            Arch        Version              Repository        Size
libnghttp2-14      i586        1.40.0-lp152.2.6.1   @commandline      125 k
Installing dependencies:
glibc32            x86_64      2.28-42.1.el8        appstream         1.5 M

Transaction Summary
Install  2 Packages

Total size: 1.6 M
Total download size: 1.5 M
Installed size: 5.4 M
Is this ok [y/N]:

After this, you CAN install Steam - no dependency issues anymore.


This is a short article, and well, it doesn't really need to be long. I hope this tutorial will also prompt a bug fix somewhere, and the necessary libraries will be built natively for Rocky Linux. If you remember my journey with CentOS 8, early on, for instance, there was no LyX in the repos, but this got resolved eventually. I think Steam will also get the right fix - this will affect any distro that doesn't provide the necessary 32-bit libraries.

For the time being, if you must play on Rocky, then you could try my hack. It's not perfect. There could be some issues, as openSUSE and Rocky are ever-so-slightly different. You also won't get any updates, and you might hit a weird compatibility problem after a while. But it will let you install Steam, and hopefully be able to play desktop games on a server distro. Not because you should, but because you can. And we're done.


You may also like: