5 ms·
I'm not a Linux expert, but it seems some dependency issues won't be resolved by this e.g. Glibc conflicts. Or would it?
by topbanana 13y ago
I'm not a Linux expert, but it seems some dependency issues won't be resolved by this e.g. Glibc conflicts. Or would it?
- davorak 13y agoIs there something special about glibc conflicts that goes beyond normal versioning conflicts? Package A could depending on glibc-2.13 and package b could depend on glibc-2.17. No conflicts would because by both running at the same time.
- topbanana 13y agoI had a hell of a time installing something in Ubuntu that required a particular glibc version that was differnt to the system--wide one. Like I said, I'm not Linux expert and I probably missed a trick. I ended up using a different distro. Would this new distro have helped?
- chubot 13y agoI think in the Nix world, you would have two or more different glibc versions at different paths. Then the applications are configured to link against the required versions. Nix has extra build metadata that calls GNU configure as far as I can tell, and that is where this knowledge would lie. So you can run two programs side by side with different glibc versions in Nix. On Ubuntu, I think this is mostly not possible, as you have found.
- qznc 13y agoAs far as i understand Nix, two users could have different glibc versions, but two programs of a single user?
- chubot 13y agoTwo different versions will definitely live at different paths, since the path contains the content hash. The path doesn't have much to do with the user name; that's a separate issue.
- davorak 13y agoAs a single user I could run two programs utilizing different glibc versions.
- drdaeman 13y agoI don't see any problems here. libc is nothing special, it's just a library that (almost) every piece of software depends upon. Two different programs may depend on two different versions of it (/nix/libc-2.10-fdsfgs/lib/libc.so.6 and /nix/libc-2.13-fgsfds/lib/libc.so.6 or even /nix/uclibc-0.9.33.1-blahblah/lib/libc.so) just fine. The only requirement is that both libc versions must support running under the current kernel¹, as you can't have two kernels at the same time. However, it would be problematic if a single program (foo) would depend on a library (libfoo), which depends on another version of libc that foo does. I.e., dependency graph will be like foo->libc-x.xx, foo->libfoo->libc-y.yy. This would cause symbol conflict and AFAIK this can't be solved without either rebuilding either foo or libfoo or introducing some really nasty hacks to the ELF loader (ld-linux). ___ ¹) Google for "FATAL: kernel too old" error message to see the example of what I mean. There are patches to make newer libcs to run with relatively older kernels, though, it just requires building from source.
- exDM69 13y ago> I had a hell of a time installing something in Ubuntu that required a particular glibc version... I have been in the same situation. But big changes in glibc that break things are very rare, most glibc version updates are backward compatible. > Would this new distro have helped? Yes, but it might have required re-compiling some packages. Btw. NixOS is not such a new distro, it's been bubbling under for years now.