We,the Linux users often take for granted a robust package manager in our systems. It is only the developer or a newcomer who think how good we have it. Fresh out of the myriad world of Windows and its separate installers for every damn piece of software, this system wide package management came as a source of liberation for me. No more did I have to wait for a software to update the very moment when I was looking forward to using it. No more missing important security updates because I didn't use a program. It was all taken care of, all done for me. And like a cherry on top of the cake, most installations or updates did not even require me to restart my computer.
Ian Murdock, the Founder of Debian GNU/Linux distribution and Progeny Linux once noted that, package management system was the single biggest advancement Linux had brought to the OS industry since it blurred the boundaries between operating system and applications, and made it easier to push new innovations into the marketplace and evolve the OS.
It used to be that operating systems were big, monolithic products, and applications were big, monolithic products you put on top of them. If you wanted to deploy, say, a web application, you sourced the middleware stack (which itself was probably several big products too), you sourced the operating system, and you (often painfully) had to integrate the two yourself (or pay a big company lots of money to do it for you).
These days, you increasingly just “apt-get install whatever".
So how does package management systems (PMS) change our lives at the end-user level?
- It is a system wide manager. So takes care of all the software packages in the system.
- It maintains such packages at the best of their usability status.
- Verifies the checksums to ensure the correctness and completeness of a package before install
- Authenticates the origin of the packages through digital signatures.
- Upgrades of software takes place from known software repositories (for greater stability)
- It automatically groups of packages by function which eliminates user confusion.
- Version pinning: If a particular software version works for you, you might not want to upgrade unless some critical vulnerabilities or instabilities come to light.
- Finally while downloading a software the package manager tries to resolve any dependency problems. In other words, it automatically prompts to download other packages that would be required to make the needed program work.
- Similarly most advanced package managers allow you to do a cascade package removal, where in all packages that depend on the target package and all packages that only the target package depends on, are also removed.
In short the user gets a stabler, more up-to-date, better running system at his disposal. These features make package managers the most painless way of running our OS. The guess work is taken out and we are left with community certified software that is guaranteed to work as it should.
But there's not one type packaging format or even a single kind of packaging manager to deal with such formats. Like Linux's infinite choices of distros, the choices even permeate down to the package manager that is bundled into your system. You are always at a liberty to choose which one you would prefer. There are many sort of packaging (like .bz, .gz, .tar, .deb, .rpm, etc) that are either binary dependent or independent of the platform you are running. Most of the front-ends of package managers (like Yum, Apt-get, Aptitude) can handle most of the types and allow a user to painlessly to install and manage any software they want. However, if you have a package only in a particular binary packaging, you might want to take the help of Alien. A converter for different Linux packaging formats.
I know, sometimes such shared libraries in their complexities of operation can confound a novice. So many choices can often be overwhelming. And frankly the constant quibble as to which format is the best to go about and which manager is the greatest doesn't make it very easy on the user end. However, I sincerely believe it is a better state to be in than the incompetent and inflated DLL Hell that I have faced whilst using Windows.
If you are not that big a stickler for details, the decisions to be made are only few for the new penguin. See a program that you like, check in the front-end if your repositories supports the same or if the site has a compatible package (in 99.9% of cases it will if you are using a popular distro) and there you go. Click install and no more worries. Your powerful Linux machine will do the rest.