Mohammed Chami
.NET Developer | Content Creator
Mohammed Chami
.NET Developer | Content Creator

Ever tried installing software on Linux and wondered why you can’t just download an .exe file? Here’s why package managers exist and why they’re secretly awesome.
If you’re coming from Windows and just started using Linux, you’ve probably hit this wall: you want to install a program, but instead of downloading a simple installer, everyone keeps telling you to use mysterious commands like sudo apt install or pacman -S. What’s the deal?
The short answer? Linux handles software differently because it has to solve problems Windows mostly ignores. Let me break this down in plain English.

On Windows, installing software feels straightforward:
But here’s what’s actually happening behind the scenes that most people never see:
Each Windows program is essentially a self-contained package that brings everything it needs. Think of it like this: if programs were people moving to a new city, Windows programs would each bring their own furniture, kitchen appliances, and even their own electrical outlets.
This creates several problems:
Bloated installations: That 50MB program might actually install 200MB of files because it includes copies of libraries that five other programs also have.
Version conflicts: Program A needs version 2.1 of a library, but Program B needs version 2.3. Now you have both versions sitting on your system, potentially conflicting with each other.
Orphaned files: Uninstall a program, and it often leaves behind dozens of files and registry entries because it doesn’t know what other programs might be using them.
Security nightmares: Each installer can do whatever it wants to your system. No central authority checks if the software is safe or legitimate.
Linux took a different approach from the beginning. Instead of letting every program be its own island, Linux systems use a package manager – think of it as a smart librarian for your software.
A package manager is like having a super-organized friend who:
The most common package managers you’ll encounter:
sudo apt install firefoxsudo dnf install firefoxsudo pacman -S firefoxsudo zypper install firefoxHere’s where things get interesting. Let’s say you want to install a photo editing app on Linux. That app might need:
These are called dependencies – other pieces of software your program depends on to function.
When you run sudo apt install gimp (to install GIMP image editor), your package manager:
If you later install another graphics program that needs the same libraries, the package manager says “Already got ’em!” and doesn’t download duplicates.
Smaller downloads: You’re only getting what you don’t already have.
No conflicts: The package manager ensures compatible versions of everything.
Clean removal: Want to uninstall GIMP? The package manager knows exactly what files belong to it and won’t break other programs that share dependencies.
Automatic updates: One command updates your entire system – OS, applications, and all their dependencies.
Let me give you a concrete example that shows why this matters:
On Windows:
On Linux with package manager:
sudo apt install code python3 git nodejs npm
I get it – sometimes package managers feel like obstacles:
Package managers prioritize stability over having the absolute newest version. They test software combinations to make sure they work well together. Think of it like this: would you rather have a slightly older version that definitely works, or the newest version that might crash your system?
This happens, especially with very new or niche software. The Linux community has solutions for this:
Many Linux distributions now have graphical software centers (Ubuntu Software, GNOME Software, KDE Discover) that let you browse and install packages with a GUI. But honestly? Once you get used to sudo apt install whatever, it’s often faster than clicking through multiple windows.
Here’s something cool: Linux had “app stores” decades before mobile devices made them popular. Package managers are essentially app stores with these advantages:
Windows and Linux made different trade-offs:
Windows chose: Easy installation experience, even if it means inefficiency and potential conflicts under the hood.
Linux chose: Efficient, reliable system management, even if it means a steeper learning curve initially.
Neither approach is inherently right or wrong – they’re solving different problems for different users. But once you understand why package managers exist, you’ll probably find them less mysterious and more helpful.
The next time someone tells you to install software using apt or pacman, remember: you’re not just installing a program, you’re participating in a system designed to keep your computer running smoothly for years. That’s pretty cool when you think about it.
Ready to try it out? Here are the essential commands for the most popular package managers:
sudo apt update # Refresh package list
sudo apt install package-name # Install software
sudo apt remove package-name # Remove software
sudo apt upgrade # Update all installed packages
sudo pacman -Sy # Refresh package list
sudo pacman -S package-name # Install software
sudo pacman -R package-name # Remove software
sudo pacman -Syu # Update everything
sudo dnf check-update # Check for updates
sudo dnf install package-name # Install software
sudo dnf remove package-name # Remove software
sudo dnf upgrade # Update all packages
Start with these basics, and you’ll quickly see why Linux users swear by their package managers. Welcome to a more organized way of managing software!