Ask HN: What's the best CLI installation experience you've ever seen?
Imagine any application, server, or system that requires installation from a command line.
It could use shell scripts, custom programs, or whatever. What's the best experience and tooling you've ever seen?
55 comments
[ 3.0 ms ] story [ 77.9 ms ] threadI like Homebrew but good alternatives can’t hurt!
Because there isn't a stable system interface table in Linux (i.e. INT 21, AH=9 prints a $ delimited string in MS-DOS, and has since the 1980s), you can't just run an executable.
The closest you're likely to get is Justine's APE - Actually Portable Executable[1] to get something you can distribute and just run.
[1] https://justine.lol/ape.html
Web is filled with scams, malware, phishing or just insecure web pages.Even when a source code of a program is public and download page is genuine, how could I ever trust the binary? I can't, but I can verify the source code (or take a risk that someone already examined it) and trust transparent CI chain.
So even if it comes from the respected developer I won't run a notavirus.exe, unless it was compiled automatically in a public docker container.
P.S. Another option for more portable linux executables is musl C library + appimage.
[1] https://appimage.org
Yes you can! You can run unmodified Win32 executables from the late 90s on present-day Windows systems and they work just fine. Windows has a great reputation for continuity.
There is a stable system interface, it's user32.dll and friends. You might experience a bit more pain relating to the Visual Studio runtime (vcredist) or use of COM components, but those are work-aroundable.
APE is something rather different: it's portable across different operating systems with different executable formats! Quite the technological achievement.
What do you mean by this? Linux is pretty good about maintaining a stable syscall ABI. Whereas my understanding is that Windows and BSDs define the compatibility boundary at the C library level.
it just works. this is the utopian world i am living in.
ignorance is bliss. it really is.
Outside of that, NetBSD. Download "install kernel", write to media, boot, compile an entire system.
FreeBSD is also good.
Pet peeve: I see lots of tiny system projects that look very cool but only boot from qemu.
Another one would be Nala, I used this as my day-to-day apt frontend before I switched to Fedora. It makes the UX much more better than apt for daily usage.
My favorite: Single binary Hashicorp Nomad, the same binary for client and server! Runs without sudo, straight out of /tmp.
No installation, but everyone runs the same single binary straight from the shared local area network drive. :)
Naysayers: don't worry, bandwidth isn't an issue, it's a high-speed LAN, and the wire won't catch fire, even if it is FireWire.
https://en.m.wikipedia.org/wiki/IEEE_1394
JNLP
https://docs.oracle.com/javase/tutorial/deployment/deploymen...
JNLP still sends shivers down my back.
It is still in use to this day. Hugh.. It sucked when it was new and still does just as bad.
Joking, about the LAN suggestion (although the method does work, it was there from Novell Netware days), but not trolling about the JNLP suggestion. I genuinely thought it would work.
I stopped using Java probably a bit before JNLP came out, so never checked it out.
What sucked about JNLP? I can google, but what was your experience with it?
Not GP, but:
Oh, JRE too old? Link to download the latest? Now it accepts the JRE, but the JRE refuses it with security errors. So you turn those checks off and the jnlp runs but crashes with an obscure error. So you try another JRE until you find a version that works.
While doing this, you interact with Oracle, at all times with the fear of their lawyers, until you decide to use a foss runtime. Now you are managing runtimes from different vendors with different configs and locations.
Write once, troubleshoot everywhere.
Heh, yeah :) But they call him a moderator around here.
>I don’t understand the downvotes?
Neither does anyone else, usually, except the downvoters and their tribe :) But they think everyone else should think like them, so they downvote those who do not.
Actually, I do understand, or think I do. People are being lazy, by downvoting as a quick fly-by reflex action, instead of spending even a little time thoughtfully commenting - at least, many of them seem to be doing that.
https://news.ycombinator.com/item?id=37319515
Mature operating systems that have supply chain risks in their threat model like Debian, Arch, or FreeBSD, each author or maintainer signs every contribution which are verified end to end. Even a compromised Github or cloud provider employee can easily disrupt supply chains structured this way.
In recent distributions like Nix and Alpine, contributors complained that generating a PGP key is too hard, so they just decided to yolo it as though NPM security was something to aspire to.
Even proprietary operating systems like MacOS require code signing. Not mandating this is crazy.
IMO anyone unwilling to learn how to maintain a personal identity key of some kind has no business maintaining packages for widely used operating system.
sudo make install
also it's really great when `sudo make uninstall` works
also npm packages that can be executed with npx