An Overview of GNU Software


An Overview of GNU Software

As a Red Hat Linux user, you may not realize the extent to which Red Hat Linux (and, for that matter, all Linux distributions) relies on GNU software. Nearly all tasks you perform in a Red Hat Linux system involve one or more GNU software packages. For example, the GNOME GUI and the Bash shell are both GNU software. If you rebuild the kernel or develop software, you do so with the GNU C and C++ compiler and the make utility; both are parts of the GNU software packages that accompany all Linux distributions. If you edit text files with the ed or Emacs editor, you are again using a GNU software package. The list goes on and on. It’s a safe bet that when you are using any Linux system, you are running some GNU software all the time.

One way to appreciate the extent of GNU software in Linux is to take stock of various GNU software packages. Table 8-1 briefly describes some of the well-known GNU software packages that come with Red Hat Linux. You can browse the table to get a feel for the types of tasks you can perform with GNU software.

Table 8-1: Well-Known GNU Software Packages

Software Package

Description

Autoconf

Generates shell scripts that automatically configure source-code packages

Automake

Generates Makefile.in files for use with Autoconf

Bash

The default shell—command interpreter—in Red Hat Linux. (Bash is compatible with the UNIX sh shell and offers many extensions found in csh and ksh shells.)

bc

An interactive calculator with arbitrary precision numbers

Binutils

A package that includes several utilities for working with binary files: ar, as, gasp, gprof, ld, nm, objcopy, objdump, ranlib, readelf, size, strings, and strip

gnuchess

A chess-playing program that regularly beats many good players

GNU C Library

For use with all Linux programs

cpio

Copies file archives to and from disk or to another part of the file system

diff

Compares files, showing line-by-line changes in several different formats

ed

A line-oriented text editor

Emacs

An extensible, customizable full-screen text editor and computing environment

Fileutils

A package that implements the following Linux commands: chgrp, chmod, chown, cp, dd, df, dir, dircolors, du, install, ln, ls, mkdir, mkfifo, mknod, mv, rm, rmdir, sync, touch, and vdir

Findutils

A package that includes the find, locate, and xargs utilities

Finger

A utility program designed to enable users of UNIX systems (including Red Hat Linux) on the Internet to get information about one another

Gawk

The GNU Project’s implementation of the AWK programming language that conforms to the definition of the language in the POSIX 1003.2 Command Language and Utilities Standard

GCC

Compilers for C, C++, Objective C, and other languages

gdb

Source-level debugger for C, C++ and Fortran

gdbm

A replacement for the traditional dbm and ndbm database libraries

gettext

A set of utilities that enables software maintainers to internationalize a software package’s user messages

Ghostscript

An interpreter for the Postscript and Portable Document Format (PDF) languages

Ghostview

An X Window System application that provides a graphical front end to Ghostscript, and enables users to view Postscript or PDF files in a window

The GIMP

The GNU Image Manipulation Program is an Adobe Photoshop-like image-processing program

GNOME

Provides a GUI for a wide variety of tasks that a Linux user might perform

Gnumeric

A graphical spreadsheet (similar to Microsoft Excel) that works in GNOME and can work with Excel 95 format files

grep package

Includes the grep, egrep, and fgrep commands that are used to find lines that match a specified text pattern

Groff

A document formatting system similar to troff

GTK+

A GUI toolkit for the X Window System (used to develop GNOME applications)

gzip

A GNU utility for compressing and decompressing files

indent

Formats C source code by indenting it in one of several different styles

less

A page-by-page display program similar to more, but with additional capabilities

libpng

A library for image files in the Portable Network Graphics (PNG) format

m4

An implementation of the traditional UNIX macro processor that is commonly used to create the sendmail configuration file

make

A utility that determines which files of a large software package need to be recompiled, and issues the commands to recompile them

mtools

A set of programs that enables users to read, write, and manipulate files on a DOS file system (typically a floppy disk, but also Windows partitions of hard drives)

ncurses

A package for displaying and updating text on text-only terminals

patch

A GNU version of Larry Wall’s program to take the output of diff and apply those differences to an original file to generate the modified version

RCS

The Revision Control System is used for version control and management of source files in software projects

sed

A stream-oriented version of the ed text editor

sharutils

A package that includes shar (used to make shell archives out of many files), unshar (to unpack these shell archives), as well as uuencode and uudecode utilities (some open source software installers need uudecode)

shellutils

A package that includes the following utilities, which are part of the Bash shell: basename, chroot, date, dirname, echo, env, expr, factor, false, groups, hostname, id, logname, nice, nohup, pathchk, printenv, printf, pwd, seq, sleep, stty, su, tee, test, true, tty, uname, uptime, users, who, whoami, and yes

tar

A tape archiving program that includes multivolume support; the capability to archive sparse files, handle compression and decompression, and create remote archives; and other special features for incremental and full backups

texinfo

A set of utilities that generates printed manuals, plain ASCII text, and online hypertext documentation (called Info), and that enables users to view and read online Info documents

textutils

A set of utilities such as cut, join, nl, split, tail, wc, and so on, for manipulating text

time

A utility that reports the user, system, and actual time a process uses

The remainder of this chapter introduces you to several categories of GNU utilities.