Software Management
Linux makes managing your software a snap! Jayen tells you why
Packages. You've often heard this word when referring to software on Linux. Why? Most mainstream Linux distributions use a package management system for installing and uninstalling software. The software comes bundled as a package, containing not only files, but also control data, to tell your Linux a lot of additional information about the software. Since all of the software on your system is in a package (or several packages), all of which follow the same standard, it makes it easy for your Linux to keep track of it.
Package management has really made updating software on Linux a snap. The mainstream Linux distributions have central repositories of over 25000 packages, and Linux keeps track of when your software has an update available. This saves having to have a separate update notifier for each of your softwares, and helps trim down the size of each software you have installed. It also gives you one place for updating all the software on your system.
The packaging standards are pretty strict, so if you don't want a software anymore, you can get a clean removal easily, as the system knows which files go with which packages. You don't have to worry about having configuration options lying around when you purge an application from your system (if you choose to remove them, too).
Another thing the package management systems give Linux is the ability to share libraries easily. Rather than loading up the operating system with a lot of libraries that might be used by some obscure software, or bundling the same libraries with different softwares, packages come with a list of dependent libraries. The libraries get installed when at least one package is dependent on it, and when more packages get installed that need it, Linux knows the library's already installed and the package just shares it. Sure beats having to download java separately for some application that needs it, or having java come bundled with several applications. It reduces your download size, as well as the size on disk. Even better, there's cascading package removal. So, if there's no applications on your system that require a library, it's gone. Why waste that extra hard drive space you could be using?
And what about different versions of the same library? The package management systems keeps track of that for you, too. If the two different versions can co-exist, they do, and if they can't, then the packaging system lets you know and you get to choose which version you want.
Since everything on your system (including the kernel itself) is in a package, it makes upgrading your distribution easy, too. It's just a matter of pointing to the repository for the newer distribution, and updating all your packages. You can even point to two repositories and pick and choose the new packages you want, if you're worried something'll break (but it won't). Keep what you want, upgrade what you want.
Along with keeping track of the files, the system also keeps a hash of each file. This allows you to do an integrity check of what you've got on your system, and if something's corrupt, you can just reinstall it. You don't have to go around guessing what might be broken, and have the system do the work for you.
In addition to keeping track of which files are configuration files, some packaging systems also keep track of configuration options, so your settings stay put during an upgrade, in a uniform, organized manner that gives you a familiar interface for entering settings.
And what about developers? Isn't it a big pain for them to have to deal with all this, just to be nice to the users? Nope! The geniuses behind the system also provide some handy scripts. So, if your software uses something standard, like make clean && make && make install, the scripts will automatically figure out the dependencies, hashes, file list, etc. You just need to enter some details about the package maintainer, license, homepage, etc. Turning your software into a package saves you from having to maintain an installer, and if you can get it into an official repository, saves you from tracking your own bugs, as the major distributions have bug trackers for their packages. There's even utilities to help you maintain your patches and different versions of your own package. And just in case something got missed, there's a package check you can run before you start distributing.
Ian Murdock, founder of debian, and pioneer in package management systems, said in his blog, "with a componentized operating system rather than a wad of stuff, it becomes far easier to push new innovations out into the marketplace and generally evolve the OS over time ... and package management is the key technology that will hold it all together." It's so true. Package management keeps Linux easy for its users.
Got Questions? Interest piqued? E-mail jdas417@cse or come to this week's linux seminar (see the events for details)
Image taken from wikipedia article on Package Management Systems.
Ian's blog: http://ianmurdock.com/2007/07/21/how-package-management-changed-everything/
centralised✓
fetching
updates✓
no googling
dependencies✓
clean removal✓
conffiles✓
md5sums✓
repository keys
conflicting files✓
multiple versions✓
packages for developers and maintainers
< ease of packaging & distribution✓
< centralised bug reporting✓
< don't have to write/maintain your own software update system✓
< dhmake recognises a standard autoconf/automake setup✓
< collaboration with other developers ftw
< linda✓
< quilt/dpatch✓