LFS Package Reference

LFS Package Reference

Written and Maintained by Matthew Burgess

This version dated: 2004-07-19

License: GNU Free Document License

What is this Document?

This is an index to all the packages that make up Linux from Scratch (LFS). Under each package we list, in this order:

  1. The homepage for the package, or the freshmeat.net page if there isn't a homepage we know about.

  2. The URL of the manual, possibly the man page, but something to let you learn what the package does and how to use it. There are a few packages where we either have nothing yet to tell you here, or the homepage is the best reference for manuals that we know.

  3. Optionally, the URL's of interesting and informative material that may help you understand the package better, use it for some common task, or be otherwise educational.

Why would I want to use this material?

You might ask if there is any value in this list: "doesn't the LFS book contain all I need to build LFS?"

Well yes it does, but only just sufficient information, and a little extra educational material so that you can troubleshoot as you proceed. But what if you want to use your new LFS system? Don't you want to know what you have just built?

Here is a starting place to understand the software you have already installed, but have so far only used to build the system itself.

How is the document maintained, and how can I help?

When there is a new major release of LFS we review this document to check if there are any new packages we need to include, or perhaps some we don't need any more. Apart from that the content relies on people like you sending suggestions to the document maintainer.

If you find a useful on-line document about one of the LFS packages, just send an email to the maintainer with:

  1. The URL of the material.

  2. A short explanation of why you think it should be included here.

You can also email to say you found something here to be less useful than you hoped, but we may disagree!

You may feel that your current expertise is too lowly to contribute, but you are wrong; it is only by using the experiences of people while they are learning that we can find out which are the best learning tools. Please take the time to give us some feedback if you can.

We are also interested in the views of people whose first language is not English. However, because we only speak English fluently, it's hard for us to maintain lists of good references for other languages. If you can do that for your language we will happily provide a link to your document.


The Package Index

Autoconf

Installation depends on: Bash Coreutils Diffutils Grep M4 Make Perl Sed

Autoconf is an extensible package of m4 macros that produce shell scripts to automatically configure software source code packages.

The ./configure scripts that you run to start the build of almost every source package was built by Autoconf. If you ever want to write your own OpenSource package, or build one from CVS, you need to be able to use Autoconf.

Autoconf homepage

Autoconf manual

GNU Autoconf, AutoMake and Libtool. a printed and on-line book. Universally known as The Goat Book

Learning Autoconf and Automake a tutorial.

Automake

Installation depends on: Autoconf Bash Coreutils Diffutils Grep M4 Make Perl Sed

Automake is a tool for automatically generating `Makefile.in' files compliant with the GNU Coding Standards.

Automake is the second part of the GNU auto-tools. If you need Autoconf, then you need Automake too.

Automake homepage

Automake manual

Check-out the Autoconf section for other refrerences

Bash

Bash is the GNU Project's Bourne Again SHell, a complete implementation of the POSIX.2 shell specification with interactive command line editing, job control on architectures that support it, csh-like features such as history substitution and brace expansion, and a slew of other features.

The effective use of your shell is the single most important skill that you need to make use of LFS. If and until you build a graphical environment, such as XFree86, you will be interacting with Linux through the shell. The shell we built for LFS is BASH.

Bash homepage

GNU Bash Reference Manual (on-line)

GNU Bash Reference Manual (for paper orders, and PDF download)

The Advanced Bash Scripting Guide

Bash Programming - Introduction HOWTO

Working more productively with BASH 2.x

Learning the bash Shell, 2nd Edition, a recommended paper book.

Binutils

The GNU Binutils are a collection of binary tools.

These are useful tools to manipulate and interogate object libraries and programs. If you ask difficult questions on LFS-Support, you may be asked to use these tools, here's where you find out what they do.

Binutils homepage

Manual index for the constituent programs of binutils

Bison

Bison is a general-purpose parser generator that converts a grammar description for an LALR context-free grammar into a C program to parse that grammar.

When UNIX was young, many people attempted to write software to generate compilers automatically from a definition of the language that they were intended to compile. One such attempt was called: Yet Another Compiler-Compiler, or YACC for short. Bison is a modern yacc. (Joke Hint: Both are ungulates, only one is Tibetan)

You can use a LALR grammar to describe many computer languages, and then use bison to parse them.

Bison homepage

Bison reference manual

The Lex and Yacc Page helps put these tools into context.

lex & yacc, 2nd Edition a paper book that covers Bison.

Bzip2

Installation depends on: Bash Binutils Coreutils Diffutils Gcc Glibc Grep Make

bzip2 is a freely available, patent free, high-quality data compressor.

There are two formats for compressed files commonly used in the UNIX world, Gzip and Bzip2. LFS builds both packages. Bzip2 is generally slower tha gzip, but compresses more.

Bzip2 homepage

Bzip2 reference manual

The Bzip2 HOWTO

Coreutils

The GNU Core Utilities are the basic file, shell and text manipulation utilities of the GNU operating system.

Early versions of LFS used three packages, fileutils, shellutils, and textutils. but these have now been combined into a single package to provide all the core utilities that a POSIX operating system must provide. Here are all the little utilities to manipulate files in your system.

Coreutils homepage

Coreutils reference manual

Dejagnu

Installation depends on: Bash Binutils Coreutils Diffutils Gcc Glibc Grep Make Sed

DejaGnu is a framework for testing other programs.

LFS uses dejagnu to test that the toolchain (binutils, gcc and glibc) have been successfuly built and installed. Once LFS has been completed and the /tools directory has been deleted, you won't have dejagnu on your system anymore, so if you want it, you should re-install it.

Dejagnu homepage

The GNU Testing Framework Manual

Diffutils

You can use the diff command to show differences between two files, or each corresponding file in two directories.

All the patches supplied as part of LFS were created using diff, it's an important tool.

Diffutils homepage

Comparing and Merging Files with GNU diff and patch, an on-line manual

Comparing and Merging Files with GNU diff and patch, a book in paper or PDF format

E2fsprogs

E2fsprogs provides the filesystem utilities for use with the ext2 filesystem. It also supports the ext3 filesystem with journaling support.

There does not appear to be an on-line manual for e2fsprogs, if you know of one, email a URL.

E2fsprogs homepage

Ed

Installation depends on: Bash Binutils Coreutils Diffutils Gcc Glibc Grep Make Sed

GNU ed is a line-oriented text editor. It's just about as simple as an editor can be, yet it's very useful in scripts. You can learn enough of it in a few minutes.

Ed homepage

A reference manual

Expect

Installation depends on: Bash Binutils Coreutils Diffutils Gcc Glibc Grep Make Sed Tcl

Expect is a tool for automating interactive applications such as telnet, ftp, passwd, fsck, rlogin, tip, etc.

Once LFS has been completed and the /tools directory has been deleted, you won't have expect on your system anymore, so if you want it, you should re-install it.

Expect homepage

An article about using expect in scripts.

Another article about using expect.

File

Installation depends on: Bash Binutils Coreutils Diffutils Gcc Glibc Grep Make Sed Zlib

File attempts to classify files depending on their contents and prints a description if a match is found.

File freshmeat page

An on-line man page for file

Some information about files

Findutils

The GNU Find Utilities are the basic directory searching utilities of the GNU operating system.

Findutils homepage

Finding Files, the on-line Manual

A Very Valuable Find, an on-line article

Flex

Flex is a fast lexical analyser generator.

Back when the world was young and UNIX had just been invented, sad people wanted to analyse texts, so they wrote Lex, a lexical analyser. Flex is a compatible, and faster, rewrite of Lex.

Flex homepage

Flex reference Manual

Checkout the other references under Bison too.

Gawk

Gawk is an implementation of the awk utility. The awk utility interprets a special-purpose programming language that makes it possible to handle simple data-reformatting jobs with just a few lines of code.

When it was invented Awk was one of the seminal computer programs - it really did change the world. Even if you give up on it's complicated syntax, you should still be aware of it. Learning to be fluent in Awk is a little like a European learning Japanese. Wakarimasu ka?

I give you lots of references, but awk needs lots of study.

Gawk homepage

The GNU Awk User's Guide

Getting started with awk

How to get things done with awk ?

An Awk Tutorial

The AWK Programming Language, the book on awk, by awk's inventors

Effective awk Programming, 3rd Edition, a paper book on awk

sed & awk, 2nd Edition, yet another book on awk, this time with sed, two for the price of one!

Gcc

gcc is the GNU Compiler Collection. There really is far too much that could be listed here that we limit ourselves to just the official sites. Program in C, C++, Objective C, Java or ADA, and you'll find out all about GCC.

Gcc homepage

The gcc 3.3.2 reference manual, for other versions navigate from the home page.

Gettext

Gettext is the GNU internationalization library. Packages that link to it properly can interface in many natural languages.

Gettext homepage

Gettext reference manual

Glibc

The GNU C library is used as the C library in the GNU system and most newer systems with the Linux kernel.

It's important to realise that, because most utilities and other libraries are writen in C or C++, the C library underpins far more than just "programming in C". It's the most critical library on your system.

Glibc homepage

Glibc reference manual

Grep

Grep searches one or more input files for lines containing a match to a specified pattern.

Grep homepage

Grep reference manual

A simple grep tutorial

Another grep tutorial

A tip about running grep with find

Groff

Groff (GNU Troff) software is a typesetting package which reads plain text mixed with formatting commands and produces formatted output.

The troff markup language is almost as old as UNIX.

groff homepage

A page of references, unfortunately mostly in postscript.

This is a link to the MOM documents on your own machine.

Grub

GNU GRUB is a Multiboot boot loader.

Grub homepage

The Grub reference manual

Gzip

Installation depends on: Bash Binutils Coreutils Diffutils Gcc Glibc Grep Make Sed

gzip (GNU zip) is a compression utility designed to be a replacement for compress.

Gzip2 homepage

Gzip2 reference manual

Hotplug

Installation depends on: Not yet evaluated

Hotplug is a set of scripts, designed to be run by the kernel, to initialise and set-up devices on the fly.

Hotplug's homepage - beware this needs updating for Linux-2.6.x

Inetutils

Inetutils is a collection of common network programs.

The best advice I can give on learning these is to read the man pages

Inetutils homepage

Kbd

The kbd package contains keytable files and keyboard utilities.

Kdb freshmeat page

Less

Less is a pager. A pager is a program that displays text files in pagefulls.

Less homepage

LFS-bootscripts

Installation depends on: Bash Coreutils

This package contains the LFS bootscripts. There is no specific homepage, just the:

LFS website

LFS-utils

Installation dependencies not known

This package contains programs that don't warrant building their whole package just to get LFS running. It's maintained by the LFS team, so has no specific homepage, just the:

LFS website

Libtool

Installation depends on: Bash Binutils Coreutils Diffutils Gcc Glibc Grep Make Sed

GNU libtool is a generic library support script. It is part of the GNU AutoTools, with Autoconf and Automake.

Libtool homepage

Libtool manual

Please also see the Autoconf entry.

Linux

Linux is a clone of the operating system Unix, written from scratch by Linus Torvalds with assistance from a loosely-knit team of hackers across the Net.

Linux Kernel Project homepage

The Linux Documentation Project homepage is the source for documents on everything Linux.

M4

GNU m4 is an implementation of the traditional Unix macro processor.

M4 is very important as the GNU Autotools use it. It has not changed for years and years, and may be the most stable UNIX package of all time.

M4 homepage

M4 reference manual

Make

Installation depends on: Bash Binutils Coreutils Diffutils Gcc Gettext Glibc Grep Sed

Make is a tool which controls the generation of executables and other non-source files of a program from the program's source files.

Once the ./configure script has done it's stuff, the rest of a standard package build is done by make. Anyone wishing to learn how to program should have an understanding of how make works.

Make homepage

Make reference manual

MAKEDEV

Installation depends on: Bash Coreutils

MAKEDEV is a script to create the device nodes in /dev. It is LFS specific, and has no homepages except:

LFS Website

Man

Installation depends on: Bash Binutils Coreutils Gcc Gettext Glibc Grep Make Sed

The man page suite, including man, apropos, and whatis consists of programs that are used to read most of the documentation available on a Linux system.

Type 'man man' at a shell prompt, it's the best manual you'll find, however:

On-line man page

Man-pages

Installation depends on: Bash Coreutils Make

The manpages package contains a large collection of man pages for Linux covering programming APIs, file formats, protocols, etc.

Man-pages homepage

Modutils

The modutils package contains utilities that are intended to make a Linux-2.4.x modular kernel manageable for all users, administrators, and distribution maintainers.

A note here for those of an adventurous nature - Linux-2.6 uses a different package, finding it I leave as an exercise for the reader.

Modutils freshmeat page

Ncurses

The ncurses (new curses) library is a free software emulation of System V Release 4.0 curses.

When the early users of UNIX moved on from teletypewriters to vdus, they needed a library to make writing programs for vdus easy. Curses, whose name is an allusion to the cursor, was the result.

Ncurses homepage

Net-tools

Installation depends on: Bash Binutils Coreutils Gcc Gettext Glibc Make

The net-tools package contains a collection of programs that form the base set of the NET-3 networking distribution for the Linux operating system.

Net-tools freshmeat page

Patch

Installation depends on: Bash Binutils Coreutils Diffutils Gcc Glibc Grep Make Sed

Patch takes a patch file containing a difference listing produced by the diff program and applies those differences to one or more original files, producing patched versions.

Patch homepage

Patch reference manual

See also the entries under diffutils

Perl

Installation depends on: Bash Binutils Coreutils Diffutils Gawk Gcc Glibc Grep Make Sed

Perl is a high-level, general-purpose programming language that makes easy things easy and hard things possible.

www.perl.org - The Home of Perl

www.perldoc.com - The Perl documentation site

Procinfo

Installation depends on: Binutils Gcc Glibc Make Ncurses

Procinfo is a package to allow you to get useful information from /proc.

Note: This package will have been removed from LFS in versions after 5.1.1

Procinfo freshmeat page

Procps

Installation depends on: Bash Binutils Coreutils Gcc Glibc Make Ncurses

These utilities report what is running, who is logged in, how long the system has been running, and what is using up memory.

Procps homepage

Psmisc

Miscellaneous proc FS tools: fuser, killall, pidof, and pstree.

Psmisc homepage

Sed

Sed, the GNU Stream Editor, copies the named files (standard input default) to the standard output, edited according to a script of commands.

Sed homepage

Sed reference manual

A sourceforge Sed site with lots of tutorial references

Another website with references and tips (a bit MSDOS oriented though)

sed & awk, 2nd Edition, a book on sed with awk, two for the price of one!

Shadow

The Shadow password file utilities package includes the programs necessary to convert traditional V7 UNIX password files to the SVR4 shadow password format, and additional tools to maintain password and group files (that work with both shadow and non-shadow passwords).

Shadow homepage

Sysklogd

Installation depends on: Binutils Coreutils Gcc Glibc Make

The sysklogd package implements two system log daemons.

Sysklogd freshmeat page

Sysvinit

Installation depends on: Binutils Coreutils Gcc Glibc Make

Sysvinit is the System V init replacement for Linux.

Init is the parent of all processes. Its primary role is to create processes from a script stored in the file /etc/inittab.

Sysvinit freshmeat page

Tar

The tar program provides the ability to create tar archives, as well as various other kinds of manipulation.

Tar homepage

Tar reference manual

Tcl

Installation depends on: Bash Binutils Coreutils Diffutils Gcc Glibc Grep Make Sed

Tcl provides a portable scripting environment for Unix, Windows, and Macintosh that supports string processing and pattern matching, native file system access, shell-like control over other programs, TCP/IP networking, timers, and event-driven I/O.

The Tcl and Tk homepage

Texinfo

Texinfo is a documentation system that uses a single source to produce both on-line information (info, HTML, XML, Docbook) and printed output (DVI, PDF).

Texinfo homepage

Texinfo reference manual

Udev

Installation depends on: Not yet evaluated

Udev is a set of userland utilities to handle dynamic creation and deletion of device node for the Linux-2.6 series kernels.

There is no known homepage for udev, and almost zero documentation. If anyone knows of any documentation, please let me know.

The udev FAQ - very out of date and unhelpful

Util-linux

Util-linux is a suite of essential utilities for any Linux system.

Util-linux homepage

Vim

Vim is an almost fully-compatible version of the Unix editor Vi.

Vim homepage

Vimdoc, the Vim documentation resource

An on-line ebook for students of Vim

Zlib

Installation depends on: Binutils Coreutils Gcc Glibc Make Sed

zlib is designed to be a free, general-purpose, legally unencumbered, lossless data-compression library for use on virtually any computer hardware and operating system.

Zlib homepage