| How does apt-get install handle the following scenario? You need the following software: - You need the latest release of Erlang for your app - A database (like Riak), whicn in turn happens to need an older version of Erlang - The new Erlang needs the latest libopenssl - The old Erlang needs an old v1.x libopenssl - You used some open source software written in C++, so you need libstdc++ - Some of your own C++ code has exposed a bug in libstdc++, so you need yet another libstdc++ with your patches, but just for that software - Etc How does apt-get install allow you to have multiple versions of a given dynamic library (with the same SONAME) and multiple binaries (erl, clang, etc) installed at the same time? The answer: it doesn't. Nix has no problem handling everything I described above, and it handles it easily. So, yes, you can pin versions with apt-get install, but you're out of luck if any of those packages have any transitive dependencies with different versions. Also, the pinning guarantees are higher with nix: you can be guaranteed that your packages and their transitive dependencies are byte-for-byte identical, every time. Pinning end-to-end across all packages (and every transitive dependency thereof) is not a normal, happy-path thing to do in apt, so you would be hard pressed to find anyone that does that, given how onerous that would be -- whereas it's trivial in Nix. |