Homebrew alternative?

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.

1 Like

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. :slight_smile:


  1. How to set the locales in a toolbox? - #6 by bkhl - Fedora Discussion ↩︎

2 Likes

Oh, now I see that the Fedora packages are far more recent than the dated Ubuntu debs

2 Likes

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.

1 Like

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.

1 Like