Table of Contents
Open Table of Contents
Explaining myself
The biggest friction I have nowadays when setting up new machines is not the configs but the binaries. Don’t get me wrong, I love pre-built binaries. Downloading your favourite gnu-rust-rewrite
is pretty awesome the first time but how the hell do you keep them updated?
I am aware this is strictly a non-bleeding edge linux problem as distros like Arch have AUR that you can comfortably YOLO your binaries/build straight from source. But what about us Ubuntu boys?
The problem with apt
Everything is outdated. I wouldn’t trust apt
with my life. I don’t even trust it enough to upgrade from 22.04
to 24.04
. I remember being a wee lad half a decade ago and trying to go from 18.04
to 20.04
. I lost everything.
It was definitely skill issues, it was also the over pollution of adding PPAs from random StackOverflow articles to get some random python program or dependency working or whatever I was trying to do with setting up fingerprint with my ThinkPad. Point is, it might werk but not for me. Holding onto old wounds is maybe a bit neurotic but I am getting too old for #TechGoneWrong moments.
I honestly wish we had things like scoop
but for Linux. scoop
is excellent. It does what you do when you grab those cute binaries from the release page but with discoverability through fuzzy search and simple install.
Manually😭
This is how I’ve been doing things, I’ve even written a script to use gh
to check latest CLI - to fzf
- to guessing the target triple and try to load. Mileage massively vary since for some reason I decided to use fzf
and xhs
as well as fish
. So before I can even start getting binaries easily I need to get essential binaries before my other binaries.
I would occasionally run into issues where typical workflow on one machine doesn’t work for others (e.g. yazi
not zoxide
-ing when fzf
version too old) then have to track how I’ve installed them .deb
vs .appimage
and eventually hitting the correct update path. This is a massive PITA if you couldn’t tell. Everytime, which bin
this apt list --installed | fzf
that. I feel like an old man yelling at the terminal. I would love to cut corners here but I don’t feel like letting getting rocked by the latest grok who roamed free in my home directory.
github/cli github/yazi github/zoxide github/fzf
Using eget
Life has become slightly easier, although still not perfect. Some repos don’t ship .appimage
but .deb
so you still have to go to your local bin folder and run the typical install command properly.
The problem is also that you have to remember not just the binary name but the author or the forked author of the new tool. I’ve dumped this into my dotfiles repo after doing a ranked history binary count then feed to LLM. I’m not sure that saved much time - I ended up having to check most of the repos anyway.
sharkdp/fd
cli/cli
ducaale/xh
BurntSushi/ripgrep
sharkdp/bat
zellij-org/zellij
casey/just
rclone/rclone
sharkdp/hyperfine
tldr-pages/tldr
twpayne/chezmoi
eza-community/eza
dandavison/delta
Aloxaf/silicon
charmbracelet/glow
junegunn/fzf
sigoden/aichat
jesseduffield/lazygit
ajeetdsouza/zoxide
sxyazi/yazi
sarub0b0/kubetui
rgwood/systemctl-tui
chmln/sd
mikefarah/yq
jqlang/jq
starship/starship
Schniz/fnm
neovim/neovim --tag=nightly
And don’t forget your eget.toml
[global]
target = "~/.local/bin"
upgrade_only = true
Final complaint I have is when you have an unobvious target triple in the release binary you have to sit there and resolve each conflict, this means selecting gnu-musl
over and over again. But it’s better than visiting N release pages and dumping stuff into your /tmp/
- at least not manually.
Now what?
Right, so now my Linux machine setups have become as simple as this many steps
wget url-to-eget-binary
mkdir -p ~/.local/bin
mv eget ~/.local/bin/
fish_add_path ~/.local/bin
cat ~/.config/binaries.txt | xargs -I{} -- eget {}
Beautiful job. I can’t wait to (not) enjoy setting up more machines.
Links
github/scoop - https://github.com/ScoopInstaller/Scoop
github/cli - https://github.com/cli/cli
github/yazi - https://github.com/sxyazi/yazi
github/zoxide - https://github.com/ajeetdsouza/zoxide
github/fzf - https://github.com/junegunn/fzf
github/eget - https://github.com/zyedidia/eget