I use an fzf based script that queries for updates and lets me choose what to install.
If you use xbps, or are just curious:
::: xu #!/bin/env sh
self=“$(basename “$0”)”
error() { printf ‘%s:’ “$self” >&2 # shellcheck disable=SC2068 printf ’ %s’ $@ >&2 printf ‘\n’ >&2 }
fatal() { error “$@” exit 1 }
if [ -x “$(command -v sk)” ]; then finder=sk elif [ -x “$(command -v fzf)” ]; then finder=fzf else echo “neither fzf or sk are installed” >&2 exit 1 fi
tmp=“$(mktemp)” || fatal “couldn’t source bindings” grep ‘^export’ “$DOTFILES/.zshenv” | grep -E ‘FZF|SKIM’ >“$tmp” . “$tmp” rm “$tmp”
shellcheck disable=SC2046
choices=“$(xbps-install -nSu | cut -f1 -d’ ’ | sed ‘s/-[^-]*$//g’ | $finder | tr ‘\n’ ’ ')”
[ -n “$choices” ] || exit
guard=pkexec command -v “$guard” >/dev/null 2>/dev/null || guard=sudo
shellcheck disable=SC2086
while ! $guard xbps-install -Syu $choices; do :; done
:::
On Arch, Discover only updates flatpaks though, smh
I do both. If I know exactly what I want to install, I’ll install it from the terminal because it’s often more direct. If I go “I need an app that does thing, what’s available?”
pacman can list all packages and their description, then you just grep for key words
apt-search and dnf-search both exist. I have used both. I prefer a GUI for that because they’ll provide things like screenshots, no CLI tool does, neither to TUI tools like Aptitude.
I wasn’t sure, the gui is nicer in some ways but defs less direct and given that you said “terminal is more direct” I thought you were using the gui because you hadn’t made some simple helper scripts for searching the database quickly
The GUI app stores are much better than any helper script I could write.
but gui app will also update flatpaks
Cachy has a tray icon running the updates in terminal. It likely can be started from terminal as well and I think it was like octopy?
I’ll keep making Debian users aware that they can do it all in one command since Trixie.
sudo apt --update --autoremove --with-new-pkgs upgradeFirst they changed apt-get to apt. Now this.
I can’t keep up with all the sudden changes.
I also like topgrade for this.
I love you. Thanks for sharing 😌
Ok now that’s pretty good. Can we use this with dist-upgrade/full-upgrade?
Yes, you don’t need
--with-new-pkgsif you usefull-upgradeinstead ofupgrade.Yes, it’s a command from apt-get that apt only passes through:
–auto-remove, --autoremove
If the command is either install or remove, then this option acts like running the autoremove command, removing unused dependency packages. Configuration Item: APT::Get::AutomaticRemove.–with-new-pkgs
Allow installing new packages when used in conjunction with upgrade. This is useful if the update of an installed package requires new dependencies to be installed. Instead of holding the package back upgrade will upgrade the package and install the new dependencies. Note that upgrade with this option will never remove packages, only allow adding new ones. Configuration Item: APT::Get::Upgrade-Allow-New.-U, --update
Run the update command before the specified command. This is supported for commands installing, removing, or upgrading packages such as install, remove, safe-upgrade, full-upgrade. This can be useful to ensure a command always installs the latest versions, or, in combination with the –snapshot option to make sure the snapshot is present when install is being run.Excellent! Feel like I’ve been continuously learning new things about Aptitude for the better part of 20 years lmao

This one hurts.
Never thought about it, but wouldn’t that just fail after the first one it fails to find? I think most install commands return nonzero if nothing is installed
Should probably use or instead of and
Nope, this launches all those commands in parallel. Logical and is
&&.And strict mode (
set -e) is off
I don’t get it. Looks like a script that runs all these things, but I don’t get the one dollar.
The
$1is a positional variable. So if you run./script.sh arg1$1 would be arg1 in that example, $0 would be the ./script.sh. It’s the simplest way to pass an argument to a script.So… huh? What role does this play, since all the lines in the picture have $1? If you run it with arg1, won’t it run them all? And if you left out arg1 and also didn’t add $1 to each line, wouldn’t it also just run all of them?
So the joke is, you’ve got something you want to install, be it a Python module, Java library, steam game, desktop application, whatever. You want it installed, figuring out which package manager has it and remembering the exact command syntax starts getting to be a pain, so just use this script to try installing it from a variety of sources.
You would evoke it by running
./install.sh packageand it will replace all instances of $1 with the string “package” at runtime. The ampersand at the end of each line will run that line as a separate background process rather than in the foreground process, so effectively this will attempt to install “package” or whatever you put in as an argument from a half dozen sources simultaneously in parallel.These include the old and new Python package managers, the old and new Red Hat package managers, debian/Ubuntu’s APT with and without sudo, cloning a git repo and building from source, and the icing on the cake is curling directly into bash.
Don’t curl directly into bash. You’ll catch genital rabies.
Remember that this is an XKCD comic, it’s a joke. The alt-text says “The failures usually don’t hurt anything and if it installs multiple versions it increases the chance one of them is right. (the ‘yes’ command and ‘2>/dev/null’ are recommended additions.)” “Yes” is a bash command that will spam ‘y’ in the terminal, the point of it is to answer yes to any questions an automated system asks, and 2>/dev/null will stop it from displaying errors. These add an even deeper level of Yolo-ing.
Ah alright. Pretty sure I get it now. Thank you for explaining!
If you run it with arg1, won’t it run them all?
Yes, that is the intention. When you’re following some guide online and it requires you use some “software”, you may not know how to install that software.
This install.sh script tries package managers, because one of them will probably work. Others will fail.
For example, installing numpy (python package): pip install succeeds and all the other ones (hopefully) fail.
Installing libcurl4-openssl-dev (curl with openssl library file): apt-get install works and all other ones (hopefully) fails.
Longer and more thorough explanation:
https://www.explainxkcd.com/wiki/index.php/1654:_Universal_Install_Script
nix flake update && nixos-rebuild switch --flake .Or
nh os switchNix has ruined me. I can never go back.
`nh os switch --update’
Non of those.
sudo zypper dupAnother on Tumbleweed?? Hi!
indeed :)
me three!
If that’s the game we’re gonna play:
yay
YaST?
I’m old enough to
yum
RIP in peace yellow dog linux
Yum was used on way more than Yellow Dog Linux. CentOS, Fedora, RHEL, etc all did
I was annoyed when i discovered cachyos used paru.
I understand defaulting to prompting a code review is a good idea, especially now, but i was very used to typing yay (yes I installed yay instead of making an alias)
paru is based, Rust >> Go lol
Write that down

TIL what dnf is finally.
Did not finish. Used a lot in racing after an accident…oh wait…
The fingers tho
paruYay!
Yes. At the beginning I preferred distro’s specifically with a graphical software manager. Now i force uninstall it and use terminal for anything.
My first Ubuntu (8), the software manager was so buggy, that I rage quit and learned about the terminal
I miss Synaptic
Synaptic is still on Debian lxqt for me. Synaptic is also installed on trisquel 12, which is what I am using also.
There is nothing wrong with using your distro’s app center. Often it will save you extra steps by updating things like Flatpaks as well, if you use them (or Snaps, if you’re an insane person).
I also like graphical frontends because there I can see screenshots of the software, because there’s a lot of software out there with really bad UI and UX.
Flatpaks and snaps are two examples of deliverables with terribad integration and low SLSA scores. They should be considered toxic.
Snaps I agree just because there is no open source snap store and it’s impossible to set up a 3rd party store.
Flatpaks though? They let people install packages with weird / rare / not available requirements on any distro. All open source with a really nice sandbox. I think flatpaks are great.
Let’s look at the alternatives:
- System packages: not viable for the majority of packages because the distro devs don’t have time to manually package everything
- AppImage: even worse integration (like no desktop shortcuts on install). Developer has to guess what libraries need to be included and which ones are already installed by the user. No sandboxing. Probably worse SLSA scores.
- AUR: even worse security. No sandboxing. Packages are often compromised by hackers.
Immutable Linux users didn’t like that
Unless you use openSUSE Tumbleweed, right? Then it’s “sudo zypper dup”, from what I’ve heard.
OpenSUSE used to use yum and then briefly dnf. Zypper is fairly recent in the last several years.
















