Manage packages on Fedora Silverblue using toolbox, rpm-ostree and Flatpak

I recently switched from Fedora Workstation to Fedora Silverblue. I can say that this transformation is worth all the time and energy. Fedora Silverblue is an immutable desktop operating system derived from Fedora Workstation. It has the look and feel of a regular desktop operating system, but has extremely high stability and reliability.

$ neofetch
          /:-------------:          [email protected] 
       :-------------------::        ----------------------------- 
     :-----------/shhOHbmp---:      OS: Fedora 31.20191219.0 (Workstation Edition) x86_64 
   /-----------omMMMNNNMMD  ---:     Host: 20LTS1RE0Y ThinkPad L480 
  :-----------sMMMMNMNMP.    ---:    Kernel: 5.3.16-300.fc31.x86_64 
 :-----------:MMMdP-------    ---   Uptime: 2 hours, 5 mins 
,------------:MMMd--------    ---:   Packages: 1629 (rpm), 7 (flatpak) 
:------------:MMMd-------    .---:   Shell: zsh 5.7.1 
:----    oNMMMMMMMMMNho     .----:   Resolution: 1368x771 
:--     .+shhhMMMmhhy++   .------/   WM: sway 
:-    -------:MMMd--------------:    Theme: Adwaita [GTK2/3] 
:-   --------/MMMd-------------;     Icons: Adwaita [GTK2/3] 
:-    ------/hMMMy------------:      Terminal: termite 
:-- :dMNdhhdNMMNo------------;       Terminal Font: Monospace 9 
:---:sdNMMMMNds:------------:        CPU: Intel i5-8350U (8) @ 3.600GHz 
:------:://:-------------::          GPU: Intel UHD Graphics 620 
:---------------------://            Memory: 3920MiB / 15529MiB 

                                                             
                                                             

Fedora Silverblue aims to provide an excellent platform for developers, super system administrators and users engaged in container-centric workflows-working with Toolbox, Podman, buildah, cri-o and Kubernetes. Silverblue is immutable, which means that the operating system on the disk is exactly the same from one machine to another and never changes the state of use.

Software Management in Fedora Silverblue

Compared to other package-based Linux distributions, Fedora Silverblue gives users different options to manage software applications.

These options are:

  • Using the toolbox: Mainly used to install CLI applications and development and debugging tools.
  • Using Flatpak: For GUI applications, the main installation method is via Flathub app Store.
  • Packaging layering: The rpm-ostree tool is a hybrid image / package system with atomic upgrade and package layering capabilities.

1. Manage packages on Fedora Silverblue using the toolbox

Silverblue comes with a toolbox utility that uses a container to provide an environment where development tools and libraries can be installed and used. This utility allows you to run multiple containers (no GUI) of Fedora Server and install packages to be used for development purposes.

The toolbox provides a familiar package-based environment where tools and libraries can be installed using the standard Fedora package manager – dnf.

Advantages of using the toolbox

  • Keep the host operating system clean and stable – You do not have to install hundreds of software packages on the host system that are not always used.
  • Isolate software dependencies: Containers are a great way to isolate and organize the dependencies required by different projects.
  • Best Experimental Place – If you are using new software or unstable package distributions, the toolbox is the right choice. Once complete, you can always clean up your environment without damaging the host system.
  • Make you happy – You will always laugh and know that the host system will not crash because of the wrong software package installed.

The toolbox uses the following technologies:

Installation toolbox

Fedora Silverblue comes with a toolbox utility pre-installed. If the command line tools are not available for any reason, use the following command to install them:

$ rpm-ostree install toolbox

Because the packages are layered, a restart is required to boot to the image using the toolbox. You can also install the toolbox in Fedora Workstation by running the following command:

sudo dnf install toolbox

Using the toolbox on Fedora Silverblue

  • After installing the toolbox, you can create a new container using the following command:
$ toolbox create

You can provide a name for the container you want to create and a specific Fedora version.

$ toolbox create --container myfed --release f31
Created container: myfed
Enter with: toolbox enter --container myfed

This will create a container called myfed from the Fedora 31 base image. For Fedora 30, use f30.

  • To list existing toolbox containers and images, use the following command:
$ toolbox list
IMAGE ID      IMAGE NAME                                        CREATED
a198bc8c3cda  registry.fedoraproject.org/f31/fedora-toolbox:31  2 months ago

CONTAINER ID  CONTAINER NAME     CREATED         STATUS            IMAGE NAME
70ca4cdc725d  fedora-toolbox-31  5 weeks ago     Up 6 seconds ago  registry.fedoraproject.org/f31/fedora-toolbox:31
8bad25c92c74  myfed              16 seconds ago  Created           registry.fedoraproject.org/f31/fedora-toolbox:31
  • To enter a toolbox container for interactive use:
$ toolbox enter -c myfed
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.


Welcome to the Toolbox; a container where you can install and run
all your tools.

 - Use DNF in the usual manner to install command line tools.
 - To create a new tools container, run 'toolbox create'.

For more information, see the documentation.

⬢[[email protected] ~]$ 

On the terminal, you can use dnf to manage packages, just like in a Fedora Workstation computer.

sudo dnf -y install vim bash-completion curl wget 
  • To delete a toolbox container, use:
---  Remove all toolbox containers ---
$ toolbox rm -a

--- Remove a toolbox container named myfed ---
$ toolbox rm myfed

--- Force removal of running toolbox container ---
$ toolbox rm -f myfed
  • To delete all existing podman toolbox containers, images and configurations:
$ toolbox reset

2. Use Flatpak to manage packages on Fedora Silverblue

Flatpak is the main way you can install applications on Silverblue. The main source of the Flatpak application is Flathub – A large repository of Flatpak applications that can be installed.

Using Flatpak

Simply open Flathub on Fedora Silverblue Fedora’s Flathub Settings Page then click “Flathub repository file“Button to download the Flathub configuration.

End users can also add the Flathub repository manually by running the following command:

flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

Using Flatpak on Fedora

  • To list the remote servers you have configured on your system, run:
$ flatpak remotes
Name    Options
fedora  system,oci
flathub system
  • To search for “applications” in the repository, use search for command. E.g:
$ flatpak search chromium
Name                 Description                                                Application ID                    Version       Branch      Remotes
Chromium B.S.U.      Fast paced, arcade-style, top-scrolling space shooter      net.sourceforge.chromium-bsu      0.9.16.1      stable      flathub

$ flatpak search skype
Name           Description                                                  Application ID                Version           Branch        Remotes
Skype          Call and message skype users, with video chat support        com.skype.Client              8.55.0.141        stable        flathub
Franz          Messenger for the desktop                                    com.meetfranz.Franz           5.4.1             stable        flathub
Discord        Chat client                                                  com.discordapp.Discord        0.0.9             stable        flathub

Each search result includes Application ID with Remotely Where the application is located.

  • To install the application, run:
$ flatpak install flathub 
Example:
$ flatpak install com.skype.Client -y
......
 1. [✓] org.freedesktop.Platform                        x86_64            19.08             flathub            178.2 MB / 238.0 MB
 2. [✓] org.freedesktop.Platform.GL.default             x86_64            19.08             flathub             90.9 MB / 90.9 MB
 3. [✓] org.freedesktop.Platform.Locale                 x86_64            19.08             flathub             16.7 kB / 318.2 MB
 4. [✓] org.freedesktop.Platform.VAAPI.Intel            x86_64            19.08             flathub              8.7 MB / 8.7 MB
 5. [✓] org.freedesktop.Platform.openh264               x86_64            19.08             flathub            594.2 kB / 593.4 kB
 6. [—] com.skype.Client                                x86_64            stable            flathub             80.9 MB / 80.8 MB

Installing 6/6… ████████████████████ 100%  2.6 MB/s  00:00
  • To list installed applications, run:
$ flatpak list --app

Name                                    Application ID                       Version            Branch         Origin          Installation
Skype                                   com.skype.Client                     8.55.0.141         stable         flathub         system
Chromium B.S.U.                         net.sourceforge.chromium-bsu         0.9.16.1           stable         flathub         system
GNU Image Manipulation Program          org.gimp.GIMP                        2.10.14            stable         fedora          system
File Roller                             org.gnome.FileRoller                                    stable         fedora          system
  • To run an installed application, use:
$ flatpak run com.skype.Client
  • To update all installed applications and runtimes to the latest version, run:
$ flatpak update
  • To delete the application, run:
$ flatpak uninstall com.skype.Client

For more details please check flatpak CLI Reference page.

3. Use rpm-ostree to manage packages on Fedora Silverblue

Most (but not all) RPM packages provided by Fedora can be installed on Silverblue using this method. This can be done by modifying the Silverblue installation to extend the packages that make up Silverblue.

Package layering creates a new “deployed” or bootable file system root, and the system must be rebooted after the package is layered. This preserves the rollback and transaction models.

  • First, generate the rpm repo metadata:
$ rpm-ostree refresh-md 
  • You can install packages on Silverblue using:
$ rpm-ostree install 

example:

$ rpm-ostree install vim
$ for i in neofetch zsh feh sway; do
  rpm-ostree install $i;
done
  • You can also replace packages with rpm-ostree override command:
$ rpm-ostree override replace 
  • To uninstall the package, run:
$ rpm-ostree uninstall flameshot          
Checking out tree 675ab14... done
Resolving dependencies... done
Checking out packages... done
Running pre scripts... done
Running post scripts... done
Running posttrans scripts... done
Writing rpmdb... done
Writing OSTree commit... done
Staging deployment... done
Freed: 242.4 MB (pkgcache branches: 2)
Removed:
  flameshot-0.6.0-4.fc31.x86_64
  qt5-qtsvg-5.12.5-1.fc31.x86_64
Run "systemctl reboot" to start a reboot

Performing upgrades and rollbacks on Fedora Silverblue

The standard behavior is to download and install updates automatically, but as a user, you can perform system updates manually.

$ rpm-ostree upgrade

Alternatively, you can check for available updates without downloading them, run:

$ rpm-ostree upgrade --check

Performing a rollback

Silverblue keeps a record of previous OS versions and can switch to the latest version.

There are two ways to roll back to a previous version:

  1. Temporary rollback: Simply reboot the system and select a previous version from the boot menu to perform a temporary rollback.
  2. Rollback permanently: To permanently switch back to the previous deployment, use the following command:
$ rpm-ostree rollback

This is the basic way to manage packages on Fedora Silverblue. Other interesting guides are:

How to run Docker containers with Podman and Libpod

Setting up Docker container registry and encrypting SSL with Podman

How to publish a Docker image to Docker Hub using Podman

Upload CentOS 8 Cloud Image to OpenStack Glance

Search tags:

  • Install packages on Fedora Silverblue
  • How to use Flatpak on Fedora
  • How to install packages on Fedora Silverblue using rpm-ostree
  • How to upgrade Fedora Silverblue
  • How to get started with Fedora Silverblue
Sidebar