5 ms·
in a way apt and yum are package manager for c++
by singularity2001 9y ago
in a way apt and yum are package manager for c++
- rootlocus 9y agoThey're not exactly cross platform though
- claudius 9y agoThey are cross-language though, something I (as a user) personally value much much more highly than a cross-platform package manager which also supports a bunch of random platforms which I don’t care about at all. For developers/software distributors, this may of course look very different.
- rootlocus 9y agoAs a (mostly) windows user, they're completely useless to me. If it works for all linux users, it's not a C++ package manager, it's a linux package manager.
- RayDonnelly 9y agoYou can use `conda` cross-platform to install many C++ libraries.
- pfultz2 9y agoThe package managers that are listed in the post are cross-platform and work on windows.
- rootlocus 9y agoWell sure, but I wasn't talking about them. I was replying to someone who wrote > in a way apt and yum are package manager for c++
- Eridrus 9y agoI find apt completely unsatisfying as a package manager, even when I don't care about OS compatibility, for software development. I doubt yum is any better.
- jeremyjh 9y agoSo, a language-specific package manager allows me to specify different versions of different dependencies in my various projects that I develop on the same machine. The competent ones support reproducible builds by locking dependencies to the exact release I used when I initially added the dependency (until I explicitly update it). apt and yum are completely hostile to reproducible builds.
- exDM69 9y agoNope, they solve different problems. The OS package manager (apt, etc) is there to provide you the OS install with a set of applications and a set of libraries to support those applications. Your development, on the other hand, will depend on a different set of dependency libraries (and this must be reproducible!). This may include stuff like having several different versions of a library (for different projects or different branches or build configs of the same project). This set of libraries will sometimes conflict with what you need for the apps the OS provides. Because you never want to break your day-to-day applications supported by the OS package manager, you'll need a different way of installing your depepdency libs. This is what language package managers do. Right now for C and C++ the alternatives are 1) bundling it with your source 2) use version control (e.g. git submodules) 3) make install --prefix=$HOME/foo and configure build for that 4) single header file libraries. None of these work particularly well compared to a proper development package manager like Cargo.
- Shorel 9y agoIn practice, there are libraries and also dev-libraries which actually add headers and link-objects to use these same libraries. IMO you use submodules only for libraries not already included in your package manager.
- exDM69 9y ago> In practice, there are libraries and also dev-libraries which actually add headers and link-objects to use these same libraries. When developing software, you need both installed. Not every distro has -dev packages to install headers. > IMO you use submodules only for libraries not already included in your package manager. This approach is full of problems, most importantly that this isn't reliably reproducible (without using docker images or something for a reproducible environment). Your package manager may have different libs or different versions of libs than another developer's package manager. But the bigger issue is version requirements mismatches. Say your web browser (or other must-have app) requires libwidget-1.0, but you're writing an app that needs libwidget-2.0 or libwidget-0.8 or both (e.g. your latest supported release was 0.8 and next release is 2.0). You can't install 2.0 or 0.8 because it would break an app you need for daily work. Using your distro package manager for development is a partial solution at best.