Table of Contents
Package Managers
A Package Manager (or package-management system) is a collection of software tools that automates the process of installing, upgrading, configuring, and removing computer programs for a computer in a consistent manner.
Depending on your machine configuration and your development toolchain, you may have need of all sorts of package managers. Each package manager serves different needs or operating systems. Some of it is built-in like Windows Update. Others you may have to download and configure yourself. Here are some common ones.
Package Managers for Linux
A cheat sheet for most major Linux package managers can be found at DistroWatch.1)
The two most common package formats on most of the mainstream distros are deb (used with apt
and aptitude
package managers) and rpm (used with dnf
, yum
, and other package managers). Some Linux distros have unique package formats and accompanying package managers all to themselves. These package managers keep track of the required dependencies for everything installed, and stores them in one big pool of shared dependencies that all the applications on the system can use. Everything you need to know is on the cheat sheet linked above.
Flatpak & Snap
Flatpak is a type of package manager that packages the application and all of its dependencies inside a container. In the Linux world, some (only some) applications are gonna be better off deployed with Flatpak instead of the OS's built in package manager. Some distros now come with Flatpak preinstalled. You can even use a bash alias to have both your system updates and Flatpak updates go off with a single update command.
Snap is a similar, more frustrating version of Flatpak, bundled with Ubuntu. Luckily, if it is on your system, it is easy to replace with Flatpak.
Important Note on Linux Package Security
While 95% of the software most Linux end users are ever gonna need, can be found in pre-configured form in the right package manager repositories, there is a downside: Not all of the pre-packaged versions of the software in these repositories is up-to-date. Sometimes it is, but in many cases you will have to find the source and compile it yourself to get the latest patches.
This applies doubly-so for Flatpak & Snap users. Since the maintainers of those packages are now responsible for updating all of the dependencies their packages, they are no longer updated by the system. Many app developers just forget about these dependencies, and it is far harder and more annoying to update someone's containerized semi-distribution masquerading as an app than it is your own system.
Package Managers for Other Operating Systems
In the smartphone and tablet ecosystem, Android and iOS have their own bundled package managers, which take the form of the built-in update services and rudely gatekept app stores. Short of hacking the hell out of your device, what you see is what you get.
Windows and MacOS have their own built-in update services that function as the core package managers for the system, providing all the first-party software. Recent versions of these operating systems now include smartphone-like app stores, kept updated with the rest of the system software. Further applications (like third-party web browsers) have their own built-in update services on top of this. Other third-party applications you may have to keep track of updates and dependencies yourself.
Package Managers for Programming & Scripting Languages
Various programming and scripting languages have their own package management suites as well.
The aforementioned security consideration for Linux packages, applies equally as so to packages available with these package managers: Some of them are kept up-to-date by the official maintainers of the software. Others are not. Some of them are maintained by slow or even malevolent middlemen. Use discretion and caution here, and keep in mind you may have to still manually find, install & update things yourself.
While many of the packages found with these package managers are not practical for production environments, their ease of installation makes them really useful for rapid prototyping. Your mileage may vary.
bash
JavaScript & CSS
For JavaScript the most common package manager is npm, which can be used independently, or with frontends such as Yarn or pnpm.
npm
can also be used to install CSS scripting tools, such as Sass and Less, keeping both of these things in one place. This is very useful since JavaScript is primarily a frontend web language (atrocities like Node.js aside) and CSS is a crucial part of that very same frontend.
PHP
The most popular and well supported package manager for PHP is Composer. The easiest way to browse most of the packages available to install with Composer, is with Packagist.
Python
With Python, the package manager you will be using is pip
and everything you need to know about it is detailed on Python.org and in the docs.
Find this page online at: https://bestpoint.institute/tools/package-manager