Ambermoon
Ambermoon copied to clipboard
Ambermoon tools on linux fail with "undefined symbol: __clock_nanosleep"
When trying to start any of the ambermoon tools (except MonsterValueChanger, which works fine) on linux, I get the following error message. It is always the same except for one part, which I will mark with [???]. This part changes on each run, no matter the tool and seems to contain random values, often represented as invalid characters.
Failed to load [???], error: /snap/dotnet-runtime-31/21/shared/Microsoft.NETCore.App/3.1.19/../../../lib/x86_64-linux-gnu/librt.so.1: undefined symbol: __clock_nanosleep, version GLIBC_PRIVATE
Failed to bind to CoreCLR at '/snap/dotnet-runtime-31/21/shared/Microsoft.NETCore.App/3.1.19/'
Failed to create CoreCLR, HRESULT: 0x80008088
I have the .NET runtime 3.1 installed via snap. librt.so.1
is symlink and the linked file exists.
What distro and version do you use? Is it listed here?https://github.com/dotnet/core/blob/main/release-notes/3.1/3.1-supported-os.md
I wonder why the monster value changer works. It is very similar to the others.
What distro and version do you use? [..]
KDE neon, which is basically Ubuntu 20.04 LTS with an extra repository for the newest KDE packages. So it should be supported.
I wonder why the monster value changer works. It is very similar to the others.
I had another look at it and the AmbermoonTools-Linux.tar.gz
and noticed 2 things about it:
- MonsterValueChanger is not (!!) inside the archive - so I have an older version installed (date says Dec 10).
- MonsterValueChanger has a size of 76667 KB, while the other tools around 500-600 KB.
So it's probably working because it's the standalone version.
It was renamed to AmbermoonMonsterValueChanger.
I think this commit 8b7b080dbf30848caa3d6ab575a860b19593ad1f is the problem.
As a temporary workaround you could copy the dependencies from the temp NET folder, which is created by the standalone MonsterValueChanger, to your tool directory.
The tools were very large. And I thought when you want to use such tools you also will be willing to setup the NET environment. I had no clue that it isn't working well on Linux. I guess I only tested the standalone tools on Linux and the small versions on Windows only.
I will come up with a solution soon.
I copied all files in the MonsterValueChanger to the directory with the tools, but that did not change anything :(. My runtime is set up, so it should work.. (I got different errors before that)
Some programs on linux use the following approach for reducing file size: Have one executable and multiple symlinks to that executable. In this case this might be AmbermoonTool, and a symlink called AmbermoonPack. When AmbermoonTool is called via the symlink, it reads args[0] which AmbermoonPack and knows what subcommand to use. But I'm not sure if this would work well here.
I tried out the native compilation but it doesn't work very well. I think I will provide the large self-contained files as a quick fix and then when I have a bit more time I can try to come up with another solution. Maybe native builds will work better in November when NET6 is released.