Error Compiling Unreal Engine on Arch Linux

Hi. Upon attempting to run GenerateProjectFiles.sh when compiling Unreal Engine 5, I got this error:

Process terminated. Couldn’t find a valid ICU package installed on the system.

I tried installing the “icu” package on the Arch Linux repository, but it still didn’t work. How do I fix this and successfully compile Unreal Engine?

3 Likes

I fixed the problem by installing “libicu50” from the Arch User Repository. Instructions on how to do so:

sudo pacman -S yay (Install AUR helper if you don’t already have one.)
'yay -S libicu50 --noconfirm` (Installs libicu50.)

5 Likes

That worked for me too. Any idea why we need that particular version?

when I tried to build 5.1 i got a (core dumped) error on the dotnet msbuild line (31) in ./GenerateProjectFiles.sh

Installing this particular version of libicu solved it for me as well.

I didn’t want to downgrade ICU, so I exported the DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1 variable to enable an invariant culture. I don’t think it’s a good idea for a production pipeline but works for me at the moment.

Either run the following in the terminal window before running the script and every time before running the Editor:

export DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1

Or add the export to the end of your ~/.bashrc to enable this across all terminals so you don’t have to run it manually next time. This will apply for all new terminal sessions, or to the current one after running source ~/.bashrc. If using zsh, use ~/.zshrc instead of ~/.bashrc.

I’d rather do the first option, even though I’ll need to run the export in each new terminal session before running the Editor. Applying invariant culture to all dotnet apps doesn’t seem like a good idea to me. Hopefully soon the ICU dependency will be upgraded in the Engine, so doing all that won’t be necessary anymore.

i add this:

export CLR_ICU_VERSION_OVERRIDE=$(pacman -Q icu | awk '{split($0,a," ");print a[2]}' | awk '{split($0,a,"-");print a[1]}')

but now getting more errors:


./GenerateProjectFiles.sh                                                                                       ✔ 
Attempting to set up UE pretty printers for gdb (existing UEPrinters.py, if any, will be overwritten)...
        updated UEPrinters.py
        found necessary entries in ~/.gdbinit file, not changing it.

Setting up Unreal Engine 5 project files...

Setting up bundled DotNet SDK
/opt/UnrealEngine-5.0.2-release/Engine/Binaries/ThirdParty/DotNet/Linux/sdk/3.1.401/NuGet.targets(255,5): error : Der Dienstindex für die Quelle "https://api.nuget.org/v3/index.json" konnte nicht geladen werden. [/opt/UnrealEngine-5.0.2-release/Engine/Source/Programs/UnrealBuildTool/UnrealBuildTool.csproj]
/opt/UnrealEngine-5.0.2-release/Engine/Binaries/ThirdParty/DotNet/Linux/sdk/3.1.401/NuGet.targets(255,5): error :   The SSL connection could not be established, see inner exception. [/opt/UnrealEngine-5.0.2-release/Engine/Source/Programs/UnrealBuildTool/UnrealBuildTool.csproj]
/opt/UnrealEngine-5.0.2-release/Engine/Binaries/ThirdParty/DotNet/Linux/sdk/3.1.401/NuGet.targets(255,5): error :   The remote certificate is invalid according to the validation procedure. [/opt/UnrealEngine-5.0.2-release/Engine/Source/Programs/UnrealBuildTool/UnrealBuildTool.csproj]
GenerateProjectFiles ERROR: Failed to build UnrealBuildTool
1 Like

I tried both installing libicu50 and setting globalization to 1 and i’m having the same issue as LucyVergil. I even changed to the 5.0 branch and the problem persists. Maybe is it a bug in the build?

I’m having this same issue, so far I have tried multiple versions of dotnet sdks and played with some NuGet settings. There’s not much about this error out on the net unless you remove compiling Unreal Engine 5 as a search parameter. I have a hunch it’s about how vscode is installed… I have the binary from the AUR.

/home/laflaizn/UnrealEngine/Engine/Binaries/ThirdParty/DotNet/Linux/sdk/3.1.401/NuGet.targets(255,5): error : Unable to load the service index for source https://api.nuget.org/v3/index.json. [/home/laflaizn/UnrealEngine/Engine/Source/Programs/UnrealBuildTool/UnrealBuildTool.csproj]
/home/laflaizn/UnrealEngine/Engine/Binaries/ThirdParty/DotNet/Linux/sdk/3.1.401/NuGet.targets(255,5): error :   The SSL connection could not be established, see inner exception. [/home/laflaizn/UnrealEngine/Engine/Source/Programs/UnrealBuildTool/UnrealBuildTool.csproj]
/home/laflaizn/UnrealEngine/Engine/Binaries/ThirdParty/DotNet/Linux/sdk/3.1.401/NuGet.targets(255,5): error :   The remote certificate is invalid according to the validation procedure. [/home/laflaizn/UnrealEngine/Engine/Source/Programs/UnrealBuildTool/UnrealBuildTool.csproj]

dotnet core 3.0 (master nightly build) restore fails on Ubuntu for invalid certificate · Issue #8169 · NuGet/Home · GitHub ← this is the fix (for me)

So i deleted my last reply as i make a mistake while doing the symlinks.

The github response made it work for me. Thank you very much!

Any chance you can help me out with the symlink command? I’m fairly certain I’ve got it right but it still doesn’t work, seems like you were in the same boat?

Sure.
first i had to install libssl. you’ll probably want to rebuild the dot-sdk libraries after this.

sudo pacman -S libssl

I also had to create the required directories since they were nonexistent in my system.

sudo mkdir /usr/local/ssl
sudo ln -s /etc/ssl/certs /usr/local/ssl

Also just in case i did the same with the lib directory just in case. This might be unnecessary, but doesn’t hurt to try.

sudo mkdir /usr/lib/ssl
sudo ln -s /etc/ssl/certs /usr/lib/ssl

Hope this can help.

3 Likes

It was actually the second one that did it for me! Thank you!

1 Like

Nothing helped me on archlinux except for:

ln -s /etc/ssl /usr/lib/ssl

After installing libicu50 i was able to get pass globalization
I wasn’t able to install libssl but openssl worked for me then i “dotnet restore” no clue if that helped in anyway then i mkdir and ln.
Now it is compiling thank you all.

I did a tutorial showing how to solve this problem on Fedora 36. I believe that would help in others distros too. Here is the link: https://www.slick3d.art/post/compiling-unreal-engine-5-on-fedora-36

Creating the SSL directories worked for me, thank you @TheJarmanitor !

However, I noticed that libssl was not available in my pacman packages, but it worked anyway.

I was having the same problem on Fedora 35, but your solution worked perfectly. Thank you so much!