How To Install Software on Linux: A Clear, Step‑by‑Step Guide

Installing things “with Linux” usually means one of two things:

  1. Installing Linux itself on a computer, or
  2. Installing software on a Linux system you already have.

Most people searching this phrase are trying to get software installed on a Linux machine and are running into unfamiliar tools and commands. This guide focuses on that: how installing works on Linux, what the main methods are, and why there isn’t just “one way” like on Windows or macOS.

You’ll see the patterns, the tools, and where your own setup becomes the deciding factor.


1. How installing works on Linux (the big picture)

On Windows, you download a .exe and double‑click.
On macOS, you grab a .dmg or the App Store.

On Linux, there are multiple installation methods, but they all fall into a few big categories:

  • Package managers (most common, recommended for beginners)
  • App store–style tools (graphical stores, Flatpak, Snap)
  • Standalone software formats (AppImage, .run installers)
  • Compiling from source code (for advanced users or niche software)
  • Containers (like Docker, mostly for development/server apps)

Linux has these different methods because:

  • There are many distributions (“distros”): Ubuntu, Debian, Fedora, Arch, openSUSE, etc.
  • Each distro has its own package format and repositories (official software collections).
  • Linux gives you more control, so you can install software from various sources.

Once you understand which distro you’re on and what tools it uses, the process becomes much more predictable.


2. The core concept: package managers

A package manager is a tool that:

  • Downloads software from trusted servers (repositories)
  • Installs it
  • Handles dependencies (other packages it needs)
  • Updates or removes it when you ask

You’ll usually interact with it either:

  • Through a terminal (command line), or
  • Through a graphical software center.

Common Linux package managers by distro

Distro FamilyExamplesPackage Manager (CLI)Package Format
Debian-basedUbuntu, Linux Mint, Pop!_OSapt / apt-get.deb
Fedora/RHEL-basedFedora, CentOS, Rocky, Almadnf (newer) or yum.rpm
openSUSEopenSUSE Leap, Tumbleweedzypper.rpm
Arch-basedArch, Manjaro, EndeavourOSpacmannative

Knowing which family your distro is in immediately tells you which commands you’ll likely use to install most software.


3. Installing software via terminal (the standard way)

Here’s the general pattern for using a package manager in the terminal.

First, update your package index so your system knows about the latest versions.

Debian/Ubuntu/Mint (APT)

sudo apt update sudo apt install package-name 

Example: install the VLC media player:

sudo apt update sudo apt install vlc 

Fedora/RHEL (DNF)

sudo dnf check-update sudo dnf install package-name 

Example:

sudo dnf install vlc 

openSUSE (Zypper)

sudo zypper refresh sudo zypper install package-name 

Arch/Manjaro (Pacman)

sudo pacman -Syu # update and upgrade sudo pacman -S package-name 

Each command:

  • Fetches the package
  • Installs it to standard locations
  • Registers it so it can be updated or removed with the same tool

You don’t usually need to know where the binary lives; it’s put in your system path so you can run it by name.


4. Installing with a graphical “software store”

Most desktop Linux distros include a GUI app store:

  • Ubuntu Software / Software Center
  • GNOME Software
  • Discover (KDE)
  • Mint Software Manager, etc.

The pattern is similar across them:

  1. Open the Software or Store app from your menu.
  2. Search for the app (e.g., “VLC”, “GIMP”).
  3. Click Install.
  4. Enter your password if prompted.

Behind the scenes, these tools still use the package manager (apt, dnf, zypper, pacman), but they hide the commands and present a simple interface.

This is usually the easiest way if you prefer not to use the terminal and just want common applications.


5. Universal formats: Flatpak, Snap, and AppImage

Because different distros use different package formats, newer systems try to be “distro-agnostic”, meaning you can install the same bundle on many distros.

Flatpak

  • Works on many distros.
  • Apps run in a sandbox for better isolation.
  • Often installed via flathub.org (a large app repository).

Typical pattern:

# First time (example – depends on your distro): sudo apt install flatpak # or use your package manager # Add Flathub (one-time setup): flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo # Install an app: flatpak install flathub org.videolan.VLC 

You then run it with:

flatpak run org.videolan.VLC 

Many GUI software stores integrate Flatpak so you install these visually instead of via command line.

Snap

  • Created and maintained by Canonical (Ubuntu).
  • Also supports sandboxing and cross‑distro usage.
  • Uses the snap command:
sudo snap install package-name 

The Snap Store GUI can also be used where available.

AppImage

  • A single executable file you download.
  • Doesn’t need traditional installation.
  • You just:
    1. Download the .AppImage

    2. Make it executable:

      chmod +x filename.AppImage 
    3. Run it:

      ./filename.AppImage 

AppImages behave a bit like portable apps on Windows—self-contained, often with no system-wide install.


6. Installing local packages: .deb and .rpm files

Sometimes a developer distributes a downloadable package instead of using repositories.

  • Debian/Ubuntu families: .deb
  • Fedora/openSUSE/RHEL families: .rpm

Installing a .deb (Debian/Ubuntu/Mint)

You can:

  • Double‑click it to open your software installer GUI, or
  • Use the terminal:
sudo apt install ./name-of-package.deb 

Using apt here is helpful because it will attempt to resolve dependencies.

Installing a .rpm (Fedora/openSUSE/RHEL)

On Fedora:

sudo dnf install ./name-of-package.rpm 

On openSUSE:

sudo zypper install ./name-of-package.rpm 

These files are closer to the “download and run installer” experience many people expect, but they’re still integrated with your system’s package manager, so they can be updated or removed properly.


7. Compiling from source: the advanced route

Some Linux software is distributed as source code only. You then:

  1. Download the source (usually a .tar.gz or via git).

  2. Install development tools and libraries.

  3. Run a typical sequence like:

    ./configure make sudo make install 

Or follow project-specific instructions (for example, using cmake, meson, or a custom script).

Pros:

  • You can build the latest version.
  • Sometimes the only option for very new or niche software.

Cons:

  • More complex.
  • Updates aren’t automatic in your package manager.
  • You might need to manually track and remove it later.

This path is usually taken by more experienced users or developers.


8. Installing “with Linux” in containerized environments

When “Linux” is actually a server or a development environment, software is often installed inside containers, not directly on the host system.

The common pattern is Docker:

docker pull image-name docker run image-name 

In this world:

  • The “install” is basically downloading a preconfigured environment.
  • Dependencies are bundled so they won’t conflict with your base system.
  • It’s popular for databases, web servers, and dev tools.

This is less about everyday desktop apps and more about services and dev workflows, but it’s still “installing with Linux,” just in a different style.


9. Key variables that change how you install on Linux

There isn’t one universal best method; many factors decide what makes sense:

  • Distro and version

    • Determines which package manager you use.
    • Controls which apps and versions are available in official repos.
  • Desktop or server

    • Desktops often favor GUI app stores and Flatpak/Snap.
    • Servers often use only CLI and system packages.
  • Your comfort with the terminal

    • Comfortable: apt, dnf, pacman, zypper, Docker, source builds.
    • Prefer GUI: software center, Snap Store, Flatpak integration.
  • Need for stability vs. latest features

    • Stable: official distro repositories.
    • Newer: Flatpak/Snap, .deb/.rpm directly from vendors, or compiling source.
  • System resources and storage

    • Flatpaks and Snaps can use more disk space.
    • Native packages are often leaner.
    • Containers and dev toolchains add overhead.
  • Security and trust

    • Official repositories and well-known app stores are generally safer.
    • Random scripts from the internet carry more risk and require extra caution.

10. Different user profiles, different installation styles

The way you “should” install with Linux changes a lot based on who you are and what you’re doing.

Casual or new desktop user

  • Mostly wants browsers, office tools, media players, messaging apps.

  • Likely to:

    • Use the software center for nearly everything.
    • Occasionally install a Flatpak or Snap if something isn’t in the main repo.
    • Avoid the terminal except for copy‑pasting a few commands from trusted guides.

Power user or hobbyist

  • Comfortable with the terminal.

  • Wants a mix of stability and newer features.

    • Uses apt, dnf, pacman, or zypper for core apps.
    • Adds Flatpak/Snap or extra repositories for more recent versions.
    • Might use AppImages for specific tools.

Developer

  • Needs languages, compilers, libraries, databases, and specific versions.

    • Installs dev toolchains via the package manager.
    • Uses language-specific managers (like pip, npm, cargo).
    • Frequently uses Docker containers or other container tools.
    • Sometimes builds from source for cutting-edge libraries.

Server admin

  • Focus on stability, predictability, and security.

    • Relies heavily on distro package manager and LTS release repositories.
    • Usually avoids GUI and universal formats like Flatpak/Snap.
    • Uses containers when isolation or portability is needed.

Each of these profiles is still “installing with Linux,” but the tools and habits look very different.


11. Where your own setup becomes the missing piece

The core ideas are consistent:

  • Figure out your distro and package manager.
  • Decide whether you prefer GUI or terminal.
  • Choose between:
    • Native packages (stable, integrated),
    • Universal formats like Flatpak/Snap/AppImage (flexible, newer),
    • Or source/containers (custom, advanced).

What changes from person to person is:

  • Which distro and version you’re on,
  • Whether it’s a desktop or server,
  • How comfortable you are with command‑line tools,
  • How much you value stability vs. cutting‑edge features,
  • How much disk space and hardware you can spare,
  • And how strict you want to be about only using official repositories.

Once you map those details in your own situation to the methods above, “how to install with Linux” stops being mysterious and turns into picking the approach that best fits your particular system and way of working.