What Linux is Made of
There are many aspects of the Linux operating system
that are difficult to
define. We can refer to individual programs as either utilities or commands,
depending on the extent of their functions. However, it is difficult to label
collections of files. Often, the labels we try to place on these collections do
not accurately describe the relationship of the files. However, I am going to
Linux comes with essentially all the basic UNIX
commands and utilities that
you have grown to know and love (plus some that you don't love so much).
Basic commands like ls and
cat, as well as text manipulation programs like
and awk are available.
If you don't come from a Unix background, then many of the commands may seem
a little obscure and even intimidating. However, as you learn more about them
you will see how useful and powerful they can be, even if it takes longer to learn them.
Linux also comes with a wide range of programming tools and environments,
including the GNU gcc compiler, make, rcs, and even a debugger. Several
languages are available, including Perl, Python, Fortran, Pascal, ADA, and even
Unless you have an extremely low-level distribution, you probably have X11R6
in the form of XFree86 3.x, which contains drivers for a wide range of video
cards. There are a dozen text editors (vi, emacs, jove)
and shells (bash, zsh, ash,
pdksh), plus a wide range of text
processing tools, like TeX and groff. If
you are on a network,
there is also a wide range of networking tools and programs.
Even if you have been working with a Linux or any UNIX
dialect for a while, you
may have heard of certain aspects of the operating system
but not fully
understood what they do. In this section, I'm going to talk about functions that
the system performs as well as some of the programs and files that are
associated with these functions. I'm also going to talk about how many of the
system files are grouped together into what are referred to as
"packages," and discuss some of the more important packages.
To install, remove, and administer these packages on a
Slackware-derived system, use the pkgtool tool, which is actually a
link to the shell
script cpkgtool. This tool can be called from
the command line
directly or by the /sbin/setup program. Each package comes on
its own set of disks. These packages are:
- A Base Linux System
- AP various applications that do not need X
- D Program Development (C, C++, Lisp, Perl, etc.)
- E GNU emacs
- F FAQ
- I Info files readable with info, JED, or emacs
- IV InterViews Development + Doc and Idraw apps for X
- N Networking (TCP/IP, UUCP,
- OOP Object-Oriented Programming (GNU Smalltalk 1.1.1)
- Q Extra Linux kernels with custom drivers
- T TeX ,text
- TCL Tcl/Tk/TclX, Tcl language and Tk toolkit for X
- X XFree-86 3.1 X Window System
- XAP X
- XD XFree-86 3.1 X11 Server Development System
- XV XView 3.2 (OpenLook Window Manager, apps)
- Y games (that do not require X)
Why is it important to know the names of the different packages?
Well, for the average user, it really isn't.
However, the average user logs on, starts an application
and has very little or
no understanding of what lies under the application.
The mere fact that you are
reading this says to me that you want to know more about the operating
system and how things work. Because these packages are the building blocks of
the operating system
(at least in terms of how it exists on the hard disk),
knowing about them is an important part of understanding the whole system.
Plus one of the key advantages that Linux has over Windows is the ability to
selectively install and remove packages with much finer granularity. For example, you can
add and remove individual programs to a greater extent with Linux than you can with Windows. Further
there are fewer groups of programs in Windows (such a group of programs is often called a "package"
in Linux. This allows you to pick and chose what you want to install to a greater extent.
Therefore, knowing where each package resides (or at
least having a starting point) is a big a help.
To be able to do any work on a Linux system, you must first install software.
Most people think of installing software as adding a word processing program or
database application; but any program on the operating system
needs to be
installed at one time or another. Even the operating system
Earlier, I referred to the Linux operating system
as all the
files and programs on the hard disk. For the moment, I want to restrict the
definition of "operating system" to just those files that are
necessary for "normal" operation. Linux (at least Slackware) has
defined that set of programs and files as the Base Linux System, or Base
Package. Although there are many files in the Base Package that could be left
out to have a running system, this is the base set that is usually
Many versions of Linux are now using the Red Hat Package Manager (RPM)
format. In fact, RPM is perhaps the format most commonly
found on the Internet. Most sites will have new or updated programs as RPM files.
You can identify this format by the rpm extension to the file name.
proven itself to be a much more robust mechanism for adding and removing
packages, as it is much easier to add and manage single programs than with
Slackware. We'll get into more detail about this when I talk about installing.
You will also find that RPM
packages are also grouped into larger sets like those in
Slackware, so the concepts are the same.
Although most commercial distributions use the RPM
format, there are often a
number of differences in which package groups there are and which programs and
applications appear in which group. For example, later SuSE distribution has
the following package group:
- a1 - Linux Base System (required)
- ap1 - Applications which do not need X
- ap4 - Applications which do not need X
- d1 - Development (C, C++, Lisp, etc.)
- doc1 - Documentation
- doc4 - Documentation
- e1 - Emacs
- fun1 - Games and more
- gra1 - All about graphics
- gra3 - All about graphics
- k2de1 - KDE2 - K Desktop Environment (Version 2)
- n1 - Network-Support (TCP/IP, UUCP,
- perl1 - Perl modules
- sec1 - Security related software
- snd1 - Sound related software
- spl1 - Spell checking utilities and databases
- tcl1 - Tcl/Tk/TclX, Tcl-Language and Tk-Toolkit for X
- tex1 - TeX/LaTeX and applications
- x1 - Base X Window System - XFree86\tm
- x3d1 - 3D software for X11 and console
- xap1 - X
- xdev1 - Development under X11
- xsrv1 - Several X
- xsrv2 - Several X
- xsrv3 - Several X
- xsrv4 - Several X
- xv1 - XView (OpenLook, Applications)
- xwm1 - Window managers and desktop environments
- yast1 - YaST Components
- zq - source packages
Note that in the case of SuSE, when you are in the administration tool (YAST), the
names of these groups will probably appear somewhat different. For example, there
are two groups of applications: those that need X-Windows and those that do not.
When you are in YAST, there are two dozen application
groups, such as
spreadsheets, math and databases. The groups listed above are how you might find
them on the CD and date from a time when you did not have many applications
and there were few distributions. Most people got Linux from the net and these
package groups were pretty convenient.
Today, SuSE is on several CDs and just
to make things easier, you are also given a DVD or two depending on which package you get. Also the package groups have changed as you see in the following figure:
If you compare the previous list to the groups you see here, you will notice that the groupings are similar but not identical. Tools like YaST are able to determine what other packages are required and today there is really no need to group packages to make downloading easier. Typically, you will either order or download them. There are a number of places where you can download complete packages, but you have to spend the time downloading ISO images and the burnign the CDs or DVS. Or, you can save yourself time and money by ordering them from places like OS Heaven.