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:
-
The homepage for the package, or the freshmeat.net page if there isn't a homepage we know about.
-
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.
-
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:
-
The URL of the material.
-
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
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.
GNU Autoconf, AutoMake and Libtool. a printed and on-line book. Universally known as The Goat Book
Learning Autoconf and Automake a tutorial.
Automake
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.
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.
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.
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.
The Lex and Yacc Page helps put these tools into context.
lex & yacc, 2nd Edition a paper book that covers Bison.
Bzip2
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.
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.
Dejagnu
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.
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.
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.
Ed
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.
Expect
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.
File
File attempts to classify files depending on their contents and prints a description if a match is found.
Findutils
The GNU Find Utilities are the basic directory searching utilities of the GNU operating system.
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.
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.
How to get things done with awk ?
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.
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.
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.
Grep
Grep searches one or more input files for lines containing a match to a specified pattern.
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.
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.
Gzip
gzip (GNU zip) is a compression utility designed to be a replacement for compress.
Hotplug
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
Kbd
The kbd package contains keytable files and keyboard utilities.
Less
Less is a pager. A pager is a program that displays text files in pagefulls.
LFS-bootscripts
This package contains the LFS bootscripts. There is no specific homepage, just the:
LFS-utils
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:
Libtool
GNU libtool is a generic library support script. It is part of the GNU AutoTools, with Autoconf and Automake.
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.
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.
Make
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.
MAKEDEV
MAKEDEV is a script to create the device nodes in /dev. It is LFS specific, and has no homepages except:
Man
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:
Man-pages
The manpages package contains a large collection of man pages for Linux covering programming APIs, file formats, protocols, etc.
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.
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.
Net-tools
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.
Patch
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.
See also the entries under diffutils
Perl
Perl is a high-level, general-purpose programming language that makes easy things easy and hard things possible.
Procinfo
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
Procps
These utilities report what is running, who is logged in, how long the system has been running, and what is using up memory.
Psmisc
Miscellaneous proc FS tools: fuser, killall, pidof, and pstree.
Sed
Sed, the GNU Stream Editor, copies the named files (standard input default) to the standard output, edited according to a script of commands.
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).
Sysklogd
The sysklogd package implements two system log daemons.
Sysvinit
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.
Tar
The tar program provides the ability to create tar archives, as well as various other kinds of manipulation.
Tcl
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.
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).
Udev
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.
Vim
Vim is an almost fully-compatible version of the Unix editor Vi.