-->

How do I install and manage terminal packages using Distrobox and Flatpak on Bazzite.

Bazaar App Store - Bazzite Documentation

On Bazzite (and other Fedora Atomic / Universal Blue distributions), the root file system is read-only and immutable. To install software without modifying the core system image, requiring reboots, or running the risk of breaking system updates, Bazzite relies on three primary user-space package management layers:

  1. Flatpak (for graphical desktop applications and some CLI tools)

  2. Distrobox (for terminal utilities, development environments, and traditional Linux package managers)

  3. Homebrew (for quick, native terminal utilities directly on the host)

1. Managing Software via Flatpak

Flatpak is the default method for installing desktop applications, games, and sandboxed utilities on Bazzite.

Common Flatpak Commands
  • Search for an application:

    Bash

    flatpak search <app-name>
    # Example:
    flatpak search heroicsun
    
  • Install an app from Flathub:

    Bash

    flatpak install flathub <app-id>
    # Example:
    flatpak install flathub com.heroicgameslauncher.hgl
    
  • List installed Flatpaks:

    Bash

    flatpak list --app
    
  • Update all installed Flatpaks:

    Bash

    flatpak update
    
  • Remove an application:

    Bash

    flatpak uninstall <app-id>
    
  • Manage application permissions (Flatseal): For managing file permissions or hardware access for Flatpaks, Bazzite includes Flatseal:

    Bash

    flatpak install flathub com.github.tchx84.Flatseal
    

2. Managing Terminal Packages & CLI Tools via Distrobox

Distrobox uses Podman under the hood to create lightweight Linux containers (Ubuntu, Arch, Fedora, Alpine, Debian) that integrate directly with your home directory, shell, GPU, and display server.

Inside a Distrobox container, you can use traditional package managers like apt, pacman, or dnf to install any terminal software.

Step-by-Step Distrobox Workflow
Step 1: Create a Distrobox Container

You can create a container based on any Linux distribution. Bazzite includes a default container, but you can create custom ones:

Bash

# Create an Arch Linux container named "arch-box"
distrobox create --name arch-box --image archlinux:latest

# Create an Ubuntu container named "ubuntu-box"
distrobox create --name ubuntu-box --image ubuntu:latest
Step 2: Enter the Container

Bash

distrobox enter arch-box

(On your first launch, Distrobox will take a minute to initialize the container environment).

Step 3: Install Packages inside the Container

Once inside the container prompt (user@arch-box), use the native package manager for that Linux distribution:

Bash

# Inside Arch-box:
sudo pacman -Syu
sudo pacman -S neofetch ripgrep git fzf

# Or inside an Ubuntu container:
sudo apt update && sudo apt install build-essential curl
Step 4: Export Binaries or Apps to the Bazzite Host

To run a command installed inside Distrobox directly from your host Bazzite terminal (or launch a GUI app from the desktop menu), export it:

  • Export a terminal binary to your host path:

    Bash

    # Run this INSIDE the container:
    distrobox-export --bin /usr/bin/htop --export-path ~/.local/bin
    

    Now you can type htop directly in your host Bazzite terminal!

  • Export a graphical app to your host application menu:

    Bash

    # Run this INSIDE the container:
    distrobox-export --app gimp
    
Step 5: Managing and Upgrading Containers

From your host Bazzite terminal:

  • List all active containers:

    Bash

    distrobox list
    
  • Upgrade all packages inside all containers at once:

    Bash

    distrobox upgrade --all
    
  • Delete a container:

    Bash

    distrobox rm arch-box
    

3. Alternative: Fast Terminal Packages via Homebrew

Bazzite includes Homebrew (brew) pre-configured for host-level CLI utilities. If you just want quick terminal tools without creating a full Distrobox container:

Bash

# Search for a package:
brew search <tool>

# Install a CLI tool:
brew install fastfetch btop tldr bat

# Upgrade installed packages:
brew update && brew upgrade

Homebrew installs packages into your user home directory (~/.linuxbrew), keeping the host OS completely clean.

Cheat Sheet: Which Tool Should You Use?

┌─────────────────────────────────────────────────────────────┐
│                    WHAT ARE YOU INSTALLING?                 │
└──────────────────────────────┬──────────────────────────────┘
                               │
       ┌───────────────────────┼───────────────────────┐
       ▼                       ▼                       ▼
[ Graphical Application ]   [ CLI / Dev Tool ]   [ Complex Subsystem / Arch AUR ]
       │                       │                       │
       ▼                       ▼                       ▼
    FLATPAK                 HOMEBREW               DISTROBOX
(e.g. Discord, Lutris,   (e.g. fastfetch, bat,    (e.g. custom python envs,
    VLC, Heroic)             yt-dlp, btop)        GCC/Clang, specialized build tools)

Avoid rpm-ostree install for general apps: While Bazzite allows layering RPMs directly onto the base OS using rpm-ostree install <package>, this requires a system reboot and slows down future system updates. Reserve rpm-ostree only for low-level system drivers or virtualization tools (like KVM/QEMU kernel modules).

Share on Google Plus

About Giampaolo Rossi.

Fond of computer and video games. Stay informed of the latest news on games for Linux and Android. The future of gaming is in Linux. All you need to know about How to play Windows games on Linux.
    Blogger Comment
    Facebook Comment

0 commenti:

Post a Comment

Random Posts