jsmith via <[email protected]> writes:
> Hi, > For some code that was previously working I receive the error: > > ERROR: In procedure dlopen: > In procedure dlopen: file > "/gnu/store/35apwp40n8rnlqyxf7hagwr250nw754w-guile-dbi-2.1.8/lib/libguile-dbi.so", > message > "/gnu/store/fa6wj5bxkj5ll1d7292a70knmyl7a0cr-glibc-2.31/lib/libc.so.6: > version `GLIBC_2.33' not found (required by > /gnu/store/z0kk97dcbcj6s8crm3qiwsyz4ry0zqxw-guile-2.2.7/lib/libguile-2.2.so.1)" > > I installed glibc_2.33 You should not do this. It has no effect as Guix will not look around for what version of glibc (or any other library for that matter) you might have installed in some profile. When building software, the absolute file names of libraries are embedded in the binary — including the GNU C library. The problem you describe looks like you have a mixture of packages that have been linked with different versions of the GNU C library, which indicates that you used different versions of Guix to build/install them. Here an older version of the C library is loaded first because some package you have is linked with that older version. Then at a later point a package demands to use features that only a newer version of the C library provides, but the older version that has been loaded cannot satisfy the request. This problem is not specific to Guix and is shared by all systems that use dynamic linking. There is no way to load different variants of the same library in the same process. The solution is to make sure that all software that has to work together uses the same variants of any libraries. Guix by default only keeps one variant per library in its set of package definitions, so by using the same version of Guix for all packages that are used simultaneously will bypass the problem. There are different ways out of this problem: a) use a manifest to ensure that all packages in your profile are installed with the exact same version of Guix and thus use the same variants for all libraries b) upgrade all your packages with the same version of Guix. c) use a temporary isolated environment, e.g. with “guix shell -C” Hope this helps! -- Ricardo
