Copyright © 2005 , 2006 John F. Moore
Last Revised: 2006-01-03 11:04
| Revision History | |
|---|---|
| Revision 1.1 | Mon Jan 2 14:05:01 EST 2006 |
| Changed the copyright date and added a CC copyright. | |
| Revision 1.0 | Mon Jun 6 18:43:41 EDT 2005 |
Abstract
This talk will try to give you an overview of the differences in Linux distributions. This is not meant to be an exhaustive discussion of all, or even most distributions. It is aimed at showing some of the design decisions made by the developers.
Table of Contents
So here you are, ready to install Ubantu Linux, and someone asks you, "Why aren't you using Suse instead?".
Do you given them a dirty look and tell them to get lost, or do you have a reason for picking that distribution over the others.
Now there is nothing wrong with saying something like, "This is the one my niece gave me." or even "The review in Linux Journal sounded interesting". The real question is, did you pick this distribution for a reason, or was it simply a roll of the dice.
Lets see if we can start off by defining some parameters we could use to compare one distribution to another.
Who is the target audience for this distribution?
Is this distribution based on some other distribution?
How much help can I find for this distribution and what type is it?
How do I maintain this distribution?
Does this distribution contain and/or support application Z?
Before I continue I should clarify what I am not going to cover in this talk. I purposefully left out the LiveCD's such as Knoppix and others. These are good for things like rescue, or trying out Linux for those who have never seen it before. The other class of distributions I left out are the specialized distributions. There are a lot of distributions aimed at specific tasks. Some are rescue disks, some are designed for specific tasks such as firewalls, routers, or terminal servers. Unix has a strong tradition of being used in Turnkey systems, and Linux has taken this a step further.
My aim in this talk is to discuss how the home user might decide what is the best distribution for her. And it might even encourage you to explore different distributions to appreciate what makes them different. I am not passing judgment over any particular distribution, there are plenty of critics for at dubious task. I am trying to teach you how to make your own decisions.
Some distributions are aimed at specific types of users. This does not mean they will only work for those users, but it does mean that the design decisions were made with those users in mind. I have selected a few distributions here based on my own experience and the most popular distributions as listed at www.DistroWatch.com
Lets look at a few distributions and their target users:
Linspire: This distribution is aimed at people who are trying to move from window to Linux. The idea is to tune Linux to make it look as much like windows as is reasonable. For some people this gives them a sense of security since it looks and acts similar to windows.
This can be a false sense of security, since there are many differences between these two Operating Systems.
|
Linspire is a full-featured operating system like Microsoft Windows XP or Apple Mac OSX. Linspire offers you the power, stability, and cost-savings of Linux with the ease of a windows environment. |
||
| -- Linspire 5 intro | ||
Red Hat: This distribution is aimed squarely at the corporate IT centers. The distribution is tuned to be stable, long lived, and tightly configured. These qualities lead to a some what unexciting distribution, but for it's intended audience, that is what they want.
You might ask why a home user might be interested in Red Hat Linux. The answer is that for some people it might be more valuable to have a stable, long lived distributing. Additionally, RPM has been one of the most common distribution package types.
|
Red Hat Enterprise Linux is the leading platform for open source computing. It is sold by subscription, delivers continuous value and is certified by top enterprise hardware and software vendors. From the desktop to the datacenter, Enterprise Linux couples the innovation of open source technology and the stability of a true enterprise-class platform. |
||
| -- Redhat Enterprise Linux | ||
Debian: is the epitome of what free software is all about. The developers who make up Debian are fanatical about free software. This purest attitude can sometimes get in the way of fully functional software. But the thing which makes Debian a force to be reckoned with is the skill and dedication of these developers.
Debian is probably one of the most common bases used to build a new distribution, ie Ubantu, and Knoppix to name a couple. It has inherited the drive and philosophy of Richard Stallman, the grand dad of Free software.
|
The Debian Project is an association of individuals who have made common cause to create a free operating system. This operating system that we have created is called Debian GNU/Linux, or simply Debian for short. |
||
| -- Debian about Debian | ||
Ubantu: The focus of this distribution is easy install and plenty of excitement. The distribution has taken the idea of easy to install and easy to use and combined them with a Debian base. The reviewers see this new distribution as both nimble and well structured. This make it a useful distribution for new uses.
|
The Ubuntu community is built on the ideas enshrined in the Ubuntu Manifesto: that software should be available free of charge, that software tools should be usable by people in their local language and despite any disabilities, and that people should have the freedom to customise and alter their software in whatever way they see fit. |
||
| --Ubantu explanation from their home page | ||
Suse: is Novell's attempt at making a Linux that is everything to everyone. This commercial Linux is probably the most high profile attempt at invading the corporate desktop with Linux. This might succeed where Redhat didn't due to the support services Novell has at it's disposal.
|
For rich, reliable and secure home computing, there's no better choice than SUSE LINUX Professional 9.3. It features an easy-to-install Linux operating system that lets you browse the Web, send e-mail, chat with friends, organize digital photos, play movies and songs, and create documents and spreadsheets. You can even use it to host a Web site or blog, create a home network and develop your own applications. |
||
| -- Suse Professional 9.3 overview | ||
Gentoo: is a Linux aimed at the advanced user who wants maximum configurability in their distribution. They make no bones that they are only for the expert administrator. Unless you are already reasonably skilled at Linux this is not a distribution for you. It requires you to know what you want and be willing to spend the time and effort to create a custom installation.
|
We produce Gentoo Linux, a special flavor of Linux that can be automatically optimized and customized for just about any application or need. Extreme configurability, performance and a top-notch user and developer community are all hallmarks of the Gentoo experience. |
||
| -- Gentoo Linux about page. | ||
Linux From Scratch this is considered to be the ultimate build. For those of you who are serious about understanding Linux, I have included this distribution.
No this is not a joke, the best way to get a full picture of the internal structure and decisions that go into a distribution, is to build one yourself. No this is not equivalent to becoming the next Linux Torvalds, but it will give you a much deeper understanding of what goes into a distribution.
This is not a task for the faint of heart since you will be expected to handle options that are normally only seen by a programmer. But for those who have both the time and the interest, it is the ultimate distribution.
|
The goal of Linux From Scratch is to build a complete and usable foundation-level system. Readers who do not wish to build their own Linux system from scratch may not benefit from the information in this book. If you only want to know what happens while the computer boots, we recommend the ?From Power Up To Bash Prompt? HOWTO located at http://axiom.anu.edu.au/~okeefe/p2b/ or on The Linux Documentation Project's (TLDP) website at http://www.tldp.org/HOWTO/From-PowerUp-To-Bash-Prompt-HOWTO.html. The HOWTO builds a system which is similar to that of this book, but it focuses strictly on creating a system capable of booting to a BASH prompt. Consider your objective. If you wish to build a Linux system while learning along the way, then this book is your best choice. |
||
| -- Linux From Scratch - Audience | ||
So for anyone who is curious, I have included a downloaded copy of the book Linux From Scratch in this lesson. Enjoy
I know there are many other distributions of Linux. DistroWatch lists the top 100, by their downloads from their site. You should consider having a look there for links to many more distributions.
When Linux was first written is was based on an earlier OS know an Minix. Minix was a rewrite of AT&T Unix by a college professor, Andrew S. Tanenbaum. He wanted to use source code in his computer science class and did not want interference from AT&T lawyers over copy right. Unix from AT&T had been used for years at universities to teach about operating systems and was available in source code. But once AT&T decided that they could make money by selling Unix, they disallowed the universities from distributing the source code.
I bring up this history to show how Linux has built upon previous code. In a similar way, many of today's Linux distributions started out as other distributions. The logic is that it is easier to start with an existing distribution than to start from scratch.
One of the first distributions I knew about was Slackware . This distribution was available on floppy disks, although you had to install it on a hard disk to use it. The earliest version, as documented in Unofficial History of Slackware came out in July of 1993 with kernel 0.99pl11A. To put this in perspective, the first announcement for Linux was in August 1991.
|
... Slackware Linux 1.0 was rather unceremoniously unveiled to those who had the determination and skill to get it installed on their computers. Since the actual development had started at some point in 1992, it is safe to say that Slackware Linux is the oldest surviving Linux distribution on the market today. It was created by Patrick Volkerding and originally based on one of the first ever Linux distributions called SLS Linux by Soft Landing Systems. |
||
| -- Ten Years of Slackware | ||
The next distribution to make a mark on the history of Linux was Redhat. From my own experience I can tell you that Redhat grew from a bookshop in Connecticut call ACC (I think that was the name) In my collection of CD's I have a Red CD with one of the original versions of Redhat Linux, from July of 1994.
|
It is one of the "middle-aged" Linux distributions; 1.0 was released in November 3, 1994. It is not as old as Slackware, but certainly older than many other distributions. It was the first Linux distribution to use RPM as its packaging format, and over time has served as the starting point for several other distributions, such as the desktop-oriented Mandrake Linux (originally Red Hat Linux with KDE), Yellow Dog Linux (which started from Red Hat Linux with PowerPC support) and ASPLinux (Red Hat Linux with better non-Latin character support). |
||
| -- Red Hat defined | ||
Another early distribution which started in Germany was Suse. Before it was purchased by Novell, Suse was the major Linux version in Europe. I has built up a solid base in Europe though support and Innovation. Suse created the configuration tool Yast . This tool has been a boon to many users who did not know how to configure the system otherwise. It is still considered one of the best admin tools, although it has it's own problems.
|
SUSE Linux was originally based on Slackware Linux; In mid-1992, Softlanding Linux System (SLS) was founded by Peter McDonald, which was the first comprehensive distribution to contain elements such as X and TCP/IP. The Slackware distribution (maintained by Patrick Volkerding) was initially based in large parts on SLS. S.u.S.E was founded in late 1992 as a UNIX consulting group, which among other things regularly released software packages that included SLS and Slackware, and printed UNIX/Linux manuals. They released the first CD version of SLS/Slackware in 1994, under the name S.u.S.E Linux 1.0. It later integrated with the Jurix distribution of Florian La Roche (also based on Slackware), to release the first really unique S.u.S.E Linux 4.2 in 1996. The name "S.u.S.E.", later shortened to just "SuSE", was originally an acronym for the German phrase "Software- und System-Entwicklung" ("Software and system development"). The company is now simply called SUSE LINUX, and "SUSE" does not officially stand for anything any more. |
||
| -- Suse Linux History | ||
Debian grew from the same inspiration that produced the FSF (Free Software Federation). In some ways this makes sense because remember that the tools used in Linux came mostly from the FSF team originally. In fact it was Linus's ability to make use of these tools which allowed Linux to grow beyond it's Minix roots.
|
Debian was founded by an initiative of the Free Software foundation. Legend has it that Richard Stallmann was concerned about the rise of commercial Linux distributions (SLS, Slackware, Red Hat) and wanted to make sure that a completely free (as in freedom) Linux distribution would come into being. He offered a grant for someone to develop a Linux distribution that would be done in the spirit of the Free Software Movement and where all software would be available under licensing of the Free Software Foundation. Ian Murdock saw that ad in a magazine and responded to it. He began developing a Linux distribution and named it Deb-ian after the first names of his wife DEBorah and his first name IAN. Thus the name of Debian was created. |
||
| -- Debian Linux History | ||
Gentoo has a much shorter history than the others. It has gained support for 2 reasons. First it uses a somewhat unique install process. The downside is you probably can not really install Gentoo on any machine which does not have a good internet connect. Secondly, the Gentoo community has build some very good documentation on how to configure their system.
Gentoo is a distribution aimed squarely at the Advanced users. It's install method is basically to boot strap the machine, and then rebuild the applications on that machine. The upside is that the applications are tuned to work on the given hardware. But, it requires you to make decisions about which libraries to include and what compiler options are best for your hardware.
|
It all began with Extra Time. Time to explore, Time to discover, Time to experiment. That's how the creator of Gentoo, Daniel Robbins stepped into the world of Linux. He started with Debian Linux, setup a couple of applications, learnt the ins & outs of Linux and as most Linux users do, tried out a couple of distributions and settled to help out with a distro called Stampede Linux. Soon he was into Stampede development and working on their package management system. After a period of time and due to certain issues, he moved on and decided that he would create his own distribution. Thus, Enoch was born. Daniel wanted Enoch to be a blazingly fast distro with capabilities to completely automate the package creation and upgrading process. Soon there was a #enoch on irc.freenode.net and 10 developers helping with the distro. Over a period of time, as Enoch started improving, they felt that it needed a new name. They called it Gentoo Linux. Around about the time Gentoo was moving to its 1.0 release, Daniel brought a new, fast machine. The motherboard model had a faulty chip that caused Linux to lock up when idle and because of that, Gentoo Linux development came to a complete halt. Since there wasn't anything going on with Gentoo, Daniel switched to FreeBSD. He liked what he saw. Especially the "Ports" system. And he returned to the Linux world. Along with the help of other developers like Achim Gottinger, Gentoo was back on track & charging ahead. The whole package management system was redesigned & called Portage. Gentoo has been in active development ever since, with tons of features being continually added over the years. Teams of volunteers help keep Gentoo on the bleeding edge and patched to ensure maximum security & stability. The Gentoo development model was extended with a complete project-based approach where each project develops independently but cooperatively with other Gentoo projects. Regular meetings between the project leads (called "project managers") keep the development high-paced. The Gentoo Foundation has been created to provide financial caretaking, juridical protection and oversee general Gentoo development to keep it in line with the Social Contract. |
||
| -- Gentoo History | ||
So now that we have identified the early Linux distributions how does that affect my choice of a distribution?
It tells you something about the underlying structure of the distribution you select. For a quick example in Redhat Linux the init scripts are kept in /etc/rc.d/init.d but in a Debian based system they are in /etc/init.d . Now this might not seem that big a deal, but when it comes to reading documentation or getting help, the location of the files in your distribution are significant. If someone told you how to fix a problem in your Debian system, but was using a Redhat distribution she might give you the wrong files to fix, which would be confusing at least.
One of Linux's strength is the quantity of information available for it. No quantity does not necessarily mean quality. But user groups and on line documentation whether formal or informal is one of these issues. Lets take a minute to discuss the different types of help you can get for a Linux system.
Users Groups are one form of information sharing used by Linux. Yes there are user groups for other operating systems, but from my experience, the ones for Linux are the most vocal and helpful. You see since Linux is a free operating system, people who join the users groups are typically interested in sharing their experiences and knowledge.
As an example I went to Google and did three searches for user's groups. I searched for Linux, Microsoft Windows, and Macintosh user groups. The results are interesting, Especially when I break it down by .org, .net, and .com.
-Table 1. User Groups
| User Group Type | Microsoft Windows | Linux | Macintosh |
|---|---|---|---|
| All | 749,000 | 30,700,000 | 10,600,000 |
| .com | 304,000 | 10,200,000 | 2,750,000 |
| .net | 43,800 | 7,970,000 | 1,330,000 |
| .org | 82,800 | 2,750,000 | 668,000 |
| mail lists | 186,000 | 9,910,000 | 1,840,000 |
The real interesting part of this table, is that Windows claims 90% of the market when it comes to user. So why isn't it 10 time the size of Linux and Macintosh combined? Another source of information are the Linux Mail lists. These lists tend to lead to FAQs which cover many common questions. Does that mean that more conversation takes place for Linux. Look that way.
Tutorial Web Sites: is often a sign of support from the community. So it is interesting to look at the number of tutorial web sites. Now, in an attempt to eliminate commercial web sites, I only counted the number of tutorials hosted on .org web sites. Here are the results:
Table 2. Tutorial Web sites
| Tutorial Web Sites | Microsoft Windows | Linux | Macintosh |
|---|---|---|---|
| .org | 163,000 | 631,00 | 80,000 |
Numbers do not tell the whole story though. If you look at the sites themselves you will find sites like The Linux Documentation Project and "The Linux Installation and Getting Started Guide", "The Linux User's Guide", "The Linux Programmer's Guide", and "The Linux Network Administrators' Guide"
Manuals and/or Online help is another form of help for some distributions. Sometimes these sites are connected to, or written by, the distributions themselves, some times these are simply web sites which have collected information about a specific site. And sometimes they are an effort by the community around the distribution to help other users.
The classic example, for me at least were the manuals which were distributed with Redhat Linux. Many of these manuals are sill available on the web. Despite them being old, they are often well written.
It is not hard to figure out who would be creating manuals. Primary they are done by the commercial distributions since they can afford the people who write the manuals.
But it is not always the commercial distributions which create good documentation based on their distribution. Interestingly there is a web site Gentoo Wiki which is run by the users, and contributes a considerable amount of quite detailed information on how to use the distribution.
Books: aimed at specific distributions are another common form of help for distributions.
If you go to a book store, of check out an on line bookstore you can find books written about specific distributions. Some of these are good references works about specific distributions. Some of the books even come with the distribution included on a CD.
For someone just getting into Linux these books are often the best choice. They are organized in a way that gives you a fairly complete introduction to the distribution and it's idiosyncrasies.
One source I found was Linux Central seems to have a good selections of books on Linux Distributions.
One issue that comes up with any distribution is, how do you maintain it. This often refers to how do you add or subtract applications from the distribution. But another aspect of this discussion has to do with how easy is it to upgrade the distribution.
If we look at most operating systems, they tend to evolve in versions. This is good in some respects because it allows you, as the system designer, to rethink how you put the system together. It could give you a change to reorganize the location of some files, to eliminate some old package, by opting for newer and better applications.
This is the typical model used by Windows: from Windows 3.1 to Windows 95 to Window 98 to Windows 2000 to Windows XP and beyond. The good part of this is it allows you the user to get a new model, much like a new car. But the down side is that once you decide to upgrade, you need to throw out your old installation and start over. Yes I know some distributions can do what is known as an upgrade over the top of the old version. The problem with this, in my opinion, is that the upgrade often is not as thorough as a new install leaving you with inconsistent results.
As a practical matter, I try to do a new install each time I wanted to move to a new version. Another problem is that after a while the packages in the old version are no longer supported. This means that you are on your own once the community decides to move their support to a new version.
But, some distributions are now going to a continuous update model. The two I am familiar with are Debian, and Gentoo. Debian allows you to keep upgrading your distribution piece meal as new versions of the application become available. Now you might ask, why is this different than the version upgrade, I disliked above? My experience has been that the Debian model works because the changes are smaller from version to version with more limited changes. Instead of going from KDE 2.0 to KDE 3.0 you would upgrade through the incremental small changes considered stable along the way. The point being that something like KDE does not change all at once, it moves in stages from one version to another. Could there be disruptions, sure, but it is more likely to be one or two apps which stop working, not all of KDE. To be honest, I have not spent enough time with Debian to say how well this works, but it looks good so far. The key to this incremental upgrade process comes from their package management system, which we will discuss below.
Package management has come a long way since I started with Linux. The advantages of a good package management system are not obvious when you install the system, but make a big difference later when you add or remove applications.
Lets start off by discussing what package management is all about. Typically each application which is install on an operating system, consists of many files. Some of these are executable files, some are libraries, some are documentation, and some are configuration files. Lets take an example to illustrate what I am talking about.
Lets suppose you wanted to install the application gawk on your computer. When it was installed on this computer it included the following files: (I have added comments, after the # signs to the list below detailing what the files are.)
# The executable programs
/bin
/bin/gawk-3.1.4
/bin/gawk -> gawk-3.1.4
/bin/pgawk -> /usr/bin/pgawk-3.1.4
/bin/igawk -> /usr/bin/igawk-3.1.4
/bin/awk -> gawk-3.1.4
# Some executable programs called by gawk
/usr
/usr/libexec
/usr/libexec/awk
/usr/libexec/awk/pwcat
/usr/libexec/awk/grcat
# Some predefined gawk scripts
/usr/share
/usr/share/awk
/usr/share/awk/passwd.awk
/usr/share/awk/group.awk
/usr/share/awk/assert.awk
/usr/share/awk/bits2str.awk
/usr/share/awk/cliff_rand.awk
/usr/share/awk/ctime.awk
/usr/share/awk/ftrans.awk
/usr/share/awk/getopt.awk
/usr/share/awk/gettime.awk
/usr/share/awk/join.awk
/usr/share/awk/libintl.awk
/usr/share/awk/nextfile.awk
/usr/share/awk/noassign.awk
/usr/share/awk/ord.awk
/usr/share/awk/readable.awk
/usr/share/awk/rewind.awk
/usr/share/awk/round.awk
/usr/share/awk/strtonum.awk
/usr/share/awk/zerofile.awk
# Documentation in Info format
/usr/share/info
/usr/share/info/gawk.info.gz
/usr/share/info/gawkinet.info.gz
# Documentation in Man page format
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/gawk.1.gz
/usr/share/man/man1/awk.1.gz -> gawk.1.gz
/usr/share/man/man1/pgawk.1.gz
/usr/share/man/man1/igawk.1.gz
# Language files for the application
/usr/share/locale
/usr/share/locale/es
/usr/share/locale/es/LC_MESSAGES
/usr/share/locale/es/LC_MESSAGES/gawk.mo
/usr/share/locale/fr
/usr/share/locale/fr/LC_MESSAGES
/usr/share/locale/fr/LC_MESSAGES/gawk.mo
/usr/share/locale/he
/usr/share/locale/he/LC_MESSAGES
/usr/share/locale/he/LC_MESSAGES/gawk.mo
/usr/share/locale/it
/usr/share/locale/it/LC_MESSAGES
/usr/share/locale/it/LC_MESSAGES/gawk.mo
/usr/share/locale/sv
/usr/share/locale/sv/LC_MESSAGES
/usr/share/locale/sv/LC_MESSAGES/gawk.mo
/usr/share/locale/tr
/usr/share/locale/tr/LC_MESSAGES
/usr/share/locale/tr/LC_MESSAGES/gawk.mo
/usr/share/locale/de
/usr/share/locale/de/LC_MESSAGES
/usr/share/locale/de/LC_MESSAGES/gawk.mo
/usr/share/locale/da
/usr/share/locale/da/LC_MESSAGES
/usr/share/locale/da/LC_MESSAGES/gawk.mo
/usr/share/locale/pt_BR
/usr/share/locale/pt_BR/LC_MESSAGES
/usr/share/locale/pt_BR/LC_MESSAGES/gawk.mo
/usr/share/locale/ca
/usr/share/locale/ca/LC_MESSAGES
/usr/share/locale/ca/LC_MESSAGES/gawk.mo
/usr/share/locale/pl
/usr/share/locale/pl/LC_MESSAGES
/usr/share/locale/pl/LC_MESSAGES/gawk.mo
/usr/share/locale/ja
/usr/share/locale/ja/LC_MESSAGES
/usr/share/locale/ja/LC_MESSAGES/gawk.mo
/usr/share/locale/ro
/usr/share/locale/ro/LC_MESSAGES
/usr/share/locale/ro/LC_MESSAGES/gawk.mo
# More documentation about the application
/usr/share/doc
/usr/share/doc/gawk-3.1.4-r4
/usr/share/doc/gawk-3.1.4-r4/README_d
/usr/share/doc/gawk-3.1.4-r4/README_d/README.FIRST.gz
/usr/share/doc/gawk-3.1.4-r4/README_d/README.VMS.gz
/usr/share/doc/gawk-3.1.4-r4/README_d/README.aix.gz
/usr/share/doc/gawk-3.1.4-r4/README_d/README.atari.gz
/usr/share/doc/gawk-3.1.4-r4/README_d/README.beos.gz
/usr/share/doc/gawk-3.1.4-r4/README_d/README.hpux.gz
/usr/share/doc/gawk-3.1.4-r4/README_d/README.ia64.gz
/usr/share/doc/gawk-3.1.4-r4/README_d/README.linux.gz
/usr/share/doc/gawk-3.1.4-r4/README_d/README.macos.gz
/usr/share/doc/gawk-3.1.4-r4/README_d/README.pc.gz
/usr/share/doc/gawk-3.1.4-r4/README_d/README.multibyte.gz
/usr/share/doc/gawk-3.1.4-r4/README_d/README.sco.gz
/usr/share/doc/gawk-3.1.4-r4/README_d/README.pcdynamic.gz
/usr/share/doc/gawk-3.1.4-r4/README_d/README.sgi.gz
/usr/share/doc/gawk-3.1.4-r4/README_d/README.sony.gz
/usr/share/doc/gawk-3.1.4-r4/README_d/README.solaris.gz
/usr/share/doc/gawk-3.1.4-r4/README_d/README.tests.gz
/usr/share/doc/gawk-3.1.4-r4/README_d/README.sunos4.gz
/usr/share/doc/gawk-3.1.4-r4/README_d/README.tandem.gz
/usr/share/doc/gawk-3.1.4-r4/README_d/README.yacc.gz
/usr/share/doc/gawk-3.1.4-r4/README_d/README.ultrix.gz
/usr/share/doc/gawk-3.1.4-r4/AUTHORS.gz
/usr/share/doc/gawk-3.1.4-r4/FUTURES.gz
/usr/share/doc/gawk-3.1.4-r4/ChangeLog.gz
/usr/share/doc/gawk-3.1.4-r4/NEWS.gz
/usr/share/doc/gawk-3.1.4-r4/LIMITATIONS.gz
/usr/share/doc/gawk-3.1.4-r4/PROBLEMS.gz
/usr/share/doc/gawk-3.1.4-r4/README.gz
/usr/share/doc/gawk-3.1.4-r4/POSIX.STD.gz
/usr/share/doc/gawk-3.1.4-r4/awklib
/usr/share/doc/gawk-3.1.4-r4/awklib/ChangeLog.gz
/usr/share/doc/gawk-3.1.4-r4/pc
/usr/share/doc/gawk-3.1.4-r4/pc/ChangeLog.gz
/usr/share/doc/gawk-3.1.4-r4/posix
/usr/share/doc/gawk-3.1.4-r4/posix/ChangeLog.gz
# Another set of executable files
/usr/bin
/usr/bin/pgawk-3.1.4
/usr/bin/pgawk -> pgawk-3.1.4
/usr/bin/igawk-3.1.4
/usr/bin/igawk -> igawk-3.1.4
/usr/bin/awk -> /bin/gawk-3.1.4
/usr/bin/gawk -> /bin/gawk-3.1.4
# Include file for programs which can use gawk libraries
/usr/include
/usr/include/awk
/usr/include/awk/awk.h
/usr/include/awk/config.h
/usr/include/awk/custom.h
/usr/include/awk/dfa.h
/usr/include/awk/getopt.h
/usr/include/awk/gettext.h
/usr/include/awk/mbsupport.h
/usr/include/awk/protos.h
/usr/include/awk/random.h
/usr/include/awk/regex.h
/usr/include/awk/regex_internal.h
# Library files called by the gawk
/lib
/lib/rcscripts
/lib/rcscripts/filefuncs.so.0.0.1
/lib/rcscripts/filefuncs.so.0 -> filefuncs.so.0.0.1
/lib/rcscripts/filefuncs.so -> filefuncs.so.0.0.1
This is a list of all the files included in the gawk package for this computer.
Now the package manager not only keeps track of what file she installed, where they are and what version they are. This information about the application is important for two reasons. First if you want to upgrade the application, you need to know which files belong to it. Second, if you are installing an application which uses gawk, it will need to know the version of gawk installed to know if it can work with it.
Lets take a few minutes to review some of the package managers I know about. I will explain each and then give you what I see as their strengths and weaknesses.
TAR One of he first package managers was Tar (Tape Archive). Tar is good at taking files from different locations and combining them into a single file. Once an archive has been created it is possible to compress it so it is smaller. Tar archives can be compressed with compress, called tar.Z, or with gzip called tar.gz, or with bzip2 called tar.bz2.
Tar is a widely available archive program with a well understood method of creating the archive. The files are mostly compatible across Linux and Unix distributions, although there are some customizations which cause trouble.
Strengths: Easy to implement, creates directories as needed, small size packages when compressed.
Weaknesses: It does not keep track of what file are stored where. It has no way of checking dependencies with other applications. It does not provide an central database of files. It has no removal method.
This package method is still used by Slackware and Cygwin. It is also in common use for source code packages.
RPM (Redhat Package Manager) was to the best of my knowledge one of the first attempts at building an application which could install packages, uninstall them, verify them, and handle dependencies between application packages.
|
First, let me state some of the philosophy behind RPM. One design goal was to allow the use of "pristine" sources. With RPP (our former packaging system of which none of RPM is derived), our source packages were the "hacked" sources that we built from. Theoretically, one could install a source RPP and then make it with no problems. But the sources were not the original ones, and there was no reference as to what changes we had to make to get it to build. One had to download the pristine sources separately. With RPM, you have the pristine sources along with patches that we used to compile from. We see this as a big advantage. Why? Several reasons. For one, if a new version of a program comes out, you don't necessarily have to start from scratch to get it to compile under RHL. You can look at the patch to see what you might need to do. All the compile-in defaults are easily visible this way. RPM is also designed to have powerful querying options. You can do searches through your entire database for packages or just certain files. You can also easily find out what package a file belongs to and where it came from. The RPM files themselves are compressed archives, but you can query individual packages easily and quickly because of a custom binary header added to the package with everything you could possibly need to know contained in uncompressed form. This allows for fast querying. Another powerful feature is the ability to verify packages. If you are worried that you deleted an important file for some package, just verify it. You will be notified of any anomalies. At that point, you can reinstall the package if necessary. Any config files that you had are preserved as well. |
||
| -- RPM HowTo Overview. | ||
Rather than me going into a long explanation of RPM I will refer you to Package Management: How to Do It? which is part of the book Maximum RPM.
In my own words this allowed you to build, install, remove, and verify packages. Each package contains a file which specifies details about the package. The system has grown over the years to be a reasonably stable method of distributing applications.
There are two types of packages, binary and source. The binary packages are precompiled for a specific architecture. The source packages contain source code and can be used by RPM to build a binary package on your computer. I have even seen some applications which distribute a *.spec file so you can down load their source and build it using RPM.
Strengths: The system has been widely used by other distributions such as Suse and Mandiva (Mandrake) as well as YellowDog. There are a number of repositories available on the internet of precompiled packages you can download and install.
Weaknesses: Many of the applications depend on other packages. This creates what is commonly known as RPM package Hell. For example, you download package A and go to install it. But it fails because it depends on package B. So you download package B and try to install it, but it says it needs a different version of package C. So you download the new version of package C but it says that three other packages depend on this version of C so you would need to upgrade them as well. You get the idea.
YUM (Yellowdog Updater Modified) is a package handle for RPM packages. This originated with YellowDog Linux which ported Linux to the Macintosh computer. In the process they created the Yellowdog Updater (yup) for their own RPMs. This worked OK but it needed to download the entire RPM before it could check out the header information which contained the info needed for dependencies. So Seth Vidal, at Duke University took on the project of fixing yup.
|
Every rpm has a header. That header contains a complete file list, package descriptions, lists of what features/libs it provides, lists of what it requires, what it conflicts with etc. In order for rpm to make a decision about what an rpm will need to be installed it needs the information in the header. Fortunately, this is all it needs. Many other updating tools use an index created of that information. They take the important information and send it to the client and use that to determine what should be installed. What Yum does is to copy the header from the rpms on the server (called a repository, just an HTTP or ftp server, nothing fancy or custom), then the client part of yum uses those headers to determine what needs to be installed/upgraded/erased. The benefit of using the rpm header is that yum can then rely on rpm to determine what should happen, because all the information is in a format native to rpm so no custom dependency calculation code is required. Another benefit is that this makes yum quite fast. And finally, by not writing custom dependency code yum keeps from reinventing the wheel and writing a parallel dependency engine to rpm. Rpm does all the hard work. |
||
| -- How it Works | ||
Since YUM already worked on RPMs it made it easy to use with distributions such as Redhat and YellowDog. I have been using it with Fedora Core and it works pretty well.
Strengths: Since it works with a common package format, RPM, it is able to piggy back on an existing structure. So it inherits the facility of RPM.
Weaknesses: Since it has it's own information, which it extracts from the RPMs it is necessary to create Yum repositories in addition to the RPM repositories. This increases the work for web sites which distribute RPM packages.
APT( Advanced Packaging Tool) was created by the Debian team to handle the complexities involved in package management.
One interesting thing about Apt is that it is not a single tool, but a set of tools. Some of the tools include: dpkg a package manager, apt-get the program which calls dpkg, apt-cache provides interesting manipulation on the Cache, apt-get the command line front end to apt, apt.conf an internal program to handle the configuration of apt, sources.list is where the system keeps information on repositories.
|
In the beginning there was the .tar.gz. Users had to compile each program that they wanted to use on their GNU/Linux systems. When Debian was created, it was deemed necessary that the system include a method of managing the packages installed on the machine. The name dpkg was given to this system. Thus the famous `package' first came into being on GNU/Linux, a while before Red Hat decided to create their own `rpm' system. A new dilemma quickly took hold of the minds of the makers of GNU/Linux. They needed a rapid, practical, and efficient way to install packages that would manage dependencies automatically and take care of their configuration files while upgrading. Here again, Debian led the way and gave birth to APT, the Advanced Packaging Tool, which has since been ported by Conectiva for use with rpm and has been adopted by some other distributions. |
||
| -- Apt How To | ||
The apt tool has some interesting features. You can use the command apt-get dist-upgrade to upgrade your existing system without reinstalling. It can be used to install, remove, source, build-dep, check, or clean up packages. The build-dep option will cause apt to build the dependencies needed by the system.
The apt tool has been ported to work with RPM packages also and known as apt-rpm. This was another attempt as solving the RPM hell described above.
|
APT-RPM is a port of Debian's APT tools to a RPM based distribution (Conectiva, Red Hat, SuSE, ALT-Linux, etc). APT is an advanced package management utility front-end which allows you to easily perform package installation, upgrading and removal. Dependencies are automatically handled, so if you try to install a package that needs others to be installed, it will download all needed packages and install them. |
||
| -- Apt-Rpm about | ||
Strengths of Apt: The apt tools has been developed and tested thoroughly in Debian. The install, removal, and update features have been shown to work smoothly with package changes, minimizing the need to install a new version. The number of packages available from Debian is quite large.
Weaknesses of Apt: The Debian team keeps a fairly tight reign on what is included in the repository. The tools can be somewhat difficult for beginners since it is a command line tool, although there are graphic front ends like synaptic.
Strengths of Apt-Rpm: This tools has much the same advantages as seen in Yum. I have not a good comparison of Yum and apt-rpm.
Weaknesses of Apt-Rpm: This is again similar to that for Yum. In addition to keeping the RPM packages, you need to keep the headers for apt to use.
URPMI is another rpm handler from Mandrake. It is similar in many ways to apt-get.
|
urpmi - rpm wrapper handling dependencies making installs easier Just give to urpmi the package you want and it will install it, taking packages either from cdrom, ftp or local repository of rpms. The nice thing is that dependencies are handled. It even handles multi-cd (asks you politely to enter the cd labeled ``xxx''). Have you heard about apt-get? Well, urpmi does the same for rpms :) You can compare rpm vs urpmi with insmod vs modprobe or dpkg vs apt-get. |
||
| -- URPMI What's it? | ||
I will not go into all the details of URPMI since I do not have any first hand information about it. It seems to be so similar to apt-rpm that there was not reason to explore another variation.
Portage is an unusual package management system. It has a repository that it keeps on your computer of files know as ebuilds. An ebuild is similar to the spec files used by RPM. The difference is that the ebuild does not contain either binary or source. The ebuild is a set of instructions for where to get the source and what you options you use to build it on your system.
Most distributions are made of precompiled binary packages, which you down load and install. But Portage, simply tells you where to download the source code and patch files. It then compiles the application on your computer.
|
emerge is the definitive command-line interface to the Portage system. It is primarily used for installing packages, and emerge can automatically handle any dependencies that the desired package has. emerge can also update the portage tree, making new and updated packages available. emerge gracefully handles updating installed packages to newer releases as well. It handles both source and binary packages, and it can be used to create binary packages for distribution. |
||
| -- Emerge Man page | ||
Even though emerge can work with binary packages, it typically is used to build the application on your computer using flags for what options you want.
Strengths: this tool provides an almost unlimited flexibility to build the best application binary for any given system.
Weaknesses: since every package is built locally, it takes much longer to install a system. Given the flexibility in the system it also makes it easy to build an unworkable system. There is no basic system, each package you install is selected individually. Emerge adds the dependencies as the package is installed.
There are other package managers out there such as Up2date. Even though I have not covered them all, I think you get a reasonable idea of what package management is all about. Understanding how your distribution deals with installing, updating and removing packages will give you one more yard stick when selecting a Linux distribution.
Anyone who wants to read an interesting article about package managers should refer to "The Great Package Management Experiment" from Linux Weekly News.
When I talk to people about Linux distributions, I am asked if it supports application Z. In some ways this is a fair question and in others it is not. Let me explain what I mean.
Most Linux applications are available in multiple repositories, as well as in source code. With the exception of commercial applications for Linux, there is likely an existing package of any application already available in a repository.
People are used to thinking applications must always be added to a particular system. This is a common misunderstanding which comes from the commercial world of software. The Linux World, on the other hand, tends to include most applications in all the major distributions or as add on packages. It is not uncommon in an application to be available using your package manager of choice over the internet. This is why that choice of package manager becomes significant in choosing a distribution to install.
But, lets suppose you can not find an existing package for you distribution. Then, if your package manager uses RPMs, you could search for a source rpm package. If you find a source package, you could simply use RPM to create a binary package on your computer for your computer. Suppose you have a package named gawk-3.1.3-3.src.rpm . Under Fedora Core you could use the command rpmbuild --rebuild gawk-3.1.3-3.src.rpm which would create a binary package I could then install. This method works if the options for your distribution are handled by the rpm spec file.
So what happens if you can not find an rpm source package that will compile on your system? The answer is to refer to a previous lesson Compile your own programs from Source .
If you want to find a specific package, I recommend using Google to search for the application and your distribution. This is often the best method of finding a specific application for a particular distribution.
How about toss a coin?
Picking a Linux distribution can be a complex task if you want to go through a evaluation process. In this presentation I have tried to give you some tools to allow you to make intelligent decisions about which distribution to use.
To summarize the best way to make a decision is to spend some time learning about distributions. Spend some time talking to people who are more familiar with Linux. And finally plan on spending some time learning about what ever distribution you choose.
Probably the most important issue is that no matter what distribution you choose, it will only be as good as you make it.
An interesting web page I found was Distribution Screen Shots. They have screen shots of a large number of distributions. So you can get a preview of what a particular distribution will look like once it is installed.