If you’re coming from Windows or macOS, how to install software on Linux might feel like landing on another planet. There’s no clicking through a setup wizard or hunting down an .exe file from some random website. And honestly? Once you understand how it works, you’ll wonder why other operating systems haven’t adopted this approach.
I’ve been helping people make the switch to Linux for years, and the software installation question comes up more than any other. The good news: Linux actually makes this easier and safer than what you’re used to. The trick is understanding the tools you already have.
In this guide, I’ll walk you through everything—from basic package managers to universal formats like Flatpak and Snap. Whether you’re running Ubuntu, Fedora, Arch, or something else entirely, you’ll know exactly how to get the software you need.
Why Installing Software on Linux Is Different (And Actually Better)
The Simple Definition: Package Managers vs. Random Downloads
Think of a package manager like the app store on your phone. Instead of visiting dozens of websites and downloading installers, you have one central place that handles everything. Your Linux distribution maintains a warehouse of vetted, tested software. You tell it what you want, and it installs it—along with any other pieces the software needs to work.
This isn’t just convenient. It’s fundamentally more secure. Every package in your distribution’s official repository has been reviewed. Compare that to downloading random executables from the internet and hoping they’re not malware.
Get a VPS from as low as $11/year! WOW!
Why Linux Doesn’t Use .exe Files (And What It Uses Instead)
Windows uses .exe files. macOS uses .dmg and .app files. Linux uses packages—usually .deb files on Debian-based systems (like Ubuntu) and .rpm files on Red Hat-based systems (like Fedora). But here’s the key difference: you rarely download these files directly.
Instead, you ask your package manager to fetch and install them from the repository. It handles the download, verifies the package hasn’t been tampered with, installs everything in the right places, and tracks what’s installed so updates happen automatically.
My First Linux Install: When I Tried to Download Software the ‘Windows Way’
I remember my first Ubuntu install back in the day—8.04, Hardy Heron. Coming from years of Windows, I did what felt natural: I opened Firefox, searched for VLC, and downloaded a .deb file from some third-party site. Then I double-clicked it, ignored a dependency error, and wondered why nothing worked.
It took me an embarrassing amount of time to discover that typing sudo apt install vlc would have handled everything in about ten seconds. No hunting for downloads. No dependency errors. No sketchy websites. That moment changed how I thought about software entirely.
Understanding Package Managers: The App Store You Already Have
How Package Managers Actually Work Behind the Scenes
When you run an install command, your package manager does several things:
- Checks the repository: It looks up the software in its database of available packages
- Resolves dependencies: It figures out what other packages your software needs
- Downloads everything: It grabs all required files from trusted mirrors
- Verifies integrity: It checks GPG signatures to ensure nothing was tampered with
- Installs in order: It puts files in the correct locations and configures everything
This all happens automatically. You don’t need to think about dependency chains or installation paths. The package manager tracks everything so it can update or remove software cleanly later.
The Four Major Package Managers You’ll Encounter
Before installing anything, you need to know which package manager your system uses. If you’re not sure which distribution you’re running, you can check your Linux version first.
- apt: Used by Debian, Ubuntu, Linux Mint, and their derivatives. The most common choice—Ubuntu alone holds about 33.9% market share
- dnf: Used by Fedora, RHEL, CentOS Stream, and Rocky Linux. Enterprise-focused with strong modularity features
- pacman: Used by Arch Linux, Manjaro, and EndeavourOS. Known for speed and simplicity
- zypper: Used by openSUSE. Less common but rock-solid
How to Install Software on Ubuntu and Debian (Using apt)
If you’re using Ubuntu, Debian, or any derivative, apt is your package manager. It’s powerful, well-documented, and handles most situations gracefully. For detailed technical reference, check out DigitalOcean’s package management guide.
Basic apt Commands Every Ubuntu User Needs
Essential apt Commands
sudo apt update— Refresh the package list (do this first!)sudo apt install package-name— Install a packagesudo apt remove package-name— Remove a packagesudo apt search keyword— Search for packagessudo apt upgrade— Update all installed packages
The distinction between update and upgrade trips up a lot of newcomers. Running apt update refreshes your list of available packages—it doesn’t install anything. Running apt upgrade actually installs newer versions of packages you already have.
Always run apt update before installing something new. Otherwise, you might be working with an outdated package list.
Common Mistakes to Avoid with apt
One thing that caught me early: if apt warns that packages will be removed, stop and read carefully. Sometimes installing one thing conflicts with another, and apt’s solution might remove software you need. Don’t blindly type “Y” without understanding what’s happening.
Also, make sure you have enough storage before major upgrades. You can verify your available space by checking disk space first.
How to Install Software on Fedora and RHEL (Using dnf)
Fedora, Red Hat Enterprise Linux, and their derivatives use dnf. If you’ve heard of yum, dnf is its replacement—faster, more reliable, and with better dependency resolution.
Essential dnf Commands for Fedora Users
Essential dnf Commands
sudo dnf check-update— Check for available updatessudo dnf install package-name— Install a packagesudo dnf remove package-name— Remove a packagesudo dnf search keyword— Search for packagessudo dnf upgrade— Update all packages
The syntax is almost identical to apt, which makes switching between Debian and Fedora systems pretty painless. The main difference is under the hood: dnf handles modular content better and offers some advanced features for enterprise environments.
Why DNF Replaced YUM (And What Changed)
Back in 2015, Fedora 22 introduced dnf as the default package manager. The old yum had performance issues and struggled with complex dependency scenarios. DNF fixed these problems while staying mostly command-compatible.
If you’re following old tutorials that mention yum, just substitute dnf—most commands work identically.
How to Install Software on Arch Linux (Using pacman)
Arch Linux and its derivatives use pacman. And yes, I use Arch—couldn’t resist saying it. But jokes aside, pacman is genuinely excellent: fast, straightforward, and powerful once you learn the syntax.
Pacman Commands for Arch-Based Distributions
Pacman’s flags look cryptic at first, but there’s logic to them: -S means sync (install from repositories), -R means remove, and -Q means query (check installed packages).
Essential pacman Commands
sudo pacman -Syu— Update system and all packagessudo pacman -S package-name— Install a packagesudo pacman -R package-name— Remove a packagesudo pacman -Ss keyword— Search for packagessudo pacman -Qs keyword— Search installed packages
Understanding the AUR (Arch User Repository)
One of Arch’s biggest strengths is the AUR—a community-driven repository with over 82,000 packages. If something exists for Linux, it’s probably in the AUR.
The AUR isn’t installed directly with pacman. Instead, you use an AUR helper like yay or paru, or build packages manually. Because AUR packages come from community members rather than official maintainers, review what you’re installing before building.
Universal Package Formats: Flatpak, Snap, and AppImage
Sometimes your distribution’s repositories don’t have what you need—or they have an outdated version. That’s where universal package formats come in. They work across distributions, solving the “it’s not packaged for my distro” problem. For a deeper technical breakdown, see this detailed comparison of universal package formats.
Flatpak: The Distribution-Independent Standard
Flatpak runs applications in sandboxed environments, isolating them from your main system. This adds security—a compromised app can’t easily access your files unless you grant permission.
To install Flatpak apps, you’ll typically add the Flathub repository, then install with flatpak install flathub app-name. Most modern distributions support Flatpak out of the box or with minimal setup.
Snap: Canonical’s Auto-Updating Solution
Snap packages, developed by Canonical (Ubuntu’s parent company), auto-update in the background. They’re larger than native packages and take longer to start initially, but the automatic updates mean you’re always running the latest version.
Ubuntu includes Snap by default. On other distributions, you’ll need to install the snapd service first.
AppImage: One File, Zero Installation
AppImage takes a different approach: one file contains everything. Download it, make it executable with chmod +x filename.AppImage, and run it. No installation, no package manager, no root access required.
The trade-off: no automatic updates and no sandboxing. You’re also managing individual files rather than having a package manager track things for you.
Which Format Should You Choose?
| Format | Best For | Trade-offs |
|---|---|---|
| Native packages | Daily use, system integration | Limited to what’s in repos |
| Flatpak | Desktop apps, security-conscious users | Larger size, sandbox permissions |
| Snap | Auto-updates, Ubuntu integration | Slower startup, larger size |
| AppImage | Portable apps, no root access | Manual updates, no sandboxing |
My recommendation: use your native package manager when possible. Fall back to Flatpak for desktop apps that aren’t available, and AppImage for portable tools you want to run without installation.
Security Best Practices When Installing Software
Installing software means giving code access to your system. Taking basic precautions keeps your machine healthy. If you’re running services after installation, consider configuring UFW firewall rules to control network access.
“With the drastic uptick in attacks targeting Linux systems in recent years, now is definitely not the time to slack when it comes to system security and maintenance. The majority of successful attacks on Linux systems cannot be blamed on the OS as a whole, but rather can be attributed to misconfigured servers and poor system administration.” — Dave Wreski, LinuxSecurity Founder (Linux security optimization strategies)
Here’s what this means in practice:
- Stick to official repositories — Third-party repos can contain outdated or malicious packages
- Verify GPG signatures — Package managers do this automatically when properly configured
- Keep packages updated — Security patches often arrive within hours of vulnerabilities being discovered
- Don’t mix repositories — Combining incompatible sources can break dependencies and stability
- Review AUR packages — Community packages deserve a quick look at the build script
Many installed applications need proper managing user permissions configured. Don’t run everything as root just because it’s convenient.
Common Mistakes Beginners Make (And How to Avoid Them)
I’ve watched a lot of people learn Linux, and the same mistakes come up repeatedly. You can find common Linux beginner mistakes documented across forums—these are the ones I see most:
- Downloading .deb files from random websites — Use your package manager instead
- Ignoring warnings about package removal — Read what apt/dnf tells you before confirming
- Not updating before installing — Always run
apt updateor equivalent first - Adding too many PPAs or third-party repos — More repos means more potential conflicts
- Not reading error messages — The solution is usually in the error text
Troubleshooting Failed Installations
Fixing Broken Dependencies
If apt complains about broken dependencies, try:
sudo apt --fix-broken install
This attempts to resolve dependency issues by installing missing packages or removing problematic ones.
Resolving Repository Conflicts
On Fedora, if packages from different sources conflict:
sudo dnf distro-sync
This synchronizes all packages to the versions in your enabled repositories.
When Package Not Found Errors Occur
If your package manager can’t find something, check that you’ve updated the package list recently. On Ubuntu: sudo apt update. On Fedora: sudo dnf makecache.
Still not found? The package might have a different name than you expect, or might not exist in your distribution’s repositories. Search first: apt search keyword or dnf search keyword.
Installing Software From Source Code (When You Have No Other Choice)
Sometimes—rarely—you need to compile software from source. Maybe it’s not packaged anywhere, or you need a specific version with custom options.
The basic workflow involves downloading the source (often using the wget command or the curl command), then running:
./configure
make
sudo make install
You’ll need development tools installed first—build-essential on Ubuntu or @development-tools on Fedora. You might also need to set environment variables for the configure script.
Consider this a last resort. Source installations don’t integrate with your package manager, making updates and removal manual processes. Whenever possible, find a packaged version instead.
After installing server software from source, you’ll often need to configure it as a service. Our guide on managing systemd services covers how to check and manage running services.
Start Installing With Confidence
Installing software on Linux becomes second nature quickly. Once you internalize the workflow—update your package list, install from repositories, verify what you’re installing—you’ll find it’s actually simpler than hunting down executables from the web.
The key insight: your package manager exists to make your life easier. Use it. Trust the repositories. And when you need something outside them, reach for Flatpak or AppImage before downloading random files from the internet.
If you’re still getting comfortable with the Linux command line, explore our other guides on checking your Linux version or managing users and permissions. The more you understand your system, the more confident you’ll be installing and configuring exactly what you need.




