5 ms·
This is correct. If you have an application (lets say offlineimap, which is one I use), then you have two options: 1.) Install via a package manager (if they
by sseagull 5y ago
This is correct.
If you have an application (lets say offlineimap, which is one I use), then you have two options:
1.) Install via a package manager (if they have it)
2.) Install via pip (or whatever)
But #2 is a step backwards. Imagine having to learn the ecosystem and tools for every programming language just to get common apps running. And then being responsible for updating all the virtual environments, etc.
Package managers are a very useful abstraction for end users who don't always care and just want shit to work. But fragmentation is increasing, and each language is going the blackjack and hookers route (Futurama reference).
I don't see an easy solution, unfortunately.
- drcongo 5y agoThank you, that's an excellent explanation. Being primarily a Python dev I've been looking at it entirely backwards.
- lucky_cloud 5y agoFor something like a command line tool, you can package a dedicated python runtime with external dependencies preinstalled and treat it as a virtualenv. Maybe not the most elegant solution, but it works. iTerm2 does this for its Python scripting API. Another option is to just include the required libraries in your package and have the executable add the paths via sys.addsitedir. Pipenv installed via Homebrew does this.
- CameronNemo 5y agoAs a user, I would have to install fat binaries with questionable security. As a developer, I have to take special care to distribute the application in a way that works for all kinds of setups. I trust distros to do the integration work a lot better. For tools like youtube-dl or quodlibet, distro packages work quite well.
- richardwhiuk 5y agoBundle all of the wheels required for the package into a single package, rather than having a 1-1 mapping between OS packages and Python packages. Then run it all in a Venv.
- tjader 5y agoThen you have multiple versions of every dependency for every application you use. Good luck fixing security bugs in all of those. Also, you have to do that for python apps, for node apps, for go apps, for rust apps, etc. As an user, I just want to run "apt install application" and have it work with dependencies kept up to date by the OS package manager and not have to micromanage the dependencies for all applications I use.
- richardwhiuk 5y agoThe OS can manage releasing updated packages any of the dependencies change.