I like the idea of Silverblue and I would like to give it a try. But it’s all about flatpaks. And flatpaks don’t seem to deal with small, CLI utilities, like exa
or fzf
or zoxide
. For these I want the very latest version. And I want something, like flatpak, that is going to update them all, not make me download the archive, extract the binary, and do all the rest.
Silverblue is all about flatpaks for the desktop experience, but for the command line, look at toolbox — or as we’re now spelling it, to make search more possible, toolbx.
This gives you a command-line environment into which you can install official Fedora packages with DNF:
$ toolbox enter
last: cannot open /var/run/utmp: No such file or directory
toolbox:~$ sudo dnf install exa fzf
Last metadata expiration check: 0:00:41 ago on Sat 04 Dec 2021 10:56:37 AM EST.
Dependencies resolved.
================================================================================
Package Architecture Version Repository Size
================================================================================
Installing:
exa x86_64 0.10.1-2.fc35 fedora 340 k
fzf x86_64 0.28.0-1.fc35 updates 1.1 M
Installing dependencies:
http-parser x86_64 2.9.4-5.fc35 fedora 37 k
libgit2 x86_64 1.1.0-5.fc35 fedora 462 k
libssh2 x86_64 1.10.0-1.fc35 fedora 117 k
Transaction Summary
================================================================================
Install 5 Packages
Total download size: 2.0 M
Installed size: 5.5 M
Is this ok [y/N]: y
Downloading Packages:
[...]
Complete!
toolbox:~$
If you don’t have a toolbox already set up, toolbox enter
will ask if you want to create one. Say yes, and it’ll download and launch the latest container image. You may get errors about “locale” — run sudo dnf -y install glibc-langpack-en
inside the container to fix.[1]
I’m also not sure what the /var/run/utmp
message is there, or if it’s something specific to my system. I’ll investigate.
Oh, now I see that the Fedora packages are far more recent than the dated Ubuntu debs
Referring to the subject of this post it might be worth mentioning that Homebrew is officially supported for Linux (since v2.0.0). Homebrew on Linux — Homebrew Documentation.
I use it for CLI tools that are not in the Fedora repo or on Copr (e.g. diff-so-fancy
, hr
, mdcat
). However I don’t use Silverblue.
Apparently there are issues with Silverblue because Homebrew insists on its precise PATH, and /home/
is not writable with Silverblue.
You can also use toolbx instead of flatpak for graphical applications, using the toolbox just like the traditional Fedora (e.g., install firefox using dnf install firefox
or such). Then, you can update all contained applications within one toolbox. This contains two disadvantages you have to be aware of:
First, all applications that are to be updated at once (as you want it) are within the same container , not isolated from each other (but of course, they remain widely isolated from the host system excluding /home).
Second, as toolbx is originally not intended for that use, it has a special behavior when it comes to graphical applications. This is not necessarily a problem but you have to be aware of it: I described it in a GitHub issue (at the beginning, I assumed that this is a bug).
So if you use toolbx for that, I suggest to ensure that any graphical app that is installed within toolbx, is not installed outside at the same time (the risk I see here is not technical but social: you may use a browser with the assumption that it is securely isolated, e.g. for disabling site-crashing security functions of the browser, but in fact, you run it outside the container).
This is neither a bug nor a flaw or such, but simply the outcome of the fact that toolbx has no separated systemd process. So, its the outcome of the contained application in interaction with dbus and systemd.
Finally, you would replace a compromise by another compromise, not by something better or so.