How to Install Software on Linux: Methods, Package Managers, and What to Know First

Linux gives you more control over software installation than almost any other operating system — but that flexibility comes with options, and options require decisions. Whether you're running Ubuntu on a laptop or Arch Linux on a custom build, understanding how software gets installed on Linux is the first step to doing it confidently.

Why Linux Installs Software Differently

On Windows or macOS, you typically download an installer, double-click it, and follow prompts. Linux works differently by design. Most software is distributed through package managers — centralized tools that download, install, and manage software from trusted repositories. This approach is more secure, keeps software updated consistently, and resolves dependencies automatically.

That said, Linux isn't one thing. It's a family of distributions — Ubuntu, Fedora, Debian, Arch, openSUSE, and dozens more — each with its own default tooling. The method that works on one distro may not apply directly to another.

The Main Methods for Installing Software on Linux

1. Package Managers (The Standard Approach)

Package managers are the backbone of Linux software installation. The one you use depends on your distribution:

Distribution FamilyPackage ManagerInstall Command Example
Ubuntu, Debian, MintAPTsudo apt install firefox
Fedora, RHEL, CentOSDNF / YUMsudo dnf install firefox
Arch, ManjaroPacmansudo pacman -S firefox
openSUSEZyppersudo zypper install firefox

The general pattern is the same: open a terminal, type the install command with the package name, and the system fetches everything needed — including dependencies (other libraries or packages the software relies on). You'll typically need sudo (superuser privileges) to install system-wide software.

2. Flatpak and Snap (Universal Package Formats) 📦

Not all software is available in every distro's official repositories. Flatpak and Snap are distribution-agnostic formats that bundle an application with its dependencies, so the same package runs across different Linux systems.

  • Flatpak packages are hosted on Flathub and installed via flatpak install
  • Snap packages are managed by Snapcraft and installed via snap install

These are especially useful for newer applications, proprietary tools, or software your distro's repos haven't packaged yet. The tradeoff: Flatpak and Snap apps tend to use more disk space because they don't share system libraries the same way native packages do.

3. Downloading a .deb or .rpm File

Some developers distribute software as standalone installer files — similar in concept to a Windows .exe. The two common formats are:

  • .deb — for Debian-based distros (Ubuntu, Mint, etc.)
  • .rpm — for Red Hat-based distros (Fedora, CentOS, etc.)

You can install a .deb file with sudo dpkg -i filename.deb or through a graphical package installer by double-clicking it. RPMs use sudo rpm -i filename.rpm or sudo dnf install filename.rpm on Fedora. This method bypasses your distro's repositories, so dependency management is less automatic — sometimes you'll need to install missing dependencies manually afterward.

4. Compiling from Source

For software not distributed in any packaged format, installing from source code is an option. This involves downloading the source, then running a sequence like:

This is the most technically demanding method. It requires build tools (gcc, make, cmake, etc.) and a working knowledge of what you're doing. It's rare outside of developer workflows or niche software — but it's the ultimate fallback when nothing else is available.

5. AppImage (Portable Executables) 🖥️

AppImages are self-contained executable files. You download them, make them executable (chmod +x filename.AppImage), and run them directly — no installation required. They don't integrate into your package manager, so updates are manual, but they're portable and require no root access.

Key Variables That Change Your Approach

The "right" method isn't universal. Several factors shape what works for your situation:

  • Your distribution — APT, DNF, and Pacman commands aren't interchangeable
  • Software availability — some packages exist in official repos; others require third-party sources or Flatpak
  • System architecture — most modern PCs run x86_64, but ARM systems (like Raspberry Pi) need compatible builds
  • Root/sudo access — shared or restricted systems may limit what you can install system-wide
  • Technical comfort level — terminal-based installs are standard on Linux; GUI software centers (like GNOME Software or KDE Discover) offer a more visual approach for the same underlying operations
  • Software version requirements — distro repos don't always carry the latest version; Flatpak or a developer's PPA might be needed for cutting-edge releases

Keeping Software Updated

Installing is only part of the picture. Linux package managers also handle updates:

  • sudo apt update && sudo apt upgrade (Debian/Ubuntu)
  • sudo dnf upgrade (Fedora)
  • sudo pacman -Syu (Arch)

Flatpak apps update separately with flatpak update. Snaps typically auto-update. AppImages don't update automatically at all — that's worth factoring in if you're using them for tools you rely on regularly.

Graphical Software Centers

If working in the terminal isn't your preference, most desktop Linux environments include a graphical software center — GNOME Software, KDE Discover, or Ubuntu's Software app. These provide a point-and-click interface that calls the same underlying package managers. The trade-off is that graphical centers sometimes lag behind terminal tools in speed or available options.

The method that makes sense for you depends on which distribution you're running, what software you need, whether you have administrator access, and how comfortable you are with the terminal. Those variables determine whether apt install solves everything in ten seconds, or whether you're looking at Flatpak, a manual .deb, or something else entirely.