[HowTo] Run older 32-bit native Linux games and success with GoG titles

Hello People, :slight_smile:

I just switched from Linuxmint roughly a month and half back to Manjaro XFCE. While I knew my Steam games would likely not be a problem to run, it did not occur to me that perhaps my GoG or even older Humble Bundle games might not work.

The issue with running older native Linux games, is them needing 32bit libraries, or them looking specifically for older versioned ones. On top of Manjaro being based on Arch, the libraries have a different name as most of these games are targeted for Ubuntu Linux, and their derivatives. On a side note, running them on Linuxmint was no issue since it is a Ubuntu derivative. Another user’s comment on the Manjaro sub-reddit clued me into this link:

This is what helps you translate the different library names between the Linux distributions. And is necessary to make sure you have all the software dependencies installed that the game will need. I’ll use a real life example for you to see that you should be able to apply to any game. One thing that may help is installing Steam. Steam has it’s own Linux runtime libraries that I suspect install a good portion of these software dependencies for 32bit Linux and older games. Though it didn’t have everything installed for the example I’ll show you.

I also understand you can run non-Steam Linux games within Steam’s runtime library to have easy access to those software dependencies. Though often times, once you’ve installed all the basic software dependencies, it applies to any game and there is no more issues with other older games, as you only install the dependencies once.

My real life example is “Shadow Tactics: Blades of the Shogun”, which I bought from Good Old Games (GoG) many years ago. (By the way, it’s a fantastic game!) On their web page, in the system requirements section they list the following:

Requires the following packages to be installed: libc6:i386 libasound2:i386 libasound2-data:i386 libasound2-plugins:i386 libstdc++6:i386 libx11-6:i386 libxau6:i386 libxcb1:i386 libxcursor1:i386 libxdmcp6:i386 libxext6:i386 libxfixes3:i386 libxinerama1:i386 libxrandr2:i386 libxrender1:i386 libglu1:i386 This game comes with a 32-bit binary

(If you are sufficiently experienced enough and you just need a direct translation of each library to what Manjaro Linux uses, just scroll further down. I’ll post it in a list showing the translation from each Ubuntu library name to codeweaver web page section, to Arch Linux library name. And also in a easy list with a space between each library for easy Terminal usage.)

Now the great part about this is you don’t have to use the Terminal if you don’t want to. All of this can be done in the “Add/Remove Software” program, also known as Pamac. Though if you prefer to use Pacman at the Terminal, that works too. I’ll leave two Manjaro wiki links for those two subjects if you need more information.

On a side note, beyond the bit saying at the end that it only comes in a 32bit binary, the :i386 tag on all these libraries that GoG is listing is what clues us in that it is a 32bit game, as it needs 32bit libraries that are all labeled as :i386. On modern 64bit Linux distributions, these 32bit libraries are rarely if ever installed by default, as most people do not need them. This tag name of i386 is used in the Debian Linux based Ubuntu software libraries because Intel’s first 32bit CPU was named that.

Ok, so going back to that previous codeweavers link, and the software dependencies that I quoted from GoG, let’s start with the first one.

  • libc6:i386

In general, if you use the “Find” feature in your browser, you won’t find the right link to tell you what you need. If you remove the :i386, and the version number just before that, you generally will. This first example is the exception. It is listed under:

  • Missing or broken C library

When you click on that link, the information we need is listed under alternate commands for 64-bit Arch Linux. This is because Manjaro is based on Arch Linux. Much in the same way that Linuxmint is based on Ubuntu, and Ubuntu is based on Debian’s unstable branch. Looking at the relevant line for this example:

  • 64-bit Arch Linux : pacman -Syu lib32-glibc

The last bit is the library name that corresponds to the direct equivalent to libc6:i386 in Ubuntu.

  • lib32-glibc

You’ll notice that all the 32bit libraries for Arch Linux and it’s derivatives use lib32 to signify they are 32bit libraries. And they conveniently give you the Terminal command to install it via Pacman if you wish to use that. Basically everything after the : as shown below.

pacman -Syu lib32-glibc

You can actually just run this command in Terminal whether it is already installed or not. If it is installed already, it will give you the following warning:

warning: lib32-glibc-2.37-2 is up to date – reinstalling

And then ask you:

:: Proceed with installation? [Y/n]

Which you can respond by pressing n and the enter key.

For the graphical user interface (GUI) method, we use “Add/Remove Software” program, which is also known as Pamac. You can find it on your desktop panel, and in the Manjaro start menu in the System and Settings section. When it opens, click on the magnifying glass icon in the top left corner. This opens the search field. Paste in the following into the search field:

lib32-glibc

When it displays the one and only result…
If it shows a red square with a garbage can symbol in white displayed in it on the right, then it is already installed. If it shows a turquoise square with a white downward pointing arrow, it is not installed. You can also click anywhere outside of that small square for more information about the program, file, or library. If it is not installed, click on that turquoise square with the downward pointing arrow to set it up in a list to install.

In the above screenshot example on my computer it is already installed.

You don’t need to install each library one at a time in Pamac. You can setup multiple libraries, or programs, and install them all at once when you are done checking which ones you need.

Let’s move on to the other libraries in order.

  • libasound2:i386

Like I said earlier, remove the “2:i386” from the name above and use the Find feature in your web browser on that codeweavers page. it brings up two results, the first one is correct titled:

  • Missing or broken libasound.so.2 library

If you have not changed your default Manjaro sound server, at this point in time it should be Pulseaudio. Follow the link for libpulse which shows our library we need is:

  • lib32-libpulse

If you are one of those people that have already switched over to Pipewire sound server, I believe what you need is " lib32-pipewire". Though I have no direct experience with it, so make sure you research and know what you are doing.

Ok, you should have the general idea of how to find the correct library at this point, so I’ll shorten this post up and show a list of direct translations starting from the top again. The order is Ubuntu dependency name, how it shows in the codeweavers web page, and the Arch Linux library name.

  • libc6:i386 = Missing or broken C library = lib32-glibc

  • libasound2:i386 = Missing or broken libasound.so.2 library = Missing or broken libpulse.so.0 library = lib32-libpulse

The next two, libasound2-data:i386 and libasound2-plugins:i386 are related to the prior one, such that as long as you install lib32-libpulse you should be fine. If for some reason your program still has no sound look at, ALSA does not go through PulseAudio, and install:

  • lib32-alsa-plugins

Next:

  • libstdc++6:i386 = Missing or broken libstdc++.so.6 library = lib32-gcc-libs

  • libx11-6:i386 = Missing or broken libX11.so.6 library = lib32-libx11

The next one, libxau6:i386, is for some reason not on the codeweavers page that I could find. I used a internet search engine with the search string

libxau6:i386 arch linux

The first result shows the 64bit version named “libxau”. Typing libxau into Pamac brings up both the 64 bit and 32 bit versions. We want:

  • lib32-libxau

Next one:

  • libxcb1:i386 = Missing or broken 32-bit libxcb.so.1 library = lib32-libxcb

This above one according to codeweaver is not necessary any longer, it was already installed on my system, so I did nothing to it. If it is not installed on your system yet, try without it first.

  • libxcursor1:i386 = Missing or broken libXcursor.so.1 library = lib32-libxcursor

The next one was also not on the codeweavers web page, had to do an internet search like above.

  • libxdmcp6:i386 = not on codeweavers page = lib32-libxdmcp

  • libxext6:i386 = Missing or broken libXext.so.6 library = lib32-libxext

  • libxfixes3:i386 = Missing or broken libXfixes.so.3 library = lib32-libxfixes

  • libxinerama1:i386 = Missing or broken libXinerama.so.1 library = lib32-libxinerama

  • libxrandr2:i386 = Missing or broken libXrandr.so.2 library = lib32-libxrandr

  • libxrender1:i386 = Missing or broken libXrender.so.1 library = lib32-libxrender

  • libglu1:i386 = Missing or broken libGLU.so.1 library = lib32-glu

That’s all of them.

On my Manjaro XFCE install with Steam installed and updated I only needed to install lib32-libxcursor, lib32-libxinerama, and lib32-libpulse.


At the very least for this game, you will need:

lib32-glibc lib32-libpulse lib32-gcc-libs lib32-libx11 lib32-libxau lib32-libxcursor lib32-libxdmcp lib32-libxext lib32-libxfixes lib32-libxinerama lib32-libxrandr lib32-libxrender lib32-glu

With the possibility of needing:

  • lib32-alsa-plugins (If you still don’t have sound in your game.)
  • lib32-pipewire (Possibly if you use the Pipewire sound server.)
  • lib32-libxcb (I’d be surprised if this is needed as Crossover and Wine no longer use it. but it is listed just in case.)

Have fun and good luck! :slight_smile:

1 Like

Tip: Install wine-staging and all it’s optional dependencies and/or steam-native-runtime. That should cover just about everthing. :wink:

Hello Yochanan, :slight_smile:

Thank you for this information. Can I assume you are talking about installing these from the Manjaro software repositories, and not other sources?

If so, why would steam-native-runtime not already be installed on my system seeing as how the Steam client is already installed, used, and updated? And if going this route, would a user still have to run the non-Steam game within Steam to take advantage of having installed this package? Or, are the libraries available outside of the Steam client?

In addition, I just want to clarify my understanding of WINE, and what is in the Manjaro software repositories. What I installed is:

Wine winetricks wine-gecko wine-mono

Wine version shows as 8.5-1. This is the development branch? Am I understanding that there is no stable WINE branch offered?

The staging branch of WINE offers optional dependencies that would cover everything I needed in my prior post here, and the development branch does not offer this?

One last thing, a bit off topic from my prior post, but why is winetricks so old? It keeps complaining with the following messages:

You are running winetricks-20220411, latest upstream is winetricks-20230212!

You should update using your distribution’s package manager, --self-update, or manually.

Looking at the package list in the following link, there seems to be no newer version in the testing or unstable branches.

https://packages.manjaro.org/?query=winetricks

I’m happy to make a separate post about this if needed, but thought I would ask here first.

Thanks again for posting this information.

Yes.

It’s an optional dependency for steam for steam native runtime support.

No. The point is having all or most of the dependencies most games will need.

Yes.

It’s in the AUR (Arch User Repository) as wine-stable.

Actually the dependencies and optional dependencies for wine and wine-staging are just about identical.

Because Arch hasn’t updated it. Not sure why. It’s been flagged out of date for a couple months now.

Hello again Yochanan, :slight_smile:

Thank you so much for your detailed response to my questions. I very much appreciate that as it helps educate me with all this.

Ah ok! That would be that whole list of optional dependencies I saw upon install for wine that I did not select, as I had no idea why I might need them. In Linuxmint, installing WINE stable branch from the winehq.org PPA, their repositories never gave me these sort of options that I was aware of. Hence learning a new way to do things here.

Also good to know that steam-native-runtime does not need Steam installed, or the game run from it to use it. This is good information.

Lots of good options and information here for other users to make use of. :slight_smile: