$linuxjunkies
>

How to Install Software on Linux

Learn how to install software on Linux using apt, dnf, pacman, Flatpak, Snap, and AppImage — with clear guidance on when to use each method.

BeginnerUbuntuDebianFedoraArch9 min readUpdated June 7, 2026

Before you start

  • A running Linux installation with a user account that has sudo privileges
  • An active internet connection for downloading packages
  • A terminal emulator (Bash or any POSIX-compatible shell)

Linux gives you several ways to install software, and each method exists for good reason. Your distro's native package manager is almost always the right first choice — it's fast, well-integrated, and keeps everything updated in one pass. But Flatpak, Snap, and AppImage each fill real gaps, especially when you need a newer version of an app, a proprietary title, or a portable binary that runs anywhere. This guide walks through all six approaches, explains when to reach for each, and shows you how to verify your installs.

Native Package Managers

Every major distro ships a package manager that handles dependencies, updates, and removal automatically. Start here unless you have a specific reason not to.

apt — Debian, Ubuntu, and derivatives

apt is the front-end used on Debian, Ubuntu, Linux Mint, and Pop!_OS. Always run an update before installing so apt resolves the latest available versions.

sudo apt update
sudo apt install package-name

To search for a package before installing:

apt search keyword

To remove a package and its configuration files:

sudo apt purge package-name
sudo apt autoremove

When to use it: Any software available in the official Debian/Ubuntu repositories. Versions may lag upstream by months, which is intentional — stability is prioritised.

dnf — Fedora, RHEL 8+, Rocky, AlmaLinux

dnf replaced yum as the default package manager for the Red Hat family. The syntax is intuitive and similar to apt.

sudo dnf install package-name
dnf search keyword
sudo dnf remove package-name

On Fedora, the RPM Fusion repositories provide software that can't ship in the main repo (codecs, NVIDIA drivers, etc.). Enable them once:

sudo dnf install \
  https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm \
  https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm

pacman — Arch Linux and derivatives (Manjaro, EndeavourOS)

pacman is minimal and fast. Flags replace subcommands: -S syncs (installs), -R removes, -Q queries locally.

sudo pacman -Syu package-name

The -u flag upgrades all installed packages at the same time — on Arch you must keep the system updated before installing new packages to avoid dependency conflicts.

sudo pacman -Rs package-name

The AUR (Arch User Repository) extends pacman's reach dramatically. Use an AUR helper like paru or yay — it wraps pacman and builds AUR packages automatically:

# Install paru (do this once, as your normal user, NOT root)
git clone https://aur.archlinux.org/paru.git
cd paru
makepkg -si
paru -S aur-package-name

Flatpak — Universal Packages with Sandboxing

Flatpak bundles an app with its runtime dependencies into a sandboxed container. You get a newer app version than your distro repo might offer, with reasonable isolation from the rest of the system. Flathub is the main repository.

Install Flatpak support

# Debian/Ubuntu
sudo apt install flatpak

# Fedora (already installed on Fedora Workstation)
sudo dnf install flatpak

# Arch
sudo pacman -S flatpak

Add the Flathub remote (do this once per user or system-wide with --system):

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

Install, run, and remove apps

flatpak install flathub com.spotify.Client
flatpak run com.spotify.Client
flatpak uninstall com.spotify.Client

Update all Flatpaks in one command:

flatpak update

When to use it: Proprietary apps (Spotify, Slack, Discord), apps that need a newer version than your repo provides, or when you want to contain an app's file-system access. Note that Flatpaks on Wayland work well today — most major apps ship with Wayland support in their Flatpak manifest.

Snap — Canonical's Sandboxed Format

Snaps are managed by snapd, a background daemon. They auto-update silently and ship as self-contained images. The Snap Store is the primary source.

Install snapd

Ubuntu ships snapd by default. On other distros:

# Debian
sudo apt install snapd
sudo systemctl enable --now snapd.socket

# Fedora
sudo dnf install snapd
sudo systemctl enable --now snapd.socket
sudo ln -s /var/lib/snapd/snap /snap   # classic snap support

# Arch (from AUR via paru)
paru -S snapd
sudo systemctl enable --now snapd.socket

Install and manage snaps

sudo snap install package-name
sudo snap install code --classic   # some apps need --classic (no sandbox)
sudo snap remove package-name
snap list   # show installed snaps

When to use it: When a vendor only ships a Snap (e.g., some Canonical or enterprise tools), or for applications that need --classic confinement like VS Code. Be aware that snap startup times are typically slower than native packages due to image mounting, and all snaps pull updates from Canonical's servers regardless of distro.

AppImage — Portable Single-File Executables

An AppImage is a single executable file — download it, make it executable, run it. Nothing is installed to your system. This is popular with developers distributing bleeding-edge builds.

chmod +x YourApp-x86_64.AppImage
./YourApp-x86_64.AppImage

On some minimal systems you may need FUSE:

# Debian/Ubuntu
sudo apt install libfuse2

# Fedora
sudo dnf install fuse-libs

# Arch
sudo pacman -S fuse2

To integrate an AppImage into your desktop launcher, use AppImageLauncher (available as a package on Debian/Ubuntu or via the project's GitHub releases). It registers AppImages with your desktop environment and handles updates for apps that support it.

When to use it: Testing pre-release software, running a single binary without touching system packages, or distributing an app that must run across distros. AppImages have no automatic update mechanism by default — check the app's site manually.

Choosing the Right Method

MethodBest forAuto-updatesSandboxed
apt / dnf / pacmanMost software, system toolsYes (manual trigger)No
FlatpakDesktop apps, newer versionsYes (flatpak update)Yes
SnapVendor-distributed appsAutomaticMostly
AppImagePortable / one-off binariesNo (app-dependent)No

Verifying an Install

After installing, confirm the binary is on your PATH and check its version:

which package-name
package-name --version

For native packages, confirm what is actually installed:

# Debian/Ubuntu
dpkg -l package-name

# Fedora/RHEL
rpm -q package-name

# Arch
pacman -Qi package-name

Troubleshooting

"Package not found" errors

On apt, run sudo apt update first — stale cache is the most common cause. On Fedora, double-check that RPM Fusion is enabled for non-free software. On Arch, the package may only exist in the AUR; search aur.archlinux.org and use your AUR helper.

Broken dependencies

# Debian/Ubuntu — fix broken installs
sudo apt --fix-broken install

# Fedora — check for dependency issues
sudo dnf check

# Arch — force refresh all package databases
sudo pacman -Syyu

AppImage won't launch

The most common cause on modern distros (Ubuntu 22.04+, Fedora 37+) is a missing FUSE 2 library. Install libfuse2 as shown above. If the AppImage still fails, run it from a terminal to read the error output directly.

Flatpak app can't access files

Flatpak's sandbox blocks access to arbitrary paths. Use flatpak override to grant access, or install the Flatseal GUI tool for managing permissions visually:

sudo flatpak override com.example.App --filesystem=home
flatpak install flathub com.github.tchx84.Flatseal
tested on:Ubuntu 24.04Fedora 40Arch 2024.05.01Debian 12

Frequently asked questions

Should I mix Flatpak and native packages for the same app?
Avoid it. Pick one and stick with it. Having both versions installed can cause confusion about which one launches from your app menu and may result in duplicate config files.
Are Flatpak apps safe to use on Wayland?
Yes. Most major Flatpak apps have added Wayland support. You can check and adjust permissions with the Flatseal app if something doesn't work as expected.
Why is the version in my distro repo older than what's on the app's website?
Distro maintainers package and test software before shipping it, which takes time. This is a deliberate trade-off for stability. Use Flatpak or the vendor's own repo if you need a current release.
Can I install packages as a regular user without sudo?
Native package managers require root. Flatpak can install per-user without sudo using flatpak install --user. AppImages need no installation at all — just execute them from your home directory.
How do I update everything at once?
Run your distro's upgrade command (sudo apt upgrade, sudo dnf upgrade, or sudo pacman -Syu), then separately run flatpak update and snap refresh to cover all install methods.

Related guides