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 try.
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 sed 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 Modula-3.
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 lists, HOWTO documentation
- I Info files readable with info, JED, or emacs
- IV InterViews Development + Doc and Idraw apps for X
- N Networking (TCP/IP, UUCP, Mail, News)
- OOP Object-Oriented Programming (GNU Smalltalk 1.1.1)
- Q Extra Linux kernels with custom drivers
- T TeX ,text processing system
- TCL Tcl/Tk/TclX, Tcl language and Tk toolkit for X
- X XFree-86 3.1 X Window System
- XAP X applications
- 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). Grouping software like 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 itself was installed.
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 installed.
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.
This has 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, Mail, News)
- 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 Applications
- xdev1 – Development under X11
- xsrv1 – Several X Servers (XFree86)
- xsrv2 – Several X Servers (XFree86)
- xsrv3 – Several X Servers (XFree86)
- xsrv4 – Several X Servers (XFree86)
- 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