4 ms·
Do any system package managers support per-user installations, or are they designed mainly to install to system directories? Pip for example has the option to i
by curt15 11y ago
Do any system package managers support per-user installations, or are they designed mainly to install to system directories? Pip for example has the option to install packages into the user's home directory, which allows for easy cleanup. If developers want to experiment with a library for a project, they might not want everything chucked into /usr/ and made part of the system.
- saulrh 11y agoThis is actually why I immediately discard use of the system package manager. One library version set per OS installation means that I can't run two things on the same machine unless I get really lucky with dependency versioning. Now the only way to get things done is to spin up one virtual machine per project, and completely setting up a new development environment per project is a huge pain in the ass that can only be optimized so far. nix/guix is a sort of reasonable answer to this issue, I guess, but then you have to develop on nix/guix and hope that apt/rpm/pacman can handle your dependencies.
- mordocai 11y agoAt least for guix, you can install it on top of any distribution and use it instead of the system package managers. I had some troubles with this when I did it, but nothing deal breaking and it isn't 1.0 yet so I imagine some of it will be cleaned up.
- gkya 11y agoFreeBSD ports and pkg allow you to set the installation base, with $LOCALBASE and $PREFIX (I guess other BSDs do too). Also AFAIK Guix. And BSD systems use /etc and /bin and /usr/bin for OS stuff, and /usr/local for packages. Even the config files go to /usr/local/bin/etc (NetBSD same, but in /usr/pkg).
- davexunit 11y agoGNU Guix[0] supports unprivileged package management, among other features [1]. Each user may maintain one or more "profiles" containing whichever packages they'd like. On top of that, they have access to a universal virtualenv-like tool called "guix environment"[2] that can create arbitrary software environments for development or even just to do one-off experiments. It can even create containers for maximal development environment purity. [0] https://gnu.org/s/guix https://gnu.org/s/guix [1] http://www.gnu.org/software/guix/manual/html_node/Features.html#Features http://www.gnu.org/software/guix/manual/html_node/Features.h... [2] http://www.gnu.org/software/guix/manual/html_node/Invoking-guix-environment.html#Invoking-guix-environment http://www.gnu.org/software/guix/manual/html_node/Invoking-g...
- regularfry 11y agoGenerally the purpose of a system package manager is to install packages for the system. I think the GP's assumption was that the context is "how do I set up a system whose primary purpose is deployment of X", not "how do I write X on a system whose primary purpose is development". Then again, I've had good mileage out of making .debs that plonk dev work and deps into /opt locally. YMMV.