Bpkg: package manager for bash
bpkg.io
bpkg.io
[1] https://en.wikipedia.org/wiki/List_of_software_package_manag...
Obligatory xkcd: xkcd.com/927
Furthermore, as (e.g.) a node developer looking to share a package with the community, I'd much maintain one package in npm than one for each of Debian, Arch, Redhat, OSX, etc.
Multiple OS package managers (choose one), and for each language/framework/... that you use, one extra. Which includes headaches for how to handle overlaps between the two. One ought to take into consideration how others are handling these issues, just to ensure you're not alone.
I do not have concrete answers, but I firmly believe that it is possible to reduce the mental and practical efforts required for package and dependency management by somehow abstracting and disciplining the current solutions.
In this context, Guile and NIX are often named. Their stated goals, however, are generally about reproducibility of builds. Could anyone point me to discussions/documentation that specifically addresses the wildfire of dependency- and package management?
Either way, it doesn't seem very compelling.
Besides installing shell scripts globally you can use them on a per-project basis.But If I want to make an $OS package for my $LANGUAGE module, I have to use a tool unrelated to my language and package that I probably don't know and target only $OS (or do that step for every one of them). Not to mention that the specific ones that we have, say RPM and DEB, have always been a right pain for me to generate personally. Market share == $LANGUAGE's market share / $OS's market share.
I don't like the state of affairs, but I do understand why people end up distributing with their language's package manager instead. It's way simpler and already baked into their process and assuming that they wrote the code in the first place to scratch their own itch and they already know how to use their language's package manager, it solves that problem for them nicely.
I think one solution is for language-specific package managers to target creating OS packages on some common platforms (`setup.py make-deb`, `cargo deb`, etc). These modules are probably so similar that it's much easier than the package case.
If however such software is used for generating money, then suddenly, the exact same criteria as within enterprise applies, because as soon as the flow of money is jeopardized, that's production.
As a user, I keep my dotfiles in git. Having something like bpkg could help my dotfiles "just-work" across more platforms, so maybe it's a good thing?
I'm not particularly compelled either, just pointing out how it might be useful.
it amazes me that people still put them onto their sites. even vetting the code is futile if you pipe it afterwards[0].
[0] https://www.idontplaydarts.com/2016/04/detecting-curl-pipe-b...
The only mistake I see in this case is doing this over plain HTTP. Let's Encrypt is free and there is no excuse for not enforcing HTTPS for this.
Package managers have decades of work put into them. Not just the installation and verification aspects, but all of the maintainence bureaucracy required so that there is accountability and verification. As much as developers might like to think that we know more about our users than anyone else, we don't. And there's essentially no verification or reason to believe that an upstream curl|sh will work on a given distribution. People who package software are usually part of the distro community they're packaging for, and are much better at knowing how software should be packaged for that community.
However, not sure about the the implied conclusions (or my perceptions of them). I believe, the correct answer is that adding untrusted repositories is also dangerous and should be done with caution.
And, yes, when I add external repos, I consider a quick background check on who runs it, how popular (=trusted by others) it is, and depending on my conclusions about the trustworthiness, do audit the package contents or perform a test run in a VM. Others' mileage may vary.
Not only does this mean that you could end up with a compromised system, but it also means that there's no artefact of what caused it left on disk.
I agree with your point that running third party software is always a risk, the problem here being that you can think you've done your due diligence by reading the curl output first and then doing curl|bash, but in actuality this is not necessarily the case which is what makes curl|bash such an insidious bad habit.
https://www.idontplaydarts.com/2016/04/detecting-curl-pipe-b...
Network: ... rm -fr / <HUP>
Bye bye everything!
Why?
It's way more secure than any binary blob -- and people download and install billions of these every day... (And even a hash means nothing -- a hacker could easily change both the blob and the hash).
At least with "bash installations" you can check the code yourself before running it...
The thing is at least about two years old (first posted here 650 days ago) and has no doc and merely about a dozen packages listed. There seems to be nothing to show here.
Bite the bullet and create native OS packages.