Linux 11 min read

How to Install Software on Linux: Comprehensive 2026 Guide

Suresh S Suresh S
How to Install Software on Linux: Comprehensive 2026 Guide

One of the most jarring experiences for a new user migrating from Windows or macOS to Linux is figuring out how to install an application.

If you are coming from Windows, your muscle memory tells you to open a web browser, search for the software, download a .exe or .msi installer file, and click “Next” a dozen times. On macOS, you download a .dmg file and drag an icon into an Applications folder.

While Linux can operate this way, it generally doesn’t. Instead, Linux pioneered the concept of the “App Store” decades before smartphones existed. It uses centralized software repositories and sophisticated Package Managers to handle installations, updates, and dependency tracking securely.

In 2026, the Linux software management ecosystem is richer, safer, and more unified than ever. However, because Linux is fundamentally about choice, there are several different ways to achieve the same goal. This comprehensive guide will walk you through every method of installing software on Linux, from beginner-friendly graphical interfaces to advanced source-code compilation.


1. The Graphical Software Center (The “App Store” Method)

If you are using a modern, beginner-friendly distribution like Ubuntu, Linux Mint, Fedora, or Pop!_OS, you do not ever have to open a terminal to install everyday software.

These distributions come with built-in graphical Software Centers (such as GNOME Software, KDE Discover, or the Mint Software Manager).

How It Works

The Software Center acts as a graphical front-end to your system’s underlying command-line package managers.

  1. You open the application.
  2. You browse categories or search for specific software (e.g., “VLC Media Player”, “Spotify”, “GIMP”).
  3. You click the Install button.
  4. The system prompts you for your administrator password and handles everything in the background.

The Benefits

  • Absolute Security: Software in these centers is curated by the distribution’s maintainers. You are not downloading random executables from unknown websites, drastically reducing the risk of malware.
  • Unified Updates: When you update your system, the Software Center updates all your applications simultaneously, alongside your operating system security patches.

The Drawbacks

  • Outdated Software: In stable distributions like Debian or Ubuntu LTS, the software in the official repositories is “frozen” to ensure system stability. This means you might be running a version of an application that is a year old.

2. Native Package Managers (The Command Line Method)

To truly master Linux, you must learn to use the command-line package manager. This is how servers are provisioned, how software is automated, and how power users navigate their systems.

A package manager downloads a compressed archive (a package) containing the software, places the files in the correct system directories, and most importantly, calculates and installs any “dependencies” (other software libraries that your chosen app needs to function).

Different Linux distribution families use different package managers.

A. Debian / Ubuntu / Linux Mint Family (APT)

Advanced Package Tool (apt) is the most widely used package manager in the world. It interacts with .deb package files.

  • Update your list of available software:
    sudo apt update
  • Install an application:
    sudo apt install firefox
  • Remove an application:
    sudo apt remove firefox
  • Clean up unused dependencies:
    sudo apt autoremove

Personal Package Archives (PPAs): If an app isn’t in the official Ubuntu repository, developers often create a PPA. You can add a PPA to your system to install newer software directly from the developer:

sudo add-apt-repository ppa:obsproject/obs-studio
sudo apt update
sudo apt install obs-studio

B. Fedora / Red Hat / CentOS Family (DNF)

Systems based on Red Hat use the dnf package manager (which replaced the older yum). It interacts with .rpm package files.

  • Install an application:
    sudo dnf install vlc
  • Update the entire system:
    sudo dnf upgrade

C. Arch Linux / Manjaro (Pacman)

Arch Linux is a “rolling release” distribution, meaning it always has the absolute bleeding-edge versions of software. It uses pacman.

  • Install an application:
    sudo pacman -S neovim
  • Update the entire system:
    sudo pacman -Syu

The Arch User Repository (AUR): The true power of Arch lies in the AUR—a massive, community-driven repository containing community-written build scripts for virtually every piece of software on earth. Tools like yay or paru automate downloading and compiling software from the AUR.


3. The Sandbox Revolution: Universal Packages

Historically, developers had a massive headache: if they wrote an app, they had to package it separately for Ubuntu (.deb), Fedora (.rpm), and Arch (PKGBUILD). Furthermore, if their app needed a specific version of a library that conflicted with the user’s system, it would break.

To solve this, Linux adopted Universal Package Formats. These formats bundle the application and all of its required dependencies into a single, sandboxed container. The app runs in isolation, ensuring it works flawlessly on any Linux distribution without breaking the underlying OS.

A. Flatpak

Flatpak has emerged as the community favorite for desktop applications. It is deeply integrated into modern desktop environments.

  • How it works: Flatpak uses a decentralized model. The main repository is Flathub, but developers can host their own. Applications run in a strict sandbox (using Bubblewrap) and must ask permission to access your files or webcam.
  • Install a Flatpak:
    flatpak install flathub org.gimp.GIMP

B. Snap

Snap was developed by Canonical (the company behind Ubuntu). While it works on the desktop, it has become incredibly popular for installing server software.

  • How it works: Snaps are centralized; they all come from the Canonical Snap Store. When you install a Snap, it creates a virtual loop device and mounts it as a read-only filesystem. This makes them incredibly secure and easy to roll back if an update fails.
  • Install a Snap (e.g., Nextcloud server):
    sudo snap install nextcloud

C. AppImage

AppImage takes a completely different approach. It is the closest thing Linux has to a macOS .dmg file or a “Portable App” in Windows.

  • How it works: You do not install an AppImage. You simply download a single file from a website. You mark the file as executable, and you double-click it to run it. It never integrates into your system files, and to “uninstall” it, you just delete the file.
  • How to run an AppImage:
    chmod +x application-name.AppImage
    ./application-name.AppImage

4. Installing from Source (The “Hard” Way)

Before package managers existed, if you wanted software on Unix, you had to compile it from the raw C/C++ source code yourself. While rarely strictly necessary for end-users today, compiling from source is still a vital skill.

You compile from source when:

  1. The software is brand new and not in any repository.
  2. You want to enable specific compiler flags to optimize the software exactly for your specific CPU architecture.
  3. You need to enable an experimental feature that the package maintainers disabled.

The Holy Trinity: Configure, Make, Install

The standard process for compiling software usually follows these steps:

Step 1: Download and Extract

wget https://example.com/software-1.0.tar.gz
tar -xvf software-1.0.tar.gz
cd software-1.0

Step 2: Configure This script checks your system to ensure you have all the necessary compilers (like gcc) and development libraries required to build the software. If it fails, you must read the error, install the missing library using apt, and try again.

./configure

Step 3: Compile (Make) This command reads the Makefile generated by the configure script and actually compiles the source code into binary executables. This can take anywhere from a few seconds to several hours depending on the size of the program.

make

Step 4: Install This requires sudo because it copies the newly created binary files into protected system directories like /usr/local/bin/.

sudo make install

(Power User Tip: Instead of make install, use a tool called checkinstall. It compiles the software and automatically generates a .deb or .rpm package, making it easy to cleanly uninstall later using your package manager.)


5. Modern Language Managers and Shell Scripts

As programming languages have evolved, they have introduced their own ecosystem-specific package managers.

If you are installing a Python tool, you might use pip (or pipx for isolated environments). If it is a Node.js web app, you will use npm. If it is a Rust utility, you use cargo.

cargo install ripgrep

Warning: Never run language package managers (like pip install) with sudo. This installs Python packages globally and can overwrite critical system files that your operating system relies on, potentially breaking your Linux installation.

”Curl to Bash” Scripts

Finally, many modern infrastructure tools (like Docker, Node.js, or AI models like Ollama) provide a one-line installation script:

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

While convenient, pulling a script directly from the internet and piping it into a root shell is a security risk. You should always download the script first, inspect it to ensure it hasn’t been compromised, and then execute it.


6. Low-Level Package Tools: dpkg and rpm

Behind every high-level package manager (apt, dnf) is a low-level tool that performs the actual file operations. Understanding these tools is critical when you receive a standalone .deb or .rpm package file from a developer’s website (for example, downloading Google Chrome or VS Code directly).

Installing a .deb file manually (Debian/Ubuntu)

When you download a .deb file, do not double-click it to open a graphical installer. The most reliable method is:

# Download the package (Google Chrome as an example)
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb

# Install using apt (recommended — it also installs missing dependencies)
sudo apt install ./google-chrome-stable_current_amd64.deb

# Alternative: use dpkg directly (will NOT auto-resolve dependencies)
sudo dpkg -i google-chrome-stable_current_amd64.deb

# If dpkg reports missing dependencies, fix them with:
sudo apt -f install

Key dpkg commands:

# List all installed packages
dpkg -l

# Check if a specific package is installed
dpkg -l | grep firefox

# Remove a package (without purging config files)
sudo dpkg -r packagename

# Purge a package AND its configuration files
sudo dpkg -P packagename

Installing a .rpm file manually (Fedora/RHEL)

# Install using dnf (recommended — resolves dependencies automatically)
sudo dnf install ./package-name.rpm

# Or using rpm directly
sudo rpm -ivh package-name.rpm

# Remove a package
sudo rpm -e package-name

# List all installed packages
rpm -qa

7. Universal Package Format Comparison

Choosing between Flatpak, Snap, and AppImage depends on your use case. Here is a direct technical comparison:

FeatureFlatpakSnapAppImage
Primary StoreFlathub (+ others)Canonical Snap Store (only)Developer websites
Sandbox SecurityStrict (Bubblewrap)Strict (AppArmor)None (runs as user)
Startup SpeedFastSlower (mounts loop device)Very fast
Desktop IntegrationExcellentGoodMinimal (no menu by default)
Works on All DistrosYesYesYes
Auto-UpdatesManual or via Software CenterAutomatic in backgroundMust re-download manually
Uninstall Methodflatpak uninstallsnap removeDelete the file
Best ForGUI desktop appsServer daemons, CLI toolsPortable/offline apps

Practical guidance:

  • Use Flatpak for creative apps (GIMP, Inkscape, Kdenlive) to get the newest version without a PPA.
  • Use Snap for server tools like Nextcloud, Certbot, and Microk8s.
  • Use AppImage for apps you want to carry on a USB drive or run on locked-down systems.

8. Managing System Updates

Keeping your system updated is just as important as installing software. Each package manager handles this differently.

Ubuntu/Debian — Automated Security Updates

# Install the unattended-upgrades package
sudo apt install unattended-upgrades

# Enable it
sudo dpkg-reconfigure --priority=low unattended-upgrades

This configures the system to automatically download and install security patches in the background, protecting your server while requiring no manual intervention.

Full System Upgrade vs Package Update

# Debian/Ubuntu: update package list only
sudo apt update

# Debian/Ubuntu: upgrade installed packages (no removals)
sudo apt upgrade

# Debian/Ubuntu: full upgrade (allows removing obsolete packages)
sudo apt full-upgrade

# Fedora/RHEL: single command does both
sudo dnf upgrade

# Arch: always a full rolling upgrade
sudo pacman -Syu

Checking for Outdated Packages

# On Debian/Ubuntu: list upgradable packages
apt list --upgradable

# On Fedora: check for updates without applying them
sudo dnf check-update

# On Arch: check for updates without applying them
sudo pacman -Qu

9. Frequently Asked Questions

How do I find the exact package name before installing?

# Search Debian/Ubuntu repository
apt search "video player"

# Search Fedora repository
dnf search "video player"

# Search Arch repository
pacman -Ss "video player"

How do I uninstall software completely, including configuration files?

On Debian/Ubuntu, apt remove uninstalls the application but leaves behind configuration files. Use apt purge to delete everything:

sudo apt purge firefox
sudo apt autoremove  # Also clean up orphaned dependencies

How do I see all files installed by a package?

# Debian/Ubuntu
dpkg -L packagename

# Fedora/RHEL
rpm -ql packagename

Is it safe to use multiple package managers at once?

Yes, it is generally safe to mix your native package manager (APT) with universal formats (Flatpak, Snap). They install into completely separate directory paths and do not interfere with each other. However, avoid installing the same application via two different methods simultaneously (e.g., Firefox via apt AND as a Flatpak), as this can cause confusion.

How do I add a third-party repository on Fedora?

The most important third-party repo for Fedora is RPM Fusion, which provides multimedia codecs and GPU drivers that cannot be included by default due to licensing:

# Enable RPM Fusion free and non-free repos
sudo dnf install \
  https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm \
  https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm

Can I install and run Windows software (.exe files) on Linux?

Yes, you can run many Windows applications on Linux using compatibility layers. The most famous is Wine (Wine Is Not an Emulator), which translates Windows system calls into Linux system calls in real-time. For gaming, Valve’s Proton (built on top of Wine) allows thousands of Windows games to run on Steam with near-native performance. For a user-friendly graphical interface to manage Windows applications, tools like Bottles or Lutris make installing and configuring Windows software on Linux extremely straightforward.

How do I check which version of a package is currently installed?

You can query your native package manager to check the installed version:

  • On Debian/Ubuntu: Run apt policy packagename or dpkg -l packagename.
  • On Fedora: Run dnf info packagename.
  • On Arch Linux: Run pacman -Qi packagename. For flatpaks, run flatpak list to see all installed applications and their versions.

10. Conclusion: Which Method Should You Use?

With so many options, how do you choose? Follow this simple hierarchy:

  1. For maximum ease and safety: Use your distribution’s graphical Software Center.
  2. For absolute stability and system tools: Use your native command-line package manager (APT / DNF / Pacman).
  3. For the newest versions of Desktop GUI Apps: Use Flatpak from Flathub.
  4. For one-click Server Deployments: Use Snap.
  5. For portable apps you want to carry on a USB drive: Use AppImage.
  6. For downloaded packages from official websites: Use apt install ./package.deb or dnf install ./package.rpm.
  7. For total control and optimization: Compile from Source using ./configure && make && sudo make install.

Linux gives you the ultimate freedom to control how software interacts with your computer. Master your package manager, and you will never miss a Windows installer again.

Suresh S

Written by Suresh S

Systems Engineer & Tech Educator with 8+ years of experience in Linux Administration, Cloud Computing, and Cybersecurity. Founder of FreeTechLearner, dedicated to creating practical tutorials that help students and professionals build real-world skills.

Share this post:

Discussion

Loading comments...