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.
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.
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:
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.
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:
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:
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:
- 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!