well, for one, Gentoo builds it’s packages from source when you install them, so you don’t need a binary that targets your specific version of libraries because it was built with those library versions from that point in time. like with other distros, you have to choose the el9, el10, fc44, fc45 version or the one for “noble”, “forky”, “bookworm” or “trixie”. on Gentoo, the application you install get’s linked to the library version you have installed. (simplified)
for the second part, the “conflict with each other”, Gentoo doesn’t do it like NIX, where you have those unique paths like “/nix/store/ggl4fqsvvlyf1y3rl6mk72nf0dc8c8hr-system-path/bin/bash”. but some packages (but not all) have “slots” that you can install in parallel. (e.g. rust, python, gentoo-kernel, wine, lua, …)
usually the actual binary of those packages is named like the version, e.g. /usr/bin/python3.14 and /usr/bin/python (which is the thing that actually gets used via PATH) is a symlink that you can switch with Gentoo tooling (eselect).
another way it is done is: packages you install come preset with what dependency version they like to use and that version gets installed along the already installed version, if necessary. (e.g. they set RUST_MIN_VER=“1.98.0” or PYTHON_SINGLE_TARGET=“python3_12”)
when a dependency gets updated, sometimes the application also needs to get rebuilt to that updated library version. it happens automatically on dist-upgrade (@world update)
well, for one, Gentoo builds it’s packages from source when you install them, so you don’t need a binary that targets your specific version of libraries because it was built with those library versions from that point in time. like with other distros, you have to choose the el9, el10, fc44, fc45 version or the one for “noble”, “forky”, “bookworm” or “trixie”. on Gentoo, the application you install get’s linked to the library version you have installed. (simplified)
for the second part, the “conflict with each other”, Gentoo doesn’t do it like NIX, where you have those unique paths like “/nix/store/ggl4fqsvvlyf1y3rl6mk72nf0dc8c8hr-system-path/bin/bash”. but some packages (but not all) have “slots” that you can install in parallel. (e.g. rust, python, gentoo-kernel, wine, lua, …)
usually the actual binary of those packages is named like the version, e.g. /usr/bin/python3.14 and /usr/bin/python (which is the thing that actually gets used via PATH) is a symlink that you can switch with Gentoo tooling (eselect). another way it is done is: packages you install come preset with what dependency version they like to use and that version gets installed along the already installed version, if necessary. (e.g. they set RUST_MIN_VER=“1.98.0” or PYTHON_SINGLE_TARGET=“python3_12”)
when a dependency gets updated, sometimes the application also needs to get rebuilt to that updated library version. it happens automatically on dist-upgrade (@world update)
thank you, that makes sense. have you used nix/nixOS before? I am currently using it and considering to switch (maybe to gentoo ^^)