Software Installation

Chapter 10 — Installing Software

One of the most common questions from new Linux users is: "how do I install software?" The answer is quite different from Windows or macOS — and in many ways considerably easier. Linux doesn't involve hunting for installers on random websites, running unsigned .exe files, or clicking through wizard screens. Software comes from repositories — curated, verified collections maintained by your distro — and a package manager handles downloading, installing, and updating everything.

The Linux approach to software. Think of the package manager as an app store that covers your entire system — not just apps, but system tools, fonts, libraries, drivers, and everything else. It tracks what's installed, resolves dependencies automatically, and can update everything with a single command. Most software you'll ever need is in the repositories.

1. The Graphical Software Centre

Every major desktop distro ships a graphical app store. You can browse, search, install, and remove software entirely by clicking — no terminal required.

Ubuntu — GNOME Software

Open Ubuntu Software (the shopping bag icon) from the applications menu. Search for an application by name, click it, and click Install. You'll be asked for your password once. The application appears in your applications menu when done.

Snap packages in Ubuntu Software. Ubuntu's Software Centre installs many applications as Snaps by default — even when a traditional .deb package is available. Snaps are larger and slower to start than native packages. If startup speed matters, use the terminal with apt install to get the native package instead.

Linux Mint — Software Manager

Mint's Software Manager is widely regarded as the best graphical package manager on Linux. Open it from the taskbar or application menu. It shows user ratings, screenshots, and clear descriptions. Searches are fast and results come from Mint's repositories (traditional .deb packages, not Snaps). Click Install and enter your password.

Fedora — GNOME Software

Fedora uses GNOME Software, which draws from Fedora's RPM repositories and Flathub (the main Flatpak repository). Flatpak is Fedora's preferred format for third-party applications. Install the same way — search and click Install.

KDE Discover

KDE-based distros (Kubuntu, KDE Neon, openSUSE with KDE) use Discover, KDE's software centre. It supports both native packages and Flatpaks and has a similar browse-and-click interface.

2. apt — The Debian/Ubuntu Package Manager

apt (Advanced Package Tool) is the package manager for all Debian-based distros — Ubuntu, Linux Mint, Pop!_OS, Zorin OS, and many others. It's the command you'll see in most online guides for Ubuntu-based systems. You need sudo for any command that modifies the system.

The essential apt commands

# Update the package list (always do this before installing) $ sudo apt update # Install a package $ sudo apt install vlc # Install multiple packages at once $ sudo apt install vlc gimp inkscape # Search for a package by name or description $ apt search "video player" # Show details about a package before installing $ apt show vlc # Remove a package (keeps config files) $ sudo apt remove vlc # Remove a package AND its config files $ sudo apt purge vlc # Remove packages that were auto-installed and are no longer needed $ sudo apt autoremove # Update all installed packages $ sudo apt upgrade # Update package list AND upgrade everything in one command $ sudo apt update && sudo apt upgrade -y

apt quick reference

CommandWhat it does
sudo apt updateRefresh the list of available packages from repositories. Run before installing.
sudo apt install <pkg>Download and install a package and all its dependencies.
sudo apt remove <pkg>Uninstall a package, keeping configuration files.
sudo apt purge <pkg>Uninstall a package and delete its configuration files.
sudo apt upgradeInstall available updates for all installed packages.
sudo apt autoremoveRemove orphaned packages no longer needed as dependencies.
apt search <term>Search package names and descriptions.
apt show <pkg>Display package details: description, size, dependencies, version.
dpkg -l | grep <name>List installed packages matching a name.
Always run sudo apt update before sudo apt install. Without it, apt uses a cached package list that may be days or weeks old, and will either install an old version or fail to find the package entirely. It takes only a few seconds.

What are repositories and PPAs?

A repository (repo) is a server hosting a curated collection of packages. Your distro's official repositories contain thousands of tested, safe packages. Sometimes a package isn't in the official repos — perhaps it's too new, too niche, or proprietary. In those cases you can add a PPA (Personal Package Archive) — a third-party repository maintained by a developer or team.

# Example: add a PPA (third-party repository) $ sudo add-apt-repository ppa:libreoffice/ppa $ sudo apt update $ sudo apt install libreoffice
Be careful with PPAs. Official repositories are maintained by your distro team and security-audited. PPAs are maintained by individuals — the quality and safety varies. Only add PPAs from sources you trust (official project pages, well-known developers). Avoid random PPAs found in forum posts.

3. dnf / yum — The Fedora/Red Hat Package Manager

dnf (Dandified YUM) is the package manager for Fedora, Red Hat Enterprise Linux, AlmaLinux, Rocky Linux, and CentOS. It replaced the older yum command — on modern systems yum is either an alias for dnf or not present. The concepts are identical to apt; only the syntax differs slightly.

# Install a package (also updates the package list automatically) $ sudo dnf install vlc # Search for a package $ dnf search "video player" # Show package details $ dnf info vlc # Remove a package $ sudo dnf remove vlc # Update all packages $ sudo dnf upgrade # Update package list and upgrade (--refresh forces a metadata refresh) $ sudo dnf upgrade --refresh # Remove unused dependencies $ sudo dnf autoremove # List installed packages $ dnf list installed
dnf vs apt differences: dnf install automatically refreshes the package list before installing — you don't need a separate dnf update step first (though dnf upgrade --refresh forces it). The command for updates is dnf upgrade not dnf update (though both work on modern dnf).

4. Universal Package Formats

Native packages (deb, rpm) are tied to a specific distro family. Three newer formats aim to work on any Linux distro — solving the problem of software that isn't in your distro's repositories.

Flatpak
Recommended universal format
  • Works on any distro
  • Main source: Flathub (flathub.org)
  • Runs in a sandbox — isolated from the system
  • Apps update independently of the OS
  • Slightly larger disk footprint (shared runtimes)
  • Supported by Fedora, Mint, Pop!_OS by default
  • Best for: desktop GUI apps not in repos
Snap
Ubuntu's universal format
  • Developed by Canonical (Ubuntu's maker)
  • Source: Snap Store (snapcraft.io)
  • Also sandboxed and self-contained
  • Slower startup than Flatpak or native packages
  • Larger package sizes
  • Required for some Ubuntu defaults (Firefox)
  • Linux Mint blocks Snaps by default
AppImage
Single-file portable apps
  • One file = one complete application
  • No installation needed — just download and run
  • No package manager or root access required
  • No automatic updates (check manually)
  • Good for trying software without installing
  • Popular with audio/video production tools
  • Best for: occasional-use or portable apps

5. Flatpak in Detail

Flatpak is the recommended universal format for most users. Flathub (flathub.org) is the central repository with thousands of applications — including many that aren't in distro repositories or are more up-to-date there than in official repos.

Setting up Flatpak (Ubuntu)

Flatpak is pre-installed on Fedora and Linux Mint. On Ubuntu it needs a one-time setup:

# Install Flatpak $ sudo apt install flatpak # Add the Flathub repository $ flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo # Restart is recommended after setup

Installing and managing Flatpaks

# Search for an app on Flathub $ flatpak search vlc # Install from Flathub (use the app ID shown in search results) $ flatpak install flathub org.videolan.VLC # Run a Flatpak app $ flatpak run org.videolan.VLC # List installed Flatpak apps $ flatpak list # Update all Flatpak apps $ flatpak update # Remove a Flatpak app $ flatpak uninstall org.videolan.VLC # Remove unused Flatpak runtimes to free disk space $ flatpak uninstall --unused
Flatpaks appear in your app launcher automatically. After installing a Flatpak you don't need to use the terminal to launch it — it appears in the GNOME Activities, Mint application menu, or KDE application launcher just like any native application.

6. Snap in Detail

Snaps are pre-installed on Ubuntu. The snap command manages them from the terminal, and many also appear in the Ubuntu Software Centre.

# Search for a Snap $ snap find vlc # Install a Snap $ sudo snap install vlc # List installed Snaps $ snap list # Update all Snaps (Snaps also auto-update in the background) $ sudo snap refresh # Remove a Snap $ sudo snap remove vlc
Snaps auto-update silently in the background, even while you're using the app. This is convenient but can occasionally cause issues — an update mid-session may close a running application. You can delay this with sudo snap set system refresh.hold="$(date --date='next month' +%Y-%m-%dT%H:%M:%S%:z)" if it becomes a nuisance.

7. AppImage in Detail

AppImages work differently from Flatpak and Snap — there's no package manager involved at all. You download a single .AppImage file, make it executable, and run it.

  • 1
    Download the .AppImage file from the application's website.
  • 2
    Make it executable. Right-click the file in the file manager → Properties → Permissions → tick "Allow executing file as program". Or in the terminal:
    $ chmod +x ~/Downloads/SomeApp-x86_64.AppImage
  • 3
    Run it by double-clicking in the file manager, or in the terminal:
    $ ./SomeApp-x86_64.AppImage

To remove an AppImage, simply delete the file. No uninstaller, no package manager — it leaves nothing behind.

AppImages don't update automatically. You need to check the application's website manually for new versions and download a fresh file. Some AppImages include a built-in update tool (--appimage-update), but many don't. For software you use regularly, Flatpak is more convenient.
FUSE requirement. AppImages use FUSE (Filesystem in Userspace) to mount themselves. On Ubuntu 22.04+ and some other distros, FUSE 2 may not be installed. If an AppImage fails to run with a "FUSE" error: sudo apt install libfuse2.

8. Installing .deb and .rpm Files Directly

Some software (Google Chrome, VS Code, Discord, Slack) is distributed as a downloadable .deb or .rpm file from the developer's website rather than through a repository. This is similar to downloading an installer on Windows.

Installing a .deb file (Ubuntu/Mint)

# Double-click the .deb in the file manager (opens Software Centre) # Or install via terminal — preferred as it also handles dependencies: $ sudo apt install ./google-chrome-stable_current_amd64.deb

Using apt install ./filename.deb (note the ./) is better than dpkg -i because apt automatically installs any missing dependencies.

Installing a .rpm file (Fedora)

$ sudo dnf install ./google-chrome-stable_current_x86_64.rpm
Many .deb/.rpm installers add a repository so future updates come automatically via apt upgrade or dnf upgrade. Google Chrome and VS Code both do this — after the first install you never need to download the file again; updates arrive through the package manager.

9. Which Format Should You Use?

  • First choice:
    Native package (apt / dnf) — always prefer the distro's own repository if the software is there. Native packages are the best integrated, fastest, and smallest.
  • Not in repos?
    Flatpak from Flathub — the most widely supported universal format. Works on all distros, sandboxed, auto-updates. Check flathub.org before trying anything else.
  • Developer provides a .deb/.rpm?
    Download and install with apt/dnf — if the developer provides it directly (Chrome, VS Code, Slack), this is fine. It usually sets up a repo for future updates.
  • Ubuntu only, no alternative?
    Snap — use it when it's the only option, or when it's the most up-to-date version. Avoid when a Flatpak or native package exists.
  • Just trying something out?
    AppImage — download, run, delete. No installation, no cleanup. Good for testing before committing, or for tools you use rarely.

10. Keeping Software Up to Date

Regular updates keep your system secure and your software current. On a desktop system, your distro's update tool usually notifies you when updates are available. You can also update manually:

# Ubuntu / Mint — update everything (native packages + any added repos) $ sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y # Fedora — update everything $ sudo dnf upgrade --refresh -y # Update Flatpak apps (run regardless of distro) $ flatpak update -y # A complete update routine (Ubuntu with Flatpak): $ sudo apt update && sudo apt upgrade -y && flatpak update -y && sudo apt autoremove -y
How often to update? Once a week is reasonable for a desktop system. Security updates are important — don't leave a system unpatched for months. Your desktop environment will notify you of available updates; don't dismiss these indefinitely.

Chapter Summary

MethodCommand / toolBest for
Graphical (Ubuntu) Ubuntu Software / GNOME Software Browsing and installing without using the terminal
Graphical (Mint) Software Manager Best graphical package manager; native .deb packages, ratings, screenshots
apt (terminal) sudo apt install <pkg> All Debian/Ubuntu-based systems. Fast, precise, handles dependencies
dnf (terminal) sudo dnf install <pkg> Fedora, AlmaLinux, Rocky Linux, RHEL
Flatpak flatpak install flathub <id> Software not in repos; cross-distro; sandboxed; auto-updates
Snap sudo snap install <pkg> Ubuntu-focused; some software only available as Snap
AppImage Download → chmod +x → run Portable apps, one-off use, no installation required
.deb / .rpm file sudo apt install ./file.deb Software distributed directly by developers (Chrome, VS Code)
Full update sudo apt update && sudo apt upgrade -y && flatpak update -y Keep everything current — run weekly
Next: Chapter 11 — Essential terminal skills. You've been seeing terminal commands throughout this course. Now we explain the terminal properly — navigation, file operations, sudo, and a few key commands that every Linux user needs to know.