libgit2 / libgit2sharp

Git + .NET = ❤
http://libgit2.github.com
MIT License
3.21k stars 889 forks source link

NativeMethods. Version GLIBC_2.25' not found #2123

Open mgkcorty opened 2 months ago

mgkcorty commented 2 months ago

Hi!

I test my LibGit2Sharp application on old Linux platform and stuck with error, after some research i execute ldd command inside terminal:

ldd libgit2-a418d9d.so

Output: _version GLIBC2.25' not found (required by /usr/lib/versioncontrol/libgit2-a418d9d.so)

It seems that this is the real cause of the load DLL error.

How can I embed this dependency directly into the application so that it doesn't try to look for it in the system? Currently, GLIBC_2.24 is installed on the machine. Updating GLIBC to a newer version, like 2.25, is not possible due to company policies.

Reproduction steps

Start application and execute "pull" command through LibGit2Sharp.

Expected behavior

Execute of "pull" command successfully finished.

Actual behavior

Error on application "Pull" command: The type initializer for 'LibGit2Sharp.Core.NativeMethods' threw an exception. InnerException = {"Unable to load DLL 'git2-a418d9d' or one of its dependencies: }

Version of LibGit2Sharp (release number or SHA1)

0.30.0

Operating system(s) tested; .NET runtime tested

Astra Linux 1.6

Screenshot 2024-08-28 at 2 39 41 PM
bording commented 2 months ago

Unfortunately, I'm not aware of any way to internalize the glibc dependency. It's pretty much the foundational dependency.

When building the native binaries for LibGit2Sharp, I'm limited by what Linux distros I have available via containers to pick which one I use to build them. That is what is determining what version of glibc is required.

When looking for a which Linux distros and versions that LibGitS2Sharp will work with, you'll want to stick with the official Microsoft Supported OS versions.

I've tried to ensure that the native binaries will work with all of the currently supported versions, and have a pretty comprehensive test matrix that verifies that.

mgkcorty commented 2 months ago

@bording Thank you for your response; I understand what our problem is.

Still, if we try to tackle this issue, what would you recommend in our case? Our machine is running Astra Linux 1.6 with "GLIBC_2.24" installed.

It seems that older versions of LibGit2Sharp might work, but we would prefer not to downgrade.

Should we consider creating our own custom build of LibGit2Sharp (possibly needing to rebuild LibGit2Sharp.NativeBinaries and libGit2 using GLIBC_2.24)? What are the chances of success?

Also, what would happen if, instead of creating custom builds of libGit2, we try to point it to a GLIBC_2.25 version that we place alongside it?

mgkcorty commented 2 months ago

The issue is relevant; if anyone has encountered something similar, please share some ideas.