Beyond Linux® From Scratch

Version 6.2.0

BLFS Development Team

Copyright © 2001-2007, BLFS Development Team

All rights reserved.

Descriptive text is licensed under a Creative Commons License.

Computer instructions are licensed under the Academic Free License v. 2.1.

Linux® is a registered trademark of Linus Torvalds.

2007-02-14

Revision History
Revision 6.2.0 2007-02-14 Sixth release
Revision 6.1 2005-08-14 Fifth release
Revision 6.0 2005-04-02 Fourth release
Revision 5.1 2004-06-05 Third release
Revision 5.0 2003-11-06 Second release
Revision 1.0 2003-04-25 First release

Abstract

This book follows on from the Linux From Scratch book. It introduces and guides the reader through additions to the system including networking, graphical interfaces, sound support, and printer and scanner support.


Dedication

This book is dedicated to the LFS community

Table of Contents

Preface

Having helped out with Linux From Scratch for a short time, I noticed that we were getting many queries as to how to do things beyond the base LFS system. At the time, the only assistance specifically offered relating to LFS were the LFS hints (http://www.linuxfromscratch.org/hints). Most of the LFS hints are extremely good and well written but I (and others) could still see a need for more comprehensive help to go Beyond LFS - hence BLFS.

BLFS aims to be more than the LFS-hints converted to XML although much of our work is based around the hints and indeed some authors write both hints and the relevant BLFS sections. We hope that we can provide you with enough information to not only manage to build your system up to what you want, whether it be a web server or a multimedia desktop system, but also that you will learn a lot about system configuration as you go.

Thanks as ever go to everyone in the LFS/BLFS community; especially those who have contributed instructions, written text, answered questions and generally shouted when things were wrong!

Finally, we encourage you to become involved in the community; ask questions on the mailing list or news gateway and join in the fun on #lfs at irc.linuxfromscratch.org. You can find more details about all of these in the Introduction section of the book.

Enjoy using BLFS.

Mark Hymers
markh <at> linuxfromscratch.org
BLFS Editor (July 2001–March 2003)

I still remember how I found the BLFS project and started using the instructions that were completed at the time. I could not believe how wonderful it was to get an application up and running very quickly, with explanations as to why things were done a certain way. Unfortunately, for me, it wasn't long before I was opening applications that had nothing more than "To be done" on the page. I did what most would do, I waited for someone else to do it. It wasn't too long before I am looking through Bugzilla for something easy to do. As with any learning experience, the definition of what was easy kept changing.

We still encourage you to become involved as BLFS is never really finished. Contributing or just using, we hope you enjoy your BLFS experience.

Larry Lawrence
larry <at> linuxfromscratch.org
BLFS Editor (March 2003–June 2004)

The BLFS project is a natural progression of LFS. Together, these projects provide a unique resource for the Open Source Community. They take the mystery out of the process of building a complete, functional software system from the source code contributed by many talented individuals throughout the world. They truly allow users to implement the slogan "Your distro, your rules."

Our goal is to continue to provide the best resource available that shows you how to integrate many significant Open Source applications. Since these applications are constantly updated and new applications are developed, this book will never be complete. Additionally, there is always room for improvement in explaining the nuances of how to install the different packages. To make these improvements, we need your feedback. I encourage you to participate on the different mailing lists, news groups, and IRC channels to help meet these goals.

Bruce Dubbs
bdubbs <at> linuxfromscratch.org
BLFS Editor (June 2004–December 2006)

My introduction to the [B]LFS project was actually by accident. I was trying to build a GNOME environment using some how-tos and other information I found on the web. A couple of times I ran into some build issues and Googling pulled up some old BLFS mailing list messages. Out for curiosity, I visited the Linux From Scratch web site and shortly thereafter was hooked. I've not used any other Linux distribution for personal use since.

I can't promise anyone will feel the sense of satisfaction I felt after building my first few systems using [B]LFS instructions, but I sincerely hope that your BLFS experience is as rewarding for you as it has been for me.

The BLFS project has grown significantly the last couple of years. There are more package instructions and related dependencies than ever before. The project requires your input for continued success. If you discover that you enjoy building BLFS, please consider helping out in any way you can. BLFS requires hundreds of hours of maintenance to keep it even semi-current. If you feel confident enough in your editing skills, please consider joining the BLFS team. Simply contributing to the mailing list discussions with sound advice and/or providing patches to the book's XML will probably result in you receiving an invitation to join the team.

Randy McMurchy
randy <at> linuxfromscratch.org
BLFS Editor (December 2006–Present)

Foreword to Version 6.2.0

Version 6.2.0 is the complement to the LFS 6.2 book. More time has elapsed between the release of the previous version (6.1) and this one than in any other release cycle. Much of this is due to the fact that LFS 6.2 took much longer to be released than was originally anticipated. Many new packages have been introduced in the 6.2.0 version, as well as many updates, refinements and additions to the existing packages.

The BLFS book now provides build and configuration instructions for almost 400 packages. Some of the new packages introduced in this version are: autotooled XOrg, HAL, D-BUS, GStreamer (now broken out into separate plugin packages), usbutils, libquicktime, GraphViz, K3b, dvd+rw-tools, NSS, Libidn, GAIM, Poppler, SeaMonkey, XChat, Audacious, cairo and unixODBC. Major updates include GNOME-2.14.3 (with several new GNOME packages such as Totem, gnome-mount and gnome-volume-manager), KDE-3.5.6, Firefox-1.5.x, Thunderbird-1.5.x, and most of the mainline server packages. As always, the list of packages that have been upgraded or added as well as configuration and build command changes are annotated in the Change Log.

Unfortunately, BLFS activity was semi-stagnant for several months after (and shortly before) the LFS 6.2 release. Therefore, many of the packages are somewhat dated (compared to previous BLFS versions). This brings us to why the versioning scheme has changed. This release is 6.2.0 as we fully anticipate releasing another version (6.2.1) just as soon as possible. The 6.2.1 release will also be based on the LFS-6.2 book, but will include updated packages, and fixes for any errors which may be discovered in 6.2.0.

As always, the main thrust of BLFS development will be to support the changes in the current LFS development book, but any changes or updates to the BLFS development book (that are compatible with LFS 6.2) will also be merged into the BLFS 6.2 branch. This way, a 6.2.1 version of BLFS should be released fairly soon, and should provide a very current and stable Linux platform.

Enjoy!

Randy McMurchy
January 31, 2007

Who Would Want to Read this Book

This book is mainly aimed at those who have built a system based on the LFS book. It will also be useful for those who are using other distributions, but for one reason or another want to manually build software and are in need of some assistance. Note that the material contained in this book, in particular the dependency listings, is based upon the assumption that you are using a base LFS system with every package listed in the LFS book already installed and configured. BLFS can be used to create a range of diverse systems and so the target audience is probably nearly as wide as that of the LFS book. If you found LFS useful, you should also like this!

Since Release 5.0, the BLFS book version matches the LFS book version. This book may be incompatible with a previous or latter release of the LFS book.

Organization

This book is divided into the following parts.

Part I - Introduction

This part contains information which is essential to the rest of the book.

Part II - Post LFS Configuration and Extra Software

Here we introduce basic configuration and security issues. We also discuss a range of editors, file systems, and shells which aren't covered in the main LFS book.

Part III - General Libraries and Utilities

In this section we cover libraries which are often needed by the rest of the book as well as system utilities. Information on Programming (including recompiling GCC to support its full range of languages) concludes this part.

Part IV - Connecting to a Network

Here we cover how to connect to a network when you aren't using the simple static IP setup given in the main LFS book.

Part V - Basic Networking

Networking libraries and command-line networking tools make up the bulk of this part.

Part VI - Major Servers

Here we deal with setting up mail and other servers (such as SSH, Apache, etc.).

Part VII - X + Window Managers

This part explains how to set up a basic X Window System installation along with some generic X libraries and Window managers.

Part VIII - KDE

For those who want to use the K Desktop Environment or some parts of it, this part covers it.

Part IX - GNOME

GNOME is the main alternative to KDE in the Desktop Environment arena and we cover both GNOME-1.4 and GNOME-2.14 here.

Part X - X Software

Office programs and graphical web browsers are important to most people. They, along with some generic X software can be found in this part of the book.

Part XI - Multimedia

Here we cover setting multimedia libraries and drivers along with some audio, video and CD-writing programs.

Part XII - Printing, Scanning and Typesetting (PST)

The PST part of the book covers document handling with applications like Ghostscript, CUPS and DocBook to installing teTeX.

Appendices

The Appendices cover information which doesn't belong in the main book; they are mainly there as a reference.

Errata

The software used to create BLFS applications is constantly being updated and enhanced. Security warnings and bug fixes may become available after the BLFS book has been released. To check whether the package versions or instructions in this release of BLFS need any modifications to accommodate security vulnerabilities or other bug fixes, please visit http://www.linuxfromscratch.org/blfs/errata/6.2.0/ before proceeding with your build. You should note any changes shown and apply them to the relevant section of the book as you progress with building the applications in BLFS.

Part I. Introduction

Chapter 1. Welcome to BLFS

The Beyond Linux From Scratch book is designed to carry on from where the LFS book leaves off. But unlike the LFS book, it isn't designed to be followed straight through. Reading the Which sections of the book? part of this chapter should help guide you through the book.

Please read most of this part of the book carefully as it explains quite a few of the conventions used throughout the book.

Acknowledgments

We would like to thank the following people and organizations for their contributions toward the BLFS and LFS projects:

  • All those people listed on the Credits page for submitting patches, instructions and corrections to the book. The former editor would especially like to thank Bruce, Larry and Billy for their enormous inputs to the project.

  • Jeff Bauman (former co-editor of the book) for his assistance with getting BLFS off the ground.

  • Gerard Beekmans <gerard <at> linuxfromscratch.org> for starting and writing the vast majority of the LFS project.

  • Robert Briggs for donating the linuxfromscratch.org and linuxfromscratch.com domain names.

  • DREAMWVR.COM for their ongoing sponsorship by donating various resources to the LFS and related sub projects.

  • Bruce Dubbs for donating the anduin package server and his substantial contribution to the purchase of the new quantum server.

  • Garrett LeSage <garrett <at> linux.com> for creating the LFS banner.

  • Frank Skettino <bkenoah <at> oswd.org> at OSWD for coming up with the initial design of the LFS and BLFS websites.

  • Mark Stone <mstone <at> linux.com> for donating the original linuxfromscratch.org servers.

  • Jesse Tie-Ten-Quee <higho <at> @linuxfromscratch.org> for answering many questions on IRC, having a great deal of patience and for not killing the former editor for the joke in the original BLFS announcement!

  • Countless other people on the various LFS and BLFS mailing lists who are making this book possible by giving their suggestions, testing the book and submitting bug reports.

Credits

Many people have contributed both directly and indirectly to BLFS. This page lists all of those we can think of. We may well have left people out and if you feel this is the case, drop us a line. Many thanks to all of the LFS community for their assistance with this project. If you are in the list and wish to have your email address included, again please drop us a line to randy AT linuxfromscratch D0T org and we'll be happy to add it. We don't include email addresses by default so if you want it included, please state so when you contact us.

Editors

  • Editor: Randy McMurchy <randy AT linuxfromscratch D0T org>

  • Co-Editors: Bruce Dubbs, Larry Lawrence, Igor Zivkovic, DJ Lucas, Tushar Teredesai, David Jensen, Archaic, Manuel Canales Esparcia, Dan Nicholson, Andy Benton and Alexander E. Patrakov.

Text Authors

  • Chapter 01. Based on the LFS introductory text by Gerard Beekmans, modified by Mark Hymers for BLFS.

  • Chapter 02: The /usr versus /usr/local debate: Andrew McMurry.

  • Chapter 02: Going beyond BLFS: Tushar Teredesai.

  • Chapter 02: Package Management: Tushar Teredesai.

  • Chapter 02: Automated Building Procedures: Randy McMurchy.

  • Chapter 02: Locale Related Issues: Alexander Patrakov and Randy McMurchy.

  • Chapter 03: /etc/inputrc: Chris Lynn.

  • Chapter 03: Customizing your logon & vimrc: Mark Hymers.

  • Chapter 03: /etc/shells: Igor Zivkovic.

  • Chapter 03: Random number script Larry Lawrence.

  • Chapter 03: Creating a Custom Boot Device Bruce Dubbs.

  • Chapter 03: The Bash Shell Startup Files James Robertson revised by Bruce Dubbs.

  • Chapter 03: Compressed docs Olivier Peres.

  • Chapter 04: Firewalling: Henning Rohde with thanks to Jeff Bauman. Revised by Bruce Dubbs.

  • Chapter 11: Which Mark Hymers with many thanks to Seth Klein and Jesse Tie-Ten-Quee.

  • Chapter 25: X Window System Environment: Bruce Dubbs.

  • Chapter 27: Intro to Window Managers: Bruce Dubbs.

  • Chapters 28 and 29: KDE: Bruce Dubbs.

  • Chapters 30, 31, and 32: GNOME: Larry Lawrence.

Installation Instruction Authors

  • traceroute: Jeff Bauman

  • ProFTPD and rsync: Daniel Baumann

  • joe, nano, nmap, slang, w3m and whois: Timothy Bauscher

  • Fetchmail and WvDial: Paul Campbell

  • CDParanoia, mpg123, SDL and XMMS: Jeroen Coumans

  • UDFtools, Perl modules (initial version) and Bluefish: Richard Downing

  • sudo, wireless_tools: Bruce Dubbs

  • tripwire: Manfred Glombowski

  • alsa, cvs, dhcpcd, gpm, hdparm, libjpeg, libmng, libpng, libtiff, giflib, links, lynx, openssl, tcsh, which and zsh: Mark Hymers

  • ALSA Firmware, ALSA OSS, inetutils, GLib, GTK+, libxml and vim: James Iwanek

  • db and lcms: Jeremy Jones and Mark Hymers

  • aalib, Alsa, ffmpeg, MPlayer, transcode, xvid and xsane: Alex Kloss

  • ntp: Eric Konopka

  • AbiWord, at-spi, ATK, audiofile, avifile, bc, bonobo-activation, bug-buddy, cdrdao, cdrtools, cpio, curl, dhcp, eog, esound, fcron, fluxbox, gail, galeon, gconf-editor, gdbm, gedit, gimp, GLib2, gmp, gnet, gnome-applets, gnome-desktop, gnome-games, gnome-icon-theme, gnome-libs, gnome-media, gnome-mime-data, gnome-panel, gnome-session, gnome-system-monitor, gnome-terminal, gnome-themes, gnome-utils, gnome-vfs, gnome-user-docs, gnumeric, GTK+2, gtk-doc, gtk-engines, eel, imlib, intltool, lame, libao, libart_lgpl, libbonobo, libbonoboui, libgail-gnome, libglade2, libgnome, libgnomecanvas, libgnomeprint, libgnomeprintui, libgnomeui, libgsf, libgtkhtml, libgtop, libIDL, libogg, librep, librsvg, libvorbis, libwnck, libxml2, libxslt, LPRng, Linux-PAM, metacity, MIT Kerberos 5, MPlayer, mutt, nautilus, oaf, OpenJade, OpenSP, OpenSSH, ORBit, ORBit2, pan, Pango, pcre, pkgconfig, postfix, procmail, Python, QT, rep-gtk, ruby, sawfish, scrollkeeper, sgml-common, sgml-dtd, shadow, startup-notification, unzip, vorbis-tools, vte, wget, XFce, xine, xml-dtd, yelp and zip: Larry Lawrence

  • Archive::Zip, cracklib, JDK-5, libdrm, libpcap, Mesa, ncpfs, netfs, OpenOffice-2, pppd (update), RP-PPPoE, Samba-3, Subversion, Xorg-7 and xterm: DJ Lucas

  • ALSA Tools, Apache Ant, cairo, Cyrus-SASL, D-BUS, DejaGnu, desktop-file-utils, DocBook DSSSL Stylesheets, DocBook-utils, dvd+rw-tools, Ethereal, Evince, Evolution Data Server, Exim (many additions), Expect, FOP, FreeTTS, FriBidi, GC, GCC (rewrite), GMime, gnome-audio, gnome-backgrounds, gnome-menus, gnome-mount, gnome-screensaver, gnome-volume-manager, GNOME Doc Utils, GNOME Keyring Manager, GnuCash (many additions), GOffice, Graphviz, GStreamer Base Plug-ins, GStreamer Good Plug-ins, GStreamer Ugly Plug-ins, HAL, Heimdal, HTML Tidy, ISO Codes, JadeTeX, Java Access Bridge, K3b, LessTif (rewrite), libexif, libgail-gnome, libgnomecups, Libidn, libmpeg2, libmusicbrainz, libquicktime, MIT Kerberos V5 (many updates and enhancements), MPlayer (extensive overhaul), NSS, Other Programming Tools, PDL, Perl Modules, pilot-link, Poppler, PyXML, Samba 3 (many additions), SANE (original instructions by Alex Kloss), Shadow (rewrite), SLIB, Sound Juicer, Stunnel, Sysstat, system-tools-backends, Totem, unixODBC and usbutils: Randy McMurchy

  • aspell, balsa, bind, bonobo, bonobo-conf, cvs server, emacs, evolution, exim, expat, gnome-print, GnuCash, gtkhtml, guppi, guile, g-wrap, leafnode, lesstif, libcapplet, libesmtp, libghttp, libglade, pine, portmap, PostgreSQL, qpopper, reiserfs, Samba, sendmail, slrn, soup, teTeX, tcp-wrappers, and xinetd: Billy O'Connor

  • Gimp-Print, libusb and TIN: Alexander E. Patrakov

  • Screen: Andreas Pedersen

  • nfs-utils: Reinhard

  • ESP Ghostscript: Matt Rogers

  • iptables: Henning Rohde

  • fontconfig, gcc, jdk, mozilla, nas, openoffice, ispell, mailx, ImageMagick, hd2u, tcl, tk and bind-utils: Tushar Teredesai

  • MySQL: Jesse Tie-Ten-Quee

  • PHP: Jeremy Utley

  • Ekiga, Epiphany, FLAC, File Roller, GNOME Magnifier, GNOME Netstatus, GNOME Speech, GOK, Gnopernicus, Imlib2, LZO, MC, NASM, Nautilus CD Burner, Speex, XScreenSaver, Zenity, compface, freeglut, gcalctool, gucharmap, id3lib, kde-i18n, kdeaccessibility, kdebindings, kdesdk, kdevelop, kdewebdev, libFAME, liba52, libdv, libdvdcss, libdvdread, libmad, libmikmod and libmpeg3: Igor Zivkovic

General Acknowledgments

  • Fernando Arbeiza for doing great quality assurance on Shadow utilizing PAM. The machine access he saved may have been yours.

  • Miguel Bazdresch for many suggestions and contributions to the Other Programming Tools section.

  • Gerard Beekmans for generally putting up with us and for running the whole LFS project.

  • Oliver Brakmann for developing the dhcpcd patch for FHS compliance.

  • Ian Chilton for writing the nfs hint.

  • Nathan Coulson for writing the new network bootscripts.

  • Nathan Coulson, DJ Lucas and Zack Winkles for reworking the bootscripts used throughout the book.

  • Jim Harris for writing the dig-nslookup-host.txt hint on which the bind-utils instructions are based.

  • Lee Harris for writing the gpm.txt hint on which our gpm instructions are based.

  • Marc Heerdink for creating patches for tcp_wrappers and portmap and for writing the gpm2.txt hint on which our gpm instruction are based.

  • Mark Hymers for initiating the BLFS project and writing many of the initial chapters of the book.

  • J_Man for submitting a gpm-1.19.3.diff file on which our gpm instructions are based.

  • Jeremy Jones (otherwise known as mca) for hacking Makefiles and general assistance.

  • Steffen Knollmann for revising the JadeTeX instructions to work with teTex-3.0.

  • Eric Konopka for writing the ntp.txt hint on which the ntp section is based.

  • Scot McPherson for writing the gnome-1.4.txt hint from which was gathered useful information and for warning us that GNOME Version 2.0 may not be ready to put in the book.

  • Alexander E. Patrakov for patches and suggestions to improve the book content, assistance with alsa dev.d helpers, and increasing the l10n awareness.

  • Ted Riley for writing the Linux-PAM + CrackLib + Shadow hint on which reinstalling Shadow to use PAM is based.

  • Jeremy Byron and David Ciecierski for assisting with, modifying, and testing various OpenOffice-2.0-pre builds and patches.

Which Sections of the Book Do I Want?

Unlike the Linux From Scratch book, BLFS isn't designed to be followed in a linear manner. This is because LFS provides instructions on how to create a base system which is capable of turning into anything from a web server to a multimedia desktop system. BLFS is where we try to guide you in the process of going from the base system to your intended destination. Choice is very much involved.

Everyone who reads the book will want to read certain sections. The Introduction part, which you are currently reading, contains generic information. Especially take note of the information in Chapter 2, Important Information, as this contains comments about how to unpack software, issues related to using different locales and various other aspects which apply throughout the book.

The part on Post LFS Configuration and Extra Software is where most people will want to turn next. This deals with not just configuration but also Security (Chapter 4, Security), File Systems (Chapter 5, File Systems), Editors (Chapter 6, Editors) and Shells (Chapter 7, Shells). Indeed, you may wish to reference certain parts of this chapter (especially the sections on Editors and File Systems) while building your LFS system.

Following these basic items, most people will want to at least browse through the General Libraries and Utilities part of the book. This part contains information on many items which are prerequisites for other sections of the book as well as some items (such as Chapter 12, Programming) which are useful in their own right. Note that you don't have to install all of these libraries and packages found in this part to start with as each BLFS installation procedure tells you which packages it depends upon so you can choose the program you want to install and see what it needs.

Likewise, most people will probably want to look at the Connecting to a Network and Basic Networking parts. The first of these deals with connecting to the Internet or your LAN using a variety of methods such as DHCP (Chapter 14, DHCP Clients) and Dial-Up Connections (Chapter 13, Dial-up Networking). The second of these parts deals with items such as Networking Libraries (Chapter 16, Networking Libraries) and various basic networking programs and utilities.

Once you have dealt with these basics, you may wish to configure more advanced network services. These are dealt with in the Servers part of the book. Those wanting to build servers should find a good starting point there. Note that this section also contains information on various database packages.

The next parts of the book principally deal with desktop systems. This portion of the book starts with a part talking about X and Window Managers. This part also deals with some generic X-based libraries (Chapter 26, X Libraries). After this, KDE and GNOME are given their own parts which are followed by one on X Software.

The book then moves on to deal with Multimedia packages. Note that many people may want to use the ALSA-1.0.13 instructions from this chapter quite near the start of their BLFS journey; they are placed here simply because it is the most logical place for them.

The final part of the main BLFS book deals with Printing, Scanning and Typesetting. This is useful for most people with desktop systems and even those who are creating mainly server systems will find it useful.

We hope you enjoy using BLFS and find it useful.

Conventions Used in this Book

To make things easy to follow, there are a number of conventions used throughout the book. Following are some examples:

./configure --prefix=/usr

This form of text is designed to be typed exactly as seen unless otherwise noted in the surrounding text. It is also used to identify references to specific commands.

install-info: unknown option
`--dir-file=/mnt/lfs/usr/info/dir'

This form of text (fixed width text) is showing screen output, probably a result from issuing a command. It is also used to show filenames such as /boot/grub/grub.conf

Emphasis

This form of text is used for several purposes in the book but mainly to emphasize important points or to give examples as to what to type.

http://www.linuxfromscratch.org/

This form of text is used for hypertext links external to the book such as HowTos, download locations, websites, etc.

SeaMonkey-1.1

This form of text is used for links internal to the book such as another section describing a different package.

cat > $LFS/etc/group << "EOF"
root:x:0:
bin:x:1:
......
EOF

This type of section is used mainly when creating configuration files. The first command (in bold) tells the system to create the file $LFS/etc/group from whatever is typed on the following lines until the sequence EOF is encountered. Therefore, this whole section is generally typed as seen.

<REPLACED TEXT>

This form of text is used to encapsulate text that should be modified and is not to be typed as seen, or copy and pasted. Note that the square brackets are not part of the text, but should be substituted for as well.

root

This form of text is used to show a specific system user or group reference in the instructions.

Book Version

This is BLFS-BOOK version 6.2.0 dated February 14th, 2007. This version is intended as the complement to the LFS 6.2 book.

Mirror Sites

The BLFS project has a number of mirrors set up world-wide to make it easier and more convenient for you to access the website. Please visit the http://www.linuxfromscratch.org/mirrors.html website for the list of current mirrors.

Getting the Source Packages

Within the BLFS instructions, each package has two references for finding the source files for the package—an HTTP link and an FTP link (some packages may only list one of these links). Every effort has been made to ensure that these links are accurate. However, the World Wide Web is in continuous flux. Packages are sometimes moved or updated and the exact URL specified is not always available.

To overcome this problem, the BLFS Team, with the assistance of Server Beach, has made an HTTP/FTP site available at anduin.linuxfromscratch.org. This site has all the sources of the exact versions of the packages used in BLFS. If you can't find the BLFS package you need, get it there.

We would like to ask a favor, however. Although this is a public resource for you to use, we do not want to abuse it. We have already had one unthinking individual download over 3 GB of data, including multiple copies of the same files that are placed at different locations (via symlinks) to make finding the right package easier. This person clearly did not know what files he needed and downloaded everything. The best place to download files is the site or sites set up by the source code developer. Please try there first.

Change Log

Please note that the Change Log only lists which editor was responsible for putting the changes into SVN; please read the Credits page in Chapter 1 for details on who wrote what.

Current release: 6.2.0 – February 14th, 2007

Changelog Entries:

  • February 14th, 2007

    • [randy] - Released BLFS Version 6.2.0.

    • [randy] - Added an FTP download URL in the Links instructions as the HTML URL is currently unavailable.

    • [dnicholson] - Added a patch from Ag Hatzimanikas to fix issues with UTF-8 in Vorbis Tools.

    • [randy] - Added an additional parameter to the Expect configure command to fix a build problem in certain situations; also added a note to run the test suite.

    • [dnicholson] - Fixed three package link labels to match their titles. Thanks to Chuck Rohde.

    • [randy] - Minor modifications to the MesaLib instructions, both text explanations and commands.

  • February 13th, 2007

    • [dnicholson] - Textual fixes from Chuck Rohde.

    • [dnicholson] - Added text be more explicit that luit is not a required dependency of xterm.

    • [dnicholson] - Added a reminder to set the necessary variables when building packages for Xorg-7.

    • [dnicholson] - Reverted two changes in MC and ReiserFS specific to LFS-SVN.

  • February 11th, 2007

    • [dnicholson] - Add information for running the Vim testsuite. Patch from Ag Hatzimanikas.

  • February 10th, 2007

    • [dnicholson] - Moved the Linux-PAM dependency in Xorg-7 from the Libraries to the Applications.

    • [dnicholson] - Converted UTF-8 man pages in the Xorg-7 drivers. Thanks to Alexander Patrakov for supplying the fixes.

  • February 7th, 2007

    • [randy] - Released BLFS 6.2.0-rc2.

    • [randy] - Updated to iptables-1.3.6, thanks to Andy Beverley for helping solve some build issues.

  • February 6th, 2007

    • [dnicholson] - Populated the contents for the Xorg-7 Xbitmaps, Applications, Data, Fonts, Server, and Drivers sections.

    • [dnicholson] - Fixed the grammar on the Xorg-7 Utilities and Libraries pages to use full sentences to describe the package contents.

  • February 5th, 2007

    • [randy] - Clarified the text in the Mutt and FCron instructions that an MTA should install the sendmail command.

  • February 4th, 2007

    • [dnicholson] - Populated the package contents for the Xorg-7 Protocol Headers, Utilities, and Libraries sections.

    • [dnicholson] - Added an optional libcap dependency to vsftpd.

    • [dnicholson] - Added instructions for installing the Xorg-7 man pages to $XORG_PREFIX/share/man and configuring Man-DB to use that location. Fixes ticket #2229.

  • February 3rd, 2007

    • [randy] - Released Version 6.2.0-rc1.

  • February 2nd, 2007

    • [alexander] - Added CUPS and LPRng as recommended dependencies of a2ps.

    • [alexander] - Added some caution boxes for packages that are not going to work in multibyte locales.

    • [bdubbs] - Updated to Koffice-1.6.1.

    • [bdubbs] - Updated to KDE-3.5.6. Added runtime dependencies to kdelibs and kdebase thanks to Chris Staub. Added a change to kdebindings to reduce build time by a factor of five thanks to Dan Nicholson.

  • February 1st, 2007

    • [randy] - Changed the references of polypaudio to the new project name of PulseAudio, also updated the URL.

    • [randy] - Fixed broken URL for the "Why LD_LIBRARY_PATH is bad" site in the Beyond BLFS page.

    • [randy] - Fixed broken download URLs in the ISO Codes instructions.

    • [randy] - Enabled the D-BUS FTP download URL.

    • [randy] - Fixed broken download URL for a known working version of Pyrex in the D-Bus instructions.

    • [randy] - Fixed broken download URLs in the HTML Tidy instructions.

  • January 31st, 2007

    • [randy] - Broke out the separate sections of the Preface into separate XML files and added 6.2.0 release information to the Preface.

    • [alexander] - Upgraded GC to version 6.8 in order to fix the build failure with GCC-4.1.1.

  • January 30th, 2007

    • [randy] - Added a note to the D-Bus instructions to identify a known working version of Pyrex, thanks to DJ Lucas for the report.

    • [randy] - Updated several Perl Modules versions: Business-ISBN-Data-1.13, Business-ISBN-1.84, Devel-Symdump-2.07, HTML-Element-Extended-1.17, HTML-Tree-3.23, Module-Corelist-2.09, PAR-Dist-0.21, Pod-Coverage-0.18, Test-Pod-Coverage-1.08 and Test-Prereq-1.032.

  • January 29th, 2007

    • [dnicholson] - Updated the desktop-file-utils page to more closely reflect the XDG Base Directory Specification and corrected the information on the gnome-menus page. Fixes ticket #2172. Thanks to Luca Piol for the report.

    • [dnicholson] - Set the sysconfdir for libxfce4util, fixing ticket #2227.

  • January 28th, 2007

    • [randy] - Updated the default MPlayer codecs and skin versions.

    • [randy] - Fixed broken download URLs in the NAS, libmikmod, OpenOffice, SANE Backends, ESP Ghostscript, CUPS, GPM, Transcode, FOP and teTeX instructions.

    • [dj] - Removed modification of JAI source file in FOP instructions.

    • [dj] - Updated to JDK-1.5.0_10 and modified the jdk.sh profile.d script.

  • January 27th, 2007

    • [randy] - Fixed broken download URLs in the Tin, RSync, PostgreSQL, MySQL and Apache HTTPD server instructions.

  • January 26th, 2007

    • [dj] - Modified Linux-PAM configuration in the Shadow instructions.

    • [dj] - Updated to vsftpd-2.0.5.

    • [randy] - Updated to ISO Codes-0.58-1.

    • [randy] - Fixed Starlink download URLs in the PDL instructions, fixed broken Shadow, Python, PPP, WVDial and NTP download URLs.

  • January 24th, 2007

    • [randy] - Fixed the Zip, Unzip and FTP GCC download URLs.

    • [dnicholson] - Reverted the xsetpointer upgrade as it is broken with the inputproto in Xorg-7.1.

    • [dnicholson] - Actually apply the xorg-server and luit version upgrades.

  • January 23rd, 2007

    • [dnicholson] - Patchlevel upgrades to the Xorg-7 packages. Removed unneeded patches encompassed in these updates. See #2225 for more details.

    • [dnicholson] - Changed the download location for the Xorg-7 wget lists and md5sums file.

  • January 22nd, 2007

    • [alexander] - Added some options to Lynx for better locale support. Fixes ticket #1961.

    • [randy] - Updated to ZSH-4.2.6 and added a warning for users with multibyte locales.

  • January 21st, 2007

    • [dnicholson] - Added an example local session configuration file for D-Bus showing how to add new service directories. Changed the Epiphany instructions to reference this instead of symlinking its service file to the standard location.

    • [dnicholson] - Added optional configuration to HAL to prevent methods on fixed disk drives.

    • [dnicholson] - Fixed the X Input Devices User Notes link to point to a more appropriate place on the Wiki. Closes #2190.

    • [dnicholson] - Remove unneeded sed command from the Luit instructions. Fixes #2123.

    • [dnicholson] - Added text to the Locale Related Issues page suggesting the User Notes on the BLFS Wiki for the most recent information. Closes ticket #1993.

    • [alexander] - Removed obsolete statements about problems with MC and Nano from the Locale Related Issues page.

    • [dnicholson] - Updated to Thunderbird-1.5.0.9 with enigmail-0.94.2.

    • [dnicholson] - Updated to Firefox-1.5.0.9.

  • January 20th, 2007

    • [randy] - Modified the Spiffy, Test::Base and YAML Perl Module instructions so that UTF-8 encoded manual pages are not installed.

    • [randy] - Modified the XScreenSaver instructions so that a UTF-8 encoded manual page is not installed.

    • [randy] - Added a shell script and additional information about UTF-8 manual pages to the Locale Related Issues page.

    • [randy] - Moved the CM-Super type1ec.sty file from the texmf-local directory structure to the texmf structure.

    • [bdubbs] - Updated to seamonkey-1.1.

  • January 19th, 2007

    • [alexander] - Added Debian patch and bash-3.2 compatibility patch to MC. Fixes #2189.

  • January 18th, 2007

    • [dnicholson] - Added ftp:// links for the Xorg-7.1 packages.

    • [dnicholson] - Updated security patches for Xorg-6.9.0 and xorg-server-1.1.0.

    • [dnicholson] - Changed the i18n.sh profile text to reference the LFS locale discussion and moved the GLib specific settings to that package's page. Fixes #2012.

    • [randy] - Added text to the 'Locale Related Issues' page which discusses improperly encoded manual pages.

    • [randy] - Added sed commands to the ImageMagick and Xorg evdev packages to remove UTF-8 encoded manual pages.

  • January 17th, 2007

    • [dnicholson] - Updated the ALSA Library, Plugins, Utilities, Tools and Firmware to version 1.0.13. Updated ALSA OSS to 1.0.12. Fixes tickets #2112 and #2201. Notes have been added for untested packages.

    • [dnicholson] - Fixed the ALSA udev rules to work properly with the Udev and rules in stable LFS. Closes ticket #2125.

    • [dnicholson] - Added an http:// link for the gpm package.

    • [dnicholson] - Fixed the GLib-2 ftp:// link. Thanks to Guy Dalziel for spotting the error.

    • [alexander] - Removed the dead link to the old LiveCD hint.

    • [dnicholson] - Updated to HAL-0.5.7.1.

  • January 15th, 2007

    • [randy] - Modified all the Sourceforge download links to use the new standard Sourceforge has implemented.

    • [randy] - Added a comment to the XFCE instructions saying that hicolor-icon-theme is a run-time dependency.

    • [randy] - Added commands to the teTeX instructions to install the cm-super type1ec.sty font file.

    • [alexander] - Added reiserfsprogs build fix for LFS SVN.

    • [randy] - Updated to Lynx-2.8.6.

  • January 14th, 2007

    • [randy] - Added Alexander to the list of BLFS Editors.

    • [randy] - Fixed a broken download URL in the SLIB instructions, thanks to Leo Peschier for pointing it out.

    • [bdubbs] - Added security patch to unzip.

    • [bdubbs] - Updated patch in ed to correct an error. Thanks to Tyler Berry.

    • [randy] - Updated the md5sums and build data for the GNOME accessibility packages to be compatible with GNOME-2.14.3, This completes the GNOME-2.14.3 update.

    • [bdubbs] - Updated to Python-2.4.4.

    • [bdubbs] - Updated to dhcp-3.0.5.

    • [randy] - Updated the md5sums and build data for the GNOME add-on utilities to be compatible with GNOME-2.14.3.

    • [alexander] - Removed the commands that remove vim tutorials.

    • [alexander] - Updated to xfsprogs-2.8.18, added notes about the lack of testsuites to xfsprogs and reiserfsprogs.

  • January 13th, 2007

    • [bdubbs] - Updated to vim-7.0.

    • [bdubbs] - Updated to bind-9.3.3.

    • [bdubbs] - Updated to openssh-4.5p1.

    • [bdubbs] - Updated to openssl-0.9.8d.

  • January 11th, 2007

    • [randy] - Updated to MIT Kerberos V5-1.6. Also overhauled the instructions to fit the updated version and included enhancements to the instructions.

  • December 22nd, 2006

    • [randy] - Updated to Evolution-2.6.3.

    • [randy] - Updated GtkHTML, gtksourceview and Evolution Data Server to versions used with GNOME-2.14.3.

    • [randy] - Updated to GNOME-2.14.3. The “Core” packages are completely finished, the “Additional” packages still require updates to the MD5sums and build sizes/times.

  • December 20th, 2006

    • [dnicholson] - Updated to xterm-223.

    • [dnicholson] - Ensured that the terminfo files from xterm are installed in the system terminfo database.

    • [dnicholson] - Removed the --datadir setting for Xorg-7. Some packages had broken configurations that caused files to be installed to the wrong location. Forcing ${datadir} to match ${libdir} worked around these problems, but they have now been resolved properly upstream.

  • December 15th, 2006

    • [tushar] - Remove autoreconf command from popt. The tarball that matches the md5sum has the generated files.

  • December 11th, 2006

    • [randy] - Updated to GStreamer-0.10.11, GST Plugins Base-0.10.11, GST Plugins Good-0.10.4 and GST Plugins Ugly-0.10.4

  • December 10th, 2006

    • [randy] - Updated to GSview-4.8 and fixed an issue with GSview using recent versions of ESP Ghostscript.

  • December 9th, 2006

    • [dnicholson] - Updated to Nano-2.0.1.

  • December 8th, 2006

    • [randy] - Added Sharutils (for the uudecode program) to the FreeTTS required dependencies, thanks to Chris Staub for the report.

    • [randy] - Updated to Samba-3.0.23d.

  • December 7th, 2006

    • [randy] - Updated to CUPS-1.2.7.

  • December 6th, 2006

    • [randy] - Added a note to the GNOME Panel instructions saying that the libxml2 Python module must be available.

  • December 4th, 2006

    • [randy] - Updated to Whois-4.7.20.

  • October 28th, 2006

    • [dnicholson] - Changed the structure of the Locale Related Issues page to describe general classes of problems. The package specific workarounds have been moved to their respective pages. Thanks to Alexander Patrakov for providing the rewrite, which better supports these situations.

  • October 27th, 2006

    • [bdubbs] - Updated to qt-3.3.7.

    • [dnicholson] - Fixed Screen description to reflect that UTF-8 is now available. Thanks to Alexander Patrakov for the suggestion.

    • [dnicholson] - Updated to libmusicbrainz-2.1.4, fixing security vulnerability CVE-2006-4197. Closes ticket #2181.

  • October 26th, 2006

    • [dnicholson] - Updated to Screen-4.0.3, fixing a security vulnerability. Closes ticket #2197.

  • October 25th, 2006

    • [dnicholson] - Fixed the hdparm instructions to work correctly when installing to an alternate prefix. Thanks to Miguel Bazdresch for reporting the problem. Fixes ticket #2196.

    • [bdubbs] - Updated to zip 2.32.

  • October 23rd, 2006

    • [randy] - Updated the Exim instructions documentation links.

  • October 22nd, 2006

    • [randy] - Added a note to the GTK+2 instructions about the test suite requiring an X Window session.

    • [randy] - Removed references to the shared library from the UnZip instructions. Thanks to Gabriel Batir for the report.

    • [randy] - Added a sed command to the Graphviz instructions so that the Java bindings will build correctly if you have the JDK installed.

  • October 19th, 2006

    • [dnicholson] - Added needed macro to use Cyrus-SASL in Postfix.

    • [dnicholson] - Updated to OpenLDAP-2.3.27.

  • October 15th, 2006

    • [djensen] - Updated to Ruby-1.8.5. Fixes #2127.

    • [djensen] - Updated Seamonkey to Enigmail-0.94.1. Fixes #2170.

  • October 14th, 2006

    • [dnicholson] - Added information about creating the /dev/dvd symlink for Mplayer with links pointing back to the relevant section of the LFS book. Fixes #1995.

    • [dnicholson] - Removed the note about installing UUID from the XFS page as the only libuuid comes from E2fsprogs. It is assumed that E2fsprogs is installed from LFS. Closes #2176.

    • [dnicholson] - Added PAM configuration to the host.def example in Xorg-6.9.0 and XFree86-4.6.0. It is commented out by default.

    • [dnicholson] - Updated to Postfix-2.3.3. Added configuration to automatically install HTML and README docs.

  • October 12th, 2006

    • [dnicholson] - Fixed broken ASH download link and added text about lack of test suite. Fixes ticket #2130.

    • [dnicholson] - Fixed broken Rsync download link. Thanks to Miguel Bazdresch for the fix.

    • [dnicholson] - Fixed GNOME Doc Utils so that the pkg-config files are always installed. Closes #2126.

    • [dnicholson] - Patched Emacs to ensure that the AltGr key is recognized. Added information about lack of test suite.

  • October 11th, 2006

    • [dnicholson] - Applied security patches to Xorg-6.9.0 and libXfont-1.1.0.

    • [randy] - Updated to NSS-3.11.3.

  • October 8th, 2006

    • [dnicholson] - Updated to Firefox-1.5.0.7. Fixes #2150.

    • [dnicholson] - Updated to Thunderbird-1.5.0.7 and Enigmail-0.94.1. Fixes #2151 and #2171.

    • [dnicholson] - Updated to Links-2.1pre23. Installed some user documentation from the tarball. Closes #2042.

  • October 5th, 2006

    • [randy] - Changed the TCP ports used by tunneled SWAT in the Samba instructions from 901 and 902 to 904 and 905 so that there is no conflict with the IANA database.

    • [randy] - Updated to cairo-1.2.4.

  • October 1st, 2006

    • [dnicholson] - Fixed an issue with with rendering of OpenGL applications with MesaLib by adding an appropriate compiler flag. Thanks to Alexander Patrakov for the report and the fix. Closes ticket #2103.

    • [dnicholson] - Fixed an error with output redirection in MesaLib when /bin/sh is not Bash. Fixes ticket #2118.

  • September 30th, 2006

    • [djensen] - Updated to Balsa-2.3.13.

  • September 25th, 2006

    • [djensen] - Added 2 seds to LPRng-3.8.28, fixing a gcc-4.1 bug and a syntax error for newer makes.

    • [dnicholson] - Updated to dhcpcd-2.0.8. Changed the build to execute the dhcpcd.exe configuration file.

  • September 24th, 2006

    • [djensen] - Updated to SeaMonkey-1.0.5. Added the optional pango patch.

    • [randy] - Added a patch to the Heimdal instructions to fix a security vulnerability identified in MIT advisories CVE-2006-3083 and CVE-2006-3084.

  • September 19th, 2006

    • [djensen] - Updated to Mpg123-0.60.

  • September 16th, 2006

    • [djensen] - Removed a possible spurious doc dir installation in EsounD.

    • [bdubbs] - Updated to openssl-0.9.8c.

  • September 14th, 2006

    • [randy] - Fixed broken Linux-PAM documentation download URL.

  • September 12th, 2006

    • [dj] - Updated to JDK-1.0.5_08.

  • September 10th, 2006

    • [bdubbs] - Updated to nfs-utils-1.0.10.

    • [bdubbs] - Updated bootscripts to properly handle non-TERM stop signals.

    • [bdubbs] - Added creation of bin user to portmap.

    • [bdubbs] - Updated to pcre-6.7.

  • September 5th, 2006

    • [dnicholson] - Updated to Thunderbird-1.5.0.5. Reordered the patches so that they can apply cleanly.

  • September 4th, 2006

    • [dnicholson] - Updated to Firefox-1.5.0.6. Changed the order of the patches so that they can apply cleanly.

    • [dnicholson] - Fixed the text describing the default PKG_CONFIG_PATH to include /usr/share/pkgconfig. Fixes #2117. Thanks to Joe Ciccone.

    • [dnicholson] - Removed the ispell package as it has problems in UTF-8 locales and the aspell package is superior. Fixes ticket #2101.

    • [dnicholson] - Updated to xterm-218. Fixes tickets #2096 and #2100.

    • [bdubbs] - Fixed wording in php describing ini file. Thanks to Pippin for pointing this out.

    • [dnicholson] - Moved xterm, rman, MesaLib and libdrm packages out of the Xorg-7 chapter as they are now developed externally. Added notes to their pages to indicate that they should only be built when using Xorg-7. Fixes ticket #2120.

    • [dnicholson] - Added a missing program description to the Luit page.

  • August 30th, 2006

    • [djensen] - Updated to JOE-3.5.

  • August 29th, 2006

    • [dnicholson] - Fixed the download link for the Linux-PAM docs. Thanks to Tor Olav Slava.

    • [dnicholson] - Removed the reference to the vimrc question in the FAQ since it no longer exists. Thanks to Peter Ennis.

    • [dnicholson] - Minor text update on the bootdisk page. Thanks to Peter Ennis.

  • August 9th, 2006

    • [dnicholson] - Added patch to fix a security vulnerability in Mutt-1.5.11. Fixes ticket #2072.

    • [dnicholson] - Added patches to fix security vulnerabilities in Xorg-7.1. Closes ticket #2100.

    • [dnicholson] - Added configuration for HAL and gnome-volume-manager for use without the pam_console module.

    • [dnicholson] - Fixed a broken iptables link and a typo on the About Devices page. Thanks to Gabriel Batir.

  • August 7th, 2006

    • [dnicholson] - Added a patch to fix security vulnerabilities in Xorg-6.9.0. See ticket #2100. Removed fix for Glibc sys/kd.h as it is now in LFS stable.

  • August 6th, 2006

    • [randy] - Noted in the Evince instructions that shared-mime-info is a run-time requirement.

    • [randy] - Updated to libsoup-2.2.96.

    • [randy] - Added XMLRPC-EPI as an optional dependency of PHP.

  • August 5th, 2006

    • [randy] - Updated to libwnck-2.14.3.

    • [randy] - Updated to libglade-2.6.0.

    • [randy] - Updated to GTK+-2.8.20.

    • [dnicholson] - Removed /etc/profile.d/tinker-term.sh since it is no longer needed with the Ncurses in stable LFS-6.2.

  • August 4th, 2006

    • [randy] - Updated to libpng-1.2.12.

    • [randy] - Updated to libIDL-0.8.7.

    • [randy] - Added libxslt as a required dependency of the GNOME Doc Utils package.

    • [randy] - Updated to libxslt-1.1.17.

    • [randy] - Updated to libxml2-2.6.26.

  • August 3rd, 2006

    • [randy] - Added four upstream patches to the Berkeley-DB instructions.

  • August 2nd, 2006

    • [randy] - Updated the book to point at LFS 'stable' and use LFS stable package versions of Coreutils and Flex.

    • [randy] - Removed an obsolete ldconfig command from the OAF instructions.

  • July 25th, 2006

    • [randy] - Updated to GIMP-2.2.12.

  • July 24th, 2006

    • [randy] - Updated to libquicktime-0.9.9.

  • July 22nd, 2006

    • [randy] - Updated to Avifile-0.7.45.

  • July 15th, 2006

    • [randy] - Fixed the creation of the symbolic link in the Gnumeric instructions to fix access to the help documentation if GNOME is installed in a prefix other than /usr, thanks to Alessandro Alocci for spotting the error and contributing the fix.

  • July 13th, 2006

    • [dnicholson] - Fixed patch XML tags for Firefox and Thunderbird. Closes ticket #2069. Thanks to Joe Ciccone.

  • July 11th, 2006

    • [randy] - Updated to K3b-0.12.16 and clarified the dependencies to fix Ticket #2015.

    • [randy] - Added DAO to the Glossary.

    • [randy] - Updated to CVS-1.11.22.

  • July 9th, 2006

    • [randy] - Added a note about some additional optional dependencies in the Cdrdao instructions.

    • [dj] - Clarified instructions concerning alternate X Window System installation prefix.

    • [dj] - Corrected permission of installed files in OpenOffice instructions.

  • July 8th, 2006

    • [dj] - Added instructions to QT installation to account for alternate installation prefix in X Window System.

  • July 7th, 2006

    • [randy] - Updated the Apache Ant instructions to specify the version of Junit you should use.

    • [randy] - Added new package - gnome-screensaver-2.14.2.

    • [andy] - Updated ppp to 2.4.4.

  • July 6th, 2006

    • [dnicholson] - Fixed typo in libusb udev rule creation. Thanks to Johannes Lächele.

  • July 4th, 2006

    • [dnicholson] - Updated Firefox and Thunderbird to version 1.5.0.4. Added a patch to fix the builds with --enable-pango.

    • [randy] - Added a command to the Linux-PAM instructions to alter the unix_chkpwd password helper setuid, thanks to Jürg Billeter for pointing this out.

  • July 3rd, 2006

    • [randy] - Updated the Zenity and GNOME Keyring Manager package instructions to be compatible with the GNOME-2.14.2 update.

    • [dj] - Clarified text surrounding additional downloads section of OpenOffice instructions.

  • July 2nd, 2006

    • [randy] - Updated to GNOME System Monitor-2.14.4.

    • [randy] - Updated the GConf Editor, gedit, bug-buddy, EOG and File Roller package instructions to be compatible with the GNOME-2.14.2 update.

    • [dj] - Updated to OpenOffice-2.0.3.

    • [andy] - Updated SDL to SDL-1.2.11

  • July 1st, 2006

    • [randy] - Removed unnecessary --sysconfdir and --localstatedir parameters from the GStreamer (and plugins) instructions. Updated the 'Good' Plugins with a --sysconfdir parameter that will force the GConf configuration files into the correct location.

    • [randy] - Updated the GNOME Utilities and GNOME Games package instructions to be compatible with the GNOME-2.14.2 update.

  • June 30th, 2006

    • [randy] - Updated the GNOME Accessibility packages' instructions to be compatible with the GNOME-2.14.2 update.

  • June 29th, 2006

    • [dnicholson] - Changed the installation instructions and explanations in XFS to be more consistent with the rest of the book. Thanks to Chris Staub for prompting the change.

    • [dnicholson] - Fixed sed command in WvStreams to not alter a non-existent file. Thanks to Angel Tsankov.

  • June 28th, 2006

    • [randy] - Renamed the GnomeMeeting package to Ekiga and updated the instructions to be compatible with the GNOME-2.14.2 update.

    • [randy] - Updated the dependencies and build commands in the gnome-volume-manager instructions to conform with GNOME-2.14.2. There is still some additional information that needs to be added to this page after the additions are finalized via BLFS-Dev discussion.

    • [dj] - Updated JDK, source and bin, to jdk-1.5.0 update 7.

  • June 27th, 2006

    • [randy] - Added new package GStreamer Ugly Plugins-0.10.3

    • [randy] - Updated the Nautilus CD Burner, GNOME Media and Sound Juicer instructions to conform with the GNOME 2.14.2 update.

    • [randy] - Completed the gnome-mount instructions.

  • June 26th, 2006

    • [randy] - Replaced many instances of repetitive similar text with xinclude files in various package instructions.

  • June 25th, 2006

    • [randy] - Minor fixes and clean-up to the core GNOME-2 package instructions including standardizing the text in the 'Command Explanations' section by using xinclude files and changing the creation of symbolic links to using PYTHONPATH so Python can find modules installed in non-standard locations.

    • [randy] - Added some new xinclude files to replace the repetitive similar text in many package instructions.

  • June 24th, 2006

    • [randy] - Created a new BLFS BootScript tarball to reflect the updated HAL script.

    • [randy] - Updated to GDM-2.14.9.

    • [randy] - Updated to Totem-1.4.2.

    • [randy] - Updated to gcalctool-5.8.16.

  • June 23rd, 2006

    • [randy] - Added new package GStreamer Good Plug-ins-0.10.3.

    • [randy] - Created a new BLFS BootScript tarball to reflect the updated GDM script.

    • [randy] - Updated the Evince, Poppler and GNOME Netstatus instructions to conform with the GNOME-2.14.2 update.

  • June 21st, 2006

    • [randy] - Updated the Epiphany and gucharmap instructions to conform with the GNOME-2.14.2 update.

    • [randy] - Updated the GNOME2 additional libraries instructions to conform with the GNOME-2.14.2 update. This leaves the GNOME2 Accessibility and Additional Utility packages to update.

    • [randy] - Updated to Evolution-2.6.2.

    • [randy] - Added new package gnome-mount-0.4 (not fully complete, but added now to fix a validation issue).

    • [randy] - Updated to GNOME-2.14.2. All version entities have been updated with the core package updates being complete. The 'Additional' packages will be updated in upcoming commits.

    • [randy] - Changed references to GNOME2 User Docs to the renamed package of GNOME User Docs.

  • June 20th, 2006

    • [randy] - Removed all instances of the old GStreamer Plug-ins package and replaced them with the new GStreamer Base Plug-ins.

    • [randy] - Updated to GStreamer-0.10.8.

    • [randy] - Updated to Metacity-2.14.5.

    • [randy] - Updated to libsoup-2.2.94.

    • [randy] - Updated to libwnck-2.14.2.

    • [randy] - Updated to libxklavier-2.2.

    • [randy] - Updated to HAL-0.5.7.

    • [randy] - Updated to D-BUS-0.62.

    • [dnicholson] - Updated to TIN-1.8.2.

    • [randy] - Added new package GStreamer Base Plug-ins-0.10.8

    • [randy] - Replaced the obsolete Howl dependency in the xinetd and Gaim instructions with an Avahi dependency.

    • [randy] - Fixed broken download URL in the Pilot-Link instructions.

    • [randy] - Removed cairo as a recommended dependency of Pango.

    • [bdubbs] - Fixed typo in NAS instructions.

  • June 19th, 2006

    • [randy] - Updated to ISO Codes-0.51-1.1.

    • [randy] - Updated to GMime-2.2.2.

  • June 13th, 2006

    • [randy] - Removed Fontconfig as an optional dependency of Pango as it is required in one way or another, thanks to Chris Staub for pointing this out.

    • [tushar] - Removed incorrect dependencies from gtk+

  • June 11th, 2006

    • [randy] - Updated to ImageMagick-6.2.8-0.

  • June 6th, 2006

    • [randy] - Added a sed command to the Crypt::SSLeay Perl module instructions to fix a bug exposed by newer versions of OpenSSL.

    • [randy] - Modified the existing, and added new dependencies to the Module::Build Perl module instructions.

    • [randy] - Added the dependencies for the YAML Perl module.

    • [randy] - Added new Perl modules: Pod::Readme-0.081, Spiffy-0.30, Test::Base-0.50 and Test::Portability::Files-0.05

    • [randy] - Updated several Perl modules: Archive::Tar-1.29, Business::ISBN::Data-1.11, Digest::SHA-5.41, ExtUtils::CBuilder-0.18, HTML::Parser-3.54, Module::Build-0.2801, Module::Signature-0.54, PAR::Dist-0.09, Pod::Simple-3.04, Test::Pod-1.24, Test::Prereq-1.031, version-0.63 and YAML-0.58.

  • June 5th, 2006

    • [andy] - Updated the Cdrtools ascii patch so that it applies properly.

  • May 31st, 2006

    • [dj] - Updated xorg-server and xterm dependencies.

  • May 29th, 2006

    • [dnicholson] - Fixes for the X Window System Components page. Add information for setting up DRI correctly. Thanks to Peter Steiger for the alert. Clarified the relationship between the Xft font system and Fontconfig. Thanks to Archaic for reviewing the previous contents.

    • [dnicholson] - Simplified mv command and fixed the explanation of the --enable-xine option in GStreamer Plug-ins. Thanks to Chris Staub for the patch.

    • [dnicholson] - Changed the text explaining the need for the mkisofs and cdrecord patches in Cdrtools. Thanks to Alexander Patrakov for the clarification.

    • [dnicholson] - Added optional dependencies for rebuilding the Mutt documentation. Thanks to Ag Hatzimanikas for the information.

  • May 27th, 2006

    • [randy] - Updated to librsvg-2.14.4.

    • [randy] - Added intltool as an optional dependency of libgnomecups.

    • [randy] - Updated to libgsf-1.14.1.

    • [randy] - Updated to Gtk+-2.8.18.

    • [randy] - Updated to Pango-1.12.3.

    • [randy] - Updated to GLib-2.10.3.

  • May 26th, 2006

    • [manuel] - Made all dependencies on a mail server actual cross-references.

  • May 25th, 2006

    • [randy] - Updated to desktop-file-utils-0.11.

    • [dj] - Updated Xorg Modular to 7.1 release.

    • [dj] - Updated to xterm-213.

    • [dj] - Updated to Mesa-6.5.

  • May 24th, 2006

    • [randy] - Updated the ALSA Plugins dependencies and installed plugin module list; also added documentation installation commands to the ALSA Plugins instructions.

    • [randy] - Several fixes to the MPlayer instructions: added a sed command to fix the getline function name issue, added a patch to fix the round function issue, fixed the creation of the font symlink to point to /usr/share/fonts, commented out the command and text that created a /dev/dvd device file as this is now done in LFS.

    • [randy] - Modified the way the GLUT library dependency is described in the LibTIFF instructions.

    • [randy] - Modified the configure script in the libfame instructions using a sed so that the -fstrict-aliasing flag is properly passed along to the Makefiles.

  • May 23rd, 2006

    • [randy] - Clarified the XvMC Wrapper dependency in the MPlayer and xine libraries instructions.

    • [randy] - Added libid3tag as an optional dependency of imlib2.

  • May 21st, 2006

    • [randy] - Updated to libdvdread-0.9.6.

    • [randy] - Updated codecs to the 20060501 versions in the MPlayer instructions.

    • [randy] - Added a note to the D-BUS instructions that you must have Qt installed if you are planning on using HAL with KDE.

    • [randy] - Added a note to the lm_sensors dependency in the kdebase instructions that the Sysfs Utilities package is also required.

    • [tushar] - Added note that proxymngr requires lbxproxy.

  • May 20th, 2006

    • [randy] - Added a patch to the kdelibs instructions so it will build if you have CUPS-1.2.x installed. The patch does not affect the build with lesser versions of CUPS. Thanks to Matthew Carson for chasing down the problem and sending in the patch.

    • [dnicholson] - Added -ifv arguments to the autoreconf command in libdrm so that libtoolize will be run. The shared library is created without the .so suffix without it.

    • [randy] - Added new package usbutils-0.72.

  • May 19th, 2006

    • [randy] - Changed the GNAT installation in the GCC instructions to use the existing Makefile, which eliminates the need to install Tcsh, thanks to Jim Gifford for the tip.

  • May 18th, 2006

    • [randy] - Moved the ScrollKeeper instructions from Chapter 31 - GNOME Core Packages to Chapter 10 - General Utilities as the package installation prefix is /usr and other-than-GNOME packages can utilize it.

    • [randy] - Added libacl as an optional dependency of Samba.

    • [randy] - Added additional commands to the LessTif instructions to accommodate an X Window System installation in /usr.

    • [dj] - Corrected NAS bootscript after installation.

    • [dj] - Standardized Xorg7 PREFIX commands using XORG_PREFIX.

    • [dj] - Re-added sed to fix incorrect path in luit.

  • May 17th, 2006

    • [bdubbs] - Changed home directory of named to /srv/named.

    • [bdubbs] - Added "About Devices" page.

    • [dnicholson] - Added two patches to Cdrtools improving its use in locales with non-ISO-8859-1 character sets. Fixes ticket #1837. Thanks to Alexander Patrakov for explaining the situation and supplying the patches.

    • [randy] - Added jbig2dec as an optional dependency of ESP GhostScript.

    • [dj] - Moved libdrm, mesa, xterm, and rman to xorg7 section.

    • [dj] - Added test suite notes to each xorg7 page.

  • May 16th, 2006

    • [bdubbs] - Added UTF-8 patch to Pine.

    • [randy] - Added documentation installation commands to the popt instructions.

    • [bdubbs] - Added paps-0.6.6 for UTF-8 printing.

    • [randy] - Updated to PHP-5.1.4.

    • [dj] - Added rman-3.2.

  • May 15th, 2006

    • [randy] - Added librsvg as an optional dependency of ImageMagick.

    • [bdubbs] - Update to postfix-2.2.9.

  • May 14th, 2006

    • [randy] - Updated to Apache HTTPD-2.2.2.

    • [randy] - Added a note to the MySQL instructions about TCP Wrapper and MySQL's test suite.

    • [randy] - Added a note to the cURL instructions about TCP Wrapper and cURL's test suite.

    • [dj] - Updated OpenOffice patch for system Firefox and added OpenOffice to list of packages that will utilize system nss in Mozilla product pages.

  • May 13th, 2006

    • [bdubbs] - Remove malloc switch from kdelibs.

    • [tushar] - Add GTK1 dependency for vim.

    • [bdubbs] - Added XChat-2.6.2.

    • [randy] - Updated the GCC (gcj) dependency in the Libidn instructions to include the gjdoc package also.

    • [randy] - Updated to GTK-Doc-1.6.

  • May 12th, 2006

    • [dnicholson] - Updated to GIMP-2.2.11 and gimp-help-2-0.10.

    • [randy] - Updated to libxslt-1.1.16.

    • [bdubbs] - Created a consolidated autofs patch to combine nine small patches and updated autofs to reflect the combined patch file.

    • [bdubbs] - Updated to imlib2-1.2.2.

    • [bdubbs] - Updated to intltool-0.34.2.

  • May 11th, 2006

    • [randy] - Added commands to the JDK instructions to run a demo program with the newly created java binary to provide a basic test of the build.

    • [randy] - Added commands to the cpio instructions to create alternate forms of the documentation.

    • [dj] - Added note to not build MesaLib with X11R6 and removed Xfree and xorg-6.9 from required deps.

    • [andy] - Updated to XFree86-4.6.0.

  • May 10th, 2006

    • [randy] - Added resmgr as an optional dependency of ALSA Library.

    • [randy] - Renamed the TeX package to its proper name - teTeX.

    • [dj] - Added sed for additional xorg-6.9.0 security vulnerability.

    • [dj] - Updated dependencies for Xorg-7.0.0 section and corrected text.

  • May 9th, 2006

    • [randy] - Updated to PCI Utilities-2.2.3.

    • [randy] - Modified the Expect build commands to work with the new Tcl build method.

    • [randy] - Added an additional command to the Sysstat installation so that a configuration file containing the history variable is installed.

    • [randy] - Added a note to the Shadow instructions about running the Linux-PAM test suite.

    • [randy] - Updated to Linux-PAM-0.99.4.0.

  • May 8th, 2006

    • [bdubbs] - Updated to ImageMagick-6.2.7-5.

    • [bdubbs] - Updated to libgtkhtml-2.11.0.

    • [bdubbs] - Updated to rsync-2.6.8.

  • May 7th, 2006

    • [randy] - Removed the ext3 file system page from the book as this file system is now the LFS default.

    • [randy] - Modified the Tcl and Tk instructions to install the library interface headers using the maintainer's recommended method and removed all the hacks from previous installation methods.

  • May 6th, 2006

    • [bdubbs] - Updated to alsa-1.0.11.

    • [bdubbs] - Updated to dhcp-3.0.4.

    • [dnicholson] - Fixed EsounD installation to note that the documentation can only be installed with DocBook-utils. Thanks to Chris Staub for the patch.

    • [tushar] - Updated to Popt-1.10.4.

    • [dnicholson] - Updated to Bluefish-1.0.5.

    • [dnicholson] - Updated to Firefox-1.5.0.3.

  • May 5th, 2006

    • [bdubbs] - Updated to nmap-4.03.

    • [bdubbs] - Updated to Leafnode-1.11.5.

    • [bdubbs] - Updated to AFPL Ghostscript-8.53.

    • [bdubbs] - Updated to libxml2-2.6.24.

    • [bdubbs] - Updated to proftpd-1.3.0.

    • [bdubbs] - Updated to mysql-5.0.21.

    • [bdubbs] - Updated to ntp-4.2.0a.

    • [dj] - Reorganized X Window System chapter.

    • [dj] - Spilt Xorg-7 instructions into several pages.

    • [dj] - Corrected links in Mesa and xterm instructions for new xorg7 pages.

  • May 4th, 2006

    • [bdubbs] - Updated to ESP Ghostscript-8.15.2.

    • [bdubbs] - Updated to openssl-0.9.8b.

    • [bdubbs] - Simplified mysql compilation flags. Thanks to Archaic.

  • May 3rd, 2006

    • [bdubbs] - Updated sed for openssh to link crypto libraries statically.

    • [bdubbs] - Updated location of kernel options in iptables. Thanks to Allard Welter who pointed this out.

  • May 1st, 2006

    • [randy] - Updated to XScreenSaver-4.24.

    • [randy] - Updated to Gtk+-2.8.17.

    • [randy] - Updated to ATK-1.11.4.

    • [randy] - Updated to Pango-1.12.2.

    • [randy] - Updated to Ethereal-0.99.0.

  • April 30th, 2006

    • [bdubbs] - Removed the gid for bin and usb as they are defined in LFS. Added comment in the section about users and groups that base entries are in LFS.

    • [randy] - Updated to K3b-0.12.15.

    • [randy] - Updated to NFS Utilities-1.0.8.

    • [andy] - Updated Pine to 4.64 and Abiword-2.4.4.

  • April 29th, 2006

    • [bdubbs] - Updated to exim-4.61.

    • [bdubbs] - Updated to Links-2.1pre21.

    • [randy] - Updated to Galeon-2.0.1.

    • [randy] - Added a new category 'Integrated Development Environments' to the 'Other Programming Tools' page and added additional components to the page.

    • [randy] - Updated Tcl and Tk to 8.4.13. Also modified the build commands to not use any user-created environment variables.

    • [bdubbs] - Changed openssh libexecdir to /usr/lib/openssh.

    • [bdubbs] - Added instruction to optionally enable ssl support to dillo.

  • April 28th, 2006

    • [randy] - Added new package libquicktime-0.9.8 and removed the Openquicktime package.

    • [bdubbs] - Updated to seamonkey-1.0.1.

    • [bdubbs] - Updated to rp-pppoe-3.8.

    • [bdubbs] - Updated bootscripts Makefile to install autofs after cleanfs.

    • [randy] - Updated to Berkeley DB-4.4.20.

  • April 27th, 2006

    • [bdubbs] - Updated to gc-6.6.

    • [bdubbs] - Updated to mysql-5.0.20a. Fixed all testsuite failures.

    • [dnicholson] - Updated to OpenSSL-0.9.8a. Added patch to Cyrus-SASL for compatibility with this version of OpenSSL.

    • [randy] - Updated to GCC-4.0.3

    • [randy] - Updated to GMP-4.2

    • [bdubbs] - Updated to vsftpd-2.0.4

  • April 26th, 2006

    • [bdubbs] - Updated libexecdir location in emacs.

    • [randy] - Added clarification about NSS/NSPR libraries to the Evolution and Evolution Data Server instructions.

    • [bdubbs] - Updated to iso-codes-0.51.

    • [bdubbs] - Updated ntp configuration to use pool servers.

    • [bdubbs] - Updated to dhcp-3.0.3.

    • [bdubbs] - Updated to WvStreams-4.2.2.

    • [randy] - Updated to Balsa-2.3.12.

  • April 25th, 2006

    • [dnicholson] - Fixes for Cyrus SASL-2.1.21. Added patch to allow OpenLDAP => 2.3, converted GCC-4 patch to a sed, and added a sed command to put saslauthd man page in the correct location. Noted method to address LDAPDB plugin circular dependency in the User Notes.

    • [bdubbs] - Dropped NCPFS from the book due to lack of testing ability. Placed contents in the User Notes.

    • [randy] - Updated to GMime-2.2.1.

    • [bdubbs] - Added errata page to preface.

    • [dnicholson] - Updated to Thunderbird-1.5.0.2.

    • [randy] - Updated to libESMTP-1.0.4.

    • [randy] - Added a sed command to the PDL instructions to fix a build issue caused by ExtUtils::MakeMaker-6.30 which was introduced in Perl-5.8.8.

    • [bdubbs] - Fixed configuration instructions in GPM. Thanks to Chris Staub.

    • [bdubbs] - Updated to fcron-3.0.1.

    • [bdubbs] - Added a note about adding FORTRAN 77 to the gcc-3 instructions.

    • [randy] - Added a short note about the GCC-3.4.6 Fortran installation instructions on the BLFS Wiki to the GCC-4.0.x instructions.

    • [Randy] - Modifications to the PDL instructions: added an FTP download location, rewrite of the introductory text to include a discussion about a proper version of Fortran, updated some of the dependency package download URLs and changed the links to a Fortran compiler to the one on the BLFS Wiki.

    • [andy] - Updated to OpenSP-1.5.2.

  • April 24th, 2006

    • [randy] - Updated the introductory text of the GCC-3 instructions to better explain its use, and to add a link to the Wiki pointing to a Fortran specific installation.

    • [bdubbs] - Updated to qpopper-4.0.9. Added standalone instructions and a configuration file. Added an initialization script to the bootscripts and bootscripts Makefile.

  • April 23rd, 2006

    • [bdubbs] - Updated to dhcpcd-2.0.5.

    • [dj] - Updated to OpenOffice-2.0.2.

    • [bdubbs] - Added a note to Apache that the apache user's home directory of /dev/null may fail for some add-ons.

    • [bdubbs] - Updated to fetchmail-6.3.4.

  • April 22nd, 2006

    • [bdubbs] - Updated Additional X Window System Configuration section.

    • [randy] - Updated to ExtUtils-F77-1.15.

    • [randy] - Modified the method of using cpan in the Perl Modules instructions, thanks to William Zhou for the suggestion.

    • [bdubbs] - Updated to iptables-1.3.5.

    • [dnicholson] - Fixes for TIN. Moved some run-time dependencies to the Configuration section. Installed documentation files. Added command to install default configuration files.

  • April 21st, 2006

    • [dnicholson] - Updated to Firefox-1.5.0.2.

    • [randy] - Updated to Filter-1.32.

    • [randy] - Updated to Net::DNS-0.57.

    • [randy] - Updated to Digest::SHA1-2.11.

    • [randy] - Updated to Net::IP-1.24.

    • [bdubbs] - Updated to bind-9.3.2. Updated bind-utils also.

    • [andy] - Added Audacious-1.0.0.

    • [andy] - Updated to Fluxbox 0.9.15.1.

  • April 20th, 2006

    • [bdubbs] - Updated to hdparm-6.6.

    • [bdubbs] - Updated udftools to compile with gcc4. Also deleted the kernel patch from the package because it is in linux 2.6.16 and later.

    • [dnicholson] - Added TIN version 1.8.1 to the book. Removed slrn. Thanks to Alexander Patrakov. Closes tickets #1845 and #1847.

    • [dnicholson] - Updated to Python-2.4.3.

    • [bdubbs] - Updated to glib-2.10.2.

  • April 19th, 2006

    • [tushar] - Corrected vim option description.

    • [bdubbs] - Updated to iso-codes-0.50.

    • [bdubbs] - Updated proftpd instructions.

    • [randy] - Updated to Socket6-0.19.

    • [randy] - Updated to Finance::QuoteHist-1.07.

    • [randy] - Updated to HTML::TableExtract-2.07.

    • [randy] - Added new Perl module; Text::CSV_PP-1.01.

    • [randy] - Updated to Finance::Quote-1.11.

    • [randy] - Updated to libwww-perl-5.805 (also renamed the package from LWP).

    • [randy] - Updated to libxml2-2.6.23.

    • [bdubbs] - Updated to nmap-4.01.

    • [dnicholson] - Changed X Window System to required dependency for Imlib-1.9.15. Fixes ticket #1792.

    • [randy] - Updated to Test::Prereq-1.030.

    • [randy] - Updated to Module::CoreList-2.04.

    • [randy] - Updated to GnuCash-1.8.12.

  • April 18th, 2006

    • [randy] - Downgraded to Guile-1.6.7 and G-Wrap-1.3.4 and modified the SLIB instructions to work with the downgraded packages. These changes are to support GnuCash which will not work with the more recent versions.

    • [manuel] - Removed creation of xsl-stylesheets-current symlink.

    • [bdubbs] - Updated to wireless_tools.28.

  • April 17th, 2006

    • [bdubbs] - Changed vim to match LFS instructions regarding UTF-8 locales.

    • [bdubbs] - Updated to kde-3.5.2.

  • April 15th, 2006

    • [bdubbs] - Updated to koffice-1.5.0.

    • [randy] - Updated the SLIB patch to a -2 version.

    • [randy] - Removed some optional dependencies (Gtk-1 and guile-gtk) from the G-Wrap instructions.

    • [dj] - Wrapped the lnx_agp.c sed in a testcase to make the change, only if required in Xorg-6.9 and Xorg-7.0 instructions.

    • [dj] - Added install command to create the /usr/share/fonts directory to Xorg-6.9, Xorg-7.0, and XFree86 instructions.

  • April 14th, 2006

    • [dnicholson] - Added sed to Xorg-6.9.0 to fix security vulnerability in ticket #1876. Changed sed to include linux/types.h to be the same as that in Xorg-7.0.0.

    • [randy] - Updated all the wiki links to point to the existing package wiki page if one existed.

    • [dnicholson] - Added information about the Nano development version which supplies UTF-8 support to Locale Related Issues. Added a caution on the Nano page.

    • [dnicholson] - Added pkg-config as a required dependency for MesaLib. Fixes ticket #1904.

    • [randy] - Readded the links in the Perl Modules instructions to the MD5sums of all the Perl Module source tarballs.

    • [randy] - Moved GConf-1 from an optional to a required dependency in the GNOME-VFS-1 and GtkHTML-1 instructions.

    • [randy] - Added new package Graphviz-2.8.

    • [bdubbs] - Added openssl as a required dependency of tripwire.

    • [andy] - Updated to Gnumeric-1.6.3 and Goffice-0.2.1.

  • April 13th, 2006

    • [randy] - Added the Io programming language to Chapter 12 - "Other Programming Tools".

  • April 12th, 2006

    • [randy] - Updates to the Enscript instructions: added a patch to fix security vulnerabilities, added commands to build alternate formats of the documentation, fixed the wiki link to point to the already existing wiki page.

    • [bdubbs] - Updated to tripwire-2.4.0.1.

    • [randy] - Updated to Whois-4.7.13.

  • April 11th, 2006

    • [dnicholson] - Added gcc4 patch for nfs-utils-1.0.7.

    • [bdubbs] - Updated bootscripts version to 20060411

  • April 10th, 2006

    • [randy] - Added the 'User Notes' wiki link to each package page.

    • [randy] - Changed all instances of .[so,a] to .{so,a} (brackets changed to braces).

    • [randy] - Changed all [some_text] instances to <some_text> (square brackets changed to angle brackets).

  • April 9th, 2006

    • [randy] - Changed all the references to X Window System links to a common entity displayed as 'X Window System'.

    • [randy] - Updated to Doxygen-1.4.6.

  • April 8th, 2006

    • [randy] - Updated to GnuPG-1.4.3.

    • [dj] - Moved to gzipped bsh tarball in OpenOffice-2.0.0 instructions.

    • [randy] - Updated to librsvg-2.14.3.

    • [randy] - Updated to libgsf-1.14.0.

  • April 7th, 2006

    • [randy] - Updated to hicolor-icon-theme-0.9.

    • [randy] - Updated to shared-mime-info-0.17.

    • [randy] - Updated to libcroco-0.6.1.

  • April 6th, 2006

    • [randy] - Added a parameter to the Subversion build commands to disable the use of Berkeley DB; also added commands to fix the improper permissions on the installed documentation.

    • [dnicholson] - Fixed typo in Xorg-7 font installation. Fixed typos in X Window System Components fonts section.

    • [randy] - Updated to Poppler-0.4.5.

  • April 5th, 2006

    • [randy] - Updated to Qt-3.3.6.

    • [dj] - Added sed to correct glibc header problem in xorg-server.

    • [bdubbs] - Added Wireless Tools.

  • April 4th, 2006

    • [randy] - Updated to Subversion-1.3.1.

    • [randy] - Updated Xpdf-3.01 to patch-level 2.

  • April 2nd, 2006

    • [randy] - Updated to libusb-0.1.12.

    • [randy] - Updated to G-Wrap-1.9.6.

    • [randy] - Updated to SLIB-3a3.

    • [randy] - Updated to Guile-1.8.0.

    • [randy] - Updated to Ruby-1.8.4.

    • [randy] - Updated the HTTP download link in the PPP instructions.

    • [randy] - Commented out the link to the 'non-root dial-out HOWTO' from the WvDial instructions as it is no longer available.

    • [randy] - Updated to Samba-3.0.22.

  • March 31st, 2006

    • [randy] - Changed the name of the Nail package to its new name of 'Heirloom mailx' and updated to the 12.0 version.

    • [randy] - Updated to Sendmail-8.13.6.

    • [randy] - Updated to Linux-PAM-0.99.3.0.

    • [randy] - Updated to Shadow-4.0.15 (now current with the LFS version).

    • [randy] - Updated to PHP-5.1.2.

    • [randy] - Updated to cURL-7.15.3.

    • [randy] - Updated to Stunnel-4.15.

  • March 30th, 2006

    • [randy] - Updated to Libidn-0.6.3.

    • [randy] - Updated to GTK-Doc-1.5.

    • [randy] - Added XML::Parser as a required dependency and intltool as an optional dependency of ScrollKeeper.

    • [randy] - Added LWP as an optional dependency of XML::Parser.

  • March 29th, 2006

    • [randy] - Updated to OpenLDAP-2.3.20 (stable-20060227).

    • [dnicholson] - Fixed typo and added font size setting to Xterm configuration.

    • [dnicholson] - Updated to OpenSSH-4.3p2

    • [randy] - Updated to PostgreSQL-8.1.3.

  • March 28th, 2006

    • [randy] - Updated to Heimdal-0.7.2.

    • [dnicholson] - Changed --with-luit to --enable-luit in Xterm. Added information about configuring in Xterm.

    • [dnicholson] - Added --without-add-fonts back into Fontconfig with a different note describing its use. Added more information about configuring Fontconfig and a link to the user's manual.

    • [dnicholson] - Reworked the fonts section of X Window System Components. Added detailed description of both font services and more links to available fonts. Thanks to Alexander Patrakov, Andrew Benton, Bruce Dubbs and Ken Moffat for their contributions.

    • [dnicholson] - Added commands to make only TrueType fonts available to Fontconfig in Xorg-6.9.0, Xorg-7.0.0 and XFree86-4.5.0. Fixed name of luit patch in Xorg-6.9.0.

    • [randy] - Updated to Firefox-1.5.0.1.

    • [dj] - Fixed xorg-server download link.

    • [dj] - Removed unneeded -lglut from Mesa Demos linker flags.

  • March 27th, 2006

    • [randy] - Updated to Gtk+-2.8.16.

    • [randy] - Updated to Pango-1.12.0.

    • [randy] - Updated to ATK-1.11.3.

    • [randy] - Updated to GLib-2.10.1.

    • [randy] - Updated to cairo-1.0.4.

  • March 26th, 2006

    • [dnicholson] - Changed note for Bc test suite. Removed one unnecessary test. Thanks to Bruce Dubbs.

    • [dnicholson] - Updated to LibTIFF-3.8.2. Noted optional dependency of MesaLib for the GLUT library.

    • [randy] - Updated to Whois-4.7.12.

    • [randy] - Applied a patch sent in by Chris Staub to suppress some unneeded screen output by the update-pciids command.

    • [randy] - Updated to Tcl-8.4.12 and Tk-8.4.12.

  • March 25th, 2006

    • [dj] - Updated individual X.org packages (wget files updated) and corrected two instructions where $XORG_CONFIG should be used.

    • [dnicholson] - Removed patches in Bc and replaced with equivalent seds. Fixed segmentation faults with bc -l. Fixes #1846. Added commands for test suite. Removed libedit dependency as it conflicts with Readline and causes problems.

  • March 24th, 2006

    • [randy] - Updated to Expat-2.0.0.

    • [randy] - Updated to S-Lang-2.0.6.

    • [randy] - Updated to PCRE-6.6.

    • [andy] - Updated Fluxbox to 0.9.15

  • March 23rd, 2006

    • [randy] - Added a note to the CrackLib instructions advising to reinstall Shadow if you need strong password support without installing Linux-PAM.

    • [randy] - Modified the Shadow instructions to reflect that it needs to be reinstalled (and provided the modified commands) if CrackLib is installed without Linux-PAM.

    • [randy] - Updated to CrackLib-2.8.9.

  • March 22nd, 2006

    • [archaic] - Updated the Coreutils entity in the Net-Tools page.

  • March 21st, 2006

    • [randy] - Updated Perl version entity to 5.8.8 to match current LFS SVN.

  • March 19th, 2006

    • [randy] - Changed the Expect dependency in the DejaGnu instructions to a run-time-only dependency.

  • March 18th, 2006

    • [dnicholson] - Updated compressdoc script to use Man-DB.

  • March 16th, 2006

    • [randy] - Added new package K3b.

    • [randy] - Created two XInclude files to replace instances of identical text in several KDE packages.

  • March 15th, 2006

    • [dnicholson] - Added sed to libexif commands to fix Ticket #1785.

    • [dj] - Added --mandir switch to dhcpcd instructions.

  • March 14th, 2006

    • [bdubbs] - Clarified jdk download instructions and made minor updates to the install of the binary version.

  • March 13th, 2006

    • [dj] - Removed font path comments and defines from Xorg and XFree86 host.def files.

    • [dj] - Fixed typos, clarified library installation, added pkg-config note, and added return notes for data packages and luit to Xorg-7 instructions.

  • March 9th, 2006

    • [bdubbs] - Updated to gnupg-1.4.2.2 to fix security problem.

  • March 7th, 2006

    • [dj] - Updated to dhcpcd-2.0.2.

  • March 6th, 2006

    • [dnicholson] - Moved libgtkhtml to General Libraries since it is not a GNOME library. Change prefix to /usr.

    • [dj] - Removed /usr/share/fonts symlink in Xorg-7 instructions.

  • March 5th, 2006

    • [dj] - Updated to xorg-6.9.0

  • March 4th, 2006

    • [dj] - Updated JDK to account for Xorg-7.0.0.

  • March 3rd, 2006

    • [dj] - Updated Xorg-7 and Mesa to use alternate module path.

    • [dj] - Separated user and root commands in Xorg-7.0.0.

  • March 2nd, 2006

    • [dnicholson] - Updated to Mutt-1.5.11. Added note about use of development release.

    • [dj] - Added command explanations and corrected prefix for xterm, libdrm, and Mesa.

    • [dj] - Added Xorg-7.0 and corrected links in xterm and Mesa pages.

    • [dj] - Added Xorg-7 to all X dependency references.

  • March 1st, 2006

    • [dnicholson] - Update to XFS-2.7.11. Expanded library installation commands.

    • [randy] - Final cleanup to the GNOME add-on packages after the 2.12.2 update.

  • February 27th, 2006

    • [randy] - Added a patch to fix librsvg if NSS/NSPR is installed.

    • [dnicholson] - Added note that tinker-term.sh is irrelevant with Ncurses-5.5+ and shouldn't be installed in that situation.

    • [bdubbs] - Added seamonkey-1.0 and deleted mozilla.

  • February 25th, 2006

    • [dj] - Added libdrm, Mesa, and xterm packages.

  • February 23rd, 2006

    • [bdubbs] - Removed duplicate installation of lndir in xorg and xfree86.

  • February 21st, 2006

    • [bdubbs] - Simplified unzip instructions.

  • February 13th, 2006

    • [randy] - Updated to Gnome System Monitor-2.12.2.

  • February 12th, 2006

    • [randy] - Updated to GConf Editor-2.12.1.

    • [archaic] - Updated to Postfix-2.2.8.

    • [randy] - Text updates and corrections provided by a patch sent in by Chris Staub.

    • [randy] - Replaced the commands to modify the *ns*.pc pkgconfig files with commands to create symlinks to the actual NSS/NSPR .pc files in the Firefox, Mozilla and Thunderbird instructions as suggested by Dan Nicholson.

    • [randy] - Abbreviated the commands used to install the NSS libraries in the NSS instructions as suggested by Tushar Teredesai.

    • [randy] - Updated to Galeon-2.0.0.

  • February 10th, 2006

    • [randy] - Added new package dvd+rw-tools-6.1.

  • February 9th, 2006

    • [randy] - Updated to Transcode-1.0.2.

    • [randy] - Minor corrections and updates to the Avifile instructions.

  • February 8th, 2006

    • [randy] - Updated to Totem-1.2.1.

    • [randy] - Updated to Gnumeric-1.6.2.

  • February 7th, 2006

    • [randy] - Updated to GOffice-0.2.0.

    • [randy] - Updated to Evolution-2.4.2.1.

  • February 6th, 2006

    • [randy] - Updated to GtkHTML-3.8.2.

    • [randy] - Updated Gnopernicus to fit the GNOME-2.12.2 version changes.

  • February 5th, 2006

    • [randy] - Updated to GNOME Magnifier-0.12.3.

    • [randy] - Updated to libgail-gnome-1.1.3.

    • [randy] - Modified the instructions for linking to installed plugins and removed the commands to create /usr/lib/mozilla compatibility links from the Mozilla instructions.

    • [randy] - Updated the following GNOME Add-on package instructions to fit the 2.12.2 version changes: GDM, Java Access Bridge, GNOME Speech.

  • February 4th, 2006

    • [randy] - Updated the following GNOME Add-on package instructions to fit the 2.12.2 version changes: Epiphany, gnome-volume-manager, GNOME Games, Sound Juicer.

  • February 3rd, 2006

    • [randy] - Updated the following GNOME Add-on package instructions to fit the 2.12.2 version changes: libgnomecups, libgnomeprint, libgnomeprintui, libgtkhtml, Evolution Data Server, system-tools-backends, EOG, gucharmap, File Roller, Gnome Utilities, Nautilus CD Burner.

    • [randy] - Updated the GNOME Core packages to the 2.12.2 version. Modified the /opt installation path to /opt/gnome-2.12.2, the configuration directory to /etc/gnome/2.12.2 and the libexecdir settings to a subdirectory of $GNOME_PREFIX/lib. The GNOME add-on packages version entities also now reflect the 2.12.2 version, though the actual package instructions have not been updated.

    • [randy] - Added a new page in the GNOME Core section for the shared-mime-info package as it is not a direct dependency of any GNOME Core package any longer.

    • [randy] - Updated Evolution Data Server dependencies to reflect the NSS package and modified the libexecdir setting.

    • [randy] - Updated to Metacity-2.12.2.

    • [randy] - Updated to libwnck-2.12.2.

    • [randy] - Updated to libsoup-2.2.7.

  • February 2nd, 2006

    • [randy] - Updated to XScreenSaver-4.23.

  • February 1st, 2006

    • [randy] - Updated to LZO-2.02.

    • [randy] - Updated to Cdrdao-1.2.1.

    • [bdubbs] - Updated vim to version 6.4.

  • January 31st, 2006

    • [randy] - Removed the piping of 'yes' commands from the installation of the packages containing Sun license agreements (JDK binary, FOP and FreeTTS) and instead provided a note to reference the text about automating builds.

  • January 30th, 2006

    • [randy] - Renamed the 'unpacking' page in Chapter 2 to 'building-notes' as this more accurately reflects the page and added a new section 'Automated Building Procedures' to the 'building-notes' page.

  • January 29th, 2006

    • [randy] - Added instructions to build the Akode package, added a patch to fix a build issue with libtunepimp, and adjusted the dependencies in the Kdemultimedia instructions.

    • [randy] - Updated all the links to files located on the Anduin server to use entities.

    • [andy] - Updated glib2 to 2.8.6.

  • January 28th, 2006

    • [randy] - Updated numerous items in the GStreamer Plug-ins instructions.

    • [andy] - Updated GConf to 2.12.1

    • [andy] - Updated gtk+2 to 2.8.11

  • January 27th, 2006

    • [bdubbs] - Added section on the BLFS Wiki.

    • [bdubbs] - Removed section on package management because it has been incorporated into LFS.

    • [randy] - Modified the instruction to apply the patch in the kdegraphics instructions as the patch has changed, thanks to Miguel Bazdresch for the report.

    • [randy] - Added a note to the GStreamer instructions about Valgrind breaking the build.

    • [andy] - Updated libxklavier to 2.1.

  • January 25th, 2006

    • [randy] - Added Python to the ISO Codes dependencies. Thanks to Jay McHugh for sending in the report.

    • [randy] - Updated to Mozilla-1.7.12, changed the build method to use 'client.mk' and '.mozconfig', added instructions to use system-installed NSS/NSPR libraries and added additional configuration information.

    • [randy] - Changed the default to render SVG graphics in the Firefox instructions.

  • January 23rd, 2006

    • [randy] - Updated to Thunderbird-1.5, changed the build method to use 'client.mk' and '.mozconfig', added instructions to use system-installed NSS/NSPR libraries and added additional configuration information.

    • [randy] - Added information about using system-installed versions of the NSS/NSPR libraries and added additional configuration information to the Firefox instructions.

    • [randy] - Added new package Network Security Services, NSS-3.11.

  • January 22nd, 2006

    • [randy] - Adjusted some dependencies using a patch sent in by Chris Staub.

  • January 21st, 2006

    • [bdubbs] - Added the post-3.4.3-kdelibs-kjs.diff security vulnerability patch to the kdelibs instructions.

  • January 18th, 2006

    • [randy] - Modified the sed command in the Firefox instructions so that it can be run multiple times, also modified the instructions for creating symlinks to the system-wide mozilla plugin directory.

    • [randy] - Added a dependency and updated text to the Xine Libraries instructions.

    • [randy] - Updated to ImageMagick-6.2.5-5.

  • January 17th, 2006

    • [tushar] - Modify unzip compilation to enable unzip to unzip files up to 4 GB.

    • [bdubbs] - Added patch for sudo to clear selected environment variables. Submitted by archaic.

    • [randy] - Updated to the HTML::TableExtract-2.06 Perl Module and added new modules HTML::Element::Extended and HTML::Tree as dependencies; also more reorganization and singling out of the Perl Modules.

    • [tushar] - Change lynx installation target to install-full.

    • [tushar] - Removed obsolete note for zipcloack.

    • [randy] - Added three new Perl Modules as dependencies of the Digest::SHA module: Devel::Symdump, Pod::Coverage and Test::Pod::Coverage.

  • January 16th, 2006

    • [randy] - Updated to the Digest::SHA-5.32 Perl Module and numerous text and dependency corrections/additions in the Perl Modules instructions.

    • [randy] - Singled out the Text::Diff module in the Perl Modules instructions.

    • [randy] - Updated to the Module::Signature-0.51 Perl Module and singled it out in the instructions.

    • [randy] - Added optional dependencies to the Archive::Zip and HTML::Tagset Perl Modules instructions.

    • [randy] - Updated to the ExtUtils::CBuilder-0.15 and ExtUtils::ParseXS-2.15 Perl Modules.

    • [randy] - Updated to the YAML-0.50 Perl Module and provided a note in the Module::Build instructions about using an older version of YAML.

    • [randy] - Updated to the Module::Info-0.30 Perl Module and added new optional dependencies.

  • January 15th, 2006

    • [randy] - Replaced the Test::Builder::Tester Perl Module with the Test::Simple-0.62 module.

    • [randy] - Updated to the Test::Pod-1.22 Perl Module.

    • [randy] - Updated to the HTML::Tagset-3.10, HTML::Parser-3.48 and Pod::Simple-3.03 Perl Modules.

    • [randy] - Singled out the Compress::Zlib module in the Perl Modules instructions and updated to the 1.41 version.

  • January 14th, 2006

    • [randy] - Added a note to run the test suite and added documentation installation commands to the GnuPG instructions.

  • January 12th, 2006

    • [randy] - Updates to the FFmpeg instructions: added a patch and dependency URLs to fix the AMR support and added additional documentation installation commands.

  • January 11, 2006

    • [randy] - Updates to MPlayer: added an x264 patch, added new dependencies, updated the version of the Skins file.

    • [andy] - Updated to abiword-2.4.2.

  • January 10th, 2006

    • [randy] - Fixed broken commands in the XviD instructions.

    • [randy] - Corrections to the CVS instructions: fixed broken download URLs and corrected documentation installation commands.

  • January 9th, 2006

    • [randy] - Updated the MPlayer instructions with the new URL for the LIVE555 Streaming Media web site.

  • January 8th, 2006

    • [randy] - Updated to Ethereal-0.10.14.

    • [randy] - Updated to libmusicbrainz-2.1.2.

    • [randy] - Minor updates to the Kdegraphics instructions: added new dependencies, added a note about creating the API documentation, added a note about the OCR support, updated the installed programs, libraries and directories list.

  • January 7th, 2006

    • [randy] - Removed the Berkeley DB dependency from packages utilizing it as BDB is now built in LFS.

    • [randy] - Updated to Berkeley DB-4.4.16, added a patch to the Python instructions to support the new BDB, updated the Heimdal instructions to account for the changed library file names.

    • [randy] - Updated to GIMP-2.2.10.

    • [andy] - Updated to xvidcore-1.1.0.

  • January 6th, 2006

    • [randy] - Updated SANE back ends to 1.0.17 and front ends to 1.0.14.

    • [randy] - Modified the command to run the libcroco test suite.

  • January 5th, 2006

    • [randy] - Updated to Poppler-0.4.3.

    • [randy] - Updated to giflib-4.1.4.

    • [randy] - Updated to libexif-0.6.13.

    • [randy] - Added the CAN-2005-3193 security vulnerability patch to the kdegraphics instructions.

  • January 4th, 2006

    • [randy] - Minor additions to the kdebase instructions: added optional dependencies, added a configuration section which includes information about run-time packages, and added installed programs, libraries and directories.

    • [igor] - Updated to Xpdf-3.01pl1.

  • January 2nd, 2006

    • [randy] - Added significant updates to the HAL instructions: updated the dependencies, modified the command that changes the storage device policy, added text and a visual chart to explain the requirements of the hal-device-manager program, added commands to allow for locale specific needs in the storage device policy, and some general text cleanup.

    • [randy] - Updated the D-BUS instructions to include text that identifies the needs of the HAL package.

  • December 31st, 2005

    • [randy] - Added a sed command to the D-Bus instructions to change a 'jar' command to 'fastjar' due to the changes in GCC-4.0.x.

  • December 30th, 2005

    • [randy] - Added some optional dependencies to the Kdelibs instructions.

    • [randy] - Added new package Libidn-0.6.0.

    • [andy] - Added new package Gaim-1.5.0.

  • December 29th, 2005

    • [randy] - Removed libogg and added NAS to the optional dependencies of aRts.

    • [randy] - Added a caution note to the MC instructions about the UTF-8 related issues.

    • [randy] - Added a caution note to the UnZip instructions about the locale related issues.

    • [randy] - Added new section 'Locale Related Issues' to Chapter 2, 'Important Information', thanks to Alexander Patrakov for contributing the text for this page. The page is very incomplete and many more packages with locale related issues will be added.

  • December 28th, 2005

    • [randy] - Added new package GOffice-0.1.2.

  • December 27th, 2005

    • [randy] - Updated to libgsf-1.13.3.

    • [randy] - Removed the unneeded 'make' command from the hicolor-icon-theme instructions.

    • [randy] - Minor cleanup to libgnomeprint dependencies and removed an unneeded switch from the configure command.

    • [randy] - Minor cleanup to libgnomecups dependencies.

    • [randy] - Updated to ISO Codes-0.49.

  • December 26th, 2005

    • [randy] - Updated to Doxygen-1.4.5.

    • [randy] - Minor changes to the Qt instructions: fixed HTTP download URL, added test suite notes, modified the configure command to include switches for the recommended dependencies and added appropriate notes about the recommended dependencies.

    • [randy] - Updated to little cms-1.15.

    • [randy] - Updated to Sendmail-8.13.5.

    • [dj] - Added colorls patch to tcsh instructions.

    • [dj] - Corrected additional recommended and optional dependencies in OpenOffice instructions.

    • [andy] - Update xine-lib to 1.1.1.

  • December 25th, 2005

    • [randy] - Updated to LibMPEG3-1.6.

  • December 24th, 2005

    • [randy] - Fixed a syntax error in the configure scripts and simplified the existing sed commands in the Tcl and Tk instructions.

    • [randy] - Added pkg-config and ALSA Library as required dependencies of the ALSA Plugins package, thanks to Joe Ciccone for pointing out the omission.

    • [randy] - Fixed GTK+-2 documentation installation commands, thanks to Nico R. for pointing out the breakage.

    • [randy] - Updated to Firefox-1.5, modified the method used to build it and added a command to fix an anonymous enum in an interface header file.

    • [dj] - Added GTK+-2 to OpenOffice required dependencies and removed FreeType and OpenLDAP (OpenLDAP is currently broken).

  • December 23rd, 2005

    • [andy] - Updated librsvg to 2.12.7.

    • [andy] - Updated Gnome doc utils to 0.4.4.

  • December 22nd, 2005

    • [andy] - Updated XFce to 4.2.3.2.

  • December 21st, 2005

    • [archaic] - Removed the obsolete sed in sudo and added a note to use visudo to edit the sudoers file.

  • December 20th, 2005

    • [randy] - Commented out the Python and Perl bindings build notes from the Subversion instructions as there is a build failure using current versions of SWIG and (B)LFS packages.

    • [randy] - Added documentation installation commands to the Guile instructions.

  • December 19th, 2005

    • [randy] - Modified the sed command in the OpenSSH instructions to better allow for repeated builds.

    • [bdubbs] - Updated to nmap-3.95.

    • [bdubbs] - Added sed to Bind to prevent invalid warnings in the log.

    • [randy] - Updated to Samba-3.0.20b.

    • [andy] - Updated to Gnumeric-1.6.1.

  • December 18th, 2005

    • [randy] - Updated to ESP Ghostscript-8.15.1.

    • [bdubbs] - Changed configure instruction in gimp to use recommended dependencies. Added note that the switches to configure need to be changed if the recommended dependencies are not installed.

    • [bdubbs] - Updated to whois-4.7.10.

    • [bdubbs] - Updated to KDE-3.5 and kdevelop 3.3.0.

  • December 17th, 2005

    • [randy] - Updated to PHP-5.1.1.

  • December 16th, 2005

    • [randy] - Updated to Stunnel-4.14.

    • [randy] - Updated to Ruby-1.8.3.

  • December 15, 2005

    • [randy] - Updated to Aspell-0.60.4.

    • [randy] - Added a sed command to the FOP instructions which fixes an obsolete tail command in the JAI binary.

    • [randy] - Updated to Gamin-0.1.7.

    • [bdubbs] - Removed section on newsserver.

    • [randy] - Updated to Apache HTTP Server-2.2.0.

  • December 14th, 2005

    • [randy] - Updated to OpenLDAP-2.3.11.

    • [randy] - Updated to PostgreSQL-8.1.1.

  • December 13th, 2005

    • [bdubbs] - Update description of LiveCD.

    • [randy] - Updated to MySQL-5.0.16.

    • [bdubbs] - Update koffice to version 1.4.2.

    • [bdubbs] - Removed libungif.

    • [randy] - Updated to GTK+-2.8.9.

    • [andy] - Updated to Abiword-2.4.1

  • December 11th, 2005

    • [randy] - Updated to Pango-1.10.2.

    • [randy] - Updated to GLib-2.8.4.

  • December 10th, 2005

    • [randy] - Updated to Heimdal-0.7.1.

  • December 9th, 2005

    • [randy] - Fixed command typos in the Gnome Menus and Gnome Volume Manager instructions.

    • [andy] - Updated Fluxbox to version 0.9.14.

    • [andy] - Added details of how to create a fluxbox.desktop file to the Fluxbox page.

  • December 8th, 2005

    • [bdubbs] - Updated to curl-7.15.1.

  • December 7th, 2005

    • [bdubbs] - Added sed to remove incomplete tests from test program in popt.

    • [bdubbs] - Removed reference to non-existent esound.ps from EsounD-0.2.36.

    • [bdubbs] - Removed --with-history option from libxml2. Added a caution that the make check command can hang forever under certain conditions with the option.

    • [bdubbs] - Added Andy Benton to the list of BLFS editors.

    • [randy] - Added GTK-Doc as a dependency of libxml, thanks to go moko for pointing out the omission.

    • [randy] - Added Ghostscript as a dependency of Doxygen.

    • [randy] - Added GNOME Doc Utils as a dependency of Evince, thanks to David Rosal for pointing out the omission.

    • [randy] - Updated to libvorbis-1.1.2.

    • [randy] - Updated to libogg-1.1.3.

  • December 6th, 2005

    • [dj] - Completed dependencies, removed optional configure parameters and added the no_mozilla (firefox) patch for OpenOffice.

  • December 3rd, 2005

    • [randy] - Updated to GCC-4.0.2.

    • [bdubbs] - Updated to qt-3.3.5.

  • December 2nd, 2005

    • [dj] - Updated JDK binary version to 1.5.0_06.

  • December 1st, 2005

    • [dj] - Added several fixes to OpenOffice instructions.

  • November 30th, 2005

    • [randy] - Updated to xinetd-2.3.14.

    • [randy] - Added a command to create the logging directory in the GDM instructions, thanks to Vincent Fretin for pointing out the oversight.

    • [randy] - Updated to PCI Utilities-2.2.1.

    • [randy] - Updated to Sysstat-6.0.2.

  • November 29th, 2005

    • [randy] - Updated to Shadow-4.0.13.

    • [randy] - Updated to Linux-PAM-0.99.2.0. Note that many of the installation commands have changed.

    • [dj] - Updated ash patch for use with gcc-4.x.

  • November 27th, 2005

    • [randy] - Added an FTP download URL and changed the documentation installation to a versioned directory in the Fontconfig instructions.

    • [randy] - Added documentation installation and clarified the purpose of the sed command in the FreeType instructions.

  • November 26th, 2005

    • [randy] - Added a note to the Lynx instructions that identifies, and shows how to avoid, a security vulnerability.

    • [randy] - Updated to S-Lang-2.0.5.

    • [randy] - Updated the text in the Net-tools instructions to reflect the updated version of Coreutils.

  • November 25th, 2005

    • [randy] - Updated to OpenSSL-0.9.7i

    • [randy] - Updated to pkg-config-0.20

  • November 24th, 2005

    • [randy] - Updated to CrackLib-2.8.6 and modified the installation commands to work with the newer version.

  • November 23rd, 2005

    • [bdubbs] - Added sed to sudo to correct a security issue (Archaic). Also added --enable-shell-sets-home switch (Gerard).

  • November 22nd, 2005

    • [bdubbs] - Added sudo-1.6.8p12.

    • [randy] - Updated to HTML Tidy-051026. Also updated the docs to 051020 and changed the documentation directory to a versioned name.

    • [randy] - Updated to FriBidi-0.10.7.

    • [randy] - Added DocBook SGML DTD-3.1 as a dependency to perform the tests outlined in the DocBook DSSSL Stylesheets instructions.

    • [randy] - Updated to Ethereal-0.10.13.

    • [randy] - Added new package GC-6.5.

  • November 21st, 2005

    • [randy] - Updated the Rsync bootscript to remove the --compress parameter, thanks to Jeremy Huntwork for reporting the problem.

    • [randy] - Added --disable-python to the configure command in the D-BUS instructions to fix a broken build identified by Filip Bartmann.

    • [randy] - Added --disable-libwrap to the configure command in the Stunnel instructions to fix a broken build identified by Filip Bartmann.

    • [randy] - Added new package gnome-volume-manager-1.5.1 to the Utilities section of Chapter 31.

    • [randy] - Modified the libexecdir parameter passed to configure and tweaked the storage device policy in the HAL instructions.

  • November 19th, 2005

    • [randy] - Added notes to start a D-BUS session daemon to the D-BUS, GDM and GNOME Configuration instructions.

    • [dj] - Cleaned up OpenOffice instructions and added a no-pam patch.

  • November 18th, 2005

    • [randy] - Added a GCC4 patch to the libvorbis instructions, thanks to Steffen Knollman for discovering the problem and contributing the patch.

    • [igor] - Updated to rsync-2.6.6.

  • November 17th, 2005

    • [randy] - Added new package Sound Juicer-2.12.2 to the Utilities section of Chapter 31.

    • [dj] - Corrected OpenOffice patch names.

  • November 15th, 2005

    • [dj] - Updated to OpenOffice-2.0.0

  • November 14th, 2005

    • [randy] - Updated to Balsa-2.3.6.

  • November 13th, 2005

    • [randy] - Added several more entries to the 'Other Programming Tools' section. Many thanks to Miguel Bazdresch for his suggestions and other contributions.

  • November 12th, 2005

    • [dj] - Updated GCC4 patches for Mozilla projects to include xptinfo.h anonymous enum patch.

  • November 9th, 2005

    • [randy] - Updated references to source and md5sum files on the Anduin server due to the Anduin reorganization.

    • [randy] - Added several more programming languages to the 'Other Programming Tools' section.

  • November 7th, 2005

    • [randy] - Added several programming languages to the 'Other Programming Tools' section.

    • [dj] - Added Archive::Zip to the Perl Modules page.

  • November 5th, 2005

    • [dj] - Updated alsa-restore script per Alexander Patrakov's suggestions.

  • November 4th, 2005

    • [randy] - Added a patch to the libgsf instructions so that the configure script properly discovers GConf.

  • November 3rd, 2005

    • [randy] - Added new package GMime-2.1.17.

  • November 1st, 2005

    • [randy] - Added A-A-P, Mono, OProfile, OGDL and R to the 'Other Programming Tools' section.

    • [randy] - Added new package libmpeg2-0.4.0b.

    • [randy] - Updated to Transcode-1.0.1.

  • October 31st, 2005

    • [randy] - Added new package libmusicbrainz-2.1.1.

  • October 30th, 2005

    • [randy] - Added new package Totem-1.2.0.

    • [dj] - Updated to JDK-1.5.0_05.

  • October 29th, 2005

    • [archaic] - Updated to PCI-Utilities-2.2.0.

  • October 28th, 2005

    • [igor] - Updated to SDL-1.2.9.

    • [igor] - Updated to CVS-1.11.21.

  • October 25th, 2005

    • [randy] - Added new package Evince-0.4.0 and removed the GPDF package from the GNOME Add-on section.

  • October 23rd, 2005

    • [igor] - Updated to MPlayer-1.0pre7try2.

    • [randy] - Added new package Poppler-0.4.2.

  • October 21st, 2005

    • [randy] - Added new package GNOME Keyring Manager-2.12.0.

  • October 20th, 2005

    • [randy] - Added new package ISO Codes-0.48.

  • October 19th, 2005

    • [randy] - Added new package PyXML-0.8.4.

    • [randy] - Added category headers to the GNOME Add-on packages Table-of-Contents. Many thanks to Manuel Canales Esparcia for the XML wizardry to make this happen.

  • October 18th, 2005

    • [randy] - Added a patch and an additional command to enable the streaming audio method in the GNOME Speech instructions.

    • [randy] - Updated to GDM-2.8.0.5.

  • October 17th, 2005

    • [randy] - Updated to GOK-1.0.5.

    • [igor] - Updated to HTML Tidy-051013.

    • [randy] - Updated to Gnopernicus-0.12.0.

    • [randy] - Updated to GNOME Speech-0.3.8.

  • October 16th, 2005

    • [randy] - Updated to GNOME Magnifier-0.12.2; moved the creation of the xextensions.pc file from the GNOME Magnifier to the XFree86 instructions.

    • [igor] - Updated to PHP-5.0.5.

    • [randy] - Modified dependencies in the libgtkhtml instructions.

    • [igor] - Updated to PCRE-6.4.

    • [igor] - Updated to cURL-7.15.0.

  • October 15th, 2005

    • [igor] - Added the gcc4 patch for NTP.

    • [igor] - Updated to Fcron-3.0.0.

    • [igor] - Updated to Apache-2.0.55.

    • [igor] - Updated to Python-2.4.2.

    • [igor] - Updated to Berkeley DB-4.3.29.

    • [randy] - Updated to GGV-2.12.0.

    • [igor] - Updated to Firefox-1.0.7.

    • [randy] - Updated to AT SPI-1.6.6.

    • [igor] - Updated to libtiff-3.7.4.

    • [igor] - Updated to cairo-1.0.2.

    • [randy] - Updated to Zenity-2.12.1.

    • [randy] - Updated to GNOME-Netstatus-2.12.0.

  • October 14th, 2005

    • [igor] - Updated to libpcap-0.9.4.

    • [igor] - Updated to Wget-1.10.2.

    • [randy] - Updated to GNOME System Monitor-2.12.1.

    • [igor] - Updated to OpenSSL-0.9.7h.

    • [randy] - Updated to GConf Editor-2.12.0.

    • [randy] - Updated to File Roller-2.12.1.

    • [randy] - Updated to EOG-2.12.1.

    • [randy] - Updated to gedit-2.12.1.

  • October 13th, 2005

    • [igor] - Updated Vim security patch.

    • [randy] - Updated to GNOME Games-2.12.1.

    • [randy] - Updated to Epiphany-1.8.2.

    • [randy] - Changed Python from an optional to a recommended dependency in the GNOME Doc Utils dependencies.

  • October 12th, 2005

    • [randy] - Updated to gcalctool-5.6.31.

  • October 11th, 2005

    • [randy] - Updated to gtksourceview-1.4.2.

    • [randy] - Updated to bug-buddy-2.12.1.

    • [randy] - Updated to GnomeMeeting-1.2.2.

    • [randy] - Updated to GNOME Utilities-2.12.1.

    • [randy] - Updated to GNOME Media-2.12.0.

    • [randy] - Updated to Nautilus CD Burner-2.12.1.

    • [randy] - Updated to Evolution-2.4.1.

  • October 10th, 2005

    • [randy] - Updated to GtkHTML-3.8.1.

    • [randy] - Updated to system-tools-backends-1.4.0.

    • [randy] - Updated to libgnomeprintui-2.12.1.

    • [randy] - Updated to libgnomeprint-2.12.1.

    • [randy] - Updated to libgnomecups-0.2.2.

    • [randy] - Added GTK+-2 as a required dependency of libgtkhtml.

    • [randy] - Updated to Evolution Data Server-1.4.1.1.

    • [randy] - Updated core GNOME packages to the 2.12.1 release of GNOME. GNOME add-on packages are updated only to the release versions. The individual updates to the GNOME add-on packages will be accomplished individually.

  • October 8th, 2005

    • [tushar] - Replaced FAM with Gamin.

  • October 6th, 2005

    • [randy] - Updated to librsvg-2.12.4.

    • [dj] - Updated to JDK (source build) 1.5.0_04.

    • [dj] - Updated to OpenOffice 1.1.5.

  • October 5th, 2005

    • [randy] - Updated to Metacity-2.12.1.

    • [randy] - Updated to libwnck-2.12.1.

    • [randy] - Updated to GTK+-2.8.6.

    • [randy] - Updated to Pango-1.10.1.

    • [randy] - Updated to GLib-2.8.3.

    • [randy] - Updated to libxml2-2.6.22.

    • [randy] - Added the --disable-error-on-warning parameter to the GnuCash configure command as using GCC-4.0.x will generate warnings which will break the build if the parameter is not used.

    • [randy] - Added a patch to the Guile instructions and changed the sed command in the SLIB instructions so that the two packages work nicely together.

  • October 4th, 2005

    • [tushar] - Prevent gcc fixincludes from running to match LFS instructions.

    • [randy] - Added a sed command to the GtkHTML-1 instructions to fix a GCC-4.0.x build problem.

    • [randy] - Added a GCC-4 patch to the Soup instructions.

    • [randy] - Added a GCC-4 patch to the Guppi instructions.

    • [randy] - Added a GCC-4 patch to the GConf-1.0.9 instructions.

    • [randy] - Added a sed command to the Bonobo-1.4 instructions to fix a GCC-4 build problem.

  • October 3rd, 2005

    • [randy] - Added a GCC-4 patch to the GNOME Libraries-1.4 instructions.

    • [randy] - Clarified the dependencies in the Imlib instructions.

    • [randy] - Updated to AbiWord-2.2.10.

  • October 1st, 2005

    • [randy] - Added new package HAL-0.5.4.

  • September 26th, 2005

    • [randy] - Added new package D-BUS-0.50.

  • September 25th, 2005

    • [randy] - Added a patch to fix a build problem with newer versions of libgsf and added a sed command so the default is to build the Perl plugin module to the Gnumeric instructions.

  • September 22nd, 2005

    • [dj] - Updated JDK-1.5.0 gcc4 patch.

  • September 21st, 2005

    • [randy] - Updated to Samba-3.0.20.

    • [bdubbs] - Reverted gcc build instructions.

    • [randy] - Updated to EsounD-0.2.36.

    • [randy] - Updated to Metacity-2.12.0.

    • [randy] - Updated to Libwnck-2.12.0.

  • September 20th, 2005

    • [david] - Added a sed to build Cdrdao-1.2.0 with gcc-4.0.1.

    • [randy] - Updated to GTK+-2.8.3.

    • [randy] - Updated to ATK-1.10.3.

    • [randy] - Updated to Pango-1.10.0.

    • [randy] - Updated to GLib-2.8.1.

    • [randy] - Added a command to create an X Render pkg-config file to the XFree86 instructions. Also created notes in the Metacity and cairo instructions to ensure this file exists.

    • [randy] - Added new package cairo-1.0.0.

    • [bdubbs] - Changed gcc build instructions to use a simple make. Added a note to use make bootstrap if the base compiler is not gcc-4.0.1.

  • September 19th, 2005

    • [bdubbs] - Added a patch to build mozilla with gcc-4.0.1.

    • [randy] - Updated to gucharmap-1.4.4.

    • [randy] - Updated to GST-Plugins-0.8.11.

    • [richard] - Added a sed to fix the build of the test suite for cpio-2.6 when using gcc-4.0.1. Suggested by Matthew Burgess

  • September 18th, 2005

    • [randy] - Updated to Xine User Interface-0.99.4.

    • [randy] - Updated to Xine Libraries-1.1.0.

    • [richard] - Updated to bluefish-1.0.4.

  • September 17th, 2005

    • [randy] - Added an alternate installation location for the shared library interface headers to the AFPL Ghostscript and ESP Ghostscript instructions.

    • [randy] - Updated to ImageMagick-6.2.4-5.

    • [randy] - Updated the Business::ISBN Perl module to 1.82.

    • [randy] - Updated the Test::Prereq Perl module to 1.028.

    • [randy] - Updated the Module::Signature Perl module to 0.50.

    • [randy] - Updated the Digest::SHA Perl module to 5.31.

    • [randy] - Updated the ExtUtils::ParseXS Perl module to 2.12.

    • [randy] - Updated the ExtUtils::CBuilder Perl module to 0.13.

    • [randy] - Updated the Archive::Tar Perl module to 1.26, added new Perl modules Text::Diff and Algorithm::Diff.

    • [randy] - Updated the Compress::Zlib Perl module to 1.38.

  • September 15th, 2005

    • [randy] - Updated to SANE-backends-1.0.16.

    • [randy] - Updated to the 0.9 version of the Gimp Help system, added a GCC-4 patch to the Gimp instructions.

    • [randy] - Updated to librsvg-2.11.1.

  • September 14th, 2005

    • [randy] - Removed redundant GTK+-2 dependency from the libgnomeprintui instructions.

    • [randy] - Updated to libgsf-1.12.3.

    • [randy] - Added documentation installation commands and corrected the note about the test suite in the libcroco instructions.

  • September 13th, 2005

    • [randy] - Added commands to the CVS instructions to create and install additional documentation.

    • [randy] - Updated to GStreamer-0.8.11 and adjusted the documentation files chown command to only run if the docs were built and installed.

  • September 12th, 2005

    • [tushar] - Moved creation of mad.pc to libmad section.

    • [randy] - Updated to VTE-0.11.15.

    • [randy] - Corrected the GNOME-1.4 OMF directory in the ScrollKeeper instructions.

    • [randy] - Updated to GCC-4.0.1.

  • September 11th, 2005

    • [randy] - Minor corrections to the XSL Stylesheets instructions, suggested by Manuel Canales Esparcia.

  • September 10th, 2005

    • [randy] - Added a note to the Tcl and Tk instructions to ensure the environment variables are properly set.

    • [randy] - Added a GCC-4 patch to the Xorg instructions.

    • [randy] - Updated to DocBook XSL Stylesheets-1.69.1.

    • [igor] - Updated to RP-PPPoE-3.6.

    • [dj] - Added a GCC-4 patch and updated 'fixed_paths' patch in JDK source build instructions.

    • [dj] - Added new Udev rules file for ALSA devices.

    • [dj] - Updated volume restore script for use with Udev versions greater than 058.

  • September 9th, 2005

    • [randy] - Added a GCC-4 patch to the libexif instructions.

    • [randy] - Added a GCC-4 patch to the Avifile instructions.

    • [randy] - Added a GCC-4 patch to the FFmpeg instructions.

    • [randy] - Added a GCC-4 patch to the MPlayer instructions.

    • [randy] - Added a GCC-4 patch to the Xvid instructions.

    • [randy] - Added a GCC-4 patch to the SDL instructions.

    • [randy] - Added a GCC-4 patch to the Firefox instructions.

    • [randy] - Added a GCC-4 patch to the Thunderbird instructions.

    • [randy] - Added a GCC-4 patch to the XMMS instructions.

    • [randy] - Added a GCC-4 patch to the Qt instructions.

    • [randy] - Added a GCC-4 patch and documentation installation commands to the NAS instructions.

    • [randy] - Added a GCC-4 patch to the Cyrus-SASL instructions.

    • [randy] - Added a GCC-4 patch to the Guile instructions.

    • [randy] - Replaced the Kernel_Headers patch with a GCC-4 patch in the Inetutils instructions.

    • [randy] - Added a GCC-4 patch to the xinetd instructions.

    • [randy] - Added a GCC-4 patch to the Linux-PAM instructions.

    • [randy] - Updated to intltool-0.34.1.

    • [randy] - Updated to libsoup-2.2.6.1.

  • September 8th, 2005

    • [randy] - Added a sed command to the libxklavier instructions to fix a GCC-4.x build problem.

    • [randy] - Updated to libxslt-1.1.15.

    • [randy] - Updated to libxml2-2.6.21.

  • September 7th, 2005

    • [richard] - Updated to XScreenSaver-4.22.

  • September 6th, 2005

    • [richard] - Added patch to GnuPG-1.4.2 as required by release notes.

    • [randy] - Updated to libIDL-0.8.6. Also added documentation installation commands to the instructions.

  • September 5th, 2005

    • [randy] - Updated to Subversion-1.2.3

  • September 4th, 2005

    • [randy] - Updated to OpenSSH-4.2p1. Also added some documentation installation commands to the instructions.

  • September 3rd, 2005

    • [randy] - Updated to HTML Tidy-050826.

    • [randy] - Updated to cURL-7.14.1.

  • September 2nd, 2005

    • [randy] - Added commands to the Heimdal instructions to preserve and restore some overwritten interface headers and libraries. Also listed the dependencies in a more accurate manner.

    • [randy] - Updated to MySQL-4.1.14.

    • [randy] - Fixed some broken commands in the TeX instructions.

  • September 1st, 2005

    • [randy] - Added documentation installation commands to the ALSA Libraries instructions.

  • August 31st, 2005

    • [randy] - Updated to Shadow-4.0.12.

    • [randy] - Updated to Wget-1.10.1.

  • August 30th, 2005

    • [bdubbs] - Updated to Mozilla-1.7.11.

    • [randy] - Removed obsolete dependencies from the LZO instructions.

  • August 29th, 2005

    • [bdubbs] - Updated to KDE-3.4.2. Added notes about the location of configuruation files. Updated optional dependencies.

    • [richard] - Added definition of dependency terms to Notes on Building Software.

  • August 28th, 2005

    • [randy] - Added documentation installation commands to the Xvid instructions.

    • [randy] - Added documentation installation commands to the libdv instructions.

    • [randy] - Updated to whois-4.7.6.

    • [randy] - Updated to libdvdcss-1.2.9.

    • [randy] - Added a patch to fix the XMMS plugin and added a sed command to fix the Valgrind testing in the FLAC instructions.

  • August 27th, 2005

    • [randy] - Added a patch to fix the test suite in the id3lib instructions.

    • [randy] - Updated the GCC patch and provided documentation installation commands to the libmpeg3 instructions.

  • August 26th, 2005

    • [randy] - Added fixes to the Thunderbird instructions: 1) the Movemail and RSS & Blogs account setup options are now available 2) modified the Enigmail setup so that it actually works 3) fixed the profile locking problem 4) made it so that if a mailto: URL is clicked, a message compose window is opened with the To: field filled out.

  • August 25th, 2005

    • [randy] - Added a command to the Firefox instructions to fix the profile locking problem and an optional command to open a new tab in an existing browser window, both suggested by Kevin Somervill. Thanks to Dan Nicholson for the reminder about Kevin's suggestions.

  • August 24th, 2005

    • [randy] - Modified SLIB instructions to use teTeX instead of Lynx to create the text documentation.

  • August 22nd, 2005

    • [randy] - Fixed chmod commands in GDM instructions, thanks to Hugo Villeneuve for pointed it out.

    • [randy] - Updated to Xpdf-3.01

    • [randy] - Updated to SLIB-3a2

  • August 21st, 2005

    • [randy] - Modifications to XMMS instructions: remove libogg as a dependency, added commands to install documentation and added an FTP download URL.

    • [richard] - Updated to Leafnode-1.11.3.

  • August 20th, 2005

    • [randy] - Added a new package, unixODBC-2.2.11 to BLFS.

    • [randy] - Renamed the FOP patch to adhere with the naming standards.

    • [randy] - Updated to GnuPG-1.4.2.

    • [randy] - Updated to GCC-3.4.4, modified the command to create the ffitarget.h interface header in /usr/include.

  • August 19th, 2005

    • [dj] - Updated dev.d scripts and surrounding text in alsa-utils.

    • [randy] - Updated to Sysstat-6.0.1.

    • [randy] - Updated to Apache Ant-1.6.5.

    • [randy] - Updated to Nail-11.25.

    • [randy] - Updated to Subversion-1.2.1.

    • [bdubbs] - Updated to KOffice-1.4.1.

  • August 17th, 2005

    • [randy] - Updated to GCC-3.3.6.

    • [randy] - Updated to Doxygen-1.4.4.

  • August 16th, 2005

    • [bdubbs] - Added instructions for cm-super fonts to TeX.

    • [randy] - Added additional parameters to the configure command and added a note to run the test suite to the Gimp-Print instructions.

    • [dj] - Updated cups bootscript installation to remove existing scripts and changed note to show that CUPS should be started after Samba.

  • August 15th, 2005

    • [randy] - Added a patch and a note about running the test suite to the CUPS instructions.

  • August 14th, 2005

    • [randy] - Updates to PHP: added new dependencies, placed the dependencies in catagories, added instructions to install documentation, added instruction to update php.ini and minor textual corrections.

    • [randy] - Updated to GTK-Doc-1.4.

    • [randy] - Updated to HTML Tidy-050803.

    • [randy] - Updated to Shadow-4.0.11.1.

    • [randy] - Added a configure switch to OpenLDAP to create the executables dynamically linked to the libraries.

    • [randy] - Added documentation installation commands to the GTK+ (version 1) instructions.

  • August 13th, 2005

    • [larry] - Add a warning to MIT KRB5 concerning the use of login.krb5 as a substitute for login.

    • [randy] - Updated to OpenLDAP-2.2.6 stable version; also added dependencies and configuration explanation.

  • August 12th, 2005

    • [randy] - Added a command to the PostgreSQL instructions to fix broken ownership of installed files.

  • August 11th, 2005

    • [randy] - Updated the JDK binary version to 1.5.0_04.

    • [randy] - Added sharutils as an optional dependency of Berkeley DB.

    • [randy] - Applied a patch contributed by stirling to fix many broken download URLs.

    • [randy] - Added a new section "Other Programming Tools" to Chapter 12 - Programming.

  • August 10th, 2005

    • [randy] - Added style information files and documentation installation commands to the JadeTeX instructions.

  • August 9th, 2005

    • [randy] - Modified the CrackLib instructions to include an alternate source for word lists, how to incorporate additional word lists, and added additional text contributed by Alexander Patrakov.

    • [dj] - Added default PATH for pam_env and a note about the lack of ENV_SUPATH.

  • August 8th, 2005

    • [randy] - Modified documentation installation in the Fontconfig instructions.

    • [randy] - Modified the Shadow instructions so that builders will not receive configuration errors during the testing recommended by the warning note.

    • [randy] - Added instructions to install a patch to Ruby that fixes a security vulnerability, thanks to Ken Moffat for the suggestion.

    • [randy] - Added instructions to install a patch to NASM that fixes a security vulnerability, thanks to Ken Moffat for the suggestion.

    • [randy] - Added documentation installation commands to the expat instructions.

  • August 7th, 2005

    • [randy] - Removed building the MPFR library from the GMP instructions.

  • August 6th, 2005

    • [larry] - Added dictionary file to MIT Kerberos setup and made adjusts for PAM.

    • [randy] - Updated to S-Lang-2.0.4.

  • August 5th, 2005

    • [randy] - Updated to Wget-1.10.

    • [randy] - Updated to PCRE-6.2.

  • August 1st, 2005

    • [bdubbs] - Released Version 6.1-pre1.

Mailing Lists

The linuxfromscratch.org server is hosting a number of mailing lists that are used for the development of the BLFS book. These lists include, among others, the main development and support lists.

For more information regarding which lists are available, how to subscribe to them, archive locations, etc., visit http://www.linuxfromscratch.org/mail.html.

BLFS Wiki

The BLFS Project has created a Wiki for users to comment on pages and instructions at http://wiki.linuxfromscratch.org/blfs/wiki. Comments are welcome from all users.

The following are the rules for posting:

  • Users must register and log in to edit a page.

  • Suggestions to change the book should be made by creating a new ticket, not by making comments in the Wiki.

  • Questions with your specific installation problems should be made by subscribing and mailing to the BLFS Support Mailing List at mailto:blfs-support@linuxfromscratch.org.

  • Discussions of build instructions should be made by subscribing and mailing to the BLFS Development List at mailto:blfs-dev@linuxfromscratch.org.

  • Inappropriate material will be removed.

Asking for Help and the FAQ

If you encounter a problem while using this book, and your problem is not listed in the FAQ (http://www.linuxfromscratch.org/faq), you will find that most of the people on Internet Relay Chat (IRC) and on the mailing lists are willing to help you. An overview of the LFS mailing lists can be found in Mailing lists. To assist us in diagnosing and solving your problem, include as much relevant information as possible in your request for help.

Things to Check Prior to Asking

Before asking for help, you should review the following items:

  • Is the hardware support compiled into the kernel or available as a module to the kernel? If it is a module, is it configured properly in modprobe.conf and has it been loaded? You should use lsmod as the root user to see if it's loaded. Check the sys.log file or run modprobe <driver> to review any error message. If it loads properly, you may need to add the modprobe command to your boot scripts.

  • Are your permissions properly set, especially for devices? LFS uses groups to make these settings easier, but it also adds the step of adding users to groups to allow access. A simple moduser -G audio <user> may be all that's necessary for that user to have access to the sound system. Any question that starts out with “It works as root, but not as ...” requires a thorough review of permissions prior to asking.

  • BLFS liberally uses /opt/<package>. The main objection to this centers around the need to expand your environment variables for each package placed there (e.g., PATH=$PATH:/opt/kde/bin). In most cases, the package instructions will walk you through the changes, but some will not. The section called “Going Beyond BLFS” is available to help you check.

Things to Mention

Apart from a brief explanation of the problem you're having, the essential things to include in your request are:

  • the version of the book you are using (being 6.2.0),

  • the package or section giving you problems,

  • the exact error message or symptom you are receiving,

  • whether you have deviated from the book or LFS at all,

  • if you are installing a BLFS package on a non-LFS system.

(Note that saying that you've deviated from the book doesn't mean that we won't help you. It'll just help us to see other possible causes of your problem.)

Expect guidance instead of specific instructions. If you are instructed to read something, please do so. It generally implies that the answer was way too obvious and that the question would not have been asked if a little research was done prior to asking. The volunteers in the mailing list prefer not to be used as an alternative to doing reasonable research on your end. In addition, the quality of your experience with BLFS is also greatly enhanced by this research, and the quality of volunteers is enhanced because they don't feel that their time has been abused, so they are far more likely to participate.

An excellent article on asking for help on the Internet in general has been written by Eric S. Raymond. It is available online at http://www.catb.org/~esr/faqs/smart-questions.html. Read and follow the hints in that document and you are much more likely to get a response to start with and also to get the help you actually need.

Contact Information

Please direct your emails to one of the BLFS mailing lists. See Mailing lists for more information on the available mailing lists.

The current BLFS maintainer is Randy McMurchy. If you need to reach Randy, send an email to randy AT linuxfromscratch D0T org.

Chapter 2. Important Information

This chapter is used to explain some of the policies used throughout the book, to introduce important concepts and to explain some issues you may see with some of the included packages.

Notes on Building Software

Those people who have built an LFS system may be aware of the general principles of downloading and unpacking software. We will however repeat some of that information here for those new to building their own software.

Each set of installation instructions contains a URL from which you can download the package. We do however keep a selection of patches available via HTTP. These are referenced as needed in the installation instructions.

While you can keep the source files anywhere you like, we assume that you have unpacked the package and changed into the directory created by the unpacking process (the 'build' directory). We also assume you have uncompressed any required patches and they are in the directory immediately above the 'build' directory.

We can not emphasize strongly enough that you should start from a clean source tree each time. This means that if you have had an error during configuration or compilation, it's usually best to delete the source tree and re-unpack it before trying again. This obviously doesn't apply if you're an advanced user used to hacking Makefiles and C code, but if in doubt, start from a clean tree.

Building Software as an Unprivileged (non-root) User

The golden rule of Unix System Administration is to use your superpowers only when necessary. Hence, BLFS recommends that you build software as an unprivileged user and only become the root user when installing the software. This philosophy is followed in all the packages in this book. Unless otherwise specified, all instructions should be executed as an unprivileged user. The book will advise you on instructions that need root privileges.

Unpacking the Software

If a file is in .tar format and compressed, it is unpacked by running one of the following commands:

tar -xvf filename.tar.gz
tar -xvf filename.tgz
tar -xvf filename.tar.Z
tar -xvf filename.tar.bz2

Note

You may omit using the v parameter in the commands shown above and below if you wish to suppress the verbose listing of all the files in the archive as they are extracted. This can help speed up the extraction as well as make any errors produced during the extraction more obvious to you.

You can also use a slightly different method:

bzcat filename.tar.bz2 | tar -xv

Finally, you sometimes need to be able to unpack patches which are generally not in .tar format. The best way to do this is to copy the patch file to parent of the 'build' directory and then run one of the following commands depending on whether the file is a .gz or .bz2 file:

gunzip -v patchname.gz
bunzip2 -v patchname.bz2

Verifying File Integrity Using 'md5sum'

Generally, to verify that the downloaded file is genuine and complete, many package maintainers also distribute md5sums of the files. To verify the md5sum of the downloaded files, download both the file and the corresponding md5sum file to the same directory (preferably from different on-line locations), and (assuming file.md5sum is the md5sum file downloaded) run the following command:

md5sum -c file.md5sum

If there are any errors, they will be reported. Note that the BLFS book includes md5sums for all the source files also. To use the BLFS supplied md5sums, you can create a file.md5sum (place the md5sum data and the exact name of the downloaded file on the same line of a file, separated by white space) and run the command shown above. Alternately, simply run the command shown below and compare the output to the md5sum data shown in the BLFS book.

md5sum <name_of_downloaded_file>

Creating Log Files During Installation

For larger packages, it is convenient to create log files instead of staring at the screen hoping to catch a particular error or warning. Log files are also useful for debugging and keeping records. The following command allows you to create an installation log. Replace <command> with the command you intend to execute.

( <command> 2>&1 | tee compile.log && exit $PIPESTATUS )

2>&1 redirects error messages to the same location as standard output. The tee command allows viewing of the output while logging the results to a file. The parentheses around the command run the entire command in a subshell and finally the exit $PIPESTATUS command ensures the result of the <command> is returned as the result and not the result of the tee command.

Automated Building Procedures

There are times when automating the building of a package can come in handy. Everyone has their own reasons for wanting to automate building, and everyone goes about it in their own way. Creating Makefiles, Bash scripts, Perl scripts or simply a list of commands used to cut and paste are just some of the methods you can use to automate building BLFS packages. Detailing how and providing examples of the many ways you can automate the building of packages is beyond the scope of this section. This section will expose you to using file redirection and the yes command to help provide ideas on how to automate your builds.

File Redirection to Automate Input

You will find times throughout your BLFS journey when you will come across a package that has a command prompting you for information. This information might be configuration details, a directory path, or a response to a license agreement. This can present a challenge to automate the building of that package. Occasionally, you will be prompted for different information in a series of questions. One method to automate this type of scenario requires putting the desired responses in a file and using redirection so that the program uses the data in the file as the answers to the questions.

Building the CUPS package is a good example of how redirecting a file as input to prompts can help you automate the build. If you run the test suite, you are asked to respond to a series of questions regarding the type of test to run and if you have any auxiliary programs the test can use. You can create a file with your responses, one response per line, and use a command similar to the one shown below to automate running the test suite:

make check < ../cups-1.1.23-testsuite_parms

This effectively makes the test suite use the responses in the file as the input to the questions. Occasionally you may end up doing a bit of trial and error determining the exact format of your input file for some things, but once figured out and documented you can use this to automate building the package.

Using yes to Automate Input

Sometimes you will only need to provide one response, or provide the same response to many prompts. For these instances, the yes command works really well. The yes command can be used to provide a response (the same one) to one or more instances of questions. It can be used to simulate pressing just the Enter key, entering the Y key or entering a string of text. Perhaps the easiest way to show its use is in an example.

First, create a short Bash script by entering the following commands:

cat > blfs-yes-test1 << "EOF"
#!/bin/bash

echo -n -e "\n\nPlease type something (or nothing) and press Enter ---> "

read A_STRING

if test "$A_STRING" = ""; then A_STRING="Just the Enter key was pressed"
else A_STRING="You entered '$A_STRING'"
fi

echo -e "\n\n$A_STRING\n\n"
EOF
chmod 755 blfs-yes-test1

Now run the script by issuing ./blfs-yes-test1 from the command line. It will wait for a response, which can be anything (or nothing) followed by the Enter key. After entering something, the result will be echoed to the screen. Now use the yes command to automate the entering of a response:

yes | ./blfs-yes-test1

Notice that piping yes by itself to the script results in y being passed to the script. Now try it with a string of text:

yes 'This is some text' | ./blfs-yes-test1

The exact string was used as the response to the script. Finally, try it using an empty (null) string:

yes '' | ./blfs-yes-test1

Notice this results in passing just the press of the Enter key to the script. This is useful for times when the default answer to the prompt is sufficient. This syntax is used in the Net-tools instructions to accept all the defaults to the many prompts during the configuration step. You may now remove the test script, if desired.

File Redirection to Automate Output

In order to automate the building of some packages, especially those that require you to read a license agreement one page at a time, requires using a method that avoids having to press a key to display each page. Redirecting the output to a file can be used in these instances to assist with the automation. The previous section on this page touched on creating log files of the build output. The redirection method shown there used the tee command to redirect output to a file while also displaying the output to the screen. Here, the output will only be sent to a file.

Again, the easiest way to demonstrate the technique is to show an example. First, issue the command:

ls -l /usr/bin | more

Of course, you'll be required to view the output one page at a time because the more filter was used. Now try the same command, but this time redirect the output to a file. The special file /dev/null can be used instead of the filename shown, but you will have no log file to examine:

ls -l /usr/bin | more > redirect_test.log 2>&1

Notice that this time the command immediately returned to the shell prompt without having to page through the output. You may now remove the log file.

The last example will use the yes command in combination with output redirection to bypass having to page through the output and then provide a y to a prompt. This technique could be used in instances when otherwise you would have to page through the output of a file (such as a license agreement) and then answer the question of “do you accept the above?”. For this example, another short Bash script is required:

cat > blfs-yes-test2 << "EOF"
#!/bin/bash

ls -l /usr/bin | more

echo -n -e "\n\nDid you enjoy reading this? (y,n) "

read A_STRING

if test "$A_STRING" = "y"; then A_STRING="You entered the 'y' key"
else A_STRING="You did NOT enter the 'y' key"
fi

echo -e "\n\n$A_STRING\n\n"
EOF
chmod 755 blfs-yes-test2

This script can be used to simulate a program that requires you to read a license agreement, then respond appropriately to accept the agreement before the program will install anything. First, run the script without any automation techniques by issuing ./blfs-yes-test2.

Now issue the following command which uses two automation techniques, making it suitable for use in an automated build script:

yes | ./blfs-yes-test2 > blfs-yes-test2.log 2>&1

If desired, issue tail blfs-yes-test2.log to see the end of the paged output, and confirmation that y was passed through to the script. Once satisfied that it works as it should, you may remove the script and log file.

Finally, keep in mind that there are many ways to automate and/or script the build commands. There is not a single “correct” way to do it. Your imagination is the only limit.

Dependencies

For each package described, BLFS lists the known dependencies. These are listed under several headings, whose meaning is as follows:

  • Required means that the target package cannot be correctly built without the dependency having first been installed.

  • Recommended means that BLFS strongly suggests this package is installed first for a clean and trouble-free build, that won't have issues either during the build process, or at run-time.

  • Optional means that this package might be installed for added functionality. Often BLFS will describe the dependency to explain the added functionality that will result.

The /usr Versus /usr/local Debate

Should I install XXX in /usr or /usr/local?

This is a question without an obvious answer for an LFS based system.

In traditional Unix systems, /usr usually contains files that come with the system distribution, and the /usr/local tree is free for the local administrator to manage. The only really hard and fast rule is that Unix distributions should not touch /usr/local, except perhaps to create the basic directories within it.

With Linux distributions like Red Hat, Debian, etc., a possible rule is that /usr is managed by the distribution's package system and /usr/local is not. This way the package manager's database knows about every file within /usr.

LFS users build their own system and so deciding where the system ends and local files begin is not straightforward. So the choice should be made in order to make things easier to administer. There are several reasons for dividing files between /usr and /usr/local.

  • On a network of several machines all running LFS, or mixed LFS and other Linux distributions, /usr/local could be used to hold packages that are common between all the computers in the network. It can be NFS mounted or mirrored from a single server. Here local indicates local to the site.

  • On a network of several computers all running an identical LFS system, /usr/local could hold packages that are different between the machines. In this case local refers to the individual computers.

  • Even on a single computer, /usr/local can be useful if you have several distributions installed simultaneously, and want a place to put packages that will be the same on all of them.

  • Or you might regularly rebuild your LFS, but want a place to put files that you don't want to rebuild each time. This way you can wipe the LFS file system and start from a clean partition every time without losing everything.

Some people ask why not use your own directory tree, e.g., /usr/site, rather than /usr/local?

There is nothing stopping you, many sites do make their own trees, however it makes installing new software more difficult. Automatic installers often look for dependencies in /usr and /usr/local, and if the file it is looking for is in /usr/site instead, the installer will probably fail unless you specifically tell it where to look.

What is the BLFS position on this?

All of the BLFS instructions install programs in /usr with optional instructions to install into /opt for some specific packages.

Optional Patches

As you follow the various sections in the book, you will observe that the book occasionally includes patches that are required for a successful and secure installation of the packages. The general policy of the book is to include patches that fall in one of the following criteria:

  • Fixes a compilation problem.

  • Fixes a security problem.

  • Fixes a broken functionality.

In short, the book only includes patches that are either required or recommended. There is a Patches subproject which hosts various patches (including the patches referenced in the books) to enable you to configure your LFS the way you like it.

BLFS Boot Scripts

The BLFS Bootscripts package contains the init scripts that are used throughout the book. It is assumed that you will be using the BLFS Bootscripts package in conjunction with a compatible LFS-Bootscripts package. Refer to ../../../../lfs/view/6.2/chapter07/bootscripts.html for more information on the LFS-Bootscripts package.

The BLFS Bootscripts package will be used throughout the BLFS book for startup scripts. Unlike LFS, each init script has a separate install target in the BLFS Bootscripts package. It is recommended you keep the package source directory around until completion of your BLFS system. When a script is requested from BLFS Bootscripts, simply change to the directory and as the root user, execute the given make install-<init-script> command. This command installs the init script to its proper location (along with any auxiliary configuration scripts) and also creates the appropriate symlinks to start and stop the service at the appropriate run-level.

Note

It is advisable to peruse each bootscript before installation to ascertain that it satisfies your need. Also verify that the start and stop symlinks it creates match your preferences.

Locale Related Issues

This page contains information about locale related problems and issues. In the following paragraphs you'll find a generic overview of things that can come up when configuring your system for various locales. Many (but not all) existing locale related problems can be classified and fall under one of the headings below. The severity ratings below use the following criteria:

  • Critical: The program doesn't perform its main function. The fix would be very intrusive, it's better to search for a replacement.

  • High: Part of the functionality that the program provides is not usable. If that functionality is required, it's better to search for a replacement.

  • Low: The program works in all typical use cases, but lacks some functionality normally provided by its equivalents.

If there is a known workaround for a specific package, it will appear on that package's page. For the most recent information about locale related issues for individual packages, check the User Notes in the BLFS Wiki.

The Needed Encoding is Not a Valid Option in the Program

Severity: Critical

Some programs require the user to specify the character encoding for their input or output data and present only a limited choice of encodings. This is the case for the -X option in a2ps-4.13b and Enscript-1.6.4, the -input-charset option in unpatched Cdrtools-2.01, and the character sets offered for display in the menu of Links-2.1pre23. If the required encoding is not in the list, the program usually becomes completely unusable. For non-interactive programs, it may be possible to work around this by converting the document to a supported input character set before submitting to the program.

A solution to this type of problem is to implement the necessary support for the missing encoding as a patch to the original program (as done for Cdrtools-2.01 in this book), or to find a replacement.

The Program Assumes the Locale-Based Encoding of External Documents

Severity: High for non-text documents, low for text documents

Some programs, nano-2.0.1 or JOE-3.5 for example, assume that documents are always in the encoding implied by the current locale. While this assumption may be valid for the user-created documents, it is not safe for external ones. When this assumption fails, non-ASCII characters are displayed incorrectly, and the document may become unreadable.

If the external document is entirely text based, it can be converted to the current locale encoding using the iconv program.

For documents that are not text-based, this is not possible. In fact, the assumption made in the program may be completely invalid for documents where the Microsoft Windows operating system has set de facto standards. An example of this problem is ID3v1 tags in MP3 files (see the BLFS Wiki ID3v1Coding page for more details). For these cases, the only solution is to find a replacement program that doesn't have the issue (e.g., one that will allow you to specify the assumed document encoding).

Among BLFS packages, this problem applies to nano-2.0.1, JOE-3.5, and all media players except audacious-1.0.0.

Another problem in this category is when someone cannot read the documents you've sent them because their operating system is set up to handle character encodings differently. This can happen often when the other person is using Microsoft Windows, which only provides one character encoding for a given country. For example, this causes problems with UTF-8 encoded TeX documents created in Linux. On Windows, most applications will assume that these documents have been created using the default Windows 8-bit encoding. See the teTeX Wiki page for more details.

In extreme cases, Windows encoding compatibility issues may be solved only by running Windows programs under Wine.

The Program Uses or Creates Filenames in the Wrong Encoding

Severity: Critical

The POSIX standard mandates that the filename encoding is the encoding implied by the current LC_CTYPE locale category. This information is well-hidden on the page which specifies the behavior of Tar and Cpio programs. Some programs get it wrong by default (or simply don't have enough information to get it right). The result is that they create filenames which are not subsequently shown correctly by ls, or they refuse to accept filenames that ls shows properly. For the GLib-2.10.3 library, the problem can be corrected by setting the G_FILENAME_ENCODING environment variable to the special "@locale" value. Glib2 based programs that don't respect that environment variable are buggy.

The Zip-2.32, UnZip-5.52, and Nautilus CD Burner-2.14.3 have this problem because they hard-code the expected filename encoding. UnZip contains a hard-coded conversion table between the CP850 (DOS) and ISO-8859-1 (UNIX) encodings and uses this table when extracting archives created under DOS or Microsoft Windows. However, this assumption only works for those in the US and not for anyone using a UTF-8 locale. Non-ASCII characters will be mangled in the extracted filenames.

On the other hand, Nautilus CD Burner checks names of files added to its window for UTF-8 validity. This is wrong for users of non-UTF-8 locales. Also, Nautilus CD Burner unconditionally calls mkisofs with the -input-charset UTF-8 parameter, which is only correct in UTF-8 locales.

The general rule for avoiding this class of problems is to avoid installing broken programs. If this is impossible, the convmv command-line tool can be used to fix filenames created by these broken programs, or intentionally mangle the existing filenames to meet the broken expectations of such programs.

In other cases, a similar problem is caused by importing filenames from a system using a different locale with a tool that is not locale-aware (e.g., NFS Utilities-1.0.10 or OpenSSH-4.5p1). In order to avoid mangling non-ASCII characters when transferring files to a system with a different locale, any of the following methods can be used:

  • Transfer anyway, fix the damage with convmv.

  • On the sending side, create a tar archive with the --format=posix switch passed to tar (this will be the default in a future version of tar).

  • Mail the files as attachments. Mail clients specify the encoding of attached filenames.

  • Write the files to a removable disk formatted with a FAT or FAT32 filesystem.

  • Transfer the files using Samba.

  • Transfer the files via FTP using RFC2640-aware server (this currently means only wu-ftpd, which has bad security history) and client (e.g., lftp).

The last four methods work because the filenames are automatically converted from the sender's locale to UNICODE and stored or sent in this form. They are then transparently converted from UNICODE to the recipient's locale encoding.

The Program Breaks Multibyte Characters or Doesn't Count Character Cells Correctly

Severity: High or critical

Many programs were written in an older era where multibyte locales were not common. Such programs assume that C "char" data type, which is one byte, can be used to store single characters. Further, they assume that any sequence of characters is a valid string and that every character occupies a single character cell. Such assumptions completely break in UTF-8 locales. The visible manifestation is that the program truncates strings prematurely (i.e., at 80 bytes instead of 80 characters). Terminal-based programs don't place the cursor correctly on the screen, don't react to the "Backspace" key by erasing one character, and leave junk characters around when updating the screen, usually turning the screen into a complete mess.

Fixing this kind of problems is a tedious task from a programmer's point of view, like all other cases of retrofitting new concepts into the old flawed design. In this case, one has to redesign all data structures in order to accommodate to the fact that a complete character may span a variable number of "char"s (or switch to wchar_t and convert as needed). Also, for every call to the "strlen" and similar functions, find out whether a number of bytes, a number of characters, or the width of the string was really meant. Sometimes it is faster to write a program with the same functionality from scratch.

Among BLFS packages, this problem applies to Ed-0.2, xine User Interface-0.99.4 and all shells.

The Package Installs Manual Pages in Incorrect or Non-Displayable Encoding

Severity: Low

LFS expects that manual pages are in the language-specific (usually 8-bit) encoding, as specified on the LFS Man DB page. However, some packages install translated manual pages in UTF-8 encoding (e.g., Shadow, already dealt with), or manual pages in languages not in the table. Not all BLFS packages have been audited for conformance with the requirements put in LFS (the large majority have been checked, and fixes placed in the book for packages known to install non-conforming manual pages). If you find a manual page installed by any of BLFS packages that is obviously in the wrong encoding, please remove or convert it as needed, and report this to BLFS team as a bug.

You can easily check your system for any non-conforming manual pages by copying the following short shell script to some accessible location,

#!/bin/sh
# Begin checkman.sh
# Usage: find /usr/share/man -type f | xargs checkman.sh
for a in "$@"
do
    # echo "Checking $a..."
    # Pure-ASCII manual page (possibly except comments) is OK
    grep -v '.\\"' "$a" | iconv -f US-ASCII -t US-ASCII >/dev/null 2>&1 && continue
    # Non-UTF-8 manual page is OK
    iconv -f UTF-8 -t UTF-8 "$a" >/dev/null 2>&1 || continue
    # If we got here, we found UTF-8 manual page, bad.
    echo "UTF-8 manual page: $a" >&2
done
# End checkman.sh

and then issuing the following command (modify the command below if the checkman.sh script is not in your PATH environment variable):

find /usr/share/man -type f | xargs checkman.sh

Note that if you have manual pages installed in any location other than /usr/share/man (e.g., /usr/local/share/man), you must modify the above command to include this additional location.

Going Beyond BLFS

The packages that are installed in this book are only the tip of the iceberg. We hope that the experience you gained with the LFS book and the BLFS book will give you the background needed to compile, install and configure packages that are not included in this book.

When you want to install a package to a location other than /, or /usr, you are installing outside the default environment settings on most machines. The following examples should assist you in determining how to correct this situation. The examples cover the complete range of settings that may need updating, but they are not all needed in every situation.

  • Expand the PATH to include $PREFIX/bin.

  • Expand the PATH for root to include $PREFIX/sbin.

  • Add $PREFIX/lib to /etc/ld.so.conf or expand LD_LIBRARY_PATH to include it. Before using the latter option, check out http://xahlee.org/UnixResource_dir/_/ldpath.html. If you modify /etc/ld.so.conf, remember to update /etc/ld.so.cache by executing ldconfig as the root user.

  • Add $PREFIX/man to /etc/man_db.conf or expand MANPATH.

  • Add $PREFIX/info to INFOPATH.

  • Add $PREFIX/lib/pkgconfig to PKG_CONFIG_PATH. Some packages are now installing .pc files in $PREFIX/share/pkgconfig, so you may have to include this directory also.

  • Add $PREFIX/include to CPPFLAGS when compiling packages that depend on the package you installed.

If you are in search of a package that is not in the book, the following are different ways you can search for the desired package.

Some general hints on handling new packages:

  • Many of the newer packages follow the ./configure && make && make install process. Help on the options accepted by configure can be obtained via the command ./configure --help.

  • Most of the packages contain documentation on compiling and installing the package. Some of the documents are excellent, some not so excellent. Check out the homepage of the package for any additional and updated hints for compiling and configuring the package.

  • If you are having a problem compiling the package, try searching the LFS archives at http://search.linuxfromscratch.org/ for the error or if that fails, try searching Google. If everything else fails, try the blfs-support mailing-list.

Tip

If you have found a package that is only available in .deb or .rpm format, there are two small scripts, rpm2targz and deb2targz that are available at http://downloads.linuxfromscratch.org/deb2targz.tar.bz2 and http://downloads.linuxfromscratch.org/rpm2targz.tar.bz2 to convert the archives into a simple tar.gz format.

Part II. Post LFS Configuration and Extra Software

Chapter 3. After LFS Configuration Issues

The intention of LFS is to provide a basic system which you can build upon. There are several things about tidying up the system which many people wonder about once they have done the base install. We hope to cover these issues in this chapter.

Most people coming from non-Unix like backgrounds to Linux find the concept of text-only configuration files slightly strange. In Linux, just about all configuration is done via the manipulation of text files. The majority of these files can be found in the /etc hierarchy. There are often graphical configuration programs available for different subsystems but most are simply pretty front ends to the process of editing a text file. The advantage of text-only configuration is that you can edit parameters using your favorite text editor, whether that be vim, emacs, or any other editor.

The first task is making a recovery boot device in Creating a Custom Boot Device because it's the most critical need. Then the system is configured to ease addition of new users, because this can affect the choices you make in the two subsequent topics—The Bash Shell Startup Files and The vimrc Files.

The remaining topics, Customizing your Logon with /etc/issue, The /etc/shells File, Random number generation, Compressing man and info pages, autofs-4.1.4, and Configuring for Network Filesystems are then addressed, in that order. They don't have much interaction with the other topics in this chapter.

Creating a Custom Boot Device

Decent Rescue Boot Device Needs

This section is really about creating a rescue device. As the name rescue implies, the host system has a problem, often lost partition information or corrupted file systems, that prevent it from booting and/or operating normally. For this reason, you must not depend on resources from the host being "rescued". To presume that any given partition or hard drive will be available is a risky presumption.

In a modern system, there are many devices that can be used as a rescue device: floppy, cdrom, usb drive, or even a network card. Which one you use depends on your hardware and your BIOS. In the past, we usually thought of rescue device as a floppy disk. Today, many systems do not even have a floppy drive.

Building a complete rescue device is a challenging task. In many ways, it is equivalent to building an entire LFS system. In addition, it would be a repetition of information already available. For these reasons, the procedures for a rescue device image are not presented here.

Creating a Rescue Floppy

The software of today's systems has grown large. Linux 2.6 no longer supports booting directly from a floppy. In spite of this, there are solutions available using older versions of Linux. One of the best is Tom's Root/Boot Disk available at http://www.toms.net/rb/. This will provide a minimal Linux system on a single floppy disk and provides the ability to customize the contents of your disk if necessary.

Creating a Bootable CD-ROM

There are several sources that can be used for a rescue CD-ROM. Just about any commercial distribution's installation CD-ROMs or DVDs will work. These include RedHat, Mandrake, and SuSE. One very popular option is Knoppix.

Also, the LFS Community has developed its own LiveCD available at http://www.linuxfromscratch.org/livecd/. This LiveCD, in addition to having boot and rescue capabilities, is capable of building an entire LFS/BLFS system. A copy of this CD-ROM is available with the printed version of the Linux From Scratch book. If you download the ISO image, use cdrecord to copy the image to a CD-ROM.

Creating a Bootable USB Drive

A USB Pen drive, sometimes called a Thumb drive, is recognized by Linux as a SCSI device. Using one of these devices as a rescue device has the advantage that it is usually large enough to hold more than a minimal boot image. You can save critical data to the drive as well as use it to diagnose and recover a damaged system. Booting such a drive requires BIOS support, but building the system consists of formatting the drive, adding GRUB as well as the Linux kernel and supporting files.

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/CreatingaCustomBootDevice

Configuring for Adding Users

Together, the /usr/sbin/useradd command and /etc/skel directory (both are easy to set up and use) provide a way to assure new users are added to your LFS system with the same beginning settings for things such as the PATH, keyboard processing and other environmental variables. Using these two facilities makes it easier to assure this initial state for each new user added to the system.

The /etc/skel directory holds copies of various initialization and other files that may be copied to the new user's home directory when the /usr/sbin/useradd program adds the new user.

Useradd

The useradd program uses a collection of default values kept in /etc/default/useradd, if it exists. If this file does not exist, then it uses some internal defaults. You can see the default values by running /usr/sbin/useradd -D.

To change these values to something new, create a base /etc/default/useradd file as the root user with the same values as the output of /usr/sbin/useradd -D. Here is a sample:

# Begin /etc/default/useradd

GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=
SKEL=/etc/skel

# End /etc/default/useradd

The only thing missing from the file is a default shell. Add that by running the following command as the root user:

/usr/sbin/useradd -D -s/bin/bash

This will set the SHELL= line to SHELL=/bin/bash.

useradd has many parameters that can be set in the /etc/default/useradd file. For more information see man useradd.

/etc/skel

To get started, create an /etc/skel directory and make sure it is writable only by the system administrator, usually root. Creating the directory as root is the best way to go.

The mode of any files from this part of the book that you put in /etc/skel should be writable only by the owner. Also, since there is no telling what kind of sensitive information a user may eventually place in their copy of these files, you should make them unreadable by "group" and "other".

You can also put other files in /etc/skel and different permissions may be needed for them.

Decide which initialization files should be provided in every (or most) new user's home directory. The decisions you make will affect what you do in the next two sections, The Bash Shell Startup Files and The vimrc Files. Some or all of those files will be useful for root, any already-existing users, and new users.

The files from those sections that you might want to place in /etc/skel include .inputrc, .bash_profile, .bashrc, .bash_logout, .dircolors, and .vimrc. If you are unsure which of these should be placed there, just continue to the following sections, read each section and any references provided, and then make your decision.

You will run a slightly modified set of commands for files which are placed in /etc/skel. Each section will remind you of this. In brief, the book's commands have been written for files not added to /etc/skel and instead just sends the results to the user's home directory. If the file is going to be in /etc/skel, change the book's command(s) to send output there instead and then just copy the file from /etc/skel to the appropriate directories, like /etc, ~ or the home directory of any other user already in the system.

When Adding a User

When adding a new user with useradd, use the -m parameter, which tells useradd to create the user's home directory and copy files from /etc/skel (can be overridden) to the new user's home directory. For example (perform as the root user):

useradd -m <newuser>

About System Users and Groups

Throughout BLFS, many packages install programs that run as daemons or in some way should have a user or group name assigned. Generally these names are used to map a user ID (uid) or group ID (gid) for system use. Generally the specific uid or gid numbers used by these applications are not significant. The exception of course, is that root has a uid and gid of 0 (zero) that is indeed special. The uid values are stored in /etc/passwd and the gid values are found in /etc/group.

Customarily, Unix systems classify users and groups into two categories: system users and regular users. The system users and groups are given low numbers and regular users and groups have numeric values greater than all the system values. The cutoff for these numbers is found in two parameters in the /etc/login.defs configuration file. The default UID_MIN value is 1000 and the default GID_MIN value is 100. If a specific uid or gid value is not specified when creating a user with useradd or a group with groupadd the values assigned will always be above these cutoff values.

Additionally, the Linux Standard Base recommends that system uid and gid values should be below 100.

Below is a table of suggested uid/gid values used in BLFS beyond those defined in a base LFS installation. These can be changed as desired, but provide a suggested set of consistent values.

Table 3.1. UID/GID Suggested Values

Name uid gid
bin 1
lp 9
messagebus 18 18
haldaemon 19 19
named 20 20
gdm 21 21
fcron 22 22
apache 25 25
smmsp 26 26
exim 31 31
postfix 32 32
postdrop 33
sendmail 34
mail 34
vmailman 35 35
news 36 36
mysql 40 40
postgres 41 41
ftp 45 45
proftpd 46 46
vsftpd 47 47
rsyncd 48 48
sshd 50 50
stunnel 51 51
svn 56 56
svntest 57
games 60 60
anonymous 98
nobody 99
nogroup 99

One value that is missing is 65534. This value is customarily assigned to the user nobody and group nogroup and is unnecessary. The issue is explained in more detail in the first note in the NFS Utilities Installation section.

About Devices

Although most devices needed by packages in BLFS and beyond are set up properly by udev using the default rules installed by LFS in /etc/udev/rules.d, there are cases where the rules must be modified or augmented.

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/aboutdevices

Multiple Sound Cards

If there are multiple sound cards in a system, the "default" sound card becomes random. The method to establish sound card order depends on whether the drivers are modules or not. If the sound card drivers are compiled into the kernel, control is via kernel command line parameters in /boot/grub/menu.lst. For example, if a system has both an FM801 card and a SoundBlaster PCI card, the following can be appended to the command line:

snd-fm801.index=0 snd-ens1371.index=1

If the sound card drivers are built as modules, the order can be established in the /etc/modprobe.conf file with:

options snd-fm801 index=0
options snd-ens1371 index=1

Udev Device Attrubutes

Fine-tuning of device attributes such as group name and permissions is possible by creating extra udev rules, matching on something like this (on one line). The vendor and product can be found by searching the /sys/devices directory entries or using udevinfo after the device has been attached. See the documentation in the current udev directory of /usr/share/doc for details.

SUBSYSTEM=="usb_device", SYSFS{idVendor}=="05d8",
   SYSFS{idProduct}=="4002", GROUP:="scanner", MODE:="0640"

USB Device Issues

Some older applications, such as VMware, need the following deprecated entry in the /etc/fstab file. This is not normally needed.

usbfs  /proc/bus/usb  usbfs  devgid=14,devmode=0660  0  0

Devices for Servers

In some cases, it makes sense to disable udev completely and create static devices. Servers are one example of this situation. Does a server need the capability of handling dynamic devices? Only the system administrator can answer that question, but in many cases the answer will be no.

If dynamic devices are not desired, then static devices must be created on the system. In the default configuration, the /etc/rc.d/rcsysinit.d/S10udev boot script mounts a tmpfs partition over the /dev directory. This problem can be overcome by mounting the root partition temporarily:

Warning

If the instructions below are not followed carefully, your system could become unbootable.

mount --bind / /mnt
cp -a /dev/* /mnt/dev
rm /etc/rc.d/rcsysinit.d/{S10udev,S45udev_retry}
umount /mnt

At this point, the system will use static devices upon the next reboot. Create any desired additional devices using mknod.

If you want to restore the dynamic devices, recreate the /etc/rc.d/rcsysinit.d/{S10udev,S45udev_retry} symbolic links and reboot again. Static devices do not need to be removed (console and null are always needed) because they are covered by the tmpfs partition. Disk usage for devices is negligible (about 20–30 bytes per entry.)

The Bash Shell Startup Files

The shell program /bin/bash (hereafter referred to as just "the shell") uses a collection of startup files to help create an environment. Each file has a specific use and may affect login and interactive environments differently. The files in the /etc directory generally provide global settings. If an equivalent file exists in your home directory it may override the global settings.

An interactive login shell is started after a successful login, using /bin/login, by reading the /etc/passwd file. This shell invocation normally reads /etc/profile and its private equivalent ~/.bash_profile upon startup.

An interactive non-login shell is normally started at the command-line using a shell program (e.g., [prompt]$/bin/bash) or by the /bin/su command. An interactive non-login shell is also started with a terminal program such as xterm or konsole from within a graphical environment. This type of shell invocation normally copies the parent environment and then reads the user's ~/.bashrc file for additional startup configuration instructions.

A non-interactive shell is usually present when a shell script is running. It is non-interactive because it is processing a script and not waiting for user input between commands. For these shell invocations, only the environment inherited from the parent shell is used.

The file ~/.bash_logout is not used for an invocation of the shell. It is read and executed when a user exits from an interactive login shell.

Many distributions use /etc/bashrc for system wide initialization of non-login shells. This file is usually called from the user's ~/.bashrc file and is not built directly into bash itself. This convention is followed in this section.

For more information see info bash -- Nodes: Bash Startup Files and Interactive Shells.

Note

Most of the instructions below are used to create files located in the /etc directory structure which requires you to execute the commands as the root user. If you elect to create the files in user's home directories instead, you should run the commands as an unprivileged user.

/etc/profile

Here is a base /etc/profile. This file starts by setting up some helper functions and some basic parameters. It specifies some bash history parameters and, for security purposes, disables keeping a permanent history file for the root user. It also sets a default user prompt. It then calls small, single purpose scripts in the /etc/profile.d directory to provide most of the initialization.

For more information on the escape sequences you can use for your prompt (i.e., the PS1 environment variable) see info bash -- Node: Printing a Prompt.

cat > /etc/profile << "EOF"
# Begin /etc/profile
# Written for Beyond Linux From Scratch
# by James Robertson <jameswrobertson@earthlink.net>
# modifications by Dagmar d'Surreal <rivyqntzne@pbzpnfg.arg>

# System wide environment variables and startup programs.

# System wide aliases and functions should go in /etc/bashrc.  Personal
# environment variables and startup programs should go into
# ~/.bash_profile.  Personal aliases and functions should go into
# ~/.bashrc.

# Functions to help us manage paths.  Second argument is the name of the
# path variable to be modified (default: PATH)
pathremove () {
        local IFS=':'
        local NEWPATH
        local DIR
        local PATHVARIABLE=${2:-PATH}
        for DIR in ${!PATHVARIABLE} ; do
                if [ "$DIR" != "$1" ] ; then
                  NEWPATH=${NEWPATH:+$NEWPATH:}$DIR
                fi
        done
        export $PATHVARIABLE="$NEWPATH"
}

pathprepend () {
        pathremove $1 $2
        local PATHVARIABLE=${2:-PATH}
        export $PATHVARIABLE="$1${!PATHVARIABLE:+:${!PATHVARIABLE}}"
}

pathappend () {
        pathremove $1 $2
        local PATHVARIABLE=${2:-PATH}
        export $PATHVARIABLE="${!PATHVARIABLE:+${!PATHVARIABLE}:}$1"
}


# Set the initial path
export PATH=/bin:/usr/bin

if [ $EUID -eq 0 ] ; then
        pathappend /sbin:/usr/sbin
        unset HISTFILE
fi

# Setup some environment variables.
export HISTSIZE=1000
export HISTIGNORE="&:[bf]g:exit"
#export PS1="[\u@\h \w]\\$ "
export PS1='\u@\h:\w\$ '

for script in /etc/profile.d/*.sh ; do
        if [ -r $script ] ; then
                . $script
        fi
done

# Now to clean up
unset pathremove pathprepend pathappend

# End /etc/profile
EOF

The /etc/profile.d Directory

Now create the /etc/profile.d directory, where the individual initialization scripts are placed:

install --directory --mode=0755 --owner=root --group=root /etc/profile.d

/etc/profile.d/dircolors.sh

This script uses the ~/.dircolors and /etc/dircolors files to control the colors of file names in a directory listing. They control colorized output of things like ls --color. The explanation of how to initialize these files is at the end of this section.

cat > /etc/profile.d/dircolors.sh << "EOF"
# Setup for /bin/ls to support color, the alias is in /etc/bashrc.
if [ -f "/etc/dircolors" ] ; then
        eval $(dircolors -b /etc/dircolors)

        if [ -f "$HOME/.dircolors" ] ; then
                eval $(dircolors -b $HOME/.dircolors)
        fi
fi
alias ls='ls --color=auto'
EOF

/etc/profile.d/extrapaths.sh

This script adds several useful paths to the PATH and PKG_CONFIG_PATH environment variables. If you want, you can uncomment the last section to put a dot at the end of your path. This will allow executables in the current working directory to be executed without specifiying a ./, however you are warned that this is generally considered a security hazard.

cat > /etc/profile.d/extrapaths.sh << "EOF"
if [ -d /usr/local/lib/pkgconfig ] ; then
        pathappend /usr/local/lib/pkgconfig PKG_CONFIG_PATH
fi
if [ -d /usr/local/bin ]; then
        pathprepend /usr/local/bin
fi
if [ -d /usr/local/sbin -a $EUID -eq 0 ]; then
        pathprepend /usr/local/sbin
fi
for directory in $(find /opt/*/lib/pkgconfig -type d 2>/dev/null); do
        pathappend $directory PKG_CONFIG_PATH
done
for directory in $(find /opt/*/bin -type d 2>/dev/null); do
        pathappend $directory
done
if [ -d ~/bin ]; then
        pathprepend ~/bin
fi
#if [ $EUID -gt 99 ]; then
#        pathappend .
#fi
EOF

/etc/profile.d/readline.sh

This script sets up the default inputrc configuration file. If the user does not have individual settings, it uses the global file.

cat > /etc/profile.d/readline.sh << "EOF"
# Setup the INPUTRC environment variable.
if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ] ; then
        INPUTRC=/etc/inputrc
fi
export INPUTRC
EOF

/etc/profile.d/umask.sh

Setting the umask value is important for security. Here the default group write permissions are turned off for system users and when the user name and group name are not the same.

cat > /etc/profile.d/umask.sh << "EOF"
# By default we want the umask to get set.
if [ "$(id -gn)" = "$(id -un)" -a $EUID -gt 99 ] ; then
  umask 002
else
  umask 022
fi
EOF

/etc/profile.d/X.sh

If X is installed, the PATH and PKG_CONFIG_PATH variables are also updated.

cat > /etc/profile.d/X.sh << "EOF"
if [ -x /usr/X11R6/bin/X ]; then
        pathappend /usr/X11R6/bin
fi
if [ -d /usr/X11R6/lib/pkgconfig ] ; then
        pathappend /usr/X11R6/lib/pkgconfig PKG_CONFIG_PATH
fi
EOF

/etc/profile.d/extra-prompt.sh

This script shows an example of a different way of setting the prompt. The normal variable, PS1, is supplemented by PROMPT_COMMAND. If set, the value of PROMPT_COMMAND is executed as a command prior to issuing each primary prompt. The sequence \e is an ESC character. \a is a BEL character. For a reference on xterm escape sequences, see http://rtfm.etla.org/xterm/ctlseq.html.

cat > /etc/profile.d/extra-prompt.sh << "EOF"
PROMPT_COMMAND='echo -ne "\e[1m${USER}@${HOSTNAME} : ${PWD}\e[0m\a"'
export PROMPT_COMMAND
EOF

The escape sequences above are BOLD, NORMAL, and BEL.

'/etc/profile.d/i18n.sh'

This script sets an environment variable necessary for native language support. A full discussion on determining this variable can be found on the LFS Bash Shell Startup Files page.

cat > /etc/profile.d/i18n.sh << "EOF"
# Set up i18n variables
export LANG=<ll>_<CC>.<charmap><@modifiers>
EOF

Other Initialization Values

Other initialization can easily be added to the profile by adding additional scripts to the /etc/profile.d directory.

/etc/bashrc

Here is a base /etc/bashrc. Comments in the file should explain everything you need.

cat > /etc/bashrc << "EOF"
# Begin /etc/bashrc
# Written for Beyond Linux From Scratch
# by James Robertson <jameswrobertson@earthlink.net>
# updated by Bruce Dubbs <bdubbs@linuxfromscratch.org>

# Make sure that the terminal is set up properly for each shell

if [ -f /etc/profile.d/tinker-term.sh ]; then
  source /etc/profile.d/tinker-term.sh
fi

# System wide aliases and functions.

# System wide environment variables and startup programs should go into
# /etc/profile.  Personal environment variables and startup programs
# should go into ~/.bash_profile.  Personal aliases and functions should
# go into ~/.bashrc

# Provides a colored /bin/ls command.  Used in conjunction with code in
# /etc/profile.

alias ls='ls --color=auto'

# Provides prompt for non-login shells, specifically shells started
# in the X environment. [Review the LFS archive thread titled
# PS1 Environment Variable for a great case study behind this script
# addendum.]

#export PS1="[\u@\h \w]\\$ "
export PS1='\u@\h:\w\$ '

# End /etc/bashrc
EOF

~/.bash_profile

Here is a base ~/.bash_profile. If you want each new user to have this file automatically, just change the output of the command to /etc/skel/.bash_profile and check the permissions after the command is run. You can then copy /etc/skel/.bash_profile to the home directories of already existing users, including root, and set the owner and group appropriately.

cat > ~/.bash_profile << "EOF"
# Begin ~/.bash_profile
# Written for Beyond Linux From Scratch
# by James Robertson <jameswrobertson@earthlink.net>
# updated by Bruce Dubbs <bdubbs@linuxfromscratch.org>

# Personal environment variables and startup programs.

# Personal aliases and functions should go in ~/.bashrc.  System wide
# environment variables and startup programs are in /etc/profile.
# System wide aliases and functions are in /etc/bashrc.

append () {
  # First remove the directory
  local IFS=':'
  local NEWPATH
  for DIR in $PATH; do
     if [ "$DIR" != "$1" ]; then
       NEWPATH=${NEWPATH:+$NEWPATH:}$DIR
     fi
  done

  # Then append the directory
  export PATH=$NEWPATH:$1
}

if [ -f "$HOME/.bashrc" ] ; then
  source $HOME/.bashrc
fi

if [ -d "$HOME/bin" ] ; then
  append $HOME/bin
fi

unset append

# End ~/.bash_profile
EOF

~/.bashrc

Here is a base ~/.bashrc. The comments and instructions for using /etc/skel for .bash_profile above also apply here. Only the target file names are different.

cat > ~/.bashrc << "EOF"
# Begin ~/.bashrc
# Written for Beyond Linux From Scratch
# by James Robertson <jameswrobertson@earthlink.net>

# Personal aliases and functions.

# Personal environment variables and startup programs should go in
# ~/.bash_profile.  System wide environment variables and startup
# programs are in /etc/profile.  System wide aliases and functions are
# in /etc/bashrc.

if [ -f "/etc/bashrc" ] ; then
  source /etc/bashrc
fi

# End ~/.bashrc
EOF

~/.bash_logout

This is an empty ~/.bash_logout that can be used as a template. You will notice that the base ~/.bash_logout does not include a clear command. This is because the clear is handled in the /etc/issue file.

cat > ~/.bash_logout << "EOF"
# Begin ~/.bash_logout
# Written for Beyond Linux From Scratch
# by James Robertson <jameswrobertson@earthlink.net>

# Personal items to perform on logout.

# End ~/.bash_logout
EOF

/etc/dircolors

If you want to use the dircolors capability, then run the following command. The /etc/skel setup steps shown above also can be used here to provide a ~/.dircolors file when a new user is set up. As before, just change the output file name on the following command and assure the permissions, owner, and group are correct on the files created and/or copied.

dircolors -p > /etc/dircolors

If you wish to customize the colors used for different file types, you can edit the /etc/dircolors file. The instructions for setting the colors are embedded in the file.

Finally, Ian Macdonald has written an excellent collection of tips and tricks to enhance your shell environment. You can read it online at http://www.caliban.org/bash/index.shtml.

The /etc/vimrc and ~/.vimrc Files

The LFS book installs Vim as its text editor. At this point it should be noted that there are a lot of different editing applications out there including Emacs, nano, Joe and many more. Anyone who has been around the Internet (especially usenet) for a short time will certainly have observed at least one flame war, usually involving Vim and Emacs users!

The LFS book creates a basic vimrc file. In this section you'll find an attempt to enhance this file. At startup, vim reads /etc/vimrc and ~/.vimrc (i.e., the global vimrc and the user-specific one). Note that this is only true if you compiled vim using LFS-3.1 onwards. Prior to this, the global vimrc was /usr/share/vim/vimrc.

Here is a slightly expanded .vimrc that you can put in ~/.vimrc to provide user specific effects. Of course, if you put it into /etc/skel/.vimrc instead, it will be made available to users you add to the system later. You can also copy the file from /etc/skel/.vimrc to the home directory of users already on the system, such as root. Be sure to set permissions, owner, and group if you do copy anything directly from /etc/skel.

" Begin .vimrc

set columns=80
set wrapmargin=8
set ruler

" End .vimrc

Note that the comment tags are " instead of the more usual # or //. This is correct, the syntax for vimrc is slightly unusual.

Below you'll find a quick explanation of what each of the options in this example file means here:

  • set columns=80: This simply sets the number of columns used on the screen.

  • set wrapmargin=8: This is the number of characters from the right window border where wrapping starts.

  • set ruler: This makes vim show the current row and column at the bottom right of the screen.

More information on the many vim options can be found by reading the help inside vim itself. Do this by typing :help in vim to get the general help, or by typing :help usr_toc.txt to view the User Manual Table of Contents.

Customizing your Logon with /etc/issue

When you first boot up your new LFS system, the logon screen will be nice and plain (as it should be in a bare-bones system). Many people however, will want their system to display some information in the logon message. This can be accomplished using the file /etc/issue.

The /etc/issue file is a plain text file which will also accept certain escape sequences (see below) in order to insert information about the system. There is also the file issue.net which can be used when logging on remotely. ssh however, will only use it if you set the option in the configuration file and will not interpret the escape sequences shown below.

One of the most common things which people want to do is clear the screen at each logon. The easiest way of doing that is to put a "clear" escape sequence into /etc/issue. A simple way of doing this is to issue the command clear > /etc/issue. This will insert the relevant escape code into the start of the /etc/issue file. Note that if you do this, when you edit the file, you should leave the characters (normally '^[[H^[[2J') on the first line alone.

Note

Terminal escape sequences are special codes recognized by the terminal. The ^[ represents an ASCII ESC character. The sequence ESC [ H puts the cursor in the upper left hand corner of the screen and ESC 2 J erases the screen. For more information on terminal escape sequences see http://rtfm.etla.org/xterm/ctlseq.html

The following sequences are recognized by agetty (the program which usually parses /etc/issue). This information is from man agetty where you can find extra information about the logon process.

The issue file can contain certain character sequences to display various information. All issue sequences consist of a backslash (\) immediately followed by one of the letters explained below (so \d in /etc/issue would insert the current date).

b   Insert the baudrate of the current line.
d   Insert the current date.
s   Insert the system name, the name of the operating system.
l   Insert the name of the current tty line.
m   Insert the architecture identifier of the machine, e.g., i686.
n   Insert the nodename of the machine, also known as the hostname.
o   Insert the domainname of the machine.
r   Insert the release number of the kernel, e.g., 2.6.11.12.
t   Insert the current time.
u   Insert the number of current users logged in.
U   Insert the string "1 user" or "<n> users" where <n> is the
    number of current users logged in.
v   Insert the version of the OS, e.g., the build-date etc.

The /etc/shells File

The shells file contains a list of login shells on the system. Applications use this file to determine whether a shell is valid. For each shell a single line should be present, consisting of the shell's path, relative to the root of the directory structure (/).

For example, this file is consulted by chsh to determine whether an unprivileged user may change the login shell for her own account. If the command name is not listed, the user will be denied of change.

It is a requirement for applications such as GDM which does not populate the face browser if it can't find /etc/shells, or FTP daemons which traditionally disallow access to users with shells not included in this file.

cat > /etc/shells << "EOF"
# Begin /etc/shells

/bin/sh
/bin/bash

# End /etc/shells
EOF

Random Number Generation

The Linux kernel supplies a random number generator which is accessed through /dev/random and /dev/urandom. Programs that utilize the random and urandom devices, such as OpenSSH, will benefit from these instructions.

When a Linux system starts up without much operator interaction, the entropy pool (data used to compute a random number) may be in a fairly predictable state. This creates the real possibility that the number generated at startup may always be the same. In order to counteract this effect, you should carry the entropy pool information across your shut-downs and start-ups.

Install the /etc/rc.d/init.d/random init script included with the blfs-bootscripts-20060910 package.

make install-random

Compressing Man and Info Pages

Man and info reader programs can transparently process files compressed with gzip or bzip2, a feature you can use to free some disk space while keeping your documentation available. However, things are not that simple; man directories tend to contain links—hard and symbolic—which defeat simple ideas like recursively calling gzip on them. A better way to go is to use the script below. If you would prefer to download the file instead of creating it by typing or cut-and-pasting, you can find it at http://anduin.linuxfromscratch.org/files/BLFS/compressdoc (the file should be installed in the /usr/sbin directory).

cat > /usr/sbin/compressdoc << "EOF"
#!/bin/bash
# VERSION: 20060311.0028
#
# Compress (with bzip2 or gzip) all man pages in a hierarchy and
# update symlinks - By Marc Heerdink <marc @ koelkast.net>
#
# Modified to be able to gzip or bzip2 files as an option and to deal
# with all symlinks properly by Mark Hymers <markh @ linuxfromscratch.org>
#
# Modified 20030930 by Yann E. Morin <yann.morin.1998 @ anciens.enib.fr>
# to accept compression/decompression, to correctly handle hard-links,
# to allow for changing hard-links into soft- ones, to specify the
# compression level, to parse the man.conf for all occurrences of MANPATH,
# to allow for a backup, to allow to keep the newest version of a page.
#
# Modified 20040330 by Tushar Teredesai to replace $0 by the name of the
# script.
#   (Note: It is assumed that the script is in the user's PATH)
#
# Modified 20050112 by Randy McMurchy to shorten line lengths and
# correct grammar errors.
#
# Modified 20060128 by Alexander E. Patrakov for compatibility with Man-DB.
#
# Modified 20060311 by Archaic to use Man-DB manpath utility which is a
# replacement for man --path from Man.
#
# TODO:
#     - choose a default compress method to be based on the available
#       tool : gzip or bzip2;
#     - offer an option to automagically choose the best compression
#       methed on a per page basis (eg. check which of
#       gzip/bzip2/whatever is the most effective, page per page);
#     - when a MANPATH env var exists, use this instead of /etc/man_db.conf
#       (useful for users to (de)compress their man pages;
#     - offer an option to restore a previous backup;
#     - add other compression engines (compress, zip, etc?). Needed?

# Funny enough, this function prints some help.
function help ()
{
  if [ -n "$1" ]; then
    echo "Unknown option : $1"
  fi
  ( echo "Usage: $MY_NAME <comp_method> [options] [dirs]" && \
  cat << EOT
Where comp_method is one of :
  --gzip, --gz, -g
  --bzip2, --bz2, -b
                Compress using gzip or bzip2.

  --decompress, -d
                Decompress the man pages.

  --backup      Specify a .tar backup shall be done for all directories.
                In case a backup already exists, it is saved as .tar.old
                prior to making the new backup. If a .tar.old backup
                exists, it is removed prior to saving the backup.
                In backup mode, no other action is performed.

And where options are :
  -1 to -9, --fast, --best
                The compression level, as accepted by gzip and bzip2.
                When not specified, uses the default compression level
                for the given method (-6 for gzip, and -9 for bzip2).
                Not used when in backup or decompress modes.

  --force, -F   Force (re-)compression, even if the previous one was
                the same method. Useful when changing the compression
                ratio. By default, a page will not be re-compressed if
                it ends with the same suffix as the method adds
                (.bz2 for bzip2, .gz for gzip).

  --soft, -S    Change hard-links into soft-links. Use with _caution_
                as the first encountered file will be used as a
                reference. Not used when in backup mode.

  --hard, -H    Change soft-links into hard-links. Not used when in
                backup mode.

  --conf=dir, --conf dir
                Specify the location of man_db.conf. Defaults to /etc.

  --verbose, -v Verbose mode, print the name of the directory being
                processed. Double the flag to turn it even more verbose,
                and to print the name of the file being processed.

  --fake, -f    Fakes it. Print the actual parameters compressdoc will use.

  dirs          A list of space-separated _absolute_ pathnames to the
                man directories. When empty, and only then, use manpath
                to parse ${MAN_CONF}/man_db.conf for all valid occurrences
                of MANDATORY_MANPATH.

Note about compression:
  There has been a discussion on blfs-support about compression ratios of
  both gzip and bzip2 on man pages, taking into account the hosting fs,
  the architecture, etc... On the overall, the conclusion was that gzip
  was much more efficient on 'small' files, and bzip2 on 'big' files,
  small and big being very dependent on the content of the files.

  See the original post from Mickael A. Peters, titled
  "Bootable Utility CD", dated 20030409.1816(+0200), and subsequent posts:
  http://linuxfromscratch.org/pipermail/blfs-support/2003-April/038817.html

  On my system (x86, ext3), man pages were 35564KB before compression.
  gzip -9 compressed them down to 20372KB (57.28%), bzip2 -9 got down to
  19812KB (55.71%). That is a 1.57% gain in space. YMMV.

  What was not taken into consideration was the decompression speed. But
  does it make sense to? You gain fast access with uncompressed man
  pages, or you gain space at the expense of a slight overhead in time.
  Well, my P4-2.5GHz does not even let me notice this... :-)

EOT
) | less
}

# This function checks that the man page is unique amongst bzip2'd,
# gzip'd and uncompressed versions.
#  $1 the directory in which the file resides
#  $2 the file name for the man page
# Returns 0 (true) if the file is the latest and must be taken care of,
# and 1 (false) if the file is not the latest (and has therefore been
# deleted).
function check_unique ()
{
  # NB. When there are hard-links to this file, these are
  # _not_ deleted. In fact, if there are hard-links, they
  # all have the same date/time, thus making them ready
  # for deletion later on.

  # Build the list of all man pages with the same name
  DIR=$1
  BASENAME=`basename "${2}" .bz2`
  BASENAME=`basename "${BASENAME}" .gz`
  GZ_FILE="$BASENAME".gz
  BZ_FILE="$BASENAME".bz2

  # Look for, and keep, the most recent one
  LATEST=`(cd "$DIR"; ls -1rt "${BASENAME}" "${GZ_FILE}" "${BZ_FILE}" \
         2>/dev/null | tail -n 1)`
  for i in "${BASENAME}" "${GZ_FILE}" "${BZ_FILE}"; do
    [ "$LATEST" != "$i" ] && rm -f "$DIR"/"$i"
  done

  # In case the specified file was the latest, return 0
  [ "$LATEST" = "$2" ] && return 0
  # If the file was not the latest, return 1
  return 1
}

# Name of the script
MY_NAME=`basename $0`

# OK, parse the command-line for arguments, and initialize to some
# sensible state, that is: don't change links state, parse
# /etc/man_db.conf, be most silent, search man_db.conf in /etc, and don't
# force (re-)compression.
COMP_METHOD=
COMP_SUF=
COMP_LVL=
FORCE_OPT=
LN_OPT=
MAN_DIR=
VERBOSE_LVL=0
BACKUP=no
FAKE=no
MAN_CONF=/etc
while [ -n "$1" ]; do
  case $1 in
    --gzip|--gz|-g)
      COMP_SUF=.gz
      COMP_METHOD=$1
      shift
      ;;
    --bzip2|--bz2|-b)
      COMP_SUF=.bz2
      COMP_METHOD=$1
      shift
      ;;
    --decompress|-d)
      COMP_SUF=
      COMP_LVL=
      COMP_METHOD=$1
      shift
      ;;
    -[1-9]|--fast|--best)
      COMP_LVL=$1
      shift
      ;;
    --force|-F)
      FORCE_OPT=-F
      shift
      ;;
    --soft|-S)
      LN_OPT=-S
      shift
      ;;
    --hard|-H)
      LN_OPT=-H
      shift
      ;;
    --conf=*)
      MAN_CONF=`echo $1 | cut -d '=' -f2-`
      shift
      ;;
    --conf)
      MAN_CONF="$2"
      shift 2
      ;;
    --verbose|-v)
      let VERBOSE_LVL++
      shift
      ;;
    --backup)
      BACKUP=yes
      shift
      ;;
    --fake|-f)
      FAKE=yes
      shift
      ;;
    --help|-h)
      help
      exit 0
      ;;
    /*)
      MAN_DIR="${MAN_DIR} ${1}"
      shift
      ;;
    -*)
      help $1
      exit 1
      ;;
    *)
      echo "\"$1\" is not an absolute path name"
      exit 1
      ;;
  esac
done

# Redirections
case $VERBOSE_LVL in
  0)
     # O, be silent
     DEST_FD0=/dev/null
     DEST_FD1=/dev/null
     VERBOSE_OPT=
     ;;
  1)
     # 1, be a bit verbose
     DEST_FD0=/dev/stdout
     DEST_FD1=/dev/null
     VERBOSE_OPT=-v
     ;;
  *)
     # 2 and above, be most verbose
     DEST_FD0=/dev/stdout
     DEST_FD1=/dev/stdout
     VERBOSE_OPT="-v -v"
     ;;
esac

# Note: on my machine, 'man --path' gives /usr/share/man twice, once
# with a trailing '/', once without.
if [ -z "$MAN_DIR" ]; then
  MAN_DIR=`manpath -C "$MAN_CONF"/man_db.conf \
            | sed 's/:/\\n/g' \
            | while read foo; do dirname "$foo"/.; done \
            | sort -u \
            | while read bar; do echo -n "$bar "; done`
fi

# If no MANDATORY_MANPATH in ${MAN_CONF}/man_db.conf, abort as well
if [ -z "$MAN_DIR" ]; then
  echo "No directory specified, and no directory found with \`manpath'"
  exit 1
fi

# Fake?
if [ "$FAKE" != "no" ]; then
  echo "Actual parameters used:"
  echo -n "Compression.......: "
  case $COMP_METHOD in
    --bzip2|--bz2|-b) echo -n "bzip2";;
    --gzip|__gz|-g) echo -n "gzip";;
    --decompress|-d) echo -n "decompressing";;
    *) echo -n "unknown";;
  esac
  echo " ($COMP_METHOD)"
  echo "Compression level.: $COMP_LVL"
  echo "Compression suffix: $COMP_SUF"
  echo -n "Force compression.: "
  [ "foo$FORCE_OPT" = "foo-F" ] && echo "yes" || echo "no"
  echo "man_db.conf is....: ${MAN_CONF}/man_db.conf"
  echo -n "Hard-links........: "
  [ "foo$LN_OPT" = "foo-S" ] &&
  echo "convert to soft-links" || echo "leave as is"
  echo -n "Soft-links........: "
  [ "foo$LN_OPT" = "foo-H" ] &&
  echo "convert to hard-links" || echo "leave as is"
  echo "Backup............: $BACKUP"
  echo "Faking (yes!).....: $FAKE"
  echo "Directories.......: $MAN_DIR"
  echo "Verbosity level...: $VERBOSE_LVL"
  exit 0
fi

# If no method was specified, print help
if [ -z "${COMP_METHOD}" -a "${BACKUP}" = "no" ]; then
  help
  exit 1
fi

# In backup mode, do the backup solely
if [ "$BACKUP" = "yes" ]; then
  for DIR in $MAN_DIR; do
    cd "${DIR}/.."
    DIR_NAME=`basename "${DIR}"`
    echo "Backing up $DIR..." > $DEST_FD0
    [ -f "${DIR_NAME}.tar.old" ] && rm -f "${DIR_NAME}.tar.old"
    [ -f "${DIR_NAME}.tar" ] &&
    mv "${DIR_NAME}.tar" "${DIR_NAME}.tar.old"
    tar -cvf "${DIR_NAME}.tar" "${DIR_NAME}" > $DEST_FD1
  done
  exit 0
fi

# I know MAN_DIR has only absolute path names
# I need to take into account the localized man, so I'm going recursive
for DIR in $MAN_DIR; do
  MEM_DIR=`pwd`
  cd "$DIR"
  for FILE in *; do
    # Fixes the case were the directory is empty
    if [ "foo$FILE" = "foo*" ]; then continue; fi

    # Fixes the case when hard-links see their compression scheme change
    # (from not compressed to compressed, or from bz2 to gz, or from gz
    # to bz2)
    # Also fixes the case when multiple version of the page are present,
    # which are either compressed or not.
    if [ ! -L "$FILE" -a ! -e "$FILE" ]; then continue; fi

    # Do not compress whatis files
    if [ "$FILE" = "whatis" ]; then continue; fi

    if [ -d "$FILE" ]; then
      cd "${MEM_DIR}"  # Go back to where we ran "$0",
                       # in case "$0"=="./compressdoc" ...
      # We are going recursive to that directory
      echo "-> Entering ${DIR}/${FILE}..." > $DEST_FD0
      # I need not pass --conf, as I specify the directory to work on
      # But I need exit in case of error
      "$MY_NAME" ${COMP_METHOD} ${COMP_LVL} ${LN_OPT} ${VERBOSE_OPT} \
      ${FORCE_OPT} "${DIR}/${FILE}" || exit 1
      echo "<- Leaving ${DIR}/${FILE}." > $DEST_FD1
      cd "$DIR"  # Needed for the next iteration of the loop

    else # !dir
      if ! check_unique "$DIR" "$FILE"; then continue; fi

      # Check if the file is already compressed with the specified method
      BASE_FILE=`basename "$FILE" .gz`
      BASE_FILE=`basename "$BASE_FILE" .bz2`
      if [ "${FILE}" = "${BASE_FILE}${COMP_SUF}" \
         -a "foo${FORCE_OPT}" = "foo" ]; then continue; fi

      # If we have a symlink
      if [ -h "$FILE" ]; then
        case "$FILE" in
          *.bz2)
            EXT=bz2 ;;
          *.gz)
            EXT=gz ;;
          *)
            EXT=none ;;
        esac

        if [ ! "$EXT" = "none" ]; then
          LINK=`ls -l "$FILE" | cut -d ">" -f2 \
               | tr -d " " | sed s/\.$EXT$//`
          NEWNAME=`echo "$FILE" | sed s/\.$EXT$//`
          mv "$FILE" "$NEWNAME"
          FILE="$NEWNAME"
        else
          LINK=`ls -l "$FILE" | cut -d ">" -f2 | tr -d " "`
        fi

        if [ "$LN_OPT" = "-H" ]; then
          # Change this soft-link into a hard- one
          rm -f "$FILE" && ln "${LINK}$COMP_SUF" "${FILE}$COMP_SUF"
          chmod --reference "${LINK}$COMP_SUF" "${FILE}$COMP_SUF"
        else
          # Keep this soft-link a soft- one.
          rm -f "$FILE" && ln -s "${LINK}$COMP_SUF" "${FILE}$COMP_SUF"
        fi
        echo "Relinked $FILE" > $DEST_FD1

      # else if we have a plain file
      elif [ -f "$FILE" ]; then
        # Take care of hard-links: build the list of files hard-linked
        # to the one we are {de,}compressing.
        # NB. This is not optimum has the file will eventually be
        # compressed as many times it has hard-links. But for now,
        # that's the safe way.
        inode=`ls -li "$FILE" | awk '{print $1}'`
        HLINKS=`find . \! -name "$FILE" -inum $inode`

        if [ -n "$HLINKS" ]; then
          # We have hard-links! Remove them now.
          for i in $HLINKS; do rm -f "$i"; done
        fi

        # Now take care of the file that has no hard-link
        # We do decompress first to re-compress with the selected
        # compression ratio later on...
        case "$FILE" in
          *.bz2)
            bunzip2 $FILE
            FILE=`basename "$FILE" .bz2`
          ;;
          *.gz)
            gunzip $FILE
            FILE=`basename "$FILE" .gz`
          ;;
        esac

        # Compress the file with the given compression ratio, if needed
        case $COMP_SUF in
          *bz2)
            bzip2 ${COMP_LVL} "$FILE" && chmod 644 "${FILE}${COMP_SUF}"
            echo "Compressed $FILE" > $DEST_FD1
            ;;
          *gz)
            gzip ${COMP_LVL} "$FILE" && chmod 644 "${FILE}${COMP_SUF}"
            echo "Compressed $FILE" > $DEST_FD1
            ;;
          *)
            echo "Uncompressed $FILE" > $DEST_FD1
            ;;
        esac

        # If the file had hard-links, recreate those (either hard or soft)
        if [ -n "$HLINKS" ]; then
          for i in $HLINKS; do
            NEWFILE=`echo "$i" | sed s/\.gz$// | sed s/\.bz2$//`
            if [ "$LN_OPT" = "-S" ]; then
              # Make this hard-link a soft- one
              ln -s "${FILE}$COMP_SUF" "${NEWFILE}$COMP_SUF"
            else
              # Keep the hard-link a hard- one
              ln "${FILE}$COMP_SUF" "${NEWFILE}$COMP_SUF"
            fi
            # Really work only for hard-links. Harmless for soft-links
            chmod 644 "${NEWFILE}$COMP_SUF"
          done
        fi

      else
        # There is a problem when we get neither a symlink nor a plain
        # file. Obviously, we shall never ever come here... :-(
        echo -n "Whaooo... \"${DIR}/${FILE}\" is neither a symlink "
        echo "nor a plain file. Please check:"
        ls -l "${DIR}/${FILE}"
        exit 1
      fi
    fi
  done # for FILE
done # for DIR

EOF

As root, make compressdoc executable for all users:

chmod -v 755 /usr/sbin/compressdoc

Now, as root, you can issue the command compressdoc --bz2 to compress all your system man pages. You can also run compressdoc --help to get comprehensive help about what the script is able to do.

Don't forget that a few programs, like the X Window System and XEmacs also install their documentation in non-standard places (such as /usr/X11R6/man, etc.). Be sure to add these locations to the file /etc/man_db.conf, as MANDATORY_MANPATH </path> lines.

Example:

    ...
    MANDATORY_MANPATH                       /usr/share/man
    MANDATORY_MANPATH                       /usr/X11R6/man
    MANDATORY_MANPATH                       /usr/local/man
    MANDATORY_MANPATH                       /opt/qt/doc/man
    ...

Generally, package installation systems do not compress man/info pages, which means you will need to run the script again if you want to keep the size of your documentation as small as possible. Also, note that running the script after upgrading a package is safe; when you have several versions of a page (for example, one compressed and one uncompressed), the most recent one is kept and the others are deleted.

Automate Mounting of File Systems

Introduction to Autofs

The autofs package contains userspace tools that work with the kernel to mount and un-mount removable file systems. This is useful for allowing users to mount floppies, cdroms and other removable storage devices without requiring the system administrator to mount the devices. This may not be ideal for all installations, so be aware of the risks before implementing this feature.

Package Information

Additional Downloads

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/autofs

Kernel Configuration

Verify that kernel support has been compiled in or built as modules in the following areas:

File systems ⇒
    Kernel automounter version 4 support  Y or M
    Network File Systems ⇒
        NFS file system support     Y or M (optional)
        SMB file system support     Y or M (optional)

Recompile and install the new kernel, if necessary.

Installation of Autofs

Install autofs by running the following commands:

patch -Np1 -i ../autofs-4.1.4-consolidated-1.patch &&
./configure --prefix=/ --mandir=/usr/share/man &&
make

Now, as the root user:

make install &&
rm /etc/rc.d/init.d/autofs

Command Explanations

patch -Np1 -i ../autofs-4.1.4-consolidated-1.patch: This patch is a consolidation of nine small patches available at http://ftp.kernel.org/pub/linux/daemons/autofs/v4/. The patches can be applied individually if desired.

rm /etc/rc.d/init.d/autofs: This command removes the installed script which only works on specific distributions.

Configuring Autofs

Config Files

/etc/sysconfig/autofs.conf, /etc/auto.master, /etc/auto.misc, and /etc/auto.net

Configuration Information

The installation process creates auto.master, auto.misc and auto.net. You will replace the auto.master with the following commands:

mv /etc/auto.master /etc/auto.master.bak &&
cat > /etc/auto.master << "EOF"
# Begin /etc/auto.master

/media  /etc/auto.misc

# End /etc/auto.master
EOF

Note

This file mounts a new media directory over the one created by LFS and will therefore hide any mounts made by the fstab file into that directory.

While this package could be used to mount NFS shares and SMB shares, that feature is not configured in these instructions. NFS shares are covered on the next page.

The auto.misc must be configured to your working hardware. The loaded configuration file should load your cdrom if /dev/cdrom is active or it can be edited to match your device setup and examples for floppies are available in the file and easily activated. Documentation for this file is available using the man 5 autofs command.

Boot Script

Install the /etc/rc.d/init.d/autofs mount script and /etc/sysconfig/autofs.conf support file included with the blfs-bootscripts-20060910 package.

make install-autofs

The time-out variable is set in /etc/sysconfig/autofs.conf. The installed file sets a default of 60 seconds of inactivity before unmounting the device. A much shorter time may be necessary to protect buffer writing to a floppy if users tend to remove the media prior to the timeout setting.

Contents

Installed Program: automount
Installed Libraries: autofs modules
Installed Directories: /lib/autofs and /var/run/autofs

Short Descriptions

automount

is the daemon that performs the mounting when a request is made for the device.

Configuring for Network Filesystems

While LFS is capable of mounting network file systems such as NFS, these are not mounted by the mountfs init script. Network file systems must be mounted after the networking is activated and unmounted before the network goes down. The netfs bootscript was written to handle both boot-time mounting of network filesystems, if the entry in /etc/fstab contains the _netdev option, and unmounting of all network filesystems before the network is brought down.

As the root user, install the /etc/rc.d/init.d/netfs bootscript included with the blfs-bootscripts-20060910 package.

make install-netfs

Chapter 4. Security

Security takes many forms in a computing environment. This chapter gives examples of three different types of security: access, prevention and detection.

Access for users is usually handled by login or an application designed to handle the login function. In this chapter, we show how to enhance login by setting policies with PAM modules. Access via networks can also be secured by policies set by iptables, commonly referred to as a firewall. The Network Security Services (NSS) and Netscape Portable Runtime (NSPR) libraries can be installed and shared among the many applications requiring them. For applications that don't offer the best security, you can use the Stunnel package to wrap an application daemon inside an SSL tunnel.

Prevention of breaches, like a trojan, are assisted by applications like GnuPG, specifically the ability to confirm signed packages, which recognizes modifications of the tarball after the packager creates it.

Finally, we touch on detection with a package that stores "signatures" of critical files (defined by the administrator) and then regenerates those "signatures" and compares for files that have been changed.

OpenSSL-0.9.8d

Introduction to OpenSSL

The OpenSSL package contains management tools and libraries relating to cryptography. These are useful for providing cryptography functions to other packages, notably OpenSSH, email applications and web browsers (for accessing HTTPS sites).

Package Information

Additional Downloads

OpenSSL Dependencies

Optional

bc-1.06 (recommended if you run the test suite during the build)

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/OpenSSL

Installation of OpenSSL

To avoid a lot of warnings caused by using a deprecated compilation option, run:

sed -i -e 's/mcpu/march/' config

Install OpenSSL by running the following commands:

patch -Np1 -i ../openssl-0.9.8d-fix_manpages-1.patch &&
./config --openssldir=/etc/ssl --prefix=/usr shared &&
make MANDIR=/usr/share/man

To test the results, issue: make test.

Now, as the root user:

make MANDIR=/usr/share/man install &&
cp -v -r certs /etc/ssl &&
install -v -d -m755 /usr/share/doc/openssl-0.9.8d &&
cp -v -r doc/{HOWTO,README,*.{txt,html,gif}} \
    /usr/share/doc/openssl-0.9.8d

Command Explanations

no-rc5 no-idea: When added to the ./config command, this will eliminate the building of those encryption methods. Patent licenses may be needed for you to utilize either of those methods in your projects.

make MANDIR=/usr/share/man; make MANDIR=/usr/share/man install: These commands install OpenSSL with the man pages in /usr/share/man instead of /etc/ssl/man.

cp -v -r certs /etc/ssl: The certificates must be copied manually as the default installation skips this step.

Configuring OpenSSL

Config Files

/etc/ssl/openssl.cnf

Configuration Information

Most people who just want to use OpenSSL for providing functions to other programs such as OpenSSH and web browsers won't need to worry about configuring OpenSSL. Configuring OpenSSL is an advanced topic and so those who do would normally be expected to either know how to do it or to be able to find out how to do it.

Contents

Installed Programs: c_rehash and openssl
Installed Libraries: libcrypto.{so,a} and libssl.{so,a}
Installed Directories: /etc/ssl, /usr/include/ssl, /usr/lib/engines and /usr/share/doc/openssl-0.9.8d

Short Descriptions

c_rehash

is a Perl script that scans all files in a directory and adds symbolic links to their hash values.

openssl

is a command-line tool for using the various cryptography functions of OpenSSL's crypto library from the shell. It can be used for various functions which are documented in man 1 openssl.

libcrypto.{so,a}

implements a wide range of cryptographic algorithms used in various Internet standards. The services provided by this library are used by the OpenSSL implementations of SSL, TLS and S/MIME, and they have also been used to implement OpenSSH, OpenPGP, and other cryptographic standards.

libssl.{so,a}

implements the Secure Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS v1) protocols. It provides a rich API, documentation on which can be found by running man 3 ssl.

CrackLib-2.8.9

Introduction to CrackLib

The CrackLib package contains a library used to enforce strong passwords by comparing user selected passwords to words in chosen word lists.

Package Information

Additional Downloads

There are additional word lists available for download, e.g., from http://www.cotse.com/tools/wordlists.htm. CrackLib can utilize as many, or as few word lists you choose to install.

Important

Users tend to base their passwords on regular words of the spoken language, and crackers know that. CrackLib is intended to filter out such bad passwords at the source using a dictionary created from word lists. To accomplish this, the word list(s) for use with CrackLib must be an exhaustive list of words and word-based keystroke combinations likely to be chosen by users of the system as (guessable) passwords.

The default word list recommended above for downloading mostly satisfies this role in English-speaking countries. In other situations, it may be necessary to download (or even create) additional word lists.

Note that word lists suitable for spell-checking are not usable as CrackLib word lists in countries with non-Latin based alphabets, because of “word-based keystroke combinations” that make bad passwords.

CrackLib Dependencies

Optional

Python-2.4.4

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/cracklib

Installation of CrackLib

If desired, apply the Heimdal patch (note that with this patch the original library is not affected; this patch only creates an additional library used by the Heimdal password-checking routines):

patch -Np1 -i ../cracklib-2.8.9-heimdal-1.patch

Install CrackLib by running the following commands:

./configure --prefix=/usr \
            --with-default-dict=/lib/cracklib/pw_dict &&
make

Now, as the root user:

make install &&
mv -v /usr/lib/libcrack.so.2* /lib &&
ln -v -sf ../../lib/libcrack.so.2.8.0 /usr/lib/libcrack.so

Issue the following commands as the root user to install the recommended word list and create the CrackLib dictionary. Other word lists (text based, one word per line) can also be used by simply installing them into /usr/share/dict and adding them to the create-cracklib-dict command.

install -v -m644 -D ../cracklib-words.gz \
    /usr/share/dict/cracklib-words.gz &&
gunzip -v /usr/share/dict/cracklib-words.gz &&
ln -v -s cracklib-words /usr/share/dict/words &&
echo $(hostname) >>/usr/share/dict/cracklib-extra-words &&
install -v -m755 -d /lib/cracklib &&
create-cracklib-dict /usr/share/dict/cracklib-words \
                     /usr/share/dict/cracklib-extra-words

If desired, check the proper operation of the library as an unprivileged user using the tests included with the package:

make test

Important

If you are installing CrackLib after your LFS system has been completed and you have the Shadow package installed, you must reinstall Shadow-4.0.15 if you wish to provide strong password support on your system. If you are now going to install the Linux-PAM-0.99.4.0 package, you may disregard this note as Shadow will be reinstalled after the Linux-PAM installation.

Command Explanations

--with-default-dict=/lib/cracklib/pw_dict: This parameter forces the installation of the CrackLib dictionary to the /lib hierarchy.

mv -v /usr/lib/libcrack.so.2* /lib and ln -v -sf ../../lib/libcrack.so.2.8.0 ...: These two commands move the libcrack.so.2.8.0 library and associated symlink from /usr/lib to /lib, then recreates the /usr/lib/libcrack.so symlink pointing to the relocated file.

install -v -m644 -D ...: This command creates the /usr/share/dict directory (if it doesn't already exist) and installs the compressed word list there.

ln -v -s cracklib-words /usr/share/dict/words: The word list is linked to /usr/share/dict/words as historically, words is the primary word list in the /usr/share/dict directory. Omit this command if you already have a /usr/share/dict/words file installed on your system.

echo $(hostname) >>...: The value of hostname is echoed to a file called cracklib-extra-words. This extra file is intended to be a site specific list which includes easy to guess passwords such as company or department names, user's names, product names, computer names, domain names, etc.

create-cracklib-dict ...: This command creates the CrackLib dictionary from the word lists. Modify the command to add any additional word lists you have installed.

Contents

Installed Programs: cracklib-check, cracklib-format, cracklib-packer, cracklib-unpacker and create-cracklib-dict
Installed Libraries: libcrack.{so,a} and optionally, libcrack_heimdal.{so,a} and cracklibmodule.{so,a} Python module
Installed Directories: /lib/cracklib, /usr/share/dict and /usr/share/cracklib

Short Descriptions

create-cracklib-dict

is used to create the CrackLib dictionary from the given word list(s).

libcrack.{so,a}

provides a fast dictionary lookup method for strong password enforcement.

Linux-PAM-0.99.4.0

Introduction to Linux-PAM

The Linux-PAM package contains Pluggable Authentication Modules. This is useful to enable the local system administrator to choose how applications authenticate users.

Package Information

Additional Downloads

Linux-PAM Dependencies

Optional

CrackLib-2.8.9, Prelude, and sgmltools-lite

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/linux-pam

Installation of Linux-PAM

If you downloaded the documentation, unpack the tarball into the doc directory of the source tree:

tar -xf ../Linux-PAM-0.99.4.0-docs.tar.bz2 -C doc

Install Linux-PAM by running the following commands:

./configure --libdir=/usr/lib \
            --sbindir=/lib/security \
            --enable-securedir=/lib/security \
            --enable-docdir=/usr/share/doc/Linux-PAM-0.99.4.0 \
            --enable-read-both-confs &&
make

The test suite will not provide meaningful results until the package has been installed and configured. If, after installing the package and creating a minimum configuration as shown below in the 'other' example, you wish to run the tests, issue make check.

Tip

Don't delete the Linux-PAM source tree until after you reinstall the Shadow package. The reinstallation of the Shadow package includes much more stringent security for the PAM configuration, and you can run the Linux-PAM test suite after completing the Shadow instructions to test the new setup. All the tests should pass.

Now, as the root user:

make install &&
chmod -v 4755 /lib/security/unix_chkpwd &&
mv -v /lib/security/pam_tally /sbin &&
mv -v /usr/lib/libpam*.so.0* /lib &&
ln -v -sf ../../lib/libpam.so.0.81.3 /usr/lib/libpam.so &&
ln -v -sf ../../lib/libpamc.so.0.81.0 /usr/lib/libpamc.so &&
ln -v -sf ../../lib/libpam_misc.so.0.81.2 /usr/lib/libpam_misc.so

If you downloaded the documentation, install it using the following command:

for DOCTYPE in html pdf ps txts
do
    cp -v -R doc/$DOCTYPE /usr/share/doc/Linux-PAM-0.99.4.0
done

Command Explanations

--libdir=/usr/lib: This parameter results in the libraries being installed in /usr/lib.

--sbindir=/lib/security: This parameter results in two executables, one which is not intended to be run from the command line, being installed in the same directory as the PAM modules. One of the executables is later moved to the /sbin directory.

--enable-securedir=/lib/security: This parameter results in the PAM modules being installed in /lib/security.

--enable-docdir=...: This parameter results in the documentation being installed in a versioned directory name.

--enable-read-both-confs: This parameter allows the local administrator to choose which configuration file setup to use.

chmod -v 4755 /lib/security/unix_chkpwd: The unix_chkpwd password-helper program must be setuid so that non-root processes can access the shadow-password file.

mv -v /lib/security/pam_tally /sbin: The pam_tally program is designed to be run by the system administrator, possibly in single-user mode, so it is moved to the appropriate directory.

mv -v /usr/lib/libpam*.so.0* /lib: This command moves the dynamic libraries to /lib as they may be required in single user mode.

ln -v -sf ...: These commands recreate the .so symlinks as the libraries they pointed to were moved to /lib.

Configuring Linux-PAM

Config Files

/etc/security/* and /etc/pam.d/* or /etc/pam.conf

Configuration Information

Configuration information is placed in /etc/pam.d/ or /etc/pam.conf depending on system administrator preference. Below are example files of each type:

# Begin /etc/pam.d/other

auth            required        pam_unix.so     nullok
account         required        pam_unix.so
session         required        pam_unix.so
password        required        pam_unix.so     nullok

# End /etc/pam.d/other

# Begin /etc/pam.conf

other           auth            required        pam_unix.so     nullok
other           account         required        pam_unix.so
other           session         required        pam_unix.so
other           password        required        pam_unix.so     nullok

# End /etc/pam.conf

The PAM man page (man pam) provides a good starting point for descriptions of fields and allowable entries. The Linux-PAM System Administrators' Guide is recommended for additional information.

Refer to http://www.kernel.org/pub/linux/libs/pam/modules.html for a list of various modules available.

Important

You should now reinstall the Shadow-4.0.15 package.

Contents

Installed Program: pam_tally
Installed Libraries: libpam.{so,a}, libpamc.{so,a}, and libpam_misc.{so,a}
Installed Directories: /etc/pam.d, /etc/security, /lib/security and /usr/include/security

Short Descriptions

pam_tally

is used to view or manipulate the faillog file.

libpam.{so,a}

provides the interfaces between applications and the PAM modules.

Shadow-4.0.15

Introduction to Shadow

Shadow was indeed installed in LFS and there is no reason to reinstall it unless you installed CrackLib or Linux-PAM after your LFS system was completed. If you have installed CrackLib after LFS, then reinstalling Shadow will enable strong password support. If you have installed Linux-PAM, reinstalling Shadow will allow programs such as login and su to utilize PAM.

Package Information

Shadow Dependencies

Required

Linux-PAM-0.99.4.0 and/or CrackLib-2.8.9

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/shadow

Installation of Shadow

Important

The installation shown below is for a situation where Linux-PAM has been installed (with or without a CrackLib installation) and Shadow is being reinstalled to support the Linux-PAM installation. If you are reinstalling Shadow to provide strong password support via the CrackLib library and you have not installed Linux-PAM, ensure you add the --with-libcrack parameter to the configure script below.

Reinstall Shadow by running the following commands:

./configure --libdir=/lib \
            --enable-shared \
            --without-selinux &&
sed -i 's/groups$(EXEEXT) //' src/Makefile &&
find man -name Makefile -exec sed -i '/groups/d' {} \; &&
sed -i -e 's/ ko//' \
       -e 's/ zh_CN zh_TW//' \
    man/Makefile &&

for i in de es fi fr id it pt_BR; do
    convert-mans UTF-8 ISO-8859-1 man/${i}/*.?
done &&

for i in cs hu pl; do
    convert-mans UTF-8 ISO-8859-2 man/${i}/*.?
done &&

convert-mans UTF-8 EUC-JP man/ja/*.? &&
convert-mans UTF-8 KOI8-R man/ru/*.? &&
convert-mans UTF-8 ISO-8859-9 man/tr/*.? &&

make

This package does not come with a test suite.

Now, as the root user:

make install &&
mv -v /usr/bin/passwd /bin &&
mv -v /lib/libshadow.*a /usr/lib &&
rm -v /lib/libshadow.so &&
ln -v -sf ../../lib/libshadow.so.0 /usr/lib/libshadow.so

Command Explanations

--without-selinux: Support for selinux is enabled by default, but selinux is not built in a base LFS system. The configure script will fail if this option is not used.

sed -i 's/groups$(EXEEXT) //' src/Makefile: This command is used to suppress the installation of the groups program as the version from the Coreutils package installed during LFS is preferred.

find man -name Makefile -exec ... {} \;: This command is used to suppress the installation of the groups man pages so the existing ones installed from the Coreutils package are not replaced.

sed -i -e '...' -e '...' man/Makefile: This command disables the installation of Chinese and Korean manual pages, since Man-DB cannot format them properly.

convert-mans ...: These commands are used to convert some of the man pages so that Man-DB will display them in the expected encodings.

mv -v /usr/bin/passwd /bin: The passwd program may be needed during times when the /usr filesystem is not mounted so it is moved into the root partition.

mv -v ...; rm -v ...; ln -v ...: These commands are used to move the libshadow library to the root partition to support the moving of the passwd program earlier.

Configuring Linux-PAM to Work with Shadow

Note

The rest of this page is devoted to configuring Shadow to work properly with Linux-PAM. If you do not have Linux-PAM installed, and you reinstalled Shadow to support strong passwords via the CrackLib library, no further configuration is required.

Config Files

/etc/pam.d/* or alternatively /etc/pam.conf, /etc/login.defs and /etc/security/*

Configuration Information

Configuring your system to use Linux-PAM can be a complex task. The information below will provide a basic setup so that Shadow's login and password functionality will work effectively with Linux-PAM. Review the information and links on the Linux-PAM-0.99.4.0 page for further configuration information. For information specific to integrating Shadow, Linux-PAM and CrackLib, you can visit the following links:

Configuring /etc/login.defs

The login program currently performs many functions which Linux-PAM modules should now handle. The following sed command will comment out the appropriate lines in /etc/login.defs, and stop login from performing these functions (a backup file named /etc/login.defs.orig is also created to preserve the original file's contents). Issue the following commands as the root user:

install -v -m644 /etc/login.defs /etc/login.defs.orig &&
for FUNCTION in LASTLOG_ENAB MAIL_CHECK_ENAB \
                PORTTIME_CHECKS_ENAB CONSOLE \
                MOTD_FILE NOLOGINS_FILE PASS_MIN_LEN \
                SU_WHEEL_ONLY MD5_CRYPT_ENAB \
                CONSOLE_GROUPS ENVIRON_FILE \
                ULIMIT ENV_TZ ENV_HZ ENV_SUPATH \
                ENV_PATH QMAIL_DIR MAIL_DIR MAIL_FILE \
                CHFN_AUTH FAILLOG_ENAB QUOTAS_ENAB FTMP_FILE \
                OBSCURE_CHECKS_ENAB CRACKLIB_DICTPATH \
                PASS_CHANGE_TRIES PASS_ALWAYS_WARN
do
    sed -i "s/^$FUNCTION/# &/" /etc/login.defs
done
Configuring the /etc/pam.d/ Files

As mentioned previously in the Linux-PAM instructions, Linux-PAM has two supported methods for configuration. The commands below assume that you've chosen to use a directory based configuration, where each program has its own configuration file. You can optionally use a single /etc/pam.conf configuration file by using the text from the files below, and supplying the program name as an additional first field for each line.

As the root user, create the /etc/pam.d directory with the following command:

install -v -d -m755 /etc/pam.d

While still the root user, add the following Linux-PAM configuration files to the /etc/pam.d/ directory (or add the contents to the /etc/pam.conf file) with the following commands:

'login' (with CrackLib)
cat > /etc/pam.d/login << "EOF"
# Begin /etc/pam.d/login

auth        requisite      pam_securetty.so
auth        requisite      pam_nologin.so
auth        required       pam_unix.so
account     required       pam_access.so
account     required       pam_unix.so
session     required       pam_env.so
session     required       pam_motd.so
session     required       pam_limits.so
session     optional       pam_mail.so      dir=/var/mail standard
session     optional       pam_lastlog.so
session     required       pam_unix.so
password    required       pam_cracklib.so  retry=3 difok=8 minlen=5 \
                                            dcredit=3 ocredit=3 \
                                            ucredit=2 lcredit=2
password    required       pam_unix.so      md5 shadow use_authtok

# End /etc/pam.d/login
EOF
'login' (without CrackLib)
cat > /etc/pam.d/login << "EOF"
# Begin /etc/pam.d/login

auth        requisite      pam_securetty.so
auth        requisite      pam_nologin.so
auth        required       pam_env.so
auth        required       pam_unix.so
account     required       pam_access.so
account     required       pam_unix.so
session     required       pam_motd.so
session     required       pam_limits.so
session     optional       pam_mail.so      dir=/var/mail standard
session     optional       pam_lastlog.so
session     required       pam_unix.so
password    required       pam_unix.so      md5 shadow

# End /etc/pam.d/login
EOF
'passwd' (with CrackLib)
cat > /etc/pam.d/passwd << "EOF"
# Begin /etc/pam.d/passwd

password    required       pam_cracklib.so  retry=3 difok=8 minlen=5 \
                                            dcredit=3  ocredit=3 \
                                            ucredit=2  lcredit=2
password    required       pam_unix.so      md5 shadow use_authtok

# End /etc/pam.d/passwd
EOF
'passwd' (without CrackLib)
cat > /etc/pam.d/passwd << "EOF"
# Begin /etc/pam.d/passwd

password    required       pam_unix.so      md5 shadow

# End /etc/pam.d/passwd
EOF
'su'
cat > /etc/pam.d/su << "EOF"
# Begin /etc/pam.d/su

auth        sufficient      pam_rootok.so
auth        required        pam_unix.so
account     required        pam_unix.so
session     optional        pam_mail.so     dir=/var/mail standard
session     required        pam_env.so
session     required        pam_unix.so

# End /etc/pam.d/su
EOF
'chage'
cat > /etc/pam.d/chage << "EOF"
# Begin /etc/pam.d/chage

auth        sufficient      pam_rootok.so
auth        required        pam_unix.so
account     required        pam_unix.so
session     required        pam_unix.so
password    required        pam_permit.so

# End /etc/pam.d/chage
EOF
'chpasswd', 'newusers', 'groupadd', 'groupdel', 'groupmod', 'useradd', 'userdel', and 'usermod'
for PROGRAM in chpasswd newusers groupadd groupdel \
               groupmod useradd userdel usermod
do
    install -v -m644 /etc/pam.d/chage /etc/pam.d/$PROGRAM
    sed -i "s/chage/$PROGRAM/" /etc/pam.d/$PROGRAM
done

Warning

At this point, you should do a simple test to see if Shadow is working as expected. Open another terminal and log in as a user, then su to root. If you do not see any errors, then all is well and you should proceed with the rest of the configuration. If you did receive errors, stop now and double check the above configuration files manually. You can also run the test suite from the Linux-PAM package to assist you in determining the problem. If you cannot find and fix the error, you should recompile Shadow replacing --with-libpam with --without-libpam in the above instructions (also move the /etc/login.defs.orig backup file to /etc/login.defs). If you fail to do this and the errors remain, you will be unable to log into your system.

Other

Currently, /etc/pam.d/other is configured to allow anyone with an account on the machine to use PAM-aware programs without a configuration file for that program. After testing Linux-PAM for proper configuration, install a more restrictive other file so that program-specific configuration files are required:

cat > /etc/pam.d/other << "EOF"
# Begin /etc/pam.d/other

auth        required        pam_deny.so
auth        required        pam_warn.so
account     required        pam_deny.so
session     required        pam_deny.so
password    required        pam_deny.so
password    required        pam_warn.so

# End /etc/pam.d/other
EOF

If you preserved the source tree from the Linux-PAM package (or you feel like unpacking that tarball, then running configure and make), now would be a good time to run the test suite from this package. This test suite will use the configuration you just finished during the tests. All the tests should pass.

Configuring Login Access

Instead of using the /etc/login.access file for controlling access to the system, Linux-PAM uses the pam_access.so module along with the /etc/security/access.conf file. Rename the /etc/login.access file using the following command:

if [ -f /etc/login.access ]; then
    mv -v /etc/login.access /etc/login.access.NOUSE
fi
Configuring Resource Limits

Instead of using the /etc/limits file for limiting usage of system resources, Linux-PAM uses the pam_limits.so module along with the /etc/security/limits.conf file. Rename the /etc/limits file using the following command:

if [ -f /etc/limits ]; then
    mv -v /etc/limits /etc/limits.NOUSE
fi
Configuring Default Environment

During previous configuration, several items were removed from /etc/login.defs. Some of these items are now controlled by the pam_env.so module and the /etc/security/pam_env.conf configuration file. In particular, the default path has been changed. To recover your default path, execute the following commands:

ENV_PATH=`grep '^ENV_PATH' /etc/login.defs.orig | \
    awk '{ print $2 }' | sed 's/PATH=//'` &&
echo 'PATH        DEFAULT='`echo "${ENV_PATH}"`\
'        OVERRIDE=${PATH}' \
    >> /etc/security/pam_env.conf &&
unset ENV_PATH

Note

ENV_SUPATH is no longer supported. You must create a valid /root/.bashrc file to provide a modified path for the super-user.

Contents

A list of the installed files, along with their short descriptions can be found at ../../../../lfs/view/6.2/chapter06/shadow.html#contents-shadow.

Iptables-1.3.6

Introduction to Iptables

The next part of this chapter deals with firewalls. The principal firewall tool for Linux, as of the 2.4 kernel series, is iptables. It replaces ipchains from the 2.2 series and ipfwadm from the 2.0 series. You will need to install iptables if you intend on using any form of a firewall.

Package Information

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/iptables

Kernel Configuration

A firewall in Linux is accomplished through a portion of the kernel called netfilter. The interface to netfilter is iptables. To use it, the appropriate kernel configuration parameters are found in Networking ⇒ Networking Options ⇒ Network Packet Filtering ⇒ Core Netfilter Configuration (and) IP: Netfilter Configuration.

Installation of Iptables

Note

The installation below does not include building some specialized extension libraries which require the raw headers in the Linux source code. If you wish to build the additional extensions (if you aren't sure, then you probably don't), you can look at the INSTALL file to see an example of how to change the KERNEL_DIR= parameter to point at the Linux source code. Note that if you upgrade the kernel version, you may also need to recompile iptables and that the BLFS team has not tested using the raw kernel headers.

For some non-x86 architectures, the raw kernel headers may be required. In that case, modify the KERNEL_DIR= parameter to point at the Linux source code.

Install iptables by running the following commands:

make PREFIX=/usr LIBDIR=/lib BINDIR=/sbin KERNEL_DIR=/usr

This package does not come with a test suite.

Now, as the root user:

make PREFIX=/usr LIBDIR=/lib BINDIR=/sbin KERNEL_DIR=/usr install

Command Explanations

PREFIX=/usr LIBDIR=/lib BINDIR=/sbin: Compiles and installs iptables libraries into /lib, binaries into /sbin and the remainder into the /usr hierarchy instead of /usr/local. Firewalls are generally activated during the boot process and /usr may not be mounted at that time.

KERNEL_DIR=/usr: This parameter is used to point at the sanitized kernel headers in /usr and not use the raw kernel headers in /usr/src/linux.

Configuring Iptables

Introductory instructions for configuring your firewall are presented in the next section: Firewalling

Boot Script

To set up the iptables firewall at boot, install the /etc/rc.d/init.d/iptables init script included in the blfs-bootscripts-20060910 package.

make install-iptables

Contents

Installed Programs: iptables, iptables-restore, iptables-save and ip6tables
Installed Libraries: libip6t_*.so and libipt_*.so
Installed Directory: /lib/iptables

Short Descriptions

iptables

is used to set up, maintain, and inspect the tables of IP packet filter rules in the Linux kernel.

iptables-restore

is used to restore IP Tables from data specified on STDIN. Use I/O redirection provided by your shell to read from a file.

iptables-save

is used to dump the contents of an IP Table in easily parseable format to STDOUT. Use I/O-redirection provided by your shell to write to a file.

ip6tables

is used to set up, maintain, and inspect the tables of IPv6 packet filter rules in the Linux kernel. Several different tables may be defined. Each table contains a number of built-in chains and may also contain user-defined chains.

libip*.so

library modules are various modules (implemented as dynamic libraries) which extend the core functionality of iptables.

Setting Up a Network Firewall

Before you read this part of the chapter, you should have already installed iptables as described in the previous section.

Introduction to Firewall Creation

The general purpose of a firewall is to protect a computer or a network against malicious access.

In a perfect world, every daemon or service on every machine is perfectly configured and immune to flaws such as buffer overflows or other problems regarding its security. Furthermore, you trust every user accessing your services. In this world, you do not need to have a firewall.

In the real world however, daemons may be misconfigured and exploits against essential services are freely available. You may wish to choose which services are accessible by certain machines or you may wish to limit which machines or applications are allowed external access. Alternatively, you may simply not trust some of your applications or users. You are probably connected to the Internet. In this world, a firewall is essential.

Don't assume however, that having a firewall makes careful configuration redundant, or that it makes any negligent misconfiguration harmless. It doesn't prevent anyone from exploiting a service you intentionally offer but haven't recently updated or patched after an exploit went public. Despite having a firewall, you need to keep applications and daemons on your system properly configured and up to date. A firewall is not a cure all, but should be an essential part of your overall security strategy.

Meaning of the Word "Firewall"

The word firewall can have several different meanings.

This is a hardware device or software program commercially sold (or offered via freeware) by companies such as Symantec which claims that it secures a home or desktop computer connected to the Internet. This type of firewall is highly relevant for users who do not know how their computers might be accessed via the Internet or how to disable that access, especially if they are always online and connected via broadband links.

This is a system placed between the Internet and an intranet. To minimize the risk of compromising the firewall itself, it should generally have only one role—that of protecting the intranet. Although not completely risk free, the tasks of doing the routing and IP masquerading (rewriting IP headers of the packets it routes from clients with private IP addresses onto the Internet so that they seem to come from the firewall itself) are commonly considered relatively secure.

This is often an old computer you may have retired and nearly forgotten, performing masquerading or routing functions, but offering non-firewall services such as a web-cache or mail. This may be used for home networks, but is not to be considered as secure as a firewall only machine because the combination of server and router/firewall on one machine raises the complexity of the setup.

Firewall with a Demilitarized Zone [Not Further Described Here]

This box performs masquerading or routing, but grants public access to some branch of your network which, because of public IPs and a physically separated structure, is essentially a separate network with direct Internet access. The servers on this network are those which must be easily accessible from both the Internet and intranet. The firewall protects both networks. This type of firewall has a minimum of three network interfaces.

Packetfilter

This type of firewall does routing or masquerading, but does not maintain a state table of ongoing communication streams. It is fast, but quite limited in its ability to block undesired packets without blocking desired packets.

Now You Can Start to Build your Firewall

Caution

This introduction on how to setup a firewall is not a complete guide to securing systems. Firewalling is a complex issue that requires careful configuration. The scripts quoted here are simply intended to give examples of how a firewall works. They are not intended to fit into any particular configuration and may not provide complete protection from an attack.

Customization of these scripts for your specific situation will be necessary for an optimal configuration, but you should make a serious study of the iptables documentation and creating firewalls in general before hacking away. Have a look at the list of links for further reading at the end of this section for more details. There you will find a list of URLs that contain quite comprehensive information about building your own firewall.

The firewall configuration script installed in the iptables section differs from the standard configuration script. It only has two of the standard targets: start and status. The other targets are clear and lock. For instance if you issue:

/etc/rc.d/init.d/iptables start

the firewall will be restarted just as it is upon system startup. The status target will present a list of all currently implemented rules. The clear target turns off all firewall rules and the lock target will block all packets in and out of the computer with the exception of the loopback interface.

The main startup firewall is located in the file /etc/rc.d/rc.iptables. The sections below provide three different approaches that can be used for a system.

Note

You should always run your firewall rules from a script. This ensures consistency and a record of what was done. It also allows retention of comments that are essential for understanding the rules long after they were written.

Personal Firewall

A Personal Firewall is designed to let you access all the services offered on the Internet, but keep your box secure and your data private.

Below is a slightly modified version of Rusty Russell's recommendation from the Linux 2.4 Packet Filtering HOWTO. It is still applicable to the Linux 2.6 kernels.

cat > /etc/rc.d/rc.iptables << "EOF"
#!/bin/sh

# Begin $rc_base/rc.iptables

# Insert connection-tracking modules
# (not needed if built into the kernel)
modprobe ip_tables
modprobe iptable_filter
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ipt_state
modprobe ipt_LOG

# Enable broadcast echo Protection
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

# Disable Source Routed Packets
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route

# Enable TCP SYN Cookie Protection
echo 1 > /proc/sys/net/ipv4/tcp_syncookies

# Disable ICMP Redirect Acceptance
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects

# Don¹t send Redirect Messages
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects

# Drop Spoofed Packets coming in on an interface, where responses
# would result in the reply going out a different interface.
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter

# Log packets with impossible addresses.
echo 1 > /proc/sys/net/ipv4/conf/all/log_martians

# be verbose on dynamic ip-addresses  (not needed in case of static IP)
echo 2 > /proc/sys/net/ipv4/ip_dynaddr

# disable Explicit Congestion Notification
# too many routers are still ignorant
echo 0 > /proc/sys/net/ipv4/tcp_ecn

# Set a known state
iptables -P INPUT   DROP
iptables -P FORWARD DROP
iptables -P OUTPUT  DROP

# These lines are here in case rules are already in place and the
# script is ever rerun on the fly. We want to remove all rules and
# pre-existing user defined chains before we implement new rules.
iptables -F
iptables -X
iptables -Z

iptables -t nat -F

# Allow local-only connections
iptables -A INPUT  -i lo -j ACCEPT

# Free output on any interface to any ip for any service
# (equal to -P ACCEPT)
iptables -A OUTPUT -j ACCEPT

# Permit answers on already established connections
# and permit new connections related to established ones
# (e.g. port mode ftp)
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Log everything else. What's Windows' latest exploitable vulnerability?
iptables -A INPUT -j LOG --log-prefix "FIREWALL:INPUT "

# End $rc_base/rc.iptables
EOF
chmod 700 /etc/rc.d/rc.iptables

This script is quite simple, it drops all traffic coming into your computer that wasn't initiated from your computer, but as long as you are simply surfing the Internet you are unlikely to exceed its limits.

If you frequently encounter certain delays at accessing FTP servers, take a look at BusyBox example number 4.

Even if you have daemons or services running on your system, these will be inaccessible everywhere but from your computer itself. If you want to allow access to services on your machine, such as ssh or ping, take a look at BusyBox.

Masquerading Router

A true Firewall has two interfaces, one connected to an intranet, in this example eth0, and one connected to the Internet, here ppp0. To provide the maximum security for the firewall itself, make sure that there are no unnecessary servers running on it such as X11 et al. As a general principle, the firewall itself should not access any untrusted service (think of a remote server giving answers that makes a daemon on your system crash, or even worse, that implements a worm via a buffer-overflow).

cat > /etc/rc.d/rc.iptables << "EOF"
#!/bin/sh

# Begin $rc_base/rc.iptables

echo
echo "You're using the example configuration for a setup of a firewall"
echo "from Beyond Linux From Scratch."
echo "This example is far from being complete, it is only meant"
echo "to be a reference."
echo "Firewall security is a complex issue, that exceeds the scope"
echo "of the configuration rules below."
echo "You can find additional information"
echo "about firewalls in Chapter 4 of the BLFS book."
echo "http://www.linuxfromscratch.org/blfs"
echo

# Insert iptables modules (not needed if built into the kernel).

modprobe ip_tables
modprobe iptable_filter
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ipt_state
modprobe iptable_nat
modprobe ip_nat_ftp
modprobe ipt_MASQUERADE
modprobe ipt_LOG
modprobe ipt_REJECT

# Enable broadcast echo Protection
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

# Disable Source Routed Packets
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route

# Enable TCP SYN Cookie Protection
echo 1 > /proc/sys/net/ipv4/tcp_syncookies

# Disable ICMP Redirect Acceptance
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects

# Don¹t send Redirect Messages
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects

# Drop Spoofed Packets coming in on an interface where responses
# would result in the reply going out a different interface.
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter

# Log packets with impossible addresses.
echo 1 > /proc/sys/net/ipv4/conf/all/log_martians

# Be verbose on dynamic ip-addresses  (not needed in case of static IP)
echo 2 > /proc/sys/net/ipv4/ip_dynaddr

# Disable Explicit Congestion Notification
# Too many routers are still ignorant
echo 0 > /proc/sys/net/ipv4/tcp_ecn

# Set a known state
iptables -P INPUT   DROP
iptables -P FORWARD DROP
iptables -P OUTPUT  DROP

# These lines are here in case rules are already in place and the
# script is ever rerun on the fly. We want to remove all rules and
# pre-existing user defined chains before we implement new rules.
iptables -F
iptables -X
iptables -Z

iptables -t nat -F

# Allow local connections
iptables -A INPUT  -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Allow forwarding if the initiated on the intranet
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD  -i ! ppp+ -m state --state NEW      -j ACCEPT

# Do masquerading
# (not needed if intranet is not using private ip-addresses)
iptables -t nat -A POSTROUTING -o ppp+ -j MASQUERADE

# Log everything for debugging
# (last of all rules, but before policy rules)
iptables -A INPUT   -j LOG --log-prefix "FIREWALL:INPUT  "
iptables -A FORWARD -j LOG --log-prefix "FIREWALL:FORWARD"
iptables -A OUTPUT  -j LOG --log-prefix "FIREWALL:OUTPUT "

# Enable IP Forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
EOF
chmod 700 /etc/rc.d/rc.iptables

With this script your intranet should be reasonably secure against external attacks. No one should be able to setup a new connection to any internal service and, if it's masqueraded, makes your intranet invisible to the Internet. Furthermore, your firewall should be relatively safe because there are no services running that a cracker could attack.

Note

If the interface you're connecting to the Internet doesn't connect via PPP, you will need to change <ppp+> to the name of the interface (e.g., eth1) which you are using.

BusyBox

This scenario isn't too different from the Masquerading Router, but additionally offers some services to your intranet. Examples of this can be when you want to administer your firewall from another host on your intranet or use it as a proxy or a name server.

Note

Outlining a true concept of how to protect a server that offers services on the Internet goes far beyond the scope of this document. See the references at the end of this section for more information.

Be cautious. Every service you have enabled makes your setup more complex and your firewall less secure. You are exposed to the risks of misconfigured services or running a service with an exploitable bug. A firewall should generally not run any extra services. See the introduction to the Masquerading Router for some more details.

If you want to add services such as internal Samba or name servers that do not need to access the Internet themselves, the additional statements are quite simple and should still be acceptable from a security standpoint. Just add the following lines into the script before the logging rules.

iptables -A INPUT  -i ! ppp+  -j ACCEPT
iptables -A OUTPUT -o ! ppp+  -j ACCEPT

If daemons, such as squid, have to access the Internet themselves, you could open OUTPUT generally and restrict INPUT.

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -j ACCEPT

However, it is generally not advisable to leave OUTPUT unrestricted. You lose any control over trojans who would like to "call home", and a bit of redundancy in case you've (mis-)configured a service so that it broadcasts its existence to the world.

To accomplish this, you should restrict INPUT and OUTPUT on all ports except those that it's absolutely necessary to have open. Which ports you have to open depends on your needs: mostly you will find them by looking for failed accesses in your log files.

Have a Look at the Following Examples:

  • Squid is caching the web:

    iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
    iptables -A INPUT  -p tcp --sport 80 -m state --state ESTABLISHED \
      -j ACCEPT
  • Your caching name server (e.g., named) does its lookups via UDP:

    iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
  • You want to be able to ping your computer to ensure it's still alive:

    iptables -A INPUT  -p icmp -m icmp --icmp-type echo-request -j ACCEPT
    iptables -A OUTPUT -p icmp -m icmp --icmp-type echo-reply   -j ACCEPT
  • If you are frequently accessing FTP servers or enjoy chatting, you might notice certain delays because some implementations of these daemons have the feature of querying an identd on your system to obtain usernames. Although there's really little harm in this, having an identd running is not recommended because many security experts feel the service gives out too much additional information.

    To avoid these delays you could reject the requests with a 'tcp-reset':

    iptables -A INPUT  -p tcp --dport 113 -j REJECT --reject-with tcp-reset
  • To log and drop invalid packets (packets that came in after netfilter's timeout or some types of network scans):

    iptables -I INPUT -p tcp -m state --state INVALID \
      -j LOG --log-prefix "FIREWALL:INVALID"
    iptables -I INPUT -p tcp -m state --state INVALID -j DROP
  • Anything coming from the outside should not have a private address, this is a common attack called IP-spoofing:

    iptables -A INPUT -i ppp+ -s 10.0.0.0/8     -j DROP
    iptables -A INPUT -i ppp+ -s 172.16.0.0/12  -j DROP
    iptables -A INPUT -i ppp+ -s 192.168.0.0/16 -j DROP

    There are other addresses that you may also want to drop: 0.0.0.0/8, 127.0.0.0/8, 224.0.0.0/3 (multicast and experimental), 169.254.0.0/16 (Link Local Networks), and 192.0.2.0/24 (IANA defined test network).

  • If your firewall is a DHCP client, you need to allow those packets:

    iptables -A INPUT  -i ppp0 -p udp -s 0.0.0.0 --sport 67 \
       -d 255.255.255.255 --dport 68 -j ACCEPT
  • To simplify debugging and be fair to anyone who'd like to access a service you have disabled, purposely or by mistake, you could REJECT those packets that are dropped.

    Obviously this must be done directly after logging as the very last lines before the packets are dropped by policy:

    iptables -A INPUT -j REJECT

These are only examples to show you some of the capabilities of the firewall code in Linux. Have a look at the man page of iptables. There you will find much more information. The port numbers needed for this can be found in /etc/services, in case you didn't find them by trial and error in your log file.

Conclusion

Finally, there is one fact you must not forget: The effort spent attacking a system corresponds to the value the cracker expects to gain from it. If you are responsible for valuable information, you need to spend the time to protect it properly.

GnuPG-1.4.3

Introduction to GnuPG

The GnuPG package contains a public/private key encryptor. This is becoming useful for signing files or emails as proof of identity and preventing tampering with the contents of the file or email.

Package Information

GnuPG Dependencies

Optional

OpenSSL-0.9.8d, OpenLDAP-2.3.27, libusb-0.1.12, cURL-7.15.3, an MTA, DocBook-utils-0.6.14, and docbook-to-man

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gnupg

Installation of GnuPG

Install GnuPG by running the following commands:

./configure --prefix=/usr --libexecdir=/usr/lib &&
make

If you have teTeX-3.0 installed and you wish to create documentation in alternate formats, issue the following commands:

make -C doc pdf ps html &&
makeinfo --plaintext -o doc/gpg.txt doc/gpg.texi &&
makeinfo --plaintext -o doc/gpgv.txt doc/gpgv.texi

To test the results, issue: make check.

Now, as the root user:

make install &&
chmod -v 4755 /usr/bin/gpg &&
install -v -m755 -d /usr/share/doc/gnupg-1.4.3 &&
mv -v /usr/share/gnupg/{FAQ,faq.html} /usr/share/doc/gnupg-1.4.3 &&
install -v -m644 \
    doc/{highlights-1.4.txt,OpenPGP,samplekeys.asc,DETAILS,*.texi} \
    /usr/share/doc/gnupg-1.4.3

If you created alternate formats of the documentation, install it using the following command as the root user:

cp -v -R doc/gpg{,v}.{dvi,html,pdf,ps,txt} /usr/share/doc/gnupg-1.4.3

Command Explanations

--libexecdir=/usr/lib: This command creates a gnupg directory in /usr/lib instead of /usr/libexec.

chmod -v 4755 /usr/bin/gpg: gpg is installed setuid root to avoid swapping out sensitive data.

Contents

Installed Programs: gpg, gpg-zip, gpgsplit, and gpgv
Installed Libraries: None
Installed Directories: /usr/lib/gnupg, /usr/share/gnupg and /usr/share/doc/gnupg-1.4.3

Short Descriptions

gpg

is the backend (command-line interface) for this OpenPGP implementation.

gpgsplit

separates key rings.

gpgv

is a verify only version of gpg.

Tripwire-2.4.0.1

Introduction to Tripwire

The Tripwire package contains programs used to verify the integrity of the files on a given system.

Package Information

Additional Downloads

Tripwire Dependencies

Required

OpenSSL-0.9.8d

Optional

An MTA

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/tripwire

Installation of Tripwire

Compile Tripwire by running the following commands:

ln -s contrib install &&
patch -Np1 -i ../tripwire-2.4.0.1-gcc4_build_fixes-1.patch &&
sed -i -e 's@TWDB="${prefix}@TWDB="/var@' install/install.cfg &&
./configure --prefix=/usr --sysconfdir=/etc/tripwire &&
make

Warning

The default configuration is to use a local MTA. If you don't have an MTA installed and have no wish to install one, modify install/install.cfg to use an SMTP server instead. Otherwise the install will fail.

Now, as the root user:

make install &&
cp -v policy/*.txt /usr/share/doc/tripwire

Command Explanations

ln -s contrib install: This command creates a symbolic link in the build directory needed for installation.

sed -i -e 's@TWDB="${prefix}@TWDB="/var@' install/install.cfg: This command tells the package to install the program database and reports in /var/lib/tripwire.

make install: This command creates the Tripwire security keys as well as installing the binaries. There are two keys: a site key and a local key which are stored in /etc/tripwire/.

cp -v policy/*.txt /usr/share/doc/tripwire: This command installs the documentation.

Configuring Tripwire

Config Files

/etc/tripwire/*

Configuration Information

Tripwire uses a policy file to determine which files are integrity checked. The default policy file (/etc/tripwire/twpol.txt) is for a default Redhat installation and will need to be updated for your system.

Policy files should be tailored to each individual distribution and/or installation. Some custom policy files can be found below:

http://home.iprimus.com.au/glombowski/blfs/twpol-all.txt
Checks integrity of all files
http://home.iprimus.com.au/glombowski/blfs/twpol-lfs.txt
Custom policy file for Base LFS 3.0 system
http://home.iprimus.com.au/glombowski/blfs/twpol-suse7.2.txt
Custom policy file for SuSE 7.2 system

Download the custom policy file you'd like to try, copy it into /etc/tripwire/, and use it instead of twpol.txt. It is, however, recommended that you make your own policy file. Get ideas from the examples above and read /usr/share/doc/tripwire/policyguide.txt for additional information. twpol.txt is a good policy file for beginners as it will note any changes to the file system and can even be used as an annoying way of keeping track of changes for uninstallation of software.

After your policy file has been transferred to /etc/tripwire/ you may begin the configuration steps (perform as the root):

twadmin --create-polfile --site-keyfile /etc/tripwire/site.key \
    /etc/tripwire/twpol.txt &&
tripwire --init

Usage Information

To use Tripwire after creating a policy file to run a report, use the following command:

tripwire --check > /etc/tripwire/report.txt

View the output to check the integrity of your files. An automatic integrity report can be produced by using a cron facility to schedule the runs.

Please note that after you run an integrity check, you must examine the report (or email) and then modify the Tripwire database to reflect the changed files on your system. This is so that Tripwire will not continually notify you that files you intentionally changed are a security violation. To do this you must first ls -l /var/lib/tripwire/report/ and note the name of the newest file which starts with linux- and ends in .twr. This encrypted file was created during the last report creation and is needed to update the Tripwire database of your system. Then, as the root user, type in the following command making the appropriate substitutions for <?>:

tripwire --update -twrfile \
    /var/lib/tripwire/report/linux-<???????>-<??????>.twr

You will be placed into vim with a copy of the report in front of you. If all the changes were good, then just type :x and after entering your local key, the database will be updated. If there are files which you still want to be warned about, remove the 'x' before the filename in the report and type :x.

A good summary of tripwire operations can be found at http://www.redhat.com/docs/manuals/linux/RHL-9-Manual/ref-guide/ch-tripwire.html.

Changing the Policy File

If you are unhappy with your policy file and would like to modify it or use a new one, modify the policy file and then execute the following commands as the root user:

twadmin --create-polfile /etc/tripwire/twpol.txt &&
tripwire --init

Contents

Installed Programs: siggen, tripwire, twadmin, and twprint.
Installed Libraries: None
Installed Directories: /etc/tripwire, /usr/share/doc/tripwire, and /var/lib/tripwire

Short Descriptions

siggen

is a signature gathering utility that displays the hash function values for the specified files.

tripwire

is the main file integrity checking program.

twadmin

administrative and utility tool used to perform certain administrative functions related to Tripwire files and configuration options.

twprint

prints Tripwire database and report files in clear text format.

Heimdal-0.7.2

Introduction to Heimdal

Heimdal is a free implementation of Kerberos 5 that aims to be compatible with MIT krb5 and is backward compatible with krb4. Kerberos is a network authentication protocol. Basically it preserves the integrity of passwords in any untrusted network (like the Internet). Kerberized applications work hand-in-hand with sites that support Kerberos to ensure that passwords cannot be stolen or compromised. A Kerberos installation will make changes to the authentication mechanisms on your network and will overwrite several programs and daemons from the Coreutils, Inetutils, Qpopper and Shadow packages.

Package Information

Additional Downloads

Heimdal Dependencies

Required to Build the Server-Side Tools

Berkeley DB-4.4.20 is recommended (installed in LFS) or GDBM-1.8.3

Recommended

Optional

Linux-PAM-0.99.4.0, OpenLDAP-2.3.27, X Window System, CrackLib-2.8.9 (compiled with the heimdal patch), and krb4

Note

Some sort of time synchronization facility on your system (like NTP-4.2.0a) is required since Kerberos won't authenticate if the time differential between a kerberized client and the KDC server is more than 5 minutes.

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/heimdal

Installation of Heimdal

Warning

Ensure you really need a Kerberos installation before you decide to install this package. Failure to install and configure the package in accordance with the instructions below can alter your system so that users cannot log in.

If you wish the Heimdal package to link against the CrackLib library to provide enforcement of strong passwords (requires CrackLib-2.8.9 installed with the heimdal patch), you must apply a patch:

patch -Np1 -i ../heimdal-0.7.2-cracklib-1.patch

Install Heimdal by running the following commands:

patch -Np1 -i ../heimdal-0.7.2-setuid-patch.txt &&
patch -Np1 -i ../heimdal-0.7.2-fhs_compliance-1.patch &&
./configure --prefix=/usr \
            --sysconfdir=/etc/heimdal \
            --libexecdir=/usr/sbin \
            --datadir=/var/lib/heimdal \
            --localstatedir=/var/lib/heimdal \
            --enable-shared \
            --with-readline=/usr &&
make

If you wish to create HTML documentation, issue the following command:

make -C doc heimdal.html

If you wish to create a text-based version of the documentation, issue the following commands:

cd doc &&
makeinfo --plaintext -o heimdal.txt heimdal.texi &&
cd ..

To test the results, issue: make check.

Now, as the root user:

mv -v /usr/include/fnmatch.h /usr/include/fnmatch.h.glibc &&
mv -v /usr/include/glob.h /usr/include/glob.h.glibc &&
mv -v /usr/include/ss/ss.h /usr/include/ss/ss.h.e2fsprogs &&
mv -v /usr/lib/libss.a /usr/lib/libss.a.e2fsprogs &&
mv -v /usr/lib/libss.so /usr/lib/libss.so.e2fsprogs &&
make install &&
mv -v /usr/include/fnmatch.h /usr/include/fnmatch.h.heimdal &&
mv -v /usr/include/fnmatch.h.glibc /usr/include/fnmatch.h &&
mv -v /usr/include/glob.h /usr/include/glob.h.heimdal &&
mv -v /usr/include/glob.h.glibc /usr/include/glob.h &&
install -v -m755 -d /usr/share/doc/heimdal-0.7.2/standardisation &&
install -v -m644 doc/{init-creds,layman.asc} \
    /usr/share/doc/heimdal-0.7.2 &&
install -v -m644 doc/standardisation/* \
    /usr/share/doc/heimdal-0.7.2/standardisation &&
mv -v /bin/login /bin/login.shadow &&
mv -v /bin/su /bin/su.shadow &&
mv -v /usr/bin/{login,su} /bin &&
ln -v -sf ../../bin/login /usr/bin &&
mv -v /usr/lib/lib{otp,kafs,krb5,asn1,roken,crypto}.so.* \
      /usr/lib/libdb-4.4.so /lib &&
ln -v -sf ../../lib/libdb-4.4.so /usr/lib/libdb.so &&
ln -v -sf ../../lib/libdb-4.4.so /usr/lib/libdb-4.so &&
for SYMLINK in otp.so.0.1.3  kafs.so.0.4.1   krb5.so.17.4.0 \
               asn1.so.6.1.0 roken.so.16.1.0 crypto.so.0.9.8
do
    ln -v -sf ../../lib/lib$SYMLINK \
        /usr/lib/lib`echo $SYMLINK | cut -d. -f1`.so
done
ldconfig

If you built the HTML or text-based documentation, install it using the following commands as the root user:

install -v -m755 -d /usr/share/doc/heimdal-0.7.2/html &&
install -v -m644 doc/heimdal.html/* \
    /usr/share/doc/heimdal-0.7.2/html &&
install -v -m644 doc/heimdal.txt /usr/share/doc/heimdal-0.7.2

Command Explanations

mv -v /usr/include/... and mv -v /usr/lib/libss.*: The Heimdal installation will overwrite two interface headers from the Glibc package and an interface header, static library and library symbolic link from the E2fsprogs package. These commands move the original files out of the way before the installation, and then restore the original Glibc headers after the installation. The two Heimdal headers are renamed and preserved on the system. Testing has shown that the system is stable using the Heimdal version of the libss library and interface header.

--libexecdir=/usr/sbin: This switch puts the daemon programs into /usr/sbin.

Tip

If you want to preserve all your existing Inetutils package daemons, install the Heimdal daemons into /usr/sbin/heimdal (or wherever you want). Since these programs will be called from (x)inetd or rc scripts, it really doesn't matter where they are installed, as long as they are correctly specified in the /etc/(x)inetd.conf file and rc scripts. If you choose something other than /usr/sbin, you may want to move some of the user programs (such as kadmin) to /usr/sbin manually so they'll be in the privileged user's default PATH.

mv ... .shadow; mv ... /bin; ln -v -sf ../../bin...: The login and su programs installed by Heimdal belong in the /bin directory. The login program is symlinked because Heimdal is expecting to find it in /usr/bin. The old executables are preserved before the move so that they can be restored if you experience problems logging into the system after the Heimdal package is installed and configured.

mv ... /lib; ln -v -sf ../../lib/lib... /usr/lib...: The login and su programs installed by Heimdal link against Heimdal libraries as well as libraries provided by the OpenSSL and Berkeley DB packages. These libraries are moved to /lib to be FHS compliant and also in case /usr is located on a separate partition which may not always be mounted.

Configuring Heimdal

Config Files

/etc/heimdal/*

Configuration Information

Note

All the configuration steps shown below must be accomplished by the root user unless otherwise noted.

Master KDC Server Configuration

Create the Kerberos configuration file with the following commands:

install -v -m755 -d /etc/heimdal &&
cat > /etc/heimdal/krb5.conf << "EOF"
# Begin /etc/heimdal/krb5.conf

[libdefaults]
    default_realm = <EXAMPLE.COM>
    encrypt = true

[realms]
    <EXAMPLE.COM> = {
        kdc = <hostname.example.com>
        admin_server = <hostname.example.com>
        kpasswd_server = <hostname.example.com>
    }

[domain_realm]
    .<example.com> = <EXAMPLE.COM>

[logging]
    kdc = FILE:/var/log/kdc.log
    admin_server = FILE:/var/log/kadmin.log
    default = FILE:/var/log/krb.log

# End /etc/heimdal/krb5.conf
EOF
chmod -v 644 /etc/heimdal/krb5.conf

You will need to substitute your domain and proper hostname for the occurrences of the <hostname> and <EXAMPLE.COM> names.

default_realm should be the name of your domain changed to ALL CAPS. This isn't required, but both Heimdal and MIT krb5 recommend it.

encrypt = true provides encryption of all traffic between kerberized clients and servers. It's not necessary and can be left off. If you leave it off, you can encrypt all traffic from the client to the server using a switch on the client program instead.

The [realms] parameters tell the client programs where to look for the KDC authentication services.

The [domain_realm] section maps a domain to a realm.

Store the master password in a key file using the following commands:

install -v -m755 -d /var/lib/heimdal &&
kstash

Create the KDC database:

kadmin -l

The commands below will prompt you for information about the principles. Choose the defaults for now unless you know what you are doing and need to specify different values. You can go in later and change the defaults, should you feel the need. You may use the up and down arrow keys to use the history feature of kadmin in a similar manner as the bash history feature.

At the kadmin> prompt, issue the following statement:

init <EXAMPLE.COM>

The database must now be populated with at least one principle (user). For now, just use your regular login name or root. You may create as few, or as many principles as you wish using the following statement:

add <loginname>

The KDC server and any machine running kerberized server daemons must have a host key installed:

add --random-key host/<hostname.example.com>

After choosing the defaults when prompted, you will have to export the data to a keytab file:

ext host/<hostname.example.com>

This should have created two files in /etc/heimdal: krb5.keytab (Kerberos 5) and srvtab (Kerberos 4). Both files should have 600 (root rw only) permissions. Keeping the keytab files from public access is crucial to the overall security of the Kerberos installation.

Eventually, you'll want to add server daemon principles to the database and extract them to the keytab file. You do this in the same way you created the host principles. Below is an example:

add --random-key ftp/<hostname.example.com>

(choose the defaults)

ext ftp/<hostname.example.com>

Exit the kadmin program (use quit or exit) and return back to the shell prompt. Start the KDC daemon manually, just to test out the installation:

/usr/sbin/kdc &

Attempt to get a TGT (ticket granting ticket) with the following command:

kinit <loginname>

You will be prompted for the password you created. After you get your ticket, you should list it with the following command:

klist

Information about the ticket should be displayed on the screen.

To test the functionality of the keytab file, issue the following command:

ktutil list

This should dump a list of the host principals, along with the encryption methods used to access the principals.

At this point, if everything has been successful so far, you can feel fairly confident in the installation, setup and configuration of your new Heimdal Kerberos 5 installation.

Install the /etc/rc.d/init.d/heimdal init script included in the blfs-bootscripts-20060910 package:

make install-heimdal
Using Kerberized Client Programs

To use the kerberized client programs (telnet, ftp, rsh, rxterm, rxtelnet, rcp, xnlock), you first must get a TGT. Use the kinit program to get the ticket. After you've acquired the ticket, you can use the kerberized programs to connect to any kerberized server on the network. You will not be prompted for authentication until your ticket expires (default is one day), unless you specify a different user as a command line argument to the program.

The kerberized programs will connect to non-kerberized daemons, warning you that authentication is not encrypted.

In order to use the Heimdal X programs, you'll need to add a service port entry to the /etc/services file for the kxd server. There is no 'standardized port number' for the 'kx' service in the IANA database, so you'll have to pick an unused port number. Add an entry to the services file similar to the entry below (substitute your chosen port number for <49150>):

kx              <49150>/tcp   # Heimdal kerberos X
kx              <49150>/udp   # Heimdal kerberos X

For additional information consult the Heimdal hint on which the above instructions are based.

Contents

Installed Programs: afslog, dump_log, ftp, ftpd, hprop, hpropd, ipropd-master, ipropd-slave, kadmin, kadmind, kauth, kcm, kdc, kdestroy, kf, kfd, kgetcred, kinit, klist, kpasswd, kpasswdd, krb5-config, kstash, ktutil, kx, kxd, login, mk_cmds, otp, otpprint, pagsh, pfrom, popper, push, rcp, replay_log, rsh, rshd, rxtelnet, rxterm, string2key, su, telnet, telnetd, tenletxr, truncate-log, verify_krb5_conf and xnlock
Installed Libraries: libasn1.{so,a}, libeditline.{so,a}, libgssapi.{so,a}, libhdb.{so,a}, libkadm5clnt.{so,a}, libkadm5srv.{so,a}, libkafs.{so,a}, libkrb5.{so,a}, libotp.{so,a}, libroken.{so,a}, libsl.{so,a} and libss.{so,a}
Installed Directories: /etc/heimdal, /usr/include/kadm5, /usr/share/doc/heimdal-0.7.2 and /var/lib/heimdal

Short Descriptions

afslog

obtains AFS tokens for a number of cells.

ftp

is a kerberized FTP client.

ftpd

is a kerberized FTP daemon.

hprop

takes a principal database in a specified format and converts it into a stream of Heimdal database records.

hpropd

is a server that receives a database sent by hprop and writes it as a local database.

ipropd-master

is a daemon which runs on the master KDC server which incrementally propagates changes to the KDC database to the slave KDC servers.

ipropd-slave

is a daemon which runs on the slave KDC servers which incrementally propagates changes to the KDC database from the master KDC server.

kadmin

is a utility used to make modifications to the Kerberos database.

kadmind

is a server for administrative access to the Kerberos database.

kauth

is a symbolic link to the kinit program.

kcm

is a process based credential cache for Kerberos tickets.

kdc

is a Kerberos 5 server.

kdestroy

removes a principle's current set of tickets.

kf

is a program which forwards tickets to a remote host through an authenticated and encrypted stream.

kfd

is a server used to receive forwarded tickets.

kgetcred

obtains a ticket for a service.

kinit

is used to authenticate to the Kerberos server as a principal and acquire a ticket granting ticket that can later be used to obtain tickets for other services.

klist

reads and displays the current tickets in the credential cache.

kpasswd

is a program for changing Kerberos 5 passwords.

kpasswdd

is a Kerberos 5 password changing server.

krb5-config

gives information on how to link programs against Heimdal libraries.

kstash

stores the KDC master password in a file.

ktutil

is a program for managing Kerberos keytabs.

kx

is a program which securely forwards X connections.

kxd

is the daemon for kx.

login

is a kerberized login program.

otp

manages one-time passwords.

otpprint

prints lists of one-time passwords.

pfrom

is a script that runs push --from.

popper

is a kerberized POP-3 server.

push

is a kerberized POP mail retrieval client.

rcp

is a kerberized rcp client program.

rsh

is a kerberized rsh client program.

rshd

is a kerberized rsh server.

rxtelnet

starts a secure xterm window with a telnet to a given host and forwards X connections.

rxterm

starts a secure remote xterm.

string2key

maps a password into a key.

su

is a kerberized su client program.

telnet

is a kerberized telnet client program.

telnetd

is a kerberized telnet server.

tenletxr

forwards X connections backwards.

verify_krb5_conf

checks krb5.conf file for obvious errors.

xnlock

is a program that acts as a secure screen saver for workstations running X.

libasn1.{so,a}

provides the ASN.1 and DER functions to encode and decode the Kerberos TGTs.

libeditline.a

is a command-line editing library with history.

libgssapi.{so,a}

contain the Generic Security Service Application Programming Interface (GSSAPI) functions which provides security services to callers in a generic fashion, supportable with a range of underlying mechanisms and technologies and hence allowing source-level portability of applications to different environments.

libhdb.{so,a}

is a Heimdal Kerberos 5 authentication/authorization database access library.

libkadm5clnt.{so,a}

contains the administrative authentication and password checking functions required by Kerberos 5 client-side programs.

libkadm5srv.{so,a}

contain the administrative authentication and password checking functions required by Kerberos 5 servers.

libkafs.{so,a}

contains the functions required to authenticated to AFS.

libkrb5.{so,a}

is an all-purpose Kerberos 5 library.

libotp.{so,a}

contains the functions required to handle authenticating one time passwords.

libroken.{so,a}

is a library containing Kerberos 5 compatibility functions.

MIT Kerberos V5-1.6

Introduction to MIT Kerberos V5

MIT Kerberos V5 is a free implementation of Kerberos 5. Kerberos is a network authentication protocol. It centralizes the authentication database and uses kerberized applications to work with servers or services that support Kerberos allowing single logins and encrypted communication over internal networks or the Internet.

Package Information

MIT Kerberos V5 Dependencies

Optional

Linux-PAM-0.99.4.0 (for xdm based logins), OpenLDAP-2.3.27, and DejaGnu-1.4.4 (required to run the test suite)

Note

Some sort of time synchronization facility on your system (like NTP-4.2.0a) is required since Kerberos won't authenticate if there is a time difference between a kerberized client and the KDC server.

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/mitkrb

Installation of MIT Kerberos V5

MIT Kerberos V5 is distributed in a TAR file containing a compressed TAR package and a detached PGP ASC file. You'll need to unpack the distribution tar file, then unpack the compressed tar file before starting the build.

After unpacking the distribution tarball and if you have GnuPG-1.4.3 installed, you can authenticate the package with the following command:

gpg - -verify krb5-1.6.tar.gz.asc

Build MIT Kerberos V5 by running the following commands:

cd src &&
./configure CPPFLAGS="-I/usr/include/et -I/usr/include/ss" \
            --prefix=/usr \
            --sysconfdir=/etc/krb5 \
            --localstatedir=/var/lib \
            --with-system-et \
            --with-system-ss \
            --enable-dns-for-realm \
            --mandir=/usr/share/man &&
make

The regression test suite is designed to be run after the installation has been completed.

Now, as the root user:

make install &&

mv -v /usr/bin/ksu /bin &&
chmod -v 755 /bin/ksu &&
mv -v /usr/lib/libkrb5.so.3* /lib &&
mv -v /usr/lib/libk5crypto.so.3* /lib &&
mv -v /usr/lib/libkrb5support.so.0* /lib &&

ln -v -sf ../../lib/libkrb5.so.3.3 /usr/lib/libkrb5.so &&
ln -v -sf ../../lib/libk5crypto.so.3.1 /usr/lib/libk5crypto.so &&
ln -v -sf ../../lib/libkrb5support.so.0.1 /usr/lib/libkrb5support.so&&

install -m644 -v ../doc/*.info* /usr/share/info &&
for INFOFILE in 425 5-admin 5-install 5-user; do
    install-info --info-dir=/usr/share/info \
                 /usr/share/info/krb$INFOFILE.info
    rm ../doc/krb$INFOFILE.info*
done &&

install -m755 -v -d /usr/share/doc/krb5-1.6 &&
cp -Rv ../doc/* /usr/share/doc/krb5-1.6

Warning

login.krb5 does not support Shadow passwords. As a result, when the Kerberos server is unavailable, the default fall through to /etc/password will not work because the passwords have been moved to /etc/shadow during the LFS build process. Entering the following commands without moving the passwords back to /etc/password could prevent any logins.

After considering (and understanding) the above warning, the following commands can be entered as the root user to replace the existing login program with the Kerberized version (after preserving the original) and move the support libraries to a location available when the /usr filesystem is not mounted:

mv -v /bin/login /bin/login.shadow &&
install -m755 -v /usr/sbin/login.krb5 /bin/login &&

mv -v /usr/lib/libdes425.so.3* /lib &&
mv -v /usr/lib/libkrb4.so.2* /lib &&

ln -v -sf ../../lib/libdes425.so.3.0 /usr/lib/libdes425.so &&
ln -v -sf ../../lib/libkrb4.so.2.0 /usr/lib/libkrb4.so &&

ldconfig

To test the installation, you must have DejaGnu-1.4.4 installed and issue: make check. The RPC layer tests will require a portmap daemon (see portmap-5beta) running and configured to listen on the regular network interface (not localhost). See the “Testing the Build” section of the krb5-install.html file in the ../doc directory for complete information on running the regression tests.

Command Explanations

--enable-dns-for-realm: This parameter allows realms to be resolved using the DNS server.

--with-system-et: This parameter causes the build to use the system-installed versions of the error-table support software.

--with-system-ss: This parameter causes the build to use the system-installed versions of the subsystem command-line interface software.

--localstatedir=/var/lib: This parameter is used so that the Kerberos variable run-time data is located in /var/lib instead of /usr/var.

mv -v /usr/bin/ksu /bin: Moves the ksu program to the /bin directory so that it is available when the /usr filesystem is not mounted.

mv -v ... /lib && ln -v -sf ...: These libraries are moved to /lib so they are available when the /usr filesystem is not mounted.

Configuring MIT Kerberos V5

Config Files

/etc/krb5/krb5.conf and /var/lib/krb5kdc/kdc.conf

Configuration Information

Kerberos Configuration

Tip

You should consider installing some sort of password checking dictionary so that you can configure the installation to only accept strong passwords. A suitable dictionary to use is shown in the CrackLib-2.8.9 instructions. Note that only one file can be used, but you can concatenate many files into one. The configuration file shown below assumes you have installed a dictionary to /usr/share/dict/words.

Create the Kerberos configuration file with the following commands issued by the root user:

install -v -m755 -d /etc/krb5 &&
cat > /etc/krb5/krb5.conf << "EOF"
# Begin /etc/krb5/krb5.conf

[libdefaults]
    default_realm = <LFS.ORG>
    encrypt = true

[realms]
    <LFS.ORG> = {
        kdc = <belgarath.lfs.org>
        admin_server = <belgarath.lfs.org>
        dict_file = /usr/share/dict/words
    }

[domain_realm]
    .<lfs.org> = <LFS.ORG>

[logging]
    kdc = SYSLOG[:INFO[:AUTH]]
    admin_server = SYSLOG[INFO[:AUTH]]
    default = SYSLOG[[:SYS]]

# End /etc/krb5/krb5.conf
EOF

You will need to substitute your domain and proper hostname for the occurences of the <belgarath> and <lfs.org> names.

default_realm should be the name of your domain changed to ALL CAPS. This isn't required, but both Heimdal and MIT recommend it.

encrypt = true provides encryption of all traffic between kerberized clients and servers. It's not necessary and can be left off. If you leave it off, you can encrypt all traffic from the client to the server using a switch on the client program instead.

The [realms] parameters tell the client programs where to look for the KDC authentication services.

The [domain_realm] section maps a domain to a realm.

Create the KDC database:

kdb5_util create -r <LFS.ORG> -s

Now you should populate the database with principles (users). For now, just use your regular login name or root.

kadmin.local
kadmin: add_policy dict-only
kadmin: addprinc -policy dict-only <loginname>

The KDC server and any machine running kerberized server daemons must have a host key installed:

kadmin: addprinc -randkey host/<belgarath.lfs.org>

After choosing the defaults when prompted, you will have to export the data to a keytab file:

kadmin: ktadd host/<belgarath.lfs.org>

This should have created a file in /etc/krb5 named krb5.keytab (Kerberos 5). This file should have 600 (root rw only) permissions. Keeping the keytab files from public access is crucial to the overall security of the Kerberos installation.

Eventually, you'll want to add server daemon principles to the database and extract them to the keytab file. You do this in the same way you created the host principles. Below is an example:

kadmin: addprinc -randkey ftp/<belgarath.lfs.org>
kadmin: ktadd ftp/<belgarath.lfs.org>

Exit the kadmin program (use quit or exit) and return back to the shell prompt. Start the KDC daemon manually, just to test out the installation:

/usr/sbin/krb5kdc &

Attempt to get a ticket with the following command:

kinit <loginname>

You will be prompted for the password you created. After you get your ticket, you can list it with the following command:

klist

Information about the ticket should be displayed on the screen.

To test the functionality of the keytab file, issue the following command:

ktutil
ktutil: rkt /etc/krb5/krb5.keytab
ktutil: l

This should dump a list of the host principal, along with the encryption methods used to access the principal.

At this point, if everything has been successful so far, you can feel fairly confident in the installation and configuration of the package.

Install the /etc/rc.d/init.d/kerberos init script included in the blfs-bootscripts-20060910 package.

make install-kerberos
Using Kerberized Client Programs

To use the kerberized client programs (telnet, ftp, rsh, rcp, rlogin), you first must get an authentication ticket. Use the kinit program to get the ticket. After you've acquired the ticket, you can use the kerberized programs to connect to any kerberized server on the network. You will not be prompted for authentication until your ticket expires (default is one day), unless you specify a different user as a command line argument to the program.

The kerberized programs will connect to non kerberized daemons, warning you that authentication is not encrypted.

Using Kerberized Server Programs

Using kerberized server programs (telnetd, kpropd, klogind and kshd) requires two additional configuration steps. First the /etc/services file must be updated to include eklogin and krb5_prop. Second, the inetd.conf or xinetd.conf must be modified for each server that will be activated, usually replacing the server from Inetutils-1.4.2.

Additional Information

For additional information consult Documentation for krb-1.6 on which the above instructions are based.

Contents

Installed Programs: ftp, ftpd, gss-client, gss-server, k5srvutil, kadmin, kadmin.local, kadmind, kdb5_ldap_util, kdb5_util, kdestroy, kinit, klist, klogind, kpasswd, kprop, kpropd, krb5-config, krb5-send-pr, krb524d, krb524init, krb5kdc, kshd, ksu, ktutil, kvno, login.krb5, rcp, rlogin, rsh, sclient, sim_client, sim_server, sserver, telnet, telnetd, uuclient, uuserver and v4rcp
Installed Libraries: libdes425.so, libgssapi_krb5.so, libgssrpc.so, libk5crypto.so, libkadm5clnt.so, libkadm5srv.so, libkdb5.so, libkdb_ldap.so, libkrb4.so, libkrb5.so and libkrb5support.so
Installed Directories: /etc/krb5, /usr/include/{gssapi,gssrpc,kerberosIV,krb5}, /usr/lib/krb5, /usr/share/{doc/krb5-1.6,examples,gnats} and /var/lib/krb5kdc

Short Descriptions

ftp

is a kerberized FTP client.

ftpd

is a kerberized FTP daemon.

k5srvutil

is a host keytable manipulation utility.

kadmin

is an utility used to make modifications to the Kerberos database.

kadmind

is a server for administrative access to a Kerberos database.

kdb5_util

is the KDC database utility.

kdestroy

removes the current set of tickets.

kinit

is used to authenticate to the Kerberos server as a principal and acquire a ticket granting ticket that can later be used to obtain tickets for other services.

klist

reads and displays the current tickets in the credential cache.

klogind

is the server that responds to rlogin requests.

kpasswd

is a program for changing Kerberos 5 passwords.

kprop

takes a principal database in a specified format and converts it into a stream of database records.

kpropd

receives a database sent by kprop and writes it as a local database.

krb5-config

gives information on how to link programs against libraries.

krb5kdc

is a Kerberos 5 server.

kshd

is the server that responds to rsh requests.

ksu

is the super user program using Kerberos protocol. Requires a properly configured /etc/shells and ~/.k5login containing principals authorized to become super users.

ktutil

is a program for managing Kerberos keytabs.

kvno

prints keyversion numbers of Kerberos principals.

login.krb5

is a kerberized login program.

rcp

is a kerberized rcp client program.

rlogin

is a kerberized rlogin client program.

rsh

is a kerberized rsh client program.

telnet

is a kerberized telnet client program.

telnetd

is a kerberized telnet server.

libgssapi_krb5.so

contain the Generic Security Service Application Programming Interface (GSSAPI) functions which provides security services to callers in a generic fashion, supportable with a range of underlying mechanisms and technologies and hence allowing source-level portability of applications to different environments.

libkadm5clnt.so

contains the administrative authentication and password checking functions required by Kerberos 5 client-side programs.

libkadm5srv.so

contain the administrative authentication and password checking functions required by Kerberos 5 servers.

libkdb5.so

is a Kerberos 5 authentication/authorization database access library.

libkrb5.so

is an all-purpose Kerberos 5 library.

Cyrus SASL-2.1.21

Introduction to Cyrus SASL

The Cyrus SASL package contains a Simple Authentication and Security Layer, a method for adding authentication support to connection-based protocols. To use SASL, a protocol includes a command for identifying and authenticating a user to a server and for optionally negotiating protection of subsequent protocol interactions. If its use is negotiated, a security layer is inserted between the protocol and the connection.

Package Information

Additional Downloads

Cyrus SASL Dependencies

Required

OpenSSL-0.9.8d

Optional

Linux-PAM-0.99.4.0, OpenLDAP-2.3.27, Heimdal-0.7.2 or MIT Kerberos V5-1.6, JDK-1.5.0_10, MySQL-5.0.21, PostgreSQL-8.1.3, GDBM-1.8.3, krb4, SQLite, and Dmalloc

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/cyrus-sasl

Installation of Cyrus SASL

Install Cyrus SASL by running the following commands:

patch -Np1 -i ../cyrus-sasl-2.1.21-openldap23-1.patch &&
patch -Np1 -i ../cyrus-sasl-2.1.21-openssl98-1.patch &&
sed -i '/sasl_global/s/^static //' lib/client.c &&
sed -i 's/cat8/man8/' saslauthd/Makefile.in &&
./configure --prefix=/usr --sysconfdir=/etc \
            --with-dbpath=/var/lib/sasl/sasldb2 \
            --with-saslauthd=/var/run &&
make

This package does not come with a test suite. If you are planning on using the GSSAPI authentication mechanism, it is recommended to test it after installing the package using the sample server and client programs which were built in the preceding step. Instructions for performing the tests can be found at http://www.linuxfromscratch.org/hints/downloads/files/cyrus-sasl.txt.

Now, as the root user:

make install &&
install -v -m755 -d /usr/share/doc/cyrus-sasl-2.1.21 &&
install -v -m644 doc/{*.{html,txt,fig},ONEWS,TODO} \
    saslauthd/LDAP_SASLAUTHD /usr/share/doc/cyrus-sasl-2.1.21 &&
install -v -m700 -d /var/lib/sasl

Command Explanations

sed ... lib/client.c: This command fixes an issue when compiling Cyrus SASL with GCC-4.

sed 's/cat8/man8/' ...: This command puts the saslauthd man page in a more standard location.

--with-dbpath=/var/lib/sasl/sasldb2: This parameter forces the saslauthd database to be created in /var/lib/sasl instead of /etc.

--with-saslauthd=/var/run: This parameter forces saslauthd to use the FHS compliant directory /var/run for variable run-time data.

--with-ldap: This parameter enables use with OpenLDAP.

--enable-ldapdb: This parameter enables the LDAPDB authentication backend. There is a circular dependency with this parameter. See http://wiki.linuxfromscratch.org/blfs/wiki/cyrus-sasl for a solution to this problem.

install -v -m644 ...: These commands install documentation which is not installed by the make install command.

install -v -m700 -d /var/lib/sasl: This directory must exist when starting saslauthd. If you're not going to be running the daemon, you may omit the creation of this directory.

Configuring Cyrus SASL

Config Files

/etc/saslauthd.conf (for saslauthd LDAP configuration) and /usr/lib/sasl2/Appname.conf (where "Appname" is the application defined name of the application)

Configuration Information

See file:///usr/share/doc/cyrus-sasl-2.1.21/sysadmin.html for information on what to include in the application configuration files. See file:///usr/share/doc/cyrus-sasl-2.1.21/LDAP_SASLAUTHD for configuring saslauthd with OpenLDAP.

Init Script

If you need to run the saslauthd daemon at system startup, install the /etc/rc.d/init.d/cyrus-sasl init script included in the blfs-bootscripts-20060910 package.

make install-cyrus-sasl

Note

You'll need to modify the init script and replace the <authmech> parameter to the -a switch with your desired authentication mechanism.

Contents

Installed Programs: saslauthd, sasldblistusers2, and saslpasswd2
Installed Libraries: libjavasasl.so, libsasl2.so, and numerous SASL plugins and Java classes
Installed Directories: /usr/include/sasl, /usr/lib/java/classes/sasl, /usr/lib/sasl2, /usr/share/doc/cyrus-sasl-2.1.21, and /var/lib/sasl

Short Descriptions

saslauthd

is the SASL authentication server.

sasldblistusers2

is used to list the users in the SASL password database sasldb2.

saslpasswd2

is used to set and delete a user's SASL password and mechanism specific secrets in the SASL password database sasldb2.

libsasl2.so

is a general purpose authentication library for server and client applications.

Stunnel-4.15

Introduction to Stunnel

The Stunnel package contains a program that allows you to encrypt arbitrary TCP connections inside SSL (Secure Sockets Layer) so you can easily communicate with clients over secure channels. Stunnel can be used to add SSL functionality to commonly used Inetd daemons like POP-2, POP-3, and IMAP servers, to standalone daemons like NNTP, SMTP and HTTP, and in tunneling PPP over network sockets without changes to the server package source code.

Package Information

Stunnel Dependencies

Required

OpenSSL-0.9.8d

Optional

TCP Wrapper-7.6

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/stunnel

Installation of Stunnel

The stunnel daemon will be run in a chroot jail by an unprivileged user. Create the new user, group and chroot home directory structure using the following commands as the root user:

groupadd -g 51 stunnel &&
useradd -c "Stunnel Daemon" -d /var/lib/stunnel \
        -g stunnel -s /bin/false -u 51 stunnel &&
install -v -m 1770 -o stunnel -g stunnel -d /var/lib/stunnel/run

Note

A signed SSL Certificate and a Private Key is necessary to run the stunnel daemon. If you own, or have already created a signed SSL Certificate you wish to use, copy it to /etc/stunnel/stunnel.pem before starting the build (ensure only root has read and write access), otherwise you will be prompted to create one during the installation process. The .pem file must be formatted as shown below:

-----BEGIN RSA PRIVATE KEY-----
<many encrypted lines of unencrypted key>
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
<many encrypted lines of certificate>
-----END CERTIFICATE-----

Install Stunnel by running the following commands:

sed -i -e 's|nogroup|stunnel|' \
       -e 's|$(prefix)/var/lib|$(localstatedir)|' \
    tools/Makefile.in
sed -i 's|doc/stunnel|&-$(VERSION)|' {,doc/,tools/}Makefile.in &&

./configure --prefix=/usr --sysconfdir=/etc \
    --localstatedir=/var/lib --disable-libwrap &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

sed -i -e '...' -e '...' tools/Makefile.in: This sed command modifies the group and directory used for the chroot jail to conform with the parameters created earlier.

sed -i '...' {,doc/,tools/}Makefile.in: This sed command modifies the location of the installed docs to a versioned directory.

--sysconfdir=/etc: This parameter forces the configuration directory to /etc instead of /usr/etc.

--localstatedir=/var/lib: This parameter sets the installation to use /var/lib/stunnel instead of creating and using /usr/var/stunnel.

--disable-libwrap: This parameter is required if you don't have tcpwrappers installed. Remove the parameter if tcpwrappers is installed.

make install: This command installs the package and, if you did not copy an stunnel.pem file to the /etc/stunnel directory, prompts you for the necessary information to create one. Ensure you reply to the

Common Name (FQDN of your server) [localhost]:

prompt with the name or IP address you will be using to access the service(s).

Configuring Stunnel

Config Files

/etc/stunnel/stunnel.conf

Configuration Information

Create a basic /etc/stunnel/stunnel.conf configuration file using the following commands:

cat >/etc/stunnel/stunnel.conf << "EOF" &&
# File: /etc/stunnel/stunnel.conf

pid = /run/stunnel.pid
chroot = /var/lib/stunnel
client = no
setuid = stunnel
setgid = stunnel

EOF
chmod -v 644 /etc/stunnel/stunnel.conf

Next, you need to add the service(s) you wish to encrypt to the configuration file. The format is as follows:

[<service>]
accept  = <hostname:portnumber>
connect = <hostname:portnumber>

If you use Stunnel to encrypt a daemon started from [x]inetd, you may need to disable that daemon in the /etc/[x]inetd.conf file and enable a corresponding <service>_stunnel service. You may have to add an appropriate entry in /etc/services as well.

For a full explanation of the commands and syntax used in the configuration file, run man stunnel. To see a BLFS example of an actual setup of an stunnel encrypted service, read the the section called “Configuring SWAT” in the Samba instructions.

Boot Script

To automatically start the stunnel daemon when the system is rebooted, install the /etc/rc.d/init.d/stunnel bootscript from the blfs-bootscripts-20060910 package.

make install-stunnel

Contents

Installed Programs: stunnel and stunnel3
Installed Library: libstunnel.so
Installed Directories: /etc/stunnel, /var/lib/stunnel and /usr/share/doc/stunnel-4.15

Short Descriptions

stunnel

is a program designed to work as an SSL encryption wrapper between remote clients and local ({x}inetd-startable) or remote servers.

stunnel3

is a Perl wrapper script to use stunnel 3.x syntax with stunnel >=4.05.

libstunnel.so

contains the API functions required by Stunnel.

Sudo-1.6.8p12

Introduction to Sudo

The sudo package allows a system administrator to give certain users (or groups of users) the ability to run some (or all) commands as root or another user while logging the commands and arguments.

Package Information

Additional Downloads

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/sudo

Installation of Sudo

Install sudo by running the following commands:

patch -Np1 -i ../sudo-1.6.8p12-envvar_fix-1.patch &&
./configure --prefix=/usr --libexecdir=/usr/lib \
    --enable-noargs-shell --with-ignore-dot --with-all-insults \
    --enable-shell-sets-home &&
make

Now, as the root user:

make install

Command Explanations

--enable-noargs-shell: This switch allows sudo to run a shell if invoked with no arguments.

--with-ignore-dot: This switch causes sudo to ignore '.' in the PATH.

--with-all-insults: This switch includes all the sudo insult sets.

--enable-shell-sets-home: This switch sets HOME to the target user in shell mode.

Note

There are many options to sudo's configure command. Check the configure --help output for a complete list.

Configuring Sudo

Config File

/etc/sudoers

Configuration Information

The sudoers file can be quite complicated. It is composed of two types of entries: aliases (basically variables) and user specifications (which specify who may run what). The installation installs a default configuration that has no privileges installed for any user.

One example usage is to allow the system administrator to execute any program without typing a password each time root privileges are needed. This can be configured as:

# User alias specification
User_Alias  ADMIN = YourLoginId

# Allow people in group ADMIN to run all commands without a password
ADMIN       ALL = NOPASSWD: ALL

For details, see man sudoers.

Note

The Sudo developers highly recommend using the visudo program to edit the sudoers file. This will provide basic sanity checking like syntax parsing and file permission to avoid some possible mistakes that could lead to a vulnerable configuration.

Contents

Installed Programs: sudo, sudoedit, and visudo
Installed Library: sudo_noexec.so
Installed Directories: None

Short Descriptions

sudo

executes a command as another user as permitted by the /etc/sudoers configuration file.

sudoedit

is a hard link to sudo that implies the -e option to invoke an editor as another user.

visudo

allows for safer editing of the sudoers file.

sudo_noexec.so

enables support for the "noexec" functionality which prevents a dynamically-linked program being run by sudo from executing another program (think shell escapes).

NSS-3.11.3

Introduction to NSS

The Network Security Services (NSS) package is a set of libraries designed to support cross-platform development of security-enabled client and server applications. Applications built with NSS can support SSL v2 and v3, TLS, PKCS #5, PKCS #7, PKCS #11, PKCS #12, S/MIME, X.509 v3 certificates, and other security standards. This is useful for implementing SSL and S/MIME or other Internet security standards into an application.

The NSS package requires the Netscape Portable Runtime (NSPR) libraries as a prerequisite for building. The NSS package tarball contains the code necessary to build the NSPR libraries. These libraries are built and installed using the instructions below. Essentially, the NSS package is now a combined NSS/NSPR installation.

Package Information

Additional Downloads

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/nss

Installation of NSS

Install NSS by running the following commands:

bash

export WORKINGDIR=$PWD &&
export BUILD_OPT=1 &&

patch -Np1 -i ../nss-3.11.3-with-nspr-4.6.3-fedora_fixes-1.patch &&

cd mozilla/security/nss &&
make nss_build_all &&
cd ../.. &&

export NSS_LINUXDIR=$(basename `ls -d $WORKINGDIR/mozilla/dist/Linux*`)

To test the results, you'll need to set the domain name of your system in the DOMSUF environment variable. Most of the tests will fail if you don't provide the correct domain name. A self-generated log file will be parsed at the end of the test to display how many tests passed. It should return 800. To run the tests, ensure you change the export DOMSUF command below to an appropriate value, e.g., mydomain.com and issue the following commands:

bash

export DOMSUF=<validdomain.name> &&
export PATH=$PATH:$WORKINGDIR/mozilla/dist/$NSS_LINUXDIR/bin &&
export TEST_RESULTSDIR=$WORKINGDIR/mozilla/tests_results/security &&

cd security/nss/tests &&
sed -i 's/gmake/make/' common/init.sh &&
./all.sh &&

grep Passed $TEST_RESULTSDIR/$(hostname).1/results.html | wc -l &&

exit

Caution

If you switch to the root user using a method that does not inherit the environment from the unprivileged user, ensure that root's NSS_LINUXDIR environment variable is set correctly before proceeding with the installation commands.

Now, as the root user:

install -v -m755 nsprpub/$NSS_LINUXDIR/config/nspr-config \
                 security/nss/cmd/config/nss-config \
    /usr/bin &&
install -v -m755 -d /usr/lib/pkgconfig &&
install -v -m644 nsprpub/lib/pkgconfig/nspr.pc \
                 security/nss/lib/pkgconfig/nss.pc \
    /usr/lib/pkgconfig &&

cd dist &&

install -v -m755 $NSS_LINUXDIR/lib/*.so /usr/lib &&
install -v -m644 $NSS_LINUXDIR/lib/{*.chk,libcrmf.a} /usr/lib &&

install -v -m755 -d /usr/include/{nss,nspr} &&
install -v -m644 {public,private}/nss/* /usr/include/nss &&
cp -v -RL $NSS_LINUXDIR/include/* /usr/include/nspr &&
chmod -v 644 /usr/include/nspr/prvrsion.h

Now as the unprivileged user, exit the bash shell started at the beginning of the installation to restore the environment to the original state.

exit

Command Explanations

bash: Shells are started as many environment variables are created during the installation process. Exiting the shells serves the purpose of restoring the environment and returning back to the original directory when the installation is complete.

export WORKINGDIR=$PWD: This variable is set because many of the commands are dependent on knowing the full path of certain directories. WORKINGDIR establishes a known path so that all others can be determined relative to this.

export BUILD_OPT=1: This variable is set so that the build is performed with no debugging symbols built into the binaries and that the default compiler optimizations are used.

export NSS_LINUXDIR=...: This variable is set so that the exact name of the architecture specific directories where the binaries are stored in the source tree can be determined.

make nss_build_all: This command builds the NSPR and NSS libraries and creates a dist directory which houses all the programs, libraries and interface headers. None of the programs created by this process are installed onto the system using the default instructions. If you need any of these programs installed, you can find them in the mozilla/dist/bin directory of the source tree.

export PATH=...: This command sets the PATH environment variable to include the executables in the source tree as some of them are required to run the test suite.

sed -i 's/gmake/make/' common/init.sh: This command changes the command used to compile some test programs.

Contents

Installed Programs: nspr-config and nss-config
Installed Libraries: libcrmf.a, libfreebl3.so, libnspr4.so, libnss3.so, libnssckbi.so, libplc4.so, libplds4.so, libsmime3.so, libsoftokn3.so and libssl3.so
Installed Directories: /usr/include/nspr and /usr/include/nss

Short Descriptions

nspr-config

is used to determine the NSPR installation settings of the installed NSPR libraries.

nss-config

is used to determine the NSS library settings of the installed NSS libraries.

The libnspr4.so, libplc4.so and libplds4.so libraries make up the Netscape Portable Runtime (NSPR) libraries. These libraries provide a platform-neutral API for system level and libc like functions. The API is used in the Mozilla client, many of the Netscape/AOL/iPlanet offerings and other software applications.

The libcrmf.a, libfreebl.so, libnss3.so, libnssckbi.so, libsmime3.so, libsoftokn3.so and libnssl3.so libraries make up the NSS libraries.

Chapter 5. File Systems

Journaling file systems reduce the time needed to recover a file system that was not unmounted properly. While this can be extremely important in reducing downtime for servers, it has also become popular for desktop environments. This chapter contains two other journaling file systems you can use instead of the default LFS third extended file system.

ReiserFS-3.6.19

Introduction to ReiserFS

The ReiserFS package contains various utilities for use with the Reiser file system.

Package Information

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/reiser

Installation of ReiserFS

Install ReiserFS by running the following commands:

./configure --prefix=/usr --sbindir=/sbin &&
make

This package does not come with a test suite.

Now, as the root user:

make install &&
ln -sf reiserfsck /sbin/fsck.reiserfs &&
ln -sf mkreiserfs /sbin/mkfs.reiserfs

Command Explanations

--prefix=/usr: This ensures that the manual pages are installed in the correct location while still installing the programs in /sbin as they should be.

--sbindir=/sbin: This ensures that the ReiserFS utilities are installed in /sbin as they should be.

Contents

Installed Programs: debugreiserfs, mkreiserfs, reiserfsck, reiserfstune, and resize_reiserfs
Installed Libraries: None
Installed Directories: None

Short Descriptions

debugreiserfs

can sometimes help to solve problems with ReiserFS file systems. If it is called without options, it prints the super block of any ReiserFS file system found on the device.

mkreiserfs

creates a ReiserFS file system.

reiserfsck

is used to check or repair a ReiserFS file system.

reiserfstune

is used for tuning the ReiserFS journal. WARNING: Don't use this utility without first reading the man page thoroughly.

resize_reiserfs

is used to resize an unmounted ReiserFS file system.

XFS-2.8.18

Introduction to XFS

The XFS package contains administration and debugging tools for the XFS file system.

Package Information

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/xfs

Installation of XFS

Install XFS by running the following commands:

sed -i '/autoconf/d' Makefile &&
make DEBUG=-DNDEBUG INSTALL_USER=root INSTALL_GROUP=root \
    LOCAL_CONFIGURE_OPTIONS="--enable-readline=yes"

This package does not come with a test suite.

Now, as the root user:

make install &&
make install-dev &&
install -v -m755 -D libhandle/libhandle.la /usr/lib/libhandle.la &&
chmod -v 755 /lib/libhandle.so* &&
rm -f /lib/libhandle.{a,la,so} &&
ln -svf ../../lib/libhandle.so.1 /usr/lib/libhandle.so

Command Explanations

sed -i '/autoconf/d' Makefile: This command disables running autoconf because it is unnecessary.

make DEBUG=-DNDEBUG: The XFS build will fail using the default -DDEBUG flags.

INSTALL_USER=root INSTALL_GROUP=root: This sets the owner and group of the installed files.

LOCAL_CONFIGURE_OPTIONS="...": This passes extra configuration options to the configure script. The example --enable-readline=yes parameter enables linking the XFS programs with the libreadline.so library, in order to allow editing interactive commands.

OPTIMIZER="...": Adding this parameter to the end of the make command overrides the default optimization settings.

make install-dev: This command installs static XFS libraries, their headers and the corresponding documentation. Currently, DMAPI and xfsdump are the only packages that use the installed libraries.

install -v ... and the three following commands fix the installation of libhandle libraries.

Contents

Installed Programs: fsck.xfs, mkfs.xfs, xfs_admin, xfs_bmap, xfs_check, xfs_copy, xfs_db, xfs_freeze, xfs_growfs, xfs_info, xfs_io, xfs_logprint, xfs_mkfile, xfs_ncheck, xfs_quota, xfs_repair, and xfs_rtcp
Installed Libraries: libdisk.a, libhandle.{so,a}, libxcmd.a, libxfs.a, and libxlog.a
Installed Directory: /usr/share/doc/xfsprogs

Short Descriptions

fsck.xfs

simply exits with a zero status, since XFS partitions are checked at mount time.

mkfs.xfs

constructs an XFS file system.

xfs_admin

changes the parameters of an XFS file system.

xfs_bmap

prints block mapping for an XFS file.

xfs_check

checks XFS file system consistency.

xfs_copy

copies the contents of an XFS file system to one or more targets in parallel.

xfs_db

is used to debug an XFS file system.

xfs_freeze

suspends access to an XFS file system.

xfs_growfs

expands an XFS file system.

xfs_info

is equivalent to invoking xfs_growfs, but specifying that no change to the file system is to be made.

xfs_io

is a debugging tool like xfs_db, but is aimed at examining the regular file I/O path rather than the raw XFS volume itself.

xfs_logprint

prints the log of an XFS file system.

xfs_mkfile

creates an XFS file, padded with zeroes by default.

xfs_ncheck

generates pathnames from inode numbers for an XFS file system.

xfs_quota

is a utility for reporting and editing various aspects of filesystem quota.

xfs_repair

repairs corrupt or damaged XFS file systems.

xfs_rtcp

copies a file to the real-time partition on an XFS file system.

libhandle.so

contains XFS-specific functions that provide a way to perform certain filesystem operations without using a file descriptor to access filesystem objects.

Chapter 6. Editors

This chapter is referenced in the LFS book for those wishing to use other editors on their LFS system. You're also shown how some LFS installed programs benefit from being recompiled after GUI libraries have been installed.

Vim-7.0

Introduction to Vim

The Vim package, which is an abbreviation for VI IMproved, contains a vi clone with extra features as compared to the original vi.

The default LFS instructions install vim as a part of the base system. If you would prefer to link vim against X, you should recompile vim to enable GUI mode. There is no need for special instructions since X support is automatically detected.

Package Information

Additional Downloads

Vim Dependencies

Recommended

Optional

GTK+-2.8.20 OR LessTif-0.94.4 OR GTK+-1.2.10, Python-2.4.4, Tcl-8.4.13, Ruby-1.8.5, and GPM-1.20.1

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/vim

Installation of Vim

Note

If you recompile Vim to link against X, and your X libraries are not on the root partition, you will no longer have an editor for use in emergencies. You may choose to install an additional editor, not link Vim against X, or move the current vim executable to the /bin directory under a different name such as vi.

If desired, unpack the translated messages archive:

tar -xf ../vim-7.0-lang.tar.gz --strip-components=1

Install Vim by running the following commands:

patch -Np1 -i ../vim-7.0-fixes-14.patch &&
patch -Np1 -i ../vim-7.0-mandir-1.patch &&
echo '#define SYS_VIMRC_FILE "/etc/vimrc"' >> src/feature.h &&
echo '#define SYS_GVIMRC_FILE "/etc/gvimrc"' >> src/feature.h &&
./configure --prefix=/usr --with-features=huge &&
make

To test the results, issue: make test. The vim test suite outputs a lot of binary data to the screen, which can cause issues with the settings of the current terminal. This can be resolved by redirecting the output to a log file. Even if one of the tests fails to produce the file test.out in src/testdir, the remaining tests will still be executed. If all goes well,the final message in the log file will be ALL DONE. Note: Some color tests expect to be executed under the xterm terminal emulator.

Now, as the root user:

make install

By default, Vim's documentation is installed in /usr/share/vim. The following symlink allows the documentation to be accessed via /usr/share/doc/vim-7.0, making it consistent with the location of documentation for other packages:

ln -snfv ../vim/vim70/doc /usr/share/doc/vim-7.0

Command Explanations

patch …: These patches are the same as LFS and update the package with upstream patches and ensure the man pages are placed in the proper locations.

--with-features=huge: This switch enables all the additional features available in Vim.

--enable-gui=no: This will prevent compilation of the GUI. Vim will still link against X so that some nice eye-candy such as updating the title bar of an Xterm window are available.

--without-x: If you prefer not to link Vim against X, use this switch.

--enable-perlinterp, --enable-pythoninterp, --enable-tclinterp, --enable-rubyinterp: These options include the Perl, Python, Tcl, or Ruby interpreters that allow using other application code in vim scripts.

Configuring Vim

Config Files

/etc/vimrc and ~/.vimrc

Configuration Information

Vim-7.0 introduced an integrated spell checker that doesn't requires additional libraries to be installed. To enable the spell checker you can set the following in one of the configuration files:

set spell
spelllang=en,ru

By default, Vim only installs spell files for the English language. If a spell file is not available for your language, then Vim will call $VIMRUNTIME/plugin/spellfile.vim and will try to obtain the *.spl and optionally *.sug from the vim ftp server, using the $VIMRUNTIME/plugin/netrw plugin.

Alternatively you can manually download the *.spl and *.sug files from: ftp://ftp.vim.org/pub/vim/runtime/spell/ and save them to ~/.vim/spell or in /usr/share/vim/vim70/spell/.

For more information about the spell checker and some other features in Vim-7.0 (such us vimgrep, tab-pages, and omni-completion), issue the following command inside Vim:

:help version7

For additional information on setting up Vim configuration files, see The vimrc Files and http://www.vi-improved.org/vimrc.php.

Contents

A list of the reinstalled files, along with their short descriptions can be found in the LFS Vim Installation Instrutions

Installed Programs: gview, gvim, gvimdiff, rgview, and rgvim
Installed Libraries: None
Installed Directory: /usr/share/vim

Short Descriptions

gview

starts gvim in read-only mode.

gvim

is the editor that runs under X and includes a GUI.

gvimdiff

edits two or three versions of a file with gvim and shows the differences.

rgview

is a restricted version of gview.

rgvim

is a restricted version of gvim.

Emacs-21.4a

Introduction to Emacs

The Emacs package contains an extensible, customizable, self-documenting real-time display editor.

Package Information

Additional Downloads

Emacs Dependencies

Optional

X Window System, libjpeg-6b, libpng-1.2.12, LibTIFF-3.8.2, and libungif

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/emacs

Installation of Emacs

In some circumstances, the AltGr modifier key present on some keyboards is not recognized. Ensure that it is by applying the following patch:

patch -Np1 -i ../emacs-21.4a-altgr-1.patch

Install Emacs by running the following commands:

./configure --prefix=/usr --libexecdir=/usr/lib &&
make bootstrap

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--libexecdir=/usr/lib: Place library executables in a Filesystem Hierarchy Standard (FHS) location.

Contents

Installed Programs: b2m, ctags, ebrowse, emacs, emacsclient, etags, grep-changelog, and rcs-checkin
Installed Libraries: None
Installed Directories: /usr/sbin/emacs and /usr/share/emacs

Short Descriptions

b2m

is a program to convert mail files from RMAIL format to Unix “mbox” format.

ctags

creates cross-reference tagfile database files for source code.

ebrowse

permits browsing of C++ class hierarchies from within emacs.

emacs

is an editor.

emacsclient

attaches an emacs session to an already running emacsserver instance.

etags

is another program to generate source code cross-reference tagfiles.

grep-changelog

prints entries in Change Logs matching various criteria.

rcs-checkin

is a shell script used to check files into RCS.

Nano-2.0.1

Introduction to Nano

The nano package contains a small, simple text editor which aims to replace Pico, the default editor in the Pine package.

Package Information

Nano Dependencies

Optional

S-Lang-2.0.6

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/Nano

Installation of Nano

Install nano by running the following commands:

./configure --prefix=/usr --sysconfdir=/etc/nano \
    --enable-color --enable-multibuffer --enable-nanorc &&
make

This package does not come with a test suite.

Now, as the root user:

make install &&
install -v -m644 -D doc/nanorc.sample /etc/nano/nanorc.sample &&
install -v -m755 -d /usr/share/doc/nano-2.0.1 &&
install -v -m644 doc/{,man/,texinfo/}*.html /usr/share/doc/nano-2.0.1

Configuring nano

Config Files

/etc/nano/nanorc and ~/.nanorc

Configuration Information

Example configuration (create as a system-wide /etc/nano/nanorc or a personal ~/.nanorc file)

set autoindent
set const
set fill 72
set historylog
set multibuffer
set nohelp
set regexp
set smooth
set suspend

Another example is the nanorc.sample file in the /etc/nano directory. It includes color configurations and has some documentation included in the comments.

Contents

Installed Programs: nano and rnano
Installed Libraries: None
Installed Directories: /etc/nano and /usr/share/doc/nano-2.0.1

Short Descriptions

nano

is a small, simple text editor which aims to replace Pico, the default editor in the Pine package.

rnano

is a restricted mode for nano.

JOE-3.5

Introduction to JOE

JOE (Joe's own editor) is a small text editor capable of emulating WordStar, Pico, and Emacs.

Package Information

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/joe

Installation of JOE

Install JOE by running the following commands:

./configure --sysconfdir=/etc --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Configuring JOE

Config Files

/etc/joe/jmacsrc, /etc/joe/joerc, /etc/joe/jpicorc, /etc/joe/jstarrc, /etc/joe/rjoerc, and ~/.joerc

Contents

Installed Programs: jmacs, joe, jpico, jstar, rjoe, and termidx
Installed Libraries: None
Installed Directory: /etc/joe

Short Descriptions

jmacs

is a symbolic link to joe used to launch Emacs emulation mode.

joe

is a small text editor capable of emulating WordStar, Pico, and Emacs.

jpico

is a symbolic link to joe used to launch Pico emulation mode.

jstar

is a symbolic link to joe used to launch WordStar emulation mode.

rjoe

is a symbolic link to joe that restricts JOE to editing only files which are specified on the command-line.

termidx

is a program used by joe to generate the termcap index file.

Ed-0.2

Introduction to Ed

Ed is a line-oriented text editor. It is used to create, display, modify and otherwise manipulate text files, both interactively and via shell scripts. Ed isn't something which many people use. It's described here because it can be used by the patch program if you encounter an ed-based patch file. This happens rarely because diff-based patches are preferred these days.

Caution

Ed determines character boundaries incorrectly in multibyte locales. See the Breaks Multibyte Characters section of the Locale Related Issues page for a more general discussion of this problem. Use of Ed in installation instructions for BLFS packages such as teTeX-3.0 is not a problem, as BLFS instructions never use Ed to modify a file containing non-ASCII characters.

Package Information

Additional Downloads

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/ed

Installation of Ed

Ed normally uses the mktemp function to create temporary files in /tmp, but this function contains a vulnerability (see the section on Temporary Files at http://en.tldp.org/HOWTO/Secure-Programs-HOWTO/avoid-race.html). Apply the following patch to make Ed use mkstemp instead, a secure way to create temporary files:

patch -Np1 -i ../ed-0.2-mkstemp-2.patch

Install Ed by running the following commands:

./configure --prefix=/usr --exec-prefix="" &&
make

To test the results, issue: make check.

Now, as the root user:

make install

Command Explanations

--exec-prefix="": This forces the programs to be installed into the /bin directory. Having the programs available there is useful in the event of the /usr partition being unavailable.

Contents

Installed Programs: ed and red
Installed Libraries: None
Installed Directories: None

Short Descriptions

ed

is a line-oriented text editor.

red

is a restricted ed—it can only edit files in the current directory and cannot execute shell commands.

Bluefish-1.0.5

Introduction to Bluefish

The Bluefish package contains a powerful X Window System editor designed for web designers, but also suitable as a programmer's editor. Bluefish supports many programming and markup languages, and as such is ideal for editing XML and HTML files.

Package Information

Bluefish Dependencies

Required

GTK+-2.8.20 and PCRE-6.7

Optional

GNOME Virtual File System-2.14.2 (for remote files), Aspell-0.60.4 (for spellchecking), libgnomeui-2.14.1, GNOME MIME Data-2.4.2, desktop-file-utils-0.11 and shared-mime-info-0.17

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/bluefish

Installation of Bluefish

Install Bluefish by running the following commands:

./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Configuring Bluefish

Config Files

~/.bluefish/*

Configuration Information

The directory ~/.bluefish is created by the program when it is first run, and the configuration files are maintained by the program automatically to preserve settings from run to run.

Contents

Installed Program: bluefish
Installed Libraries: None
Installed Directory: /usr/share/bluefish

Short Descriptions

bluefish

is an X Window System editor for markup and programming.

Other Editors

pico is a text editor installed as a part of Pine-4.64.

mcedit is a text editor installed as part of MC-4.6.1.

Chapter 7. Shells

We are all familiar with the Bourne Again SHell, but there are two other user interfaces that are considered useful modern shells – the Berkeley Unix C shell and the Korn shell. This chapter installs packages compatible with these additional shell types.

ASH-0.4.0

Introduction to ASH

ash is a shell that is the most compliant with the Bourne Shell (not to be confused with Bourne Again SHell i.e., Bash installed in LFS) without any additional features. Bourne Shell is available on most commercial UNIX systems. Hence ash is useful for testing scripts to be sh-compliant. It also has small memory and space requirements compared to the other sh-compliant shells.

Caution

Ash has problems with command line editing in multibyte locales. The issue is discussed in more detail in the Breaks Multibyte Characters section of the Locale Related Issues page.

Package Information

Additional Downloads

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/ash

Installation of ASH

Install ASH by running the following commands:

patch -Np1 -i ../ash-0.4.0-cumulative_fixes-2.patch &&
make

This package does not come with a test suite.

Now, as the root user:

install -v -m 755 sh /bin/ash &&
install -v -m 644 sh.1 /usr/share/man/man1/ash.1

If you would like to make ash the default sh shell, make a symlink.

ln -v -sf ash /bin/sh

Configuring ASH

Config Files

ASH sources /etc/profile and $HOME/.profile

Contents

Installed Program: ash
Installed Libraries: None
Installed Directories: None

Short Description

ash

is a sh-compliant shell.

Tcsh-6.14.00

Introduction to Tcsh

The Tcsh package contains “an enhanced but completely compatible version of the Berkeley Unix C shell (csh)”. This is useful as an alternative shell for those who prefer C syntax to that of the bash shell, and also because some programs require the C shell in order to perform installation tasks.

Caution

Tcsh has problems with command line editing in multibyte locales. The issue is discussed in more detail in the Breaks Multibyte Characters section of the Locale Related Issues page.

Package Information

Additional Downloads

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/tcsh

Installation of Tcsh

Install Tcsh by running the following commands:

patch -Np1 -i ../tcsh-6.14.00-colorls_compat-1.patch &&
./configure --prefix=/usr --bindir=/bin &&
make &&
sh ./tcsh.man2html

This package does not come with a test suite.

Now, as the root user:

make install &&
make install.man &&
ln -v -sf tcsh /bin/csh &&
ln -v -sf tcsh.1 /usr/man/man1/csh.1 &&
install -v -m755 -d /usr/share/doc/tcsh-6.14.00/html &&
install -v -m644 tcsh.html/* /usr/share/doc/tcsh-6.14.00/html &&
install -v -m644 FAQ /usr/share/doc/tcsh-6.14.00

Command Explanations

--bindir=/bin: This installs the tcsh program in /bin instead of /usr/bin.

sh ./tcsh.man2html: This creates HTML documentation from the formatted man page.

ln -v -sf tcsh /bin/csh: The FHS states that if there is a C shell installed, there should be a symlink from /bin/csh to it. This creates that symlink.

Configuring Tcsh

Config Files

There are numerous configuration files for the C shell. Examples of these are /etc/csh.cshrc, /etc/csh.login, /etc/csh.logout, ~/.tcshrc, ~/.cshrc, ~/.history, ~/.cshdirs, ~/.login, and ~/.logout. More information on these files can be found in the tcsh(1) man page.

Configuration Information

Update /etc/shells to include the C shell program names (as the root user):

cat >> /etc/shells << "EOF"
/bin/tcsh
/bin/csh
EOF

Contents

Installed Program: tcsh
Installed Libraries: None
Installed Directory: /usr/share/doc/tcsh-6.14.00

Short Descriptions

tcsh

is an enhanced but completely compatible version of the Berkeley Unix C shell, csh. It is usable as both an interactive shell and a script processor.

ZSH-4.2.6

Introduction to ZSH

The ZSH package contains a command interpreter (shell) usable as an interactive login shell and as a shell script command processor. Of the standard shells, ZSH most closely resembles KSH but includes many enhancements.

Warning

This version of ZSH does not work properly with multibyte locales (e.g., UTF-8). A development version is available that addresses many, but not all, locale related issues. You can download the development version from the ZSH Sourceforge Download Page and use the following BLFS instructions to build and install.

Package Information

Additional Downloads

ZSH Dependencies

Optional

PCRE-6.7

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/zsh

Installation of ZSH

If you downloaded the optional documentation, unpack it the same way you would the source tarball. The documentation will unpack into the Doc directory of the source tree.

Install ZSH by running the following commands:

./configure --prefix=/usr \
            --sysconfdir=/etc/zsh \
            --enable-etcdir=/etc/zsh &&
make

If you downloaded the optional documentation, and you have teTeX-3.0 installed, you can build additional formats of the documentation by issuing any or all of the following commands:

texi2pdf  Doc/zsh.texi -o Doc/zsh.pdf &&
texi2html Doc/zsh.texi --output=Doc/zsh_1file_t.html &&
makeinfo  Doc/zsh.texi --html --no-split --no-headers \
                       -o Doc/zsh_1file_m.html &&
makeinfo  Doc/zsh.texi --plaintext -o Doc/zsh.txt

To test the results, issue: make check.

Now, as the root user:

make install &&
make infodir=/usr/share/info install.info

If you downloaded the optional documentation, install it by issuing the following commands as the root user:

make htmldir=/usr/share/doc/zsh-4.2.6/html install.html &&
install -v -m644 Doc/*.{ps,dvi} /usr/share/doc/zsh-4.2.6

If you built any additional formats of the documentation, install them by issuing the following command as the root user:

install -v -m644 Doc/{zsh_1file*,*.{pdf,txt}} \
        /usr/share/doc/zsh-4.2.6

Command Explanations

--sysconfdir=/etc/zsh and --enable-etcdir=/etc/zsh: These parameters are used so that all the ZSH configuration files are consolidated into the /etc/zsh directory. Omit these parameters if you wish to retain historical compatibility by having all the files located in the /etc directory.

Configuring ZSH

Config Files

There are a whole host of configuration files for ZSH including /etc/zsh/zshenv, /etc/zsh/zprofile, /etc/zsh/zshrc, /etc/zsh/zlogin and /etc/zsh/zlogout. You can find more information on these in the zsh(1) and related manual pages.

Configuration Information

Update /etc/shells to include the ZSH shell program names (as the root user):

cat >> /etc/shells << "EOF"
/usr/bin/zsh
/usr/bin/zsh-4.2.6
EOF

Contents

Installed Programs: zsh and zsh-4.2.6
Installed Libraries: Numerous plugin helper modules
Installed Directories: /etc/zsh, /usr/lib/zsh, /usr/share/doc/zsh-4.2.6 and /usr/share/zsh

Short Description

zsh

is a shell which has command-line editing, built-in spelling correction, programmable command completion, shell functions (with autoloading), a history mechanism, and a host of other features.

Part III. General Libraries and Utilities

Chapter 8. General Libraries

Libraries contain code which is often required by more than one program. This has the advantage that each program doesn't need to duplicate code (and risk introducing bugs), it just has to call functions from the libraries installed on the system. The most obvious example of a set of libraries is Glibc which is installed during the LFS book. This contains all of the C library functions which programs use.

There are two types of libraries: static and shared. Shared libraries (usually libXXX.so) are loaded into memory from the shared copy at runtime (hence the name). Static libraries (libXXX.a ) are actually linked into the program executable file itself, thus making the program file larger. Quite often, you will find both static and shared copies of the same library on your system.

Generally, you only need to install libraries when you are installing software that needs the functionality they supply. In the BLFS book, each package is presented with a list of (known) dependencies. Thus, you can figure out which libraries you need to have before installing that program. If you are installing something without using BLFS instructions, usually the README or INSTALL file will contain details of the program's requirements.

There are certain libraries which nearly everyone will need at some point. In this chapter we list these and some others and explain why you may want to install them.

PCRE-6.7

Introduction to PCRE

The PCRE package contains Perl Compatible Regular Expression libraries. These are useful for implementing regular expression pattern matching using the same syntax and semantics as Perl 5.

Package Information

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/pcre

Installation of PCRE

Install PCRE by running the following commands:

./configure --prefix=/usr --enable-utf8 &&
make

To test the results, issue: make runtest.

Now, as the root user:

make install &&
install -v -m755 -d /usr/share/doc/pcre-6.7/html &&
install -v -m644 doc/html/* /usr/share/doc/pcre-6.7/html &&
install -v -m644 doc/{Tech.Notes,*.txt} /usr/share/doc/pcre-6.7

If you reinstall Grep after installing PCRE, Grep will get linked against PCRE and may cause problems if /usr is a separate mount point. To avoid this, either pass the option --disable-perl-regexp when executing ./configure for Grep or move libpcre to /lib as follows.

mv -v /usr/lib/libpcre.so.* /lib/ &&
ln -v -sf ../../lib/libpcre.so.0 /usr/lib/libpcre.so

Command Explanations

--enable-utf8: This switch includes the code for handling UTF-8 character strings in the library.

Contents

Installed Programs: pcregrep, pcretest, and pcre-config
Installed Libraries: libpcre.{so,a}, libpcrecpp.{so,a} and libpcreposix.{so,a}
Installed Directory: /usr/share/doc/pcre-6.7

Short Descriptions

pcregrep

is a grep that understands Perl compatible regular expressions.

pcretest

can test a Perl compatible regular expression.

pcre-config

is used during the compile process of programs linking to the PCRE libraries.

Popt-1.10.4

Introduction to Popt

The popt package contains the popt libraries which are used by some programs to parse command-line options.

Package Information

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/popt

Installation of Popt

Install popt by running the following commands:

sed -i -e "/*origOptString ==/c 0)" popt.c &&
./configure --prefix=/usr &&
make

If you have Doxygen-1.4.6 installed and wish to build the API documentation, issue doxygen.

To test the results, issue:

make check

Now, as the root user:

make install

If you built the API documentation, install it using the following commands issued by the root user:

install -v -m755 -d /usr/share/doc/popt-1.10.4 &&
install -v -m644 doxygen/html/* /usr/share/doc/popt-1.10.4

Command Explanations

sed ...: This fix taken backported from the development version of popt fixes a problem identified by the included testsuite.

Contents

Installed Programs: None
Installed Library: libpopt.{so,a}
Installed Directories: /usr/share/doc/popt-1.10.4

Short Descriptions

libpopt.{so,a}

is used to parse command-line options.

S-Lang-2.0.6

Introduction to S-Lang

The S-Lang package contains the S-Lang library, which provides facilities such as display/screen management, keyboard input, and keymaps.

Package Information

S-Lang Dependencies

Optional

libpng-1.2.12 and PCRE-6.7

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/slang

Installation of S-Lang

Install S-Lang by running the following commands:

./configure --prefix=/usr --sysconfdir=/etc &&
make &&
make elf

To test the results, issue: make runtests.

Now, as the root user:

make install-elf &&
chmod -v 755 /usr/lib/libslang.so.2.0.6

Command Explanations

--with-readline=gnu: Use this parameter to use the system-installed version of Readline instead of the S-Lang internal version.

make elf and make install-elf: These commands create and install the dynamic shared version of the S-Lang library as well as an S-Lang script interpreter and related modules.

Configuring S-Lang

Config Files

~/.slshrc and /etc/slsh.rc

Configuration Information

As with most libraries, there is no configuration to do, save that the library directory, i.e., /opt/lib or /usr/local/lib should appear in /etc/ld.so.conf so that ldd can find the shared libraries. After checking that this is the case, /sbin/ldconfig should be run while logged in as root.

Contents

Installed Program: slsh
Installed Libraries: libslang.{so,a} and numerous support modules
Installed Directories: /usr/lib/slang, /usr/share/doc/slang and /usr/share/slsh

Short Descriptions

slsh

is a simple program for interpreting S-Lang scripts. It supports dynamic loading of S-Lang modules and includes a Readline interface for interactive use.

Gamin-0.1.7

Introduction to Gamin

The Gamin package contains a File Alteration Monitor which is useful for notifying applications of changes to the file system. Gamin is compatible with FAM.

Package Information

Gamin Dependencies

Required

GLib-2.10.3

Optional

Python-2.4.4

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gamin

Installation of Gamin

Install Gamin by running the following commands:

./configure --prefix=/usr --libexecdir=/usr/sbin &&
make

To test the results, issue: make check.

Now, as the root user:

make install &&
install -v -m755 -d /usr/share/doc/gamin-0.1.7 &&
install -v -m644 doc/*.{html,fig,gif,txt} /usr/share/doc/gamin-0.1.7

Configuring Gamin

Configuration Information

No configuration is generally required and the default options should work for most users. See http://www.gnome.org/~veillard/gamin/config.html for details.

Contents

Installed Program: gam_server
Installed Libraries: libfam.{so,a}, libgamin-1.{so,a}, libgamin_shared.a and optionally, Python _gamin.{so,a} module
Installed Directory: /usr/share/doc/gamin-0.1.7

Short Descriptions

gam_server

is the file alteration monitor daemon that is started on demand for each user.

libgamin.{so,a}

contains functions that support the file allocation monitor.

libfam.{so,a}

contains functions that provide compatibility with FAM.

libxml-1.8.17

Introduction to libxml

The libxml package contains the libxml libraries. These are useful for parsing XML files.

Package Information

libxml Dependencies

Optional

GTK-Doc-1.6

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libxml

Installation of libxml

Install libxml by running the following commands:

./configure --prefix=/usr &&
make

To test the results, issue: make check.

Now, as the root user:

make install

Command Explanations

--enable-gtk-doc: Use this parameter if GTK-Doc is installed and you wish to rebuild the API documentation.

Contents

Installed Program: xml-config
Installed Library: libxml.{so,a}
Installed Directories: /usr/include/gnome-xml and /usr/share/gnome-xml

Short Descriptions

libxml.{so,a}

provides the functions for programs to parse files that use the XML format.

libxml2-2.6.26

Introduction to libxml2

The libxml2 package contains XML libraries. These are useful for parsing XML files.

Package Information

libxml2 Dependencies

Optional

libxslt-1.1.17 (used for the test suite if found, but not required) and Python-2.4.4 (will install a Python library module if found)

Optional (Required to Run the Full Suite of Tests)

Python-2.4.4 and Wget-1.10.2

Note

Some packages which utilize libxml2 (such as GNOME Doc Utils) need the Python module installed to function properly and some packages (such as GNOME Panel) will not build properly if the Python module is not available.

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libxml2

Installation of libxml2

Install libxml2 by running the following commands:

./configure --prefix=/usr &&
make

To test the results, issue: make check.

Now, as the root user:

make install

Command Explanations

--with-history: If this option is used, it enables readline support when running xmlcatalog in shell mode.

Caution

When using history support, make check will hang forever if either /etc/inputrc or ~/.inputrc has the option show-all-if-ambiguous turned on.

Contents

Installed Programs: xml2-config, xmlcatalog, and xmllint
Installed Libraries: libxml2.{so,a} and optionally, the libxml2mod.{so,a} Python module
Installed Directories: /usr/include/libxml2, /usr/share/doc/libxml2-2.6.26, /usr/share/doc/libxml2-python-2.6.26 and /usr/share/gtk-doc/html/libxml2

Short Descriptions

xml2-config

determines the compile and linker flags that should be used to compile and link programs that use libxml2.

xmlcatalog

is used to monitor and manipulate XML and SGML catalogs.

xmllint

parses XML files and outputs reports (based upon options) to detect errors in XML coding.

libxml2.{so,a}

libraries provide the functions for programs to parse files that use the XML format.

libxslt-1.1.17

Introduction to libxslt

The libxslt package contains XSLT libraries. These are useful for extending libxml2 libraries to support XSLT files.

Package Information

libxslt Dependencies

Required

libxml2-2.6.26

Optional

Python-2.4.4 and Libgcrypt (requires Libgpg-error)

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libxslt

Installation of libxslt

Install libxslt by running the following commands:

./configure --prefix=/usr &&
make

To test the results, issue: make check.

Now, as the root user:

make install

Contents

Installed Programs: xslt-config and xsltproc
Installed Libraries: libexslt.{so,a}, libxslt.{so,a} and optionally, libxsltmod.{so,a} Python modules
Installed Directories: /usr/include/lib{e}xslt, /usr/lib/libxslt-plugins, /usr/share/doc/libxslt-1.1.17, and /usr/share/doc/libxslt-python-1.1.17

Short Descriptions

xslt-config

is used to find out the pre-processor, linking and compiling flags necessary to use the libxslt libraries in 3rd-party programs.

xsltproc

is used to apply XSLT stylesheets to XML documents.

libxslt.{so,a}

provides extensions to the libxml2 libraries to parse files that use the XSLT format.

libexslt.{so,a}

is used to provide extensions to XSLT functions.

libgtkhtml-2.11.0

Introduction to libgtkhtml

The libgtkhtml package contains the libgtkhtml-2 library. This library provides an API for rendering HTML.

Package Information

libgtkhtml Dependencies

Required

GTK+-2.8.20 and libxml2-2.6.26

Optional

GAIL-1.8.11 and GNOME Virtual File System-2.14.2 (only used in the test suite)

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libgtkhtml

Installation of libgtkhtml

Install libgtkhtml by running the following commands:

./configure --prefix=/usr --disable-accessibility &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--disable-accessibility: This forces the package to build without linking to the libgailutil accessibility library. Remove this switch if you have GAIL installed.

Contents

Installed Programs: None
Installed Library: libgtkhtml-2.{so,a}
Installed Directory: /usr/include/gtkhtml-2.0

Short Descriptions

libgtkhtml-2.{so,a}

provides the functions necessary to render and/or edit HTML.

GMP-4.2

Introduction to GMP

The GMP package contains math libraries. These have useful functions for arbitrary precision arithmetic.

Package Information

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gmp

Installation of GMP

Install GMP by running the following commands:

./configure --prefix=/usr --enable-cxx --enable-mpbsd &&
make

If you have teTeX-3.0 installed and you wish to create alternate formats of the documentation, issue any or all of the following commands:

make -C doc pdf &&
make -C doc ps &&
make -C doc html &&
texi2html -o doc/gmp_nochunks.html doc/gmp.texi &&
makeinfo --plaintext -o doc/gmp.txt doc/gmp.texi

To test the results, issue: make check. Owing to various reports of mis-compilations, the maintainer strongly recommends running the test-suite and reporting any failures. The libraries should not be used in a production environment if there are problems running make check. An easy way to determine if all the tests passed is to redirect the output of the tests to a file (make check >check.log 2>&1) and issue the following command:

awk '/tests passed/{total+=$2} ; END{print total}' check.log

139 should be returned.

Now, as the root user:

make install

If you created any of the alternate formats of the documentation, install it using the following commands as the root user:

install -v -m755 -d /usr/share/doc/gmp-4.2/html &&
install -v -m644 doc/gmp.html/* /usr/share/doc/gmp-4.2/html &&
install -v -m644 doc/{isa_abi_headache,configuration} \
                 doc/*.{pdf,dvi,ps,html,txt} \
    /usr/share/doc/gmp-4.2

Command Explanations

--enable-cxx: This parameter enables C++ support by building the libgmpxx libraries.

--enable-mpbsd: This parameter enables building the Berkeley MP compatibility (libmp) libraries.

Contents

Installed Programs: None
Installed Libraries: libgmp.{so,a}, libgmpxx.{so,a} and libmp.{so,a}
Installed Directories: None

Short Descriptions

libgmp.{so,a}

contains functions to operate on signed integers, rational numbers, and floating point numbers.

GDBM-1.8.3

Introduction to GDBM

The GDBM package contains the GNU Database Manager. This is a disk file format database which stores key/data-pairs in single files. The actual data of any record being stored is indexed by a unique key, which can be retrieved in less time than if it was stored in a text file.

Package Information

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gdbm

Installation of GDBM

Install GDBM by running the following commands:

./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make BINOWN=root BINGRP=root install

In addition, you may need to install the DBM and NDBM compatibility headers and library since some applications look for these older dbm routines.

make BINOWN=root BINGRP=root install-compat

Command Explanations

make BINOWN=root BINGRP=root install: This command overrides the BINOWN and BINGRP variables in the Makefile changing ownership of the installed files to root instead of the bin user.

Contents

Installed Programs: None
Installed Libraries: libgdbm.{so,a} and libgdbm_compat.{so,a}
Installed Directories: None

Short Descriptions

libgdbm.{so,a}

contains functions to manipulate a hashed database.

GLib-1.2.10

Introduction to GLib

The glib package contains a low-level core library. This is useful for providing data structure handling for C, portability wrappers and interfaces for such runtime functionality as an event loop, threads, dynamic loading, and an object system.

Package Information

Additional Downloads

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/glib

Installation of GLib

Install glib by running the following commands:

patch -Np1 -i ../glib-1.2.10-gcc34-1.patch &&
./configure --prefix=/usr &&
make

To test the results, issue: make check.

Now, as the root user:

make install &&
chmod -v 755 /usr/lib/libgmodule-1.2.so.0.0.10

Contents

Installed Programs: glib-config
Installed Libraries: libglib.{so,a}, libgmodule.{so,a} and libgthread.{so,a}
Installed Directories: /usr/include/glib-1.2 and /usr/lib/glib

Short Descriptions

glib-config

is a tool that is used by configure scripts to determine the compiler and linker flags that should be used to compile and link programs that use GLib.

libglib.{so,a}

libraries contain a low-level core library for the GIMP Toolkit.

GLib-2.10.3

Introduction to GLib

The GLib package contains a low-level core library. This is useful for providing data structure handling for C, portability wrappers and interfaces for such runtime functionality as an event loop, threads, dynamic loading, and an object system.

Package Information

GLib Dependencies

Required

pkg-config-0.20

Optional

GTK-Doc-1.6

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/glib2

Installation of GLib

Install GLib by running the following commands:

./configure --prefix=/usr &&
make

To test the results, issue: make check.

Now, as the root user:

make install

Command Explanations

--enable-gtk-doc: Use this parameter if GTK-Doc is installed and you wish to rebuild the API documentation.

Configuring GLib

Configuration Information

By default, GLib assumes that all filenames are in the UTF-8 charset. See the Wrong Filename Encoding section of the Locale Related Issues page for more details on this kind of issue. In order to tell GLib and applications that use it that filenames are in the default locale encoding, set the variable G_FILENAME_ENCODING to the value "@locale":

cat > /etc/profile.d/glib2-locale.sh << "EOF"
# Use the current locale charset for filenames
# in applications using GLib
export G_FILENAME_ENCODING=@locale
EOF

Contents

Installed Programs: glib-genmarshal, glib-gettextize, glib-mkenums, and gobject-query
Installed Libraries: libglib-2.0.so, libgobject-2.0.so, libgmodule-2.0.so, and libgthread-2.0.so
Installed Directories: /usr/include/glib-2.0, /usr/lib/glib-2.0, /usr/share/glib-2.0, /usr/share/gtk-doc/html/glib, and /usr/share/gtk-doc/html/gobject

Short Descriptions

glib-genmarshal

is a C code marshaller generation utility for GLib closures.

glib-gettextize

is a variant of the gettext internationalization utility.

glib-mkenums

is a C language enum description generation utility.

gobject-query

is a small utility that draws a tree of types.

GLib libraries

contain a low-level core library for the GIMP Toolkit.

LibIDL-0.8.7

Introduction to LibIDL

The libIDL package contains libraries for Interface Definition Language files. This is a specification for defining portable interfaces.

Package Information

LibIDL Dependencies

Required

GLib-2.10.3

Optional to Build Documentation

teTeX-3.0

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libidl

Installation of LibIDL

Install libIDL by running the following commands:

./configure --prefix=/usr &&
make

If you have teTeX installed and wish to build the documentation, issue the following commands:

make pdf &&
make ps &&
make html &&
makeinfo --plaintext libIDL2.texi >libIDL2.txt

This package does not come with a test suite.

Now, as the root user:

make install

If you built the documentation, issue the following commands as the root user to install it:

install -v -m755 -d /usr/share/doc/libIDL-0.8.7/html &&
install -v -m644 libIDL2.{pdf,dvi,ps,txt} README \
    /usr/share/doc/libIDL-0.8.7 &&
install -v -m644 libIDL2.html/* /usr/share/doc/libIDL-0.8.7/html

Contents

Installed Program: libIDL-config-2
Installed Library: libIDL-2.{so,a}
Installed Directories: /usr/include/libIDL-2.0/libIDL and /usr/share/doc/libIDL-0.8.7

Short Descriptions

libIDL-config-2

determines the compile and linker flags that should be used to compile and link programs that use libIDL-2.

libIDL-2.{so,a}

libraries provide the functions to create and maintain trees of CORBA Interface Definition Language (IDL) files.

Libcroco-0.6.1

Introduction to libcroco

The libcroco package contains libcroco libraries. This is useful for providing a CSS API.

Package Information

libcroco Dependencies

Required

GLib-2.10.3 and libxml2-2.6.26

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libcroco

Installation of libcroco

Install libcroco by running the following commands:

./configure --prefix=/usr &&
make

To test the results, issue: LD_LIBRARY_PATH=$(pwd)/src/.libs make test.

Now, as the root user:

make install &&
install -v -m755 -d /usr/share/doc/libcroco-0.6.1/examples &&
install -v -m644 README docs/usage.txt \
    /usr/share/doc/libcroco-0.6.1 &&
install -v -m644 docs/examples/*.c \
    /usr/share/doc/libcroco-0.6.1/examples

Contents

Installed Programs: croco-0.6-config and csslint-0.6
Installed Library: libcroco-0.6.{so,a}
Installed Directories: /usr/include/libcroco-0.6.1 and /usr/share/doc/libcroco-0.6.1

libgsf-1.14.1

Introduction to libgsf

The libgsf package contains libgsf-1 libraries. These are useful for providing an extensible input/output abstraction layer for structured file formats.

Package Information

libgsf Dependencies

Required

GLib-2.10.3, libxml2-2.6.26, and XML::Parser-2.34

Optional

GConf-2.14.0 (required to build the gsf-office-thumbnailer program), GNOME Virtual File System-2.14.2 (required to build the libgsf-gnome-1.so library which provides GNOME-2 support), and GTK-Doc-1.6

Note: you need to build the libgsf-gnome-1.so library if you plan on building Gnumeric-1.6.3 with GNOME support.

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libgsf

Installation of libgsf

Install libgsf by running the following commands:

./configure --prefix=/usr &&
make

Running make check will build a battery of test programs which are built using the just-created libgsf-1 library. All the programs should build successfully with no errors displayed.

Now, as the root user:

make install

Command Explanations

--sysconfdir=/etc/gnome/2.14.3: Pass this parameter to the configure script if you have GNOME-2 installed so that the GConf schema files are installed in the correct location.

--enable-gtk-doc: Use this parameter if GTK-Doc is installed and you wish to rebuild the API documentation.

Contents

Installed Program: gsf-office-thumbnailer (optional)
Installed Libraries: libgsf-1.{so,a} and optionally, libgsf-gnome-1.{so,a}
Installed Directories: /usr/include/libgsf-1 and /usr/share/gtk-doc/html/gsf

libglade-2.6.0

Introduction to libglade

The libglade package contains libglade libraries. These are useful for loading Glade interface files in a program at runtime.

Package Information

libglade Dependencies

Required

libxml2-2.6.26 and GTK+-2.8.20

Optional

Python-2.4.4 and GTK-Doc-1.6

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libglade

Installation of libglade

Install libglade by running the following commands:

./configure --prefix=/usr &&
make

To test the results, issue: make check.

Now, as the root user:

make install

Command Explanations

--enable-gtk-doc: Use this parameter if GTK-Doc is installed and you wish to rebuild the API documentation.

Contents

Installed Program: libglade-convert (requires python)
Installed Library: libglade-2.0.{so,a}
Installed Directories: /usr/include/libglade-2.0, /usr/share/xml/libglade, and /usr/share/gtk-doc/html/libglade

Short Descriptions

libglade-convert

is used to convert old Glade interface files to Glade-2.0 standards.

libglade-2.0.{so,a}

contain the functions necessary to load Glade interface files.

Expat-2.0.0

Introduction to Expat

The Expat package contains a stream oriented C library for parsing XML.

Package Information

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/expat

Installation of Expat

Install Expat by running the following commands:

./configure --prefix=/usr &&
make

Now, as the root user:

make install &&
install -v -m755 -d /usr/share/doc/expat-2.0.0 &&
install -v -m644 doc/*.{html,png,css} /usr/share/doc/expat-2.0.0

To test the results, issue: make check as an unprivileged user. Note this must be done after the package is installed.

Contents

Installed Program: xmlwf
Installed Library: libexpat.{so,a}
Installed Directory: /usr/share/doc/expat-2.0.0

Short Descriptions

xmlwf

is a non-validating utility to check whether or not XML documents are well formed.

libexpat.{so,a}

contains API functions for parsing XML.

libESMTP-1.0.4

Introduction to libESMTP

The libESMTP package contains the libESMTP libraries which are used by some programs to manage email submission to a mail transport layer.

Package Information

libESMTP Dependencies

Optional

OpenSSL-0.9.8d

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libesmtp

Installation of libESMTP

Install libESMTP by running the following commands:

./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Contents

Installed Program: libesmtp-config
Installed Libraries: libesmtp.{so,a} and libESMTP SASL plugins
Installed Directory: /usr/lib/esmtp-plugins

Short Descriptions

libesmtp-config

displays version information and the options used to compile libESMTP.

libesmtp.{so,a}

is used to manage submission of electronic mail to a Mail Transport Agent.

libesmtp SASL plugins

are used to integrate libesmtp with SASL authentication.

Aspell-0.60.4

Introduction to Aspell

The Aspell package contains an interactive spell checking program and the Aspell libraries. Aspell can either be used as a library or as an independent spell checker.

Package Information

Additional Downloads

You'll need to download at least one dictionary. The link below will take you to a page containing links to dictionaries in many languages.

Aspell Dependencies

Required

which-2.16

Optional

teTeX-3.0

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/aspell

Installation of Aspell

Install Aspell by running the following commands:

./configure --prefix=/usr &&
make

Pre-built HTML documentation is included in the package. If you have teTeX installed and you wish to build additional formats of the documentation, issue any or all of the following commands:

make -C manual pdf &&
make -C manual pdf &&
make -C manual ps &&
cd manual &&
makeinfo --plaintext -o aspell.txt aspell.texi &&
makeinfo --plaintext -o aspell-dev.txt aspell-dev.texi &&
cd ..

This package does not come with a test suite.

Now, as the root user:

make install &&
install -v -m755 -d /usr/share/doc/aspell-0.60.4/aspell{,-dev}.html &&
install -v -m644 manual/aspell.html/* \
    /usr/share/doc/aspell-0.60.4/aspell.html &&
install -v -m644 manual/aspell-dev.html/* \
    /usr/share/doc/aspell-0.60.4/aspell-dev.html

If you built additional formats of the documentation, install them by issuing the following command as the root user:

install -v -m644 manual/aspell{,-dev}.{ps,pdf,dvi,txt} \
    /usr/share/doc/aspell-0.60.4

If you do not plan to install Ispell, then copy the wrapper script ispell:

install -v -m 755 scripts/ispell /usr/bin/

If you do not plan to install Spell, then copy the wrapper script spell:

install -v -m 755 scripts/spell /usr/bin/

Command Explanations

make -C manual pdf: This command is listed twice as the first time it runs it will display an error and abort, although it creates the requested file. Running the command again ensures the other file is also created.

Configuring Aspell

Configuration Information

After Aspell is installed, you must set up at least one dictionary. Install one or more dictionaries by running the following commands:

./configure &&
make

Now, as the root user:

make install

Contents

Installed Programs: aspell, aspell-import, precat, preunzip, prezip, prezip-bin, pspell-config, run-with-aspell, word-list-compress and optionally, ispell and spell
Installed Libraries: libaspell.so and libpspell.so
Installed Directories: /usr/include/pspell and /usr/lib/aspell-0.60

Short Descriptions

aspell

is a utility that can function as an ispell -a replacement, as an independent spell checker, as a test utility to test out Aspell features, and as a utility for managing dictionaries.

ispell

is a wrapper around aspell to invoke it in ispell compatible mode.

spell

is a wrapper around aspell to invoke it in spell compatible mode.

aspell-import

imports old personal dictionaries into Aspell.

precat

decompresses a prezipped file to stdout.

preunzip

decompresses a prezipped file.

prezip

is a prefix delta compressor, used to compress sorted word lists or other similar text files.

prezip-bin

is called by the various wrapper scripts to perform the actual compressing and decompressing.

pspell-config

displays information about the libpspell installation, mostly for use in build scripts.

run-with-aspell

is a script to help use Aspell as an ispell replacement.

word-list-compress

compresses or decompresses sorted word lists for use with the Aspell spell checker.

libaspell.so

contains spell checking API functions.

libpspell.so

is an interface to the libaspell library. All the spell checking functionality is now in libaspell but this library is included for backward compatibility.

SLIB-3a3

Introduction to SLIB

The SLIB package is a portable library for the Scheme programming language. It provides a platform independent framework for using “packages” of Scheme procedures and syntax. SLIB contains useful packages for all Scheme implementations, including Guile. Its catalog can be transparently extended to accommodate packages specific to a site, implementation, user or directory.

Package Information

  • Download (HTTP): http://swiss.csail.mit.edu/ftpdir/scm/OLD/slib3a3.tar.gz

  • Download (FTP):

  • Download MD5 sum: eec6e9193c3c86254f7176dd8a833c4c

  • Download size: 846 KB

  • Estimated disk space required: 19.5 MB (includes building and installing all docs)

  • Estimated build time: less than 0.1 SBU

Additional Downloads

SLIB Dependencies

Required

Guile-1.6.7

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/slib

Installation of SLIB

Install SLIB by issuing the following commands:

patch -Np1 -i ../slib-3a3-blfs_install-2.patch &&
make

If you have teTeX installed and wish to build PDF, Postscript, HTML and text documentation, issue any or all of the following commands:

make pdfdocs &&
make psdocs &&
make htmldocs &&
make txtdocs

This package does not come with a functional test suite.

Now, as the root user:

make prefix=/usr/ install &&

ln -v -s ../slib /usr/share/guile/1.6 &&

make prefix=/usr/ catalogs &&

mv -v /usr/share/guile/1.6/slibcat /usr/share/guile &&
ln -v -s ../slibcat /usr/share/guile/1.6 &&

make prefix=/usr/ installinfo

Command Explanations

make prefix=/usr/ catalogs: This command builds the SLIB Scheme implementation catalog.

make prefix=/usr/ installinfo: This commands installs the info documentation.

Contents

Installed Program: slib
Installed Libraries: a Scheme library system
Installed Directory: /usr/share/guile/slib and /usr/share/doc/slib-3a3

Short Descriptions

slib

is a shell script used to initialize SLIB in a named Scheme implementation. It can also be used to initialize an SLIB session using a given executable.

G-Wrap-1.3.4

Introduction to G-Wrap

The G-Wrap package contains tools for exporting C libraries into Scheme interpreters.

Package Information

G-Wrap Dependencies

Required

SLIB-3a3 and GLib-1.2.10

Optional

guile-gtk and GCC-4.0.3 (build Java so that libffi is built)

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gwrap

Installation of G-Wrap

Install G-Wrap by running the following commands:

./configure --prefix=/usr &&
make

If you have teTeX-3.0 installed and wish to create alternate formats of the documentation, issue the following commands:

cd doc &&
texi2pdf g-wrap.texi &&
texi2html g-wrap.texi &&
makeinfo --plaintext -o g-wrap.txt g-wrap.texi &&
mv texinfo.tex texinfo.tex.SAVE &&
texi2dvi g-wrap.texi &&
dvips -o g-wrap.ps g-wrap.dvi &&
cd ..

To test the results, issue: make check.

Now, as the root user:

make install

If you created the alternate formats of the documentation, install it using the following commands as the root user:

install -v -m755 -d /usr/share/doc/g-wrap-1.3.4 &&
install -v -m644 doc/g-wrap.{pdf,html,txt,dvi,ps} \
                 /usr/share/doc/g-wrap-1.3.4

Contents

Installed Program: g-wrap-config
Installed Libraries: libgw-glib.{so,a}, libgw-gtk.{so,a}, libgw-standard.{so,a}, libgw-wct.{so,a}, libgwrap-glib.{so,a} and libgwrap-wct.{so,a}
Installed Directories: /usr/include/g-wrap, /usr/share/doc/g-wrap-1.3.4 and /usr/share/guile/site

Short Descriptions

g-wrap-config

is a tool to generate CFLAGS for linking C code to the Scheme runtime libraries.

LZO-2.02

Introduction to LZO

LZO is a data compression library which is suitable for data decompression and compression in real-time. This means it favors speed over compression ratio.

Package Information

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/lzo

Installation of LZO

Install LZO by running the following commands:

./configure --prefix=/usr --enable-shared &&
make

To test the results, issue make check. All the checks should pass. Now issue make test to run the full suite of tests.

Now, as the root user:

make install &&
install -v -m755 -d /usr/share/doc/lzo-2.02 &&
install -v -m644 doc/* /usr/share/doc/lzo-2.02

Contents

Installed Programs: None
Installed Library: liblzo2.{so,a}
Installed Directory: /usr/include/lzo and /usr/share/doc/lzo-2.02

Short Descriptions

liblzo2.{so,a}

is a data compression and decompression library.

libusb-0.1.12

Introduction to libusb

The libusb package contains a library used by some applications for USB device access.

Package Information

  • Download (HTTP): http://downloads.sourceforge.net/libusb/libusb-0.1.12.tar.gz

  • Download (FTP):

  • Download MD5 sum: caf182cbc7565dac0fd72155919672e6

  • Download size: 389 KB

  • Estimated disk space required: 8.4 MB (includes installing all documentation)

  • Estimated build time: 0.3 SBU (includes building all documentation)

libusb Dependencies

Optional

pkg-config-0.20

Optional (Required to Build the HTML User Manual)

OpenJade-1.3.2 and DocBOOK SGML DTD-4.2

Optional (Required to Build the API Documentation)

Doxygen-1.4.6 and Graphviz-2.8

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libusb

Installation of libusb

Install libusb by running the following commands:

./configure --prefix=/usr --disable-build-docs &&
make

If you wish to build the API documentation (see the required dependencies), issue the following command:

make apidox

To test the results, issue make -k check.

Now, as the root user:

make install

If you built the HTML user manual (by having the required dependencies installed and removing the --disable-build-docs parameter from the configure command), install it using the following commands as the root user:

install -v -d -m755 /usr/share/doc/libusb-0.1.12/html &&
install -v -m644 doc/html/* /usr/share/doc/libusb-0.1.12/html

If you built the API documentation, install it using the following commands as the root user:

install -v -d -m755 /usr/share/doc/libusb-0.1.12/apidocs &&
install -v -m644 apidocs/html/* \
    /usr/share/doc/libusb-0.1.12/apidocs

Command Explanations

--disable-build-docs: This switch avoids building the HTML user manual. Remove it if you have the required dependencies installed and wish to build the manual.

Configuring Libusb

To access raw USB devices (those not treated as a disk by the mass-storage driver), appropriate support must be available in the kernel. Check your kernel configuration for Device Drivers ⇒ USB support ⇒ Support for Host-side USB. Select any USB hardware device drivers you may need on the same page.

To have raw USB devices set up properly, add the following udev rule and add any users that need to access raw USB devices to the "usb" group.

cat > /etc/udev/rules.d/23-usb.rules << "EOF"
# Set group ownership for raw USB devices
SUBSYSTEM=="usb_device", GROUP="usb"
EOF

Contents

Installed Program: libusb-config
Installed Libraries: libusb.{so,a} and libusbpp.{so,a}
Installed Directory: /usr/share/doc/libusb-0.1.12

Short Descriptions

libusb-config

is a script that provides the right compiler and linker flags for programs using libusb.

libusb.{so,a}

libraries contain C functions for accessing USB hardware.

ISO Codes-0.58-1

Introduction to ISO Codes

The ISO Codes package contains a list of country, language and currency names. This is useful when used as a central database for accessing this data.

Package Information

ISO Codes Dependencies

Required

Python-2.4.4

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/iso-codes

Installation of ISO Codes

Install ISO Codes by running the following commands:

./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Contents

Installed Programs: None
Installed Libraries: None
Installed Directories: /usr/share/iso-codes, /usr/share/xml/iso-codes and many directories in the /usr/share/locale hierarchy

GMime-2.2.2

Introduction to GMime

The GMime package contains a set of utilities for parsing and creating messages using the Multipurpose Internet Mail Extension (MIME) as defined by the applicable RFCs. See the GMime web site for the RFCs resourced. This is useful as it provides an API which adheres to the MIME specification as closely as possible while also providing programmers with an extremely easy to use interface to the API functions.

Package Information

GMime Dependencies

Required

GLib-2.10.3

Optional

Gtk# (requires a .NET framework: Mono or DotGNU Portable.NET)

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gmime

Installation of GMime

Install GMime by running the following commands:

./configure --prefix=/usr &&
make

This package does not come with a test suite that provides meaningful results.

This package will overwrite the uudecode and uuencode programs installed by the sharutils package (or any other package that may install these programs) if they exist in /usr/bin. If you wish to preserve the existing programs, ensure you rename them before issuing the following commands.

Now, as the root user:

make install &&
install -v -m755 -d \
    /usr/share/doc/gmime-2.2.2/{tutorial,examples,tests} &&
install -v -m644 README /usr/share/doc/gmime-2.2.2 &&
install -v -m644 examples/{README,{basic,imap}-example.c} \
    /usr/share/doc/gmime-2.2.2/examples &&
install -v -m755 examples/{basic,imap}-example \
    /usr/share/doc/gmime-2.2.2/examples &&
install -v -m644 tests/test-{best,html,iconv,mbox,mime,parser}.c \
                 tests/test{-{partial,pgp{,mime},streams}.c,?.eml} \
    /usr/share/doc/gmime-2.2.2/tests &&
install -v -m755 tests/test-{best,html,iconv,mbox,mime,parser} \
                 tests/test-{partial,pgp{,mime},streams} \
    /usr/share/doc/gmime-2.2.2/tests &&
cp -v -R docs/tutorial/html/* /usr/share/doc/gmime-2.2.2/tutorial

Contents

Installed Programs: gmime-config, uudecode and uuencode
Installed Libraries: libgmime-2.0.{so,a} and optionally, Mono bindings
Installed Directories: /usr/include/gmime-2.0, /usr/lib/mono/gac/gmime-sharp, /usr/lib/mono/gmime-sharp, /usr/share/doc/gmime-2.2.2 and /usr/share/gtk-doc/html/gmime

Short Descriptions

gmime-config

is used to gather information about how and where GMime was installed. It is typically used by other programs seeking to link to the GMime library.

uudecode

is used to decode files or data encoded with uuencode.

uuencode

is a method of encoding binary data into 7-bit ASCII data.

libgmime-2.0.{so,a}

contains API functions used by programs that need to adhere to the MIME standards.

Libidn-0.6.3

Introduction to Libidn

Libidn is a package designed for internationalized string handling based on the Stringprep, Punycode, IDNA and TLD specifications defined by the Internet Engineering Task Force (IETF) Internationalized Domain Names (IDN) working group, used for internationalized domain names. This is useful for converting data from the system's native representation into UTF-8, transforming Unicode strings into ASCII strings, allowing applications to use certain ASCII name labels (beginning with a special prefix) to represent non-ASCII name labels, and converting entire domain names to and from the ASCII Compatible Encoding (ACE) form.

Package Information

Libidn Dependencies

Optional

Emacs-21.4a, pkg-config-0.20, GTK-Doc-1.6, a Java compiler—one of (looked for in this order) GCC-4.0.3 (for gcj and you must also have the gjdoc package installed), Jikes or JDK-1.5.0_10, and a C# compiler—Mono or DotGNU Portable.NET

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libidn

Installation of Libidn

Install Libidn by running the following commands:

./configure --prefix=/usr &&
make

If you have teTeX-3.0 installed and wish to create a text version of the documentation, issue the following commands:

cd doc &&
makeinfo --plaintext -o libidn.txt libidn.texi &&
cd ..

To test the results, issue: make check.

Now, as the root user:

make install &&
find doc -name "Makefile*" -exec rm {} \; &&

install -v -m755 -d \
    /usr/share/doc/libidn-0.6.3/{api,java,specifications,tld} &&
install -v -m644 doc/components* \
                 doc/libidn.{pdf,ps,html} \
    /usr/share/doc/libidn-0.6.3 &&
install -v -m644 doc/reference/html/* \
    /usr/share/doc/libidn-0.6.3/api &&
install -v -m644 doc/specifications/* \
    /usr/share/doc/libidn-0.6.3/specifications &&
install -v -m644 doc/tld/* /usr/share/doc/libidn-0.6.3/tld &&
cp -v -R doc/java/* /usr/share/doc/libidn-0.6.3/java

If you created the text documentation, install it using the following command as the root user:

install -v -m644 doc/libidn.txt /usr/share/doc/libidn-0.6.3

Command Explanations

--enable-gtk-doc: Use this parameter if GTK-Doc is installed and you wish to rebuild the API documentation.

Contents

Installed Program: idn
Installed Libraries: libidn.{so,a} and optionally, Java and C# modules
Installed Directory: /usr/share/doc/libidn-0.6.3

Short Descriptions

idn

is a command line interface to the internationalized domain name library.

libidn.{so,a}

contains a generic Stringprep implementation that does Unicode 3.2 NFKC normalization, mapping and prohibition of characters, and bidirectional character handling. Profiles for Nameprep, iSCSI, SASL and XMPP are included as well as support for Punycode and ASCII Compatible Encoding (ACE) via IDNA. A mechanism to define Top-Level Domain (TLD) specific validation tables, and to compare strings against those tables, as well as default tables for some TLDs are included.

libdrm-2.0.1

Introduction to libdrm

libdrm provides core library routines for the X Window System to directly interface with video hardware using the Linux kernel's Direct Rendering Modules.

Package Information

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libdrm

Installation of libdrm

Note

This package should only be built if you are installing Xorg-7.1. If you have installed or will be installing Xorg-6.9.0 or XFree86, it is provided by those packages and should not be installed here. Ensure that you have the XORG_CONFIG and XORG_PREFIX variables set as described in the Xorg-7.1 page.

Install libdrm by running the following commands:

./configure --prefix=$XORG_PREFIX &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Contents

Installed Libraries: libdrm.{so,a}

Short Descriptions

libdrm.{so,a}

contains the Direct Rendering Module library functions.

Chapter 9. Graphics and Font Libraries

Depending on what your system will be used for, you may or may not require the graphics and font libraries. Most desktop machines will want them for use with graphical applications. Most servers on the other hand, will not require them.

libjpeg-6b

Introduction to libjpeg

The libjpeg package contains libraries that allow compression of image files based on the Joint Photographic Experts Group standard. It is a "lossy" compression algorithm.

Package Information

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libjpeg

Installation of libjpeg

Install libjpeg by running the following commands:

./configure --prefix=/usr --enable-static --enable-shared &&
make

To test the results, issue: make test.

Now, as the root user:

make install

Command Explanations

--enable-static --enable-shared: These switches tell libjpeg to build both shared and static libraries.

Configuring libjpeg

Configuration Information

As with most libraries, there is no configuration to do, save that the library directory, i.e., /opt/lib or /usr/local/lib should appear in /etc/ld.so.conf so that ldd can find the shared libraries. After checking that this is the case, /sbin/ldconfig should be run while logged in as root.

Contents

Installed Programs: cjpeg, djpeg, jpegtran, rdjpgcom, and wrjpgcom
Installed Library: libjpeg.{so,a}
Installed Directories: None

Short Descriptions

cjpeg

compresses image files to produce a JPEG/JFIF file on the standard output. Currently supported input file formats are: PPM (PBMPLUS color format), PGM (PBMPLUS gray-scale format), BMP, and Targa.

djpeg

decompresses image files from JPEG/JFIF format to either PPM (PBMPLUS color format), PGM (PBMPLUS gray-scale format), BMP, or Targa format.

jpegtran

is used for lossless transformation of JPEG files.

rdjpgcom

displays text comments from within a JPEG file.

wrjpgcom

inserts text comments into a JPEG file.

libjpeg.{so,a}

library is used by many programs for reading and writing JPEG format files.

libpng-1.2.12

Introduction to libpng

The libpng package contains libraries used by other programs for reading and writing PNG files.

Package Information

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libpng

Installation of libpng

Install libpng by running the following commands:

./configure --prefix=/usr &&
make

To test the results, issue: make check.

Now, as the root user:

make install &&
install -v -m755 -d /usr/share/doc/libpng-1.2.12 &&
install -v -m644 README libpng.txt /usr/share/doc/libpng-1.2.12

Configuring libpng

Configuration Information

As with most libraries, there is no configuration to do, save that the library directory, i.e., /opt/lib or /usr/local/lib should appear in /etc/ld.so.conf so that ldd can find the shared libraries. After checking that this is the case, /sbin/ldconfig should be run while logged in as root.

Contents

Installed Programs: libpng-config and libpng12-config
Installed Libraries: libpng.so and libpng12.{so,a}
Installed Directory: /usr/include/libpng12 and /usr/share/doc/libpng-1.2.12

Short Descriptions

libpng-config

is a symlink to libpng12-config.

libpng12-config

provides configuration information for libpng.

libpng.so and libpng12.{so,a}

are a collection of routines used to create and manipulate PNG format graphics files. The PNG format was designed as a replacement for GIF and, to a lesser extent, TIFF, with many improvements and extensions and lack of patent problems.

LibTIFF-3.8.2

Introduction to LibTIFF

The LibTIFF package contains the TIFF libraries and associated utilities. The libraries are used by many programs for reading and writing TIFF files and the utilities are useful for general work with TIFF files.

Package Information

LibTIFF Dependencies

Optional

libjpeg-6b, X Window System, and freeglut-2.4.0

Note that if you installed the optional MesaGLUT package with the MesaLib-6.5 package during an Xorg7 installation, a GLUT library is already installed and you don't need freeglut.

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libtiff

Installation of LibTIFF

Install LibTIFF by running the following commands:

./configure --prefix=/usr &&
make

To test the results, issue: make check.

Now, as the root user:

make install

Contents

Installed Programs: bmp2tiff, fax2ps, fax2tiff, gif2tiff, pal2rgb, ppm2tiff, ras2tiff, raw2tiff, rgb2ycbcr, thumbnail, tiff2bw, tiff2pdf, tiff2ps, tiff2rgba, tiffcmp, tiffcp, tiffdither, tiffdump, tiffgt, tiffinfo, tiffmedian, tiffset, and tiffsplit
Installed Libraries: libtiff.{so,a} and libtiffxx.{so,a}
Installed Directory: /usr/share/doc/tiff-3.8.2

Short Descriptions

bmp2tiff

converts a Microsoft Windows Device Independent Bitmap image file to a TIFF image.

fax2ps

converts a TIFF facsimile to compressed PostScript file.

fax2tiff

creates a TIFF Class F fax file from raw fax data.

gif2tiff

creates a TIFF file from a GIF87 format image file.

pal2rgb

converts a palette color TIFF image to a full color image.

ppm2tiff

creates a TIFF file from a PPM image file.

ras2tiff

creates a TIFF file from a Sun rasterfile.

raw2tiff

converts a raw byte sequence into TIFF.

rgb2ycbcr

converts non-YCbCr TIFF images to YCbCr TIFF images.

thumbnail

creates a TIFF file with thumbnail images.

tiff2bw

converts a color TIFF image to grayscale.

tiff2pdf

converts a TIFF image to a PDF document.

tiff2ps

converts a TIFF image to a PostScript file.

tiff2rgba

converts a wide variety of TIFF images into an RGBA TIFF image.

tiffcmp

compares two TIFF files.

tiffcp

copies (and possibly converts) a TIFF file.

tiffdither

converts a grayscale image to bilevel using dithering.

tiffdump

prints verbatim information about TIFF files.

tiffgt

displays an image stored in a TIFF file in an X window.

tiffinfo

prints information about TIFF files.

tiffmedian

applies the median cut algorithm to data in a TIFF file.

tiffset

sets the value of a TIFF header to a specified value.

tiffsplit

splits a multi-image TIFF into single-image TIFF files.

libtiff.{so,a}

contains the API functions used by the libtiff programs as well as other programs to read and write TIFF files.

libtiffxx.{so,a}

contains the C++ API functions used by programs to read and write TIFF files.

giflib-4.1.4

Introduction to giflib

The giflib package contains libraries for reading and writing GIFs as well as programs for converting and working with GIF files. The libraries are useful for any graphics program wishing to deal with GIF files while the programs are useful for conversion purposes as well as cleaning up images.

Package Information

giflib Dependencies

Optional

X Window System

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/giflib

Installation of giflib

Install giflib by running the following commands:

./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install &&
install -v -m755 -d /usr/share/doc/giflib-4.1.4/html &&
install -v -m644 doc/*.{png,html} \
    /usr/share/doc/giflib-4.1.4/html &&
install -v -m644 doc/*.txt \
    /usr/share/doc/giflib-4.1.4

Contents

Installed Programs: gif2epsn, gif2ps, gif2rgb, gif2x11, gifasm, gifbg, gifburst, gifclip, gifclrmp, gifcolor, gifcomb, gifcompose, giffiltr, giffix, gifflip, gifhisto, gifinfo, gifinter, gifinto, gifovly, gifpos, gifrotat, gifrsize, gifspnge, giftext, gifwedge, icon2gif, raw2gif, rgb2gif, and text2gif
Installed Library: libgif.{so,a}
Installed Directory: /usr/share/doc/giflib-4.1.4

Short Descriptions

gif2epsn

dumps images saved as GIF files on Epson type printers.

gif2ps

prints GIF files on laser printers supporting PostScript.

gif2rgb

converts images saved as GIF to 24-bit RGB images.

gif2x11

displays images saved as GIF files under X Window System.

gifasm

assembles multiple GIFs into one, or burst a multiple-image GIF.

gifbg

generates a single-color test pattern GIF.

gifburst

bursts a GIF image into subrectangles.

gifclip

clips or crops a GIF image.

gifclrmp

modifies GIF image colormaps.

gifcolor

generates color test patterns.

gifcomb

combines two GIF images of exactly the same size into one.

gifcompose

uses giflib tools to compose images.

giffiltr

is a template for filtering a GIF sequentially.

giffix

clumsily attempts to fix truncated GIF images.

gifflip

flips a GIF image along the X or Y axis or rotates an image by 90 degrees.

gifhisto

generate a color-frequency histogram from a GIF.

gifinfo

gives information about a GIF file.

gifinter

converts between interlaced and non-interlaced images.

gifinto

is an end-of-pipe fitting for GIF-processing pipelines.

gifovly

generates one composite GIF from a multiple-image GIF.

gifpos

changes a GIF's screen size or reconditions it.

gifrotat

rotates a GIF through any desired angle.

gifrsize

resizes a GIF by deletion or duplication of bits.

gifspnge

is a template for filtering a GIF with in-core operations.

giftext

prints (text only) general information about a GIF file.

gifwedge

creates a test GIF image resembling a color monitor test pattern.

icon2gif

is a converter/deconverter to/from an editable text format.

raw2gif

converts raw 8-bit image data into GIF files.

rgb2gif

converts 24 bit images to a GIF image using color quantization.

text2gif

generates GIF images out of regular text in 8x8 font.

libgif.{so,a}

contains API functions required by the giflib programs and any other programs needing library functionality to read, write and manipulate GIF images.

little cms-1.15

Introduction to little cms

The little cms library is used by other programs to provide color management facilities.

Package Information

  • Download (HTTP): http://www.littlecms.com/lcms-1.15.tar.gz

  • Download (FTP):

  • Download MD5 sum: 76c921973fdea4f880944a024197f924

  • Download size: 777 KB

  • Estimated disk space required: 20.7 MB

  • Estimated build time: 0.4 SBU (includes building the Python module)

little cms Dependencies

Optional

LibTIFF-3.8.2, libjpeg-6b and Python-2.4.4 (with SWIG also)

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/lcms

Installation of little cms

Install little cms by running the following commands:

./configure --prefix=/usr &&
make

To test the results, issue: make check.

Now, as the root user:

make install &&
install -v -m755 -d /usr/share/doc/lcms-1.15 &&
install -v -m644 README.1ST doc/* /usr/share/doc/lcms-1.15

Contents

Installed Programs: icc2ps, icclink, icctrans, wtpt and optionally, jpegicc, tiffdiff and tifficc
Installed Libraries: liblcms.{so,a} and the optional _lcms.so Python module
Installed Directory: /usr/share/doc/lcms-1.15

Short Descriptions

icc2ps

generates PostScript CRD or CSA from ICC profiles.

icclink

links two or more profiles into a single device link profile.

icctrans

is a color space conversion calculator.

jpegicc

is an ICC profile applier for JPEG files.

tifficc

is an ICC profile applier for TIFF files.

wtpt

shows media white of profiles, identifying black body locus.

liblcms.{so,a}

is used by the lcms programs as well as other programs to provide color management facilities.

libmng-1.0.9

Introduction to libmng

The libmng libraries are used by programs wanting to read and write Multiple-image Network Graphics (MNG) files which are the animation equivalents to PNG files.

Package Information

libmng Dependencies

Required

libjpeg-6b and little cms-1.15

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libmng

Installation of libmng

Install libmng by running the following commands:

cp makefiles/makefile.linux Makefile &&
make

This package does not come with a test suite.

Now, as the root user:

make prefix=/usr install &&
install -v -m644 doc/man/*.3 /usr/share/man/man3 &&
install -v -m644 doc/man/*.5 /usr/share/man/man5 &&
install -v -m755 -d /usr/share/doc/libmng-1.0.9 &&
install -v -m644 doc/*.{png,txt} /usr/share/doc/libmng-1.0.9

Command Explanations

cp makefiles/makefile.linux Makefile: There are no autotools shipped with this package. The Linux Makefile is copied to the root of the source tree, facilitating the installation.

install ...: The documentation files are not installed by the installation procedure, so they are copied manually.

Contents

Installed Programs: None
Installed Library: libmng.{so,a}
Installed Directory: /usr/share/doc/libmng-1.0.9

Short Descriptions

libmng.{so,a}

provides functions for programs wishing to read and write MNG files which are animation files without the patent problems associated with certain other formats.

FreeType-2.1.10

Introduction to FreeType2

The FreeType2 package contains a library to allow applications to properly render TrueType fonts.

Package Information

Additional Downloads

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/freetype2

Installation of FreeType2

If you downloaded the additional documentation, unpack it into the source tree using the following command:

tar xf ../freetype-doc-2.1.10.tar.bz2 \
    --strip-components=2 -C docs

Install FreeType2 by running the following commands:

sed -i -r 's:.*(#.*BYTE.*) .*:\1:' \
     include/freetype/config/ftoption.h &&
./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install &&
install -v -m755 -d /usr/share/doc/freetype-2.1.10 &&
cp -v -R docs/* /usr/share/doc/freetype-2.1.10

Command Explanations

sed -i -r 's:.*(#.*BYTE.*) .*:\1:' include/freetype/config/ftoption.h: This command enables the built-in TrueType bytecode interpreter which in turn enables hinting of TrueType glyphs. Enabling the interpreter results in much better rendering of TrueType fonts.

Contents

Installed Program: freetype-config
Installed Library: libfreetype.{so,a}
Installed Directory: /usr/include/freetype2

Short Descriptions

freetype-config

is used to get FreeType compilation and linking information.

libfreetype.{so,a}

contains functions for rendering various font types, such as TrueType and Type1.

Fontconfig-2.3.2

Introduction to Fontconfig

The Fontconfig package is a library for configuring and customizing font access.

Package Information

Note

The numbering system of Fontconfig is unusual. The beta versions of the package are numbered with a 9x in the last portion of the release number. This means that 2.3.92 is a beta release and the most current release is of the form 2.3.2

Fontconfig Dependencies

Required

FreeType-2.1.10 and expat-2.0.0

Optional

DocBook-utils-0.6.14

Note

If you have DocBook-utils installed and you remove the --disable-docs parameter from the configure command below, you must have SGMLSpm-1.03ii and JadeTeX-3.13 installed also, or the Fontconfig build will fail.

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/Fontconfig

Installation of Fontconfig

Install Fontconfig by running the following commands:

./configure --prefix=/usr --sysconfdir=/etc \
    --disable-docs --without-add-fonts \
    --with-docdir=/usr/share/doc/fontconfig-2.3.2 &&
make

To test the results, issue: make check.

Now, as the root user:

make install &&
install -v -m644 doc/*.3 /usr/share/man/man3 &&
install -v -m644 doc/*.5 /usr/share/man/man5 &&
install -v -m755 \
        -d /usr/share/doc/fontconfig-2.3.2/fontconfig-devel &&
install -v -m644 doc/*.{html,pdf,txt} \
        /usr/share/doc/fontconfig-2.3.2 &&
install -v -m644 doc/fontconfig-devel/* \
        /usr/share/doc/fontconfig-2.3.2/fontconfig-devel

Command Explanations

--disable-docs: This switch avoids building the documentation (the release tarball includes pre-generated documentation).

--without-add-fonts: This switch disables the automatic search for X Window System fonts which, if found, may confuse some applications.

--with-docdir=/usr/share/doc/fontconfig-2.3.2: Though this parameter seems counter-intuitive following the preceding parameter to the configure command, it is used so that if the builder removes the --disable-docs parameter, the documentation will be installed in a versioned directory name instead of the default /usr/share/doc/fontconfig.

Configuring Fontconfig

Config Files

/etc/fonts/* and /etc/fonts/conf.d/*

Configuration Information

The configuration file for Fontconfig is /etc/fonts/fonts.conf. Generally you do not want to edit this file. To put a new font directory in the configuration, create (or update) the /etc/fonts/local.conf file with your local information. The default location of fonts in Fontconfig is:

  • /usr/share/fonts

  • ~/.fonts

More information about configuring Fontconfig can be found in the user's manual at http://fontconfig.org/fontconfig-user.html. There are additional configuration files shipped with Fontconfig in /etc/fonts/conf.d that will be enabled if their names begin with 2 numbers, e.g., /etc/fonts/conf.d/10-autohint.conf.

Note

X also includes an internal (and older) version of Fontconfig and unless it is explicitly disabled when building Xorg or XFree86, the internal version is created leaving two slightly incompatible libraries on your system. It is recommended that you only install one version.

Contents

Installed Programs: fc-cache, fc-list, and fc-match
Installed Library: libfontconfig.{so,a}
Installed Directories: /etc/fonts, /usr/include/fontconfig and /usr/share/doc/fontconfig-2.3.2

Short Descriptions

fc-cache

is used to create font information caches.

fc-list

is used to create font lists.

fc-match

is used to match available fonts, or find fonts that match a given pattern.

libfontconfig.{so,a}

contains functions used by the Fontconfig programs and also by other programs to configure or customize font access.

Libart_lgpl-2.3.17

Introduction to Libart_lgpl

The libart_lgpl package contains the libart libraries. These are useful for high-performance 2D graphics.

Package Information

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libart_lgpl

Installation of Libart_lgpl

Install libart_lgpl by running the following commands:

./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Contents

Installed Program: libart2-config
Installed Library: libart_lgpl_2.{so,a}
Installed Directory: /usr/include/libart-2.0

Short Descriptions

libart_lgpl_2.{so,a}

is used as the anti-aliased render engine for libgnomecanvas and as a graphics support library for many other packages.

librsvg-2.14.4

Introduction to librsvg

The librsvg package contains librsvg libraries and tools used to manipulate, convert and view Scalable Vector Graphic (SVG) images.

Package Information

librsvg Dependencies

Required

GTK+-2.8.20, libxml2-2.6.26, libart_lgpl-2.3.17, and popt-1.10.4

Recommended

Optional

GNOME Virtual File System-2.14.2, libgnomeprintui-2.12.1, Mozilla, GTK-Doc-1.6, and DocBook-utils-0.6.14

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/librsvg

Installation of librsvg

Install librsvg by running the following commands:

./configure --prefix=/usr --sysconfdir=/etc &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--disable-gtk-doc: This parameter prevents the rebuilding of documentation during the make command. It will also prevent the existing documentation in the source tree from being installed.

Contents

Installed Programs: rsvg, rsvg-convert and rsvg-view
Installed Libraries: librsvg-2.{so,a}, GTK+ modules and optionally a Mozilla plugin
Installed Directories: /usr/include/librsvg-2 and /usr/share/gtk-doc/html/rsvg

Short Descriptions

rsvg

is used to covert SVG images into PNG, JPEG and ICO raster images.

rsvg-view

is used to view an SVG file in an X window.

librsvg-2.{so,a}

libraries provide the functions to render Scalable Vector Graphics.

Imlib-1.9.15

Introduction to Imlib

The Imlib package contains image libraries. These are useful for loading, rendering and dithering a wide variety of image data formats.

Package Information

Imlib Dependencies

Required

X Window System, libjpeg-6b, LibTIFF-3.8.2, and giflib-4.1.4

Optional

GTK+-1.2.10

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/imlib

Installation of Imlib

Install Imlib by running the following commands:

./configure --prefix=/usr --sysconfdir=/etc/imlib &&
make

This package does not come with a test suite.

Now, as the root user:

make install &&
install -v -m755 -d /usr/share/doc/imlib-1.9.15 &&
install -v -m644 doc/{index.html,*.gif} /usr/share/doc/imlib-1.9.15

Command Explanations

--sysconfdir=/etc/imlib: This installs and combines the configuration files into /etc/imlib instead of /usr/etc.

Configuring Imlib

Config Files

/etc/imlib/imrc

Contents

Installed Programs: imlib-config and imlib_config
Installed Libraries: libgdk_imlib.{so,a}, libimlib-*.{so,a}, and libImlib.{so,a}
Installed Directories: /etc/imlib and /usr/share/doc/imlib-1.9.15

Short Descriptions

libimlib-*.{so,a}

provide the functions for programs to display and edit a wide variety of image data formats.

AAlib-1.4rc5

Introduction to AAlib

AAlib is a library to render any graphic into ASCII Art.

Package Information

AAlib Dependencies

Optional

X Window System, S-Lang-2.0.6, and GPM-1.20.1

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/aalib

Installation of AAlib

Install AAlib by running the following commands:

./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Contents

Installed Programs: aafire, aainfo, aalib-config, aasavefont, and aatest
Installed Library: libaa.{so,a}
Installed Directories: None

Short Descriptions

aafire

is little toy of AAlib, rendering an animated fire in ASCII Art.

aainfo

provides information for your current settings related to AAlib.

aalib-config

provides configuration info for AAlib.

aatest

shows the abilities of AAlib in a little test.

libaa.{so,a}

is a collection of routines to render any graphical input in portable format to ASCII Art. It can be used through many programs and has a very well documented API, so you can easily put it into your own programs.

Imlib2-1.2.2

Introduction to Imlib2

Imlib2 is a graphics library for fast file loading, saving, rendering and manipulation.

Package Information

Imlib2 Dependencies

Required

FreeType-2.1.10, libpng-1.2.12, and libjpeg-6b

Recommended

Optional

LibTIFF-3.8.2, giflib-4.1.4, and libid3tag

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/imlib2

Installation of Imlib2

Install Imlib2 by running the following commands:

./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install &&
install -v -m755 -d /usr/share/doc/imlib2-1.2.2 &&
install -v -m644 doc/{*.gif,index.html} \
    /usr/share/doc/imlib2-1.2.2

Command Explanations

--without-x: Add this parameter if you do not have an X Window System installed.

Contents

Installed Programs: imlib2_bumpmap, imlib2_colorspace, imlib2-config, imlib2_conv, imlib2_grab, imlib2_poly, imlib2_show, imlib2_test, and imlib2_view
Installed Libraries: libImlib2.{so,a} and various filters and image loader modules.
Installed Directories: /usr/lib/imlib2, /usr/share/doc/imlib2-1.2.2, and /usr/share/imlib2

Short Descriptions

libImlib2.{so,a}

provides the functions for programs to deal with various image data formats.

libexif-0.6.13

Introduction to libexif

The libexif package contains a library for parsing, editing, and saving EXIF data. Most digital cameras produce EXIF files, which are JPEG files with extra tags that contain information about the image. All EXIF tags described in EXIF standard 2.1 are supported.

Package Information

libexif Dependencies

Optional (to Build Documentation)

Doxygen-1.4.6 and Graphviz-2.8

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libexif

Installation of libexif

Install libexif by running the following commands:

sed -i 's/^install-data-local/@HAVE_DOXYGEN_TRUE@&/' \
            doc/Makefile.in &&
./configure --prefix=/usr \
            --with-doc-dir=/usr/share/doc/libexif-0.6.13 &&
make

To test the results, issue: make check.

Now, as the root user:

make install

Documentation was built and installed if you have the dependencies shown above installed. If you don't have the dependencies installed, there is a compressed tarball in the source tree doc directory that can be unpacked into /usr/share/doc/libexif-0.6.13.

Command Explanations

sed -i ... doc/Makefile.in: Installation of libexif will fail if Doxygen is not present on the system due to a packaging bug. The command does not affect the situation where Doxygen is installed.

Contents

Installed Programs: None
Installed Library: libexif.{so,a}
Installed Directory: /usr/include/libexif and /usr/share/doc/libexif-0.6.13

Short Descriptions

libexif.{so,a}

contains functions used for parsing, editing, and saving EXIF data.

FriBidi-0.10.7

Introduction to FriBidi

The FriBidi package is an implementation of the Unicode Bidirectional Algorithm (bidi). This is useful for supporting Arabic and Hebrew alphabets in other packages.

Package Information

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/fribidi

Installation of FriBidi

Install FriBidi by running the following commands:

./configure --prefix=/usr &&
make

To test the results, issue: make check.

Now, as the root user:

make install

Contents

Installed Programs: fribidi and fribidi-config
Installed Library: libfribidi.{so,a}
Installed Directory: /usr/include/fribidi

Short Descriptions

fribidi

is a command-line interface to the libfribidi library and can be used to convert a logical string to visual output.

fribidi-config

is used to acquire information about the installed libfribidi library.

libfribidi.{so,a}

contains functions used to implement the Unicode Bidirectional Algorithm.

Poppler-0.4.5

Introduction to Poppler

The Poppler package contains a PDF rendering library. This is useful for providing PDF rendering functionality as a shared library.

Package Information

Poppler Dependencies

Optional

pkg-config-0.20, libjpeg-6b, Fontconfig-2.3.2, cairo-1.2.4, GTK+-2.8.20, Qt-3.3.7, and Qt-4.x.x

If you're installing Poppler to support kdegraphics-3.5.6, you will need to have Qt-3.3.7 installed so that the libpoppler-qt library is built.

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/poppler

Installation of Poppler

Note

If you are installing a version of Poppler >= 5.1 to support an installation of Evince-0.5.3, note that command-line utilities and man pages are installed which will overwrite these same files installed by the Xpdf package. If you'd prefer to keep the Xpdf versions of these files, use the --bindir= and --mandir= parameters passed to the configure script to install these files to a safe location (e.g., $HOME or /tmp. An alternative method to not overwrite the command-line utilities is to use the --disable-utils parameter.

Install Poppler by running the following commands:

./configure --prefix=/usr --sysconfdir=/etc \
            --enable-opi \
            --enable-zlib \
            --disable-splash-output \
            --disable-cairo-output \
            --disable-poppler-glib --disable-gtk-test &&
make

This package does not come with a test suite.

Now, as the root user:

make install &&
install -v -m644 -D README /usr/share/doc/poppler-0.4.5/README

Command Explanations

--enable-opi: This parameter forces the build to include support for OPI comments.

--enable-zlib: This parameter forces the build to link with the system-installed libz library to enable compressed PDF functionality.

--disable-splash-output: This parameter disables building the Splash graphics backend. Remove this parameter if you have Fontconfig installed.

--disable-cairo-output: This parameter disables building the cairo graphics backend. Remove this parameter if you have cairo installed.

--disable-poppler-glib and --disable-gtk-test: These parameters disable building the GLib wrapper and GTK+ test program. Remove these parameters if you have GTK+-2 installed. Note that if you plan on building Evince-0.5.3, you must build the GLib wrapper.

Configuring Poppler

Config Files

/etc/xpdfrc

Contents

Installed Programs: None
Installed Libraries: libpoppler.{so,a}, libpoppler-glib.{so,a}, libpoppler-qt.{so,a} and libpoppler-qt4.{so,a}
Installed Directories: /usr/include/poppler and /usr/share/doc/poppler-0.4.5

Short Descriptions

libpoppler.{so,a}

contains the API functions to render PDF files.

libpoppler-glib.{so,a}

is a wrapper library used to interface the PDF rendering functions with GTK+.

libpoppler-qt.{so,a}

is a wrapper library used to interface the PDF rendering functions with Qt.

libpoppler-qt4.{so,a}

is a wrapper library used to interface the PDF rendering functions with Qt-4.

Chapter 10. General Utilities

This chapter contains various utilities that do not fit conveniently into other chapters. Programs include a command line calculator, several utilities for manipulating text and graphics, and a program to interface with a palm-pilot.

Bc-1.06

Introduction to Bc

The bc package contains an arbitrary precision numeric processing language.

Package Information

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/bc

Installation of Bc

Install bc by running the following commands:

sed -i '/PROTO.*readline/d' bc/scan.l &&
sed -i '/flex -I8/s/8//' configure &&
sed -i '/stdlib/a #include <string.h>' lib/number.c &&
sed -i 's/program.*save/static &/' bc/load.c &&
./configure --prefix=/usr --with-readline &&
make

To test bc, run the commands below. There is quite a bit of output, so you may want to redirect it to a file. There are a very small percentage of tests (10 of 12,144) that will indicate a roundoff error at the last digit.

echo "quit" | ./bc/bc -l Test/checklib.b

Now, as the root user:

make install

Command Explanations

sed -i '/PROTO.*readline/d' bc/scan.l: This command fixes the Readline library call.

sed -i '/flex -I8/s/8//' configure: This command fixes the Flex invocation.

sed -i '/stdlib/a #include <string.h>' lib/number.c: This command inserts a missing header.

sed -i 's/program.*save/static &/' bc/load.c: This command fixes a segfault when running bc with bc -l.

--with-readline: This option enables Readline support in interactive mode.

Contents

Installed Programs: bc and dc
Installed Libraries: None
Installed Directories: None

Short Descriptions

bc

is a calculator.

dc

is a reverse-polish calculator.

Rep-gtk-0.18

Introduction to Rep-gtk

The rep-gtk package contains a Lisp and GTK binding. This is useful for extending GTK-2 and GDK libraries with Lisp. Starting at rep-gtk-0.15, the package contains the bindings to GTK and uses the same instructions. Both can be installed, if needed.

Package Information

Additional Downloads

Rep-gtk Dependencies

Required

libglade-2.6.0 and librep-0.17

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/rep-gtk

Installation of Rep-gtk

Install rep-gtk by running the following commands:

patch -Np1 -i ../rep-gtk-0.18-gtk2.4-1.patch &&
./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Contents

Installed Programs: None
Installed Libraries: Lisp bindings
Installed Directory: /usr/lib/rep/i686-pc-linux-gnu/gui/

Short Descriptions

Lisp bindings

are libraries stored in /usr/lib/rep/i686-pc-linux-gnu/gui/ that assist communication between Lisp and the GTK libraries.

Compface-1.4

Introduction to Compface

Compface provides utilities and a library to convert from/to X-Face format, a 48x48 bitmap format used to carry thumbnails of email authors in a mail header.

Package Information

Additional Downloads

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/compface

Installation of Compface

Install Compface by running the following commands:

patch -Np1 -i ../compface-1.4-errno-2.patch &&
./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Contents

Installed Programs: compface and uncompface
Installed Library: libcompface.{so,a}
Installed Directories: None

Short Descriptions

compface

is a filter for generating highly compressed representations of 48x48x1 face image files.

uncompface

is an inverse filter which performs an inverse transformation with no loss of data.

libcompface.{so,a}

allows the compression and decompression algorithms to be used in other programs such as MTAs.

ImageMagick-6.2.8-0

Introduction to ImageMagick

ImageMagick is a collection of tools and libraries to read, write, and manipulate an image in various image formats. Image processing operations are available from the command line. Bindings to various programming languages are also available.

Package Information

The ImageMagick source releases are updated frequently and the version shown above may no longer be available from the download locations. You can download a more recent version and use the existing BLFS instructions to install it. Chances are that it will work just fine, but this has not been tested by the BLFS team. If the package version shown above is not available from the locations shown above, you can download it from the BLFS package server at http://anduin.linuxfromscratch.org/sources/BLFS/6.2.0/i/ImageMagick-6.2.8-0.tar.bz2.

ImageMagick Dependencies

Recommended

The optional dependencies listed below should be installed if you need support for the specific format or the conversion tool the dependency provides. Many of the dependencies' capabilities and uses are described in the “MAGICK DELEGATES” section of the README.txt file located in the source tree. Additional information about the dependencies can be found in the Install-unix.txt file located in the source tree as well as issuing the ./configure --help command. A summary of this information, as well as some additional notes can be viewed on-line at http://www.imagemagick.org/script/advanced-unix-installation.php.

Optional System Utilities

pkg-config-0.20, CUPS-1.2.7 or LPRng-3.8.28 (or any other print utility that provides an lpr command), dcraw, Dmalloc, Electric Fence, PGP or GnuPG-1.4.3 (you'll have to do some hacking to use GnuPG), SANE-1.0.17, and Wget-1.10.2

Optional Graphics Libraries

corefonts, FlashPIX (or FlashPIX library), FreeType-2.1.10, Jasper, JBIG-KIT, little cms-1.15, libexif-0.6.13, libjpeg-6b, libpng-1.2.12, librsvg-2.14.4, LibTIFF-3.8.2, libxml2-2.6.26, and RALCGM (or RALCGM-3.50)

Optional Graphics Utilities

ESP Ghostscript-8.15.2 or AFPL Ghostscript-8.53, GhostPCL, GIMP-2.2.12, Gnuplot, Graphviz-2.8 (requires a >2.8 development snapshot), POV-Ray, and Radiance

Optional Conversion Tools

AutoTrace, Enscript-1.6.4, hp2xx, html2ps, libwmf, MPEG-2 Video Codec, Netpbm, teTeX-3.0, Transfig, txt2html (requires Module::Build-0.2801 and Perl Module Getopt::ArgvFile), and Utah Raster Toolkit (or URT-3.1b)

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/imagemagick

Installation of ImageMagick

Install Imagemagick by running the following commands:

sed -i "s/\xc3\xa9/\\\\['e]/" utilities/ImageMagick.1 &&
./configure --prefix=/usr --with-modules &&
make

To test the results, issue: make check. Note that some of the tests may fail due to system and/or build parameter settings. In a recent test build performed on a current LFS SVN (20060508) platform with all the delegate dependencies installed, 11 of the 714 tests failed.

Now, as the root user:

make install

Command Explanations

sed -i "s/\xc3\xa9/\\\\['e]/" utilities/ImageMagick.1: One man page is installed with character encoding not displayable using the Man-db package. This command changes the offending bytes to characters man can properly display.

--with-modules: Enables support for dynamically loadable modules.

--with-gslib=/usr/lib: Enables support to use the Ghostscript shared library.

--with-fpx: Enables support to use the FlashPix library.

--with-windows-font-dir=<Some/Directory>: This option specifies the directory where the Windows CoreFonts are installed.

The options and parameters listed above are the only ones you should have to pass to the configure script to activate all the delegate dependencies. All other dependencies will be automatically detected and utilized in the build if they are installed.

Contents

Installed Programs: animate, compare, composite, conjure, convert, display, identify, import, Magick-config, Magick++-config, mogrify, montage, and Wand-config
Installed Libraries: libMagick.{so,a}, libMagick++.{so,a}, libWand.{so,a}, the Magick.so Perl module, and numerous plugin modules
Installed Directories: /usr/include/Magick++, /usr/include/magick, /usr/include/wand, /usr/lib/ImageMagick-6.2.8, /usr/lib/perl5/site_perl/5.8.8/i686-linux/auto/Image/Magick, /usr/share/ImageMagick-6.2.8 and /usr/share/doc/ImageMagick-6.2.8

Short Descriptions

animate

animates a sequence of images.

compare

compares an image to a reconstructed image.

composite

composites various images into the given base image.

conjure

processes a MSL script to create an image.

convert

converts image(s) from one format to another.

display

displays an image.

identify

describes the format and characteristics of an image file.

import

captures an X window.

Magick-config and Magick++-config

show information about the installed versions of ImageMagick and Magick++.

mogrify

transforms an image.

montage

composites various images into a new image.

Wand-config

shows the options required to use the Wand library.

Image::Magick

allows the reading, manipulation and writing of a large number of image file formats using the ImageMagick library. Run make in the PerlMagick/demo directory of the package source tree after the package is installed to see a nice demo of the module's capabilities.

Hd2u-1.0.0

Introduction to Hd2u

The hd2u package contains an any to any text format converter.

Package Information

Hd2u Dependencies

Required

popt-1.10.4

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/hd2u

Installation of Hd2u

Install hd2u by running the following commands:

./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Contents

Installed Program: dos2unix
Installed Libraries: None
Installed Directories: None

Short Descriptions

dos2unix

converts text between various OS formats (such as converting from DOS format to Unix).

GTK-Doc-1.6

Introduction to GTK-Doc

The GTK-Doc package contains a code documentor. This is useful for extracting specially formatted comments from the code to create API documentation. This package is optional; if it is not installed, packages will not build the documentation. This does not mean that you will not have any documentation. If GTK-Doc is not available, the install process will copy any pre-built documentation to your system.

Package Information

GTK-Doc Dependencies

Required

libxslt-1.1.17, DocBook XML DTD-4.4, and DocBook XSL Stylesheets-1.69.1

Optional

pkg-config-0.20, ScrollKeeper-0.3.14, OpenJade-1.3.2, DocBook SGML DTD-4.4, and DocBook DSSSL Stylesheets-1.79

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gtk-doc

Installation of GTK-Doc

Install GTK-Doc by running the following commands:

./configure --prefix=/usr --localstatedir=/var/lib &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--localstatedir=/var/lib: This parameter is used so that all ScrollKeeper files are installed in, and the ScrollKeeper database is properly updated in /var/lib/scrollkeeper instead of some files being installed in $GNOME_PREFIX/var/scrollkeeper.

Contents

Installed Programs: gtkdocize, gtkdoc-fixxref, gtkdoc-mkdb, gtkdoc-mkhtml, gtkdoc-mkman, gtkdoc-mktmpl, gtkdoc-scan, gtkdoc-scangobj, and gtkdoc-scanobj
Installed Libraries: None
Installed Directories: The following subdirectories of /usr/share/: doc/gtk-doc-1.6, gnome/help/gtk-doc-manual, gtk-doc/data and {omf,sgml}/gtk-doc

Short Descriptions

gtkdoc*

these are all Perl scripts used by package Makefile scripts to generate documentation for the package being built.

ScrollKeeper-0.3.14

Introduction to ScrollKeeper

The ScrollKeeper package contains a cataloging system for documentation. This is useful for managing documentation metadata and providing an API to help browsers find, sort and search the document catalog.

Package Information

ScrollKeeper Dependencies

Required

libxslt-1.1.17, DocBook XML DTD-4.4, and XML::Parser-2.34

Optional

intltool-0.34.2

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/scrollkeeper

Installation of ScrollKeeper

Install ScrollKeeper by running the following commands:

./configure --prefix=/usr \
            --sysconfdir=/etc \
            --localstatedir=/var \
            --disable-static \
            --with-omfdirs=/usr/share/omf:/opt/gnome-1.4/share/omf:\
/opt/kde-3.5.6/share/omf:\
/opt/gnome-2.14.3/share/omf &&

make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--sysconfdir=/etc: This switch puts the configuration files in /etc instead of /usr/etc.

--localstatedir=/var: This switch puts ScrollKeeper's database directory in /var/lib/scrollkeeper.

--disable-static: This switch prevents the static library from being built.

--with-omfdirs=...: This switch defines the locations of OMF files for ScrollKeeper. Change the locations if you have KDE and/or GNOME-2 installed in a prefix other than the ones shown. This information is stored in /etc/scrollkeeper.conf and can be updated manually, if necessary.

Configuring ScrollKeeper

Config Files

/etc/scrollkeeper.conf

Configuration Information

The configuration file sets the OMF_DIR variable to the location of all of the omf directories in the system. This was set in the configure command so no further action is needed until another OMF directory is created.

Contents

Installed Programs: scrollkeeper-config, scrollkeeper-extract, scrollkeeper-gen-seriesid, scrollkeeper-get-cl, scrollkeeper-get-content-list, scrollkeeper-get-extended-content-list, scrollkeeper-get-index-from-docpath, scrollkeeper-get-toc-from-docpath, scrollkeeper-get-toc-from-id, scrollkeeper-install, scrollkeeper-preinstall, scrollkeeper-rebuilddb, scrollkeeper-uninstall, and scrollkeeper-update
Installed Library: libscrollkeeper.so
Installed Directories: /usr/share/doc/scrollkeeper-0.3.14, /usr/share/{omf, {,xml/}scrollkeeper}, and /var/lib/scrollkeeper

Short Descriptions

ScrollKeeper utility programs

The ScrollKeeper utility programs and scripts listed above are for performing installation, building, getting and updating table of contents files.

libscrollkeeper.so

provides the API necessary for help browsers to interact with documentation written to utilize ScrollKeeper.

Intltool-0.34.2

Introduction to Intltool

The intltool package contains an internationalization tool. This is useful for extracting translatable strings from source files, collecting the extracted strings with messages from traditional source files (<source directory>/<package>/po) and merging the translations into .xml, .desktop and .oaf files.

Package Information

Intltool Dependencies

Required

XML::Parser-2.34

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/intltool

Installation of Intltool

Install intltool by running the following commands:

./configure --prefix=/usr &&
make

To test the results, issue: make check.

Now, as the root user:

make install &&
install -v -m644 -D doc/I18N-HOWTO \
    /usr/share/doc/intltool-0.34.2/I18N-HOWTO

Contents

Installed Programs: intltoolize, intltool-extract, intltool-merge, intltool-prepare, and intltool-update
Installed Libraries: None
Installed Directories: /usr/share/intltool and /usr/share/doc/intltool-0.34.2

Short Descriptions

intltoolize

prepares a package to use intltool.

intltool-extract

generates header files that can be read by gettext.

intltool-merge

merges translated strings into various file types.

intltool-prepare

updates pot files and merges them with translation files.

intltool-update

updates the po template files and merges them with the translations.

Screen-4.0.3

Introduction to Screen

Screen is a terminal multiplexor that runs several separate processes, typically interactive shells, on a single physical character-based terminal. Each virtual terminal emulates a DEC VT100 plus several ANSI X3.64 and ISO 2022 functions and also provides configurable input and output translation, serial port support, configurable logging, multi-user support, and many character encodings, including UTF-8. Screen sessions can be detached and resumed later on a different terminal.

Package Information

Screen Dependencies

Optional

Linux-PAM-0.99.4.0

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/screen

Installation of Screen

Install Screen by running the following commands:

./configure --prefix=/usr --with-socket-dir=/var/run/screen \
    --with-sys-screenrc=/etc/screenrc &&
sed -i -e "s%/usr/local/etc/screenrc%/etc/screenrc%" {etc,doc}/* &&
make

This package does not come with a test suite.

Now, as the root user:

make install &&
install -m 644 etc/etcscreenrc /etc/screenrc

Command Explanations

--with-socket-dir=/var/run/screen: This option places the per-user sockets in a standard location.

--with-sys-screenrc=/etc/screenrc: This option places the global screenrc file in /etc.

sed -i -e "s%/usr/local/etc/screenrc%/etc/screenrc%" {etc,doc}/*: This command corrects the configuration and documentation files to the location that is used here for the global screenrc file.

Configuring Screen

Config Files

/etc/screenrc and ~/.screenrc

Configuration Information

You may want to look at the example configuration file that was installed and customize it for your needs.

Contents

Installed Program: screen
Installed Libraries: None
Installed Directory: /var/run/screen

Short Descriptions

screen

is a terminal multiplexor with VT100/ANSI terminal emulation.

HTML Tidy-051026

Introduction to HTML Tidy

The HTML Tidy package contains a command line tool and libraries used to read HTML, XHTML and XML files and write cleaned up markup. It detects and corrects many common coding errors and strives to produce visually equivalent markup that is both W3C compliant and compatible with most browsers.

Package Information

Additional Downloads

Documentation

Patches

HTML Tidy Dependencies

Recommended (To Build the Man Page and Quick Reference Docs)

Optional

Dmalloc

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/tidy

Installation of HTML Tidy

The HTML Tidy documentation is contained in a separate tarball. Unpack both the source and docs tarballs before starting the build.

Install HTML Tidy by running the following commands:

patch -Np1 -i ../tidy-051026-prevent_PRE_newlines-1.patch &&
sh build/gnuauto/setup.sh &&
./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install

If you have libxslt-1.1.17 installed, issue the following commands as an unprivileged user to build the man page and HTML documentation:

cd htmldoc &&
tidy -xml-help > tidy-help.xml &&
tidy -xml-config > tidy-config.xml &&
xsltproc -o tidy.1 tidy1.xsl tidy-help.xml &&
xsltproc -o quickref.html quickref-html.xsl tidy-config.xml &&
cd ..

If you built the man page and the Quick Reference HTML file, install the man page by issuing the following command as the root user:

install -v -m644 htmldoc/tidy.1 /usr/share/man/man1

Now finish the installation by installing the pre-built documentation as the root user:

install -v -m755 -d /usr/share/doc/tidy-051020 &&
cp -v -R htmldoc/* /usr/share/doc/tidy-051020

Command Explanations

sh build/gnuauto/setup.sh: This command prepares the source tree for building using the GNU “Auto” tools.

Configuring HTML Tidy

Config Files

The absolute path of the file specified in $HTML_TIDY.

Configuration Information

The default configuration options can be set in the file defined in $HTML_TIDY. Additional configuration options can be passed to tidy via command line parameters or the -config <file> parameter.

Contents

Installed Programs: tab2space and tidy
Installed Library: libtidy.{so,a}
Installed Directory: /usr/share/doc/tidy-051020

Short Descriptions

tab2space

is a utility to expand tabs and ensure consistent line endings.

tidy

validates, corrects, and pretty-prints HTML files.

libtidy.{so,a}

libraries provide the HTML Tidy API functions to tidy and can also be called by other programs.

desktop-file-utils-0.11

Introduction to desktop-file-utils

The desktop-file-utils package contains command line utilities for working with desktop entries. These utilities are used by GNOME-2 and other applications to manipulate the MIME-types application databases and help adhere to the Desktop Entry Specification.

Package Information

desktop-file-utils Dependencies

Required

GLib-2.10.3

Optional

Emacs-21.4a

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/desktop-file-utils

Installation of desktop-file-utils

Install desktop-file-utils by running the following commands:

./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Configuring desktop-file-utils

Configuration Information

The XDG Base Directory specification defines the standard locations for applications to place data and configuration files. These files can be used, for instance, to define the menu structure and menu items in a desktop environment.

The default location for configuration files to be installed is /etc/xdg, and the default locations for data files are /usr/local/share and /usr/share. These locations can be extended with the environment variables XDG_CONFIG_DIRS and XDG_DATA_DIRS, respectively. The GNOME, KDE and XFCE environments respect respect these settings. Update the XDG_DATA_DIRS (if necessary) and XDG_CONFIG_DIRS environment variables so that the additional MIME-types application databases and desktop menu files are properly maintained and discovered by adding the following to the system-wide or personal profile:

For GNOME:

XDG_DATA_DIRS=$GNOME_PREFIX/share:/usr/local/share:/usr/share
XDG_CONFIG_DIRS=/etc/gnome/2.14.3/xdg:/etc/xdg
export XDG_DATA_DIRS XDG_CONFIG_DIRS

For KDE:

XDG_DATA_DIRS=$KDE_PREFIX/share:/usr/local/share:/usr/share
XDG_CONFIG_DIRS=/etc/kde/xdg:/etc/xdg
export XDG_DATA_DIRS XDG_CONFIG_DIRS

For XFCE, the default locations should be appropriate if the instructions in the BLFS book were followed.

When a package installs a .desktop file to a location in one the base data directories, a database mapping MIME-types to available applications can be updated. For instance, the cache file at /usr/share/applications/mimeinfo.cache can be rebuilt by executing the following command as the root user:

update-desktop-database /usr/share/applications

Contents

Installed Programs: desktop-file-install, desktop-file-validate, and update-desktop-database
Installed Libraries: None
Installed Directories: None

Short Descriptions

desktop-file-install

is used to install a new, or modify an existing desktop file entry. It is also used to rebuild or modify the MIME-types application database.

desktop-file-validate

is used to verify the integrity of a desktop file.

update-desktop-database

is used to update the MIME-types application database.

XScreenSaver-4.24

Introduction to XScreenSaver

The XScreenSaver is a modular screen saver and locker for the X Window System. It is highly customizable and allows the use of any program that can draw on the root window as a display mode. The purpose of XScreenSaver is to display pretty pictures on your screen when it is not in use, in keeping with the philosophy that unattended monitors should always be doing something interesting, just like they do in the movies. However, XScreenSaver can also be used as a screen locker, to prevent others from using your terminal while you are away.

Package Information

XScreenSaver Dependencies

Required

bc-1.06 and libglade-2.6.0 (alternatively LessTif-0.94.4 but not recommended)

Optional

libjpeg-6b, GLE, Netpbm, XDaliClock, Linux-PAM-0.99.4.0, MIT Kerberos V5-1.6 (built with Kerberos V4 backwards compatibility), and krb4 and Heimdal-0.7.2 (Kerberos authentication requires having Kerberos V4 and V5 on the system)

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/xscreensaver

Installation of XScreenSaver

Install XScreenSaver by running the following commands:

sed -i 's,\xc3\xb6,oe,' hacks/flow.man &&
./configure --prefix=/usr --libexecdir=/usr/lib &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

sed -i 's,\xc3\xb6,oe,' hacks/flow.man: This command replaces the UTF-8 encoded character “ö” with its ASCII equivalent “oe” in one of the installed manual pages. Without this, Man-DB would interpret these two bytes as ISO-8859-1, resulting in the wrong “ö” characters.

--with-setuid-hacks: This switch allows some demos to be installed setuid root which is needed in order to ping other hosts.

--enable-locking: This switch provides support for locking the display.

Configuring XScreenSaver

Config Files

/etc/X11/app-defaults/XScreenSaver, ~/.xscreensaver and /etc/pam.d/xscreensaver or /etc/pam.conf

Contents

Installed Programs: xscreensaver, xscreensaver-command, xscreensaver-demo, xscreensaver-getimage, xscreensaver-getimage-file, xscreensaver-getimage-video, xscreensaver-gl-helper, and xscreensaver-text
Installed Libraries: None
Installed Directories: /usr/lib/xscreensaver and /usr/share/xscreensaver

Short Descriptions

xscreensaver

is a screen saver and locker daemon.

xscreensaver-command

controls a running xscreensaver process by sending it client messages.

xscreensaver-demo

is a graphical front-end for setting the parameters used by the background xscreensaver daemon.

xscreensaver-getimage

is a helper program for the xscreensaver modules that manipulate images.

xscreensaver-getimage-file

is a helper program for the xscreensaver modules that manipulate images.

xscreensaver-getimage-video

is a helper program for the xscreensaver modules that manipulate images.

xscreensaver-gl-helper

is a helper program for the xscreensaver OpenGL modules.

xscreensaver-text

prints some text to stdout, for use by screen savers.

Pilot-link-0.11.8

Introduction to Pilot-link

The pilot-link package provides a suite of tools containing a series of conduits, libraries, and language bindings for moving information to and from your Palm device and your desktop or server/workstation system, as well as across a network.

Package Information

Additional Downloads

Pilot-link Dependencies

Optional

libpng-1.2.12, JDK-1.5.0_10, Tcl-8.4.13, Python-2.4.4 and Electric Fence

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/pilot-link

Kernel Configuration

You may need to configure the “USB_SERIAL_VISOR” device into the kernel before your system can communicate with your Palm device. Add this device by enabling the following kernel parameter setting and rebuilding the kernel (and modules, if applicable):

Device Drivers:
  USB support:
    USB Serial Converter support:
      USB Handspring Visor / Palm m50x / Sony Client Driver

Installation of Pilot-link

Install pilot-link by running the following commands:

patch -Np1 -i ../pilot-link-0.11.8-bindings_fix-1.patch &&
./configure --prefix=/usr &&
make

To test the results, issue: make check.

Now, as the root user:

make install

Command Explanations

--with-perl --with-java --with-tcl=/usr/lib --with-python: Use any or all of these options to enable the respective language bindings desired.

Contents

Installed Programs: addresses, ccexample, debugsh, dlpsh, hinotes, ietf2datebook, install-datebook, install-expenses, install-hinote, install-memo, install-netsync, install-todo, install-todos, install-user, memos, money2qif, pi-csd, pi-getram, pi-getrom, pi-getromtoken, pi-nredir, pilot-addresses, pilot-archive, pilot-clip, pilot-datebook, pilot-dedupe, pilot-file, pilot-foto, pilot-prc, pilot-schlep, pilot-undelete, pilot-xfer, pitclsh, read-expenses, read-ical, read-notepad, read-palmpix, read-todos, reminders, and sync-plan
Installed Libraries: libpisock.{so,a}, libpisock++.{so,a}, and libpisync.{so,a}
Installed Bindings: libjpisock.so JDK library, libpitcl.{so,a} Tcl library, Python and Perl modules
Installed Directory: /usr/lib/perl5/site_perl/5.8.8/i686-linux/{,auto/}PDA, /usr/share/pilot-link

Short Descriptions

pilot-link programs and utilities

Describing the functionality of each pilot-link program and utility would take several pages. Instead, after you've installed the package, review the pilot-link man page (man pilot-link). If you wish to review before installing the package, unpack the tarball and issue man doc/man/pilot-link.7.in.

unixODBC-2.2.11

Introduction to unixODBC

The unixODBC package is an Open Source ODBC (Open DataBase Connectivity) sub-system and an ODBC SDK for Linux, Mac OSX, and UNIX. ODBC is an open specification for providing application developers with a predictable API with which to access data sources. Data sources include SQL Servers and any data source with an ODBC Driver. unixODBC contains the following components used to assist with the manipulation of ODBC data sources: a driver manager, an installer library and command line tool, command line tools to help install a driver and work with SQL, drivers and driver setup libraries and a suite of graphical tools used to administer ODBC, test drivers and browse data sources.

Package Information

unixODBC Dependencies

Optional

Qt-3.3.7 (required to build the GUI tools), GNU Pth and Mini SQL

Note

There is a circular dependency with Qt and unixODBC. If you need to build the Qt unixODBC plugin module, you will have to build and install unixODBC once without the GUI tools to satisfy the Qt build. Then, after Qt has been installed, you'll need to build and install unixODBC again if you wish to build the GUI tools.

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/unixodbc

Installation of unixODBC

Install unixODBC by running the following commands:

sed -i "s/void yyerror/#define YY_FLUSH_BUFFER\n\n&/" sqp/lex.l &&
./configure --prefix=/usr --sysconfdir=/etc/unixodbc \
            --enable-ltdllib --enable-fdb --disable-gui &&
make

This package does not come with a test suite.

Now, as the root user:

make install &&
find doc -name "Makefile*" -exec rm {} \; &&
chmod 644 doc/{lst,ProgrammerManual/Tutorial}/* &&
install -v -m755 -d /usr/share/doc/unixODBC-2.2.11 &&
cp -v -R doc/* /usr/share/doc/unixODBC-2.2.11

Command Explanations

sed -i "..." sqp/lex.l: This fixes a build issue if using a compiler version greater than GCC-3.x.x.

--enable-ltdllib: This parameter causes the build to use the system-installed version of Libtool.

--enable-fdb: This parameter enables support for file-based data access.

--disable-gui: This parameter disables building the GUI tools. Remove it if you have Qt installed and wish to build the GUI tools.

Configuring unixODBC

Config Files

/etc/unixodbc/*

Configuration Information

The files in /etc/unixodbc are meant to be configured by the system administrator (or the ODBC site administrator if appropriate privileges are granted to /etc/unixodbc). These files are not meant to be directly edited. The ODBC installer library is responsible for reading and writing the unixODBC config files.

Unfortunately, there are no man or info pages for the various programs available in the unixODBC package. Along with the information in the “Short Descriptions” below and the documentation installed in /usr/share/doc/unixODBC-2.2.11, there are many README files throughout the source tree where the use and functionality of the programs can be found. Additionally, you can use the parameter -? with the non-GUI tools for syntax and usage information. Lastly, the unixODBC web site at http://www.unixodbc.org/ has very good information.

Contents

Installed Programs: DataManager, DataManagerII, ODBCConfig, dltest, isql, iusql, odbc_config, odbcinst and odbctest
Installed Libraries: libboundparam.so, libesoobS.so, libgtrtst.so, libmimerS.so, libnn.so, libodbc.so, libodbccr.so, libodbcdrvcfg1S.so, libodbcdrvcfg2S.so, libodbcinst.so, libodbcinstQ.so, libodbcminiS.so, libodbcmyS.so, libodbcnnS.so, libodbcpsql.so, libodbcpsqlS.so, libodbctxt.so, libodbctxtS.so, liboplodbcS.so, liboraodbcS.so, libsapdbS.so, libtdsS.so and libtemplate.so
Installed Directories: /etc/unixodbc and /usr/share/doc/unixODBC-2.2.11

Short Descriptions

DataManager

is a graphical program which can be used to browse/explore ODBC data sources.

DataManagerII

is an enhanced version of DataManager.

ODBCConfig

is a graphical program used to make configuration of ODBC data sources extremely easy.

dltest

is a utility used to check a share library to see if it can be loaded and if a given symbol exists in it.

isql

is a utility which can be used to submit SQL to a data source and to format/output results. It can be used in batch or interactive mode.

iusql

provides the same functionality as the isql program.

odbc_config

is used to find out details about the installation of the unixODBC package.

odbcinst

is a utility created for install script/RPM writers. It is a command line interface to key functionality in the libodbcinst library. It does not copy any files (i.e., libraries) but it will modify the ODBC System Information for the user.

odbctest

is a graphical program used to test the ODBC API.

Graphviz-2.8

Introduction to Graphviz

The Graphviz package contains graph visualization software. Graph visualization is a way of representing structural information as diagrams of abstract graphs and networks. Graphviz has several main graph layout programs. It also has web and interactive graphical interfaces, auxiliary tools, libraries, and language bindings.

The Graphviz layout programs take descriptions of graphs in a simple text language, and creates diagrams in several useful formats such as images and SVG for web pages, Postscript for inclusion in PDF or other documents, or as objects displayed in an interactive graph browser. (Graphviz also supports GXL, an XML dialect.) In practice, graphs are usually generated from external data sources, but they can also be created and edited manually, either as raw text files or within a graphical editor. (Graphviz was not intended to be a Visio replacement, so it would probably be frustrating to try to use it that way.)

This package is useful for automatic graph drawing which has many important applications in software engineering, database and web design, networking, and in visual interfaces for many other domains. Graphviz has many useful features for concrete diagrams, such as options for colors, fonts, tabular node layouts, line styles, hyperlinks, and custom shapes.

Package Information

Graphviz Dependencies

Optional

X Window System, pkg-config-0.20, expat-2.0.0, libpng-1.2.12, libjpeg-6b, FreeType-2.1.10, Fontconfig-2.3.2, Tcl-8.4.13, Tk-8.4.13, and Electric Fence

Optional (to Build Language Bindings)

SWIG (SWIG must be installed or no bindings will be built), Guile-1.6.7, JDK-1.5.0_10, PHP-5.1.4, Python-2.4.4, Ruby-1.8.5, Tcl-8.4.13, C# (DotGNU Portable.NET or Mono), Io, Lua, and Objective Caml

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/graphviz

Installation of Graphviz

Install Graphviz by running the following commands:

sed -i 's|JAVA_LIBS=|& \
if test -n "$JAVA_HOME"; then \
  CPPFLAGS="$CPPFLAGS -I$JAVA_HOME/include -I$JAVA_HOME/include/linux" \
fi|' configure &&
./configure --prefix=/usr &&
make

This package does not come with a test suite that provides meaningful results.

Now, as the root user:

make install

If desired, create a symbolic link in the system documents directory to the documentation installed in /usr/share/graphviz/doc using the following command as the root user:

ln -v -s /usr/share/graphviz/doc \
         /usr/share/doc/graphviz-2.8

Configuring Graphviz

Config Files

/usr/lib/graphviz/config

Configuration Information

There are no specific configuration requirements for Graphviz. You may consider installing the additional plugins and tools available from the download page at http://www.graphviz.org/Download_source.php for additional capabilities. If additional plugins are installed, you can run dot_static -c (as the root user) to update the config file in /usr/lib/graphviz.

Contents

Installed Programs: acyclic, bcomps, ccomps, circo, dijkstra, dot, dot2gxl, dot_static, dotty, fdp, gc, gvcolor, gvpack, gvpr, gxl2dot, lefty, lneato, nop, prune, sccmap, tred, twopi and unflatten
Installed Libraries: libagraph.{so,a}, libcdt.{so,a}, libexpr.{so,a}, libgraph.{so,a}, libpack.{so,a}, libpathplan.{so,a}, additional support libraries and language bindings
Installed Directories: /usr/include/graphviz, /usr/lib/graphviz and /usr/share/graphviz

Short Descriptions

acyclic

is a filter that takes a directed graph as input and outputs a copy of the graph with sufficient edges reversed to make the graph acyclic. The reversed edge inherits all of the attributes of the original edge.

bcomps

decomposes graphs into their biconnected components, printing the components to standard output.

ccomps

decomposes graphs into their connected components, printing the components to standard output.

circo

draws graphs using a circular layout. The tool identifies biconnected components and draws the nodes of the component on a circle. The block-cutpoint tree is then laid out using a recursive radial algorithm. Edge crossings within a circle are minimized by placing as many edges on the circle's perimeter as possible. In particular, if the component is outerplanar, the component will have a planar layout.

dijkstra

reads a stream of graphs and for each computes the distance of every node from sourcenode.

dot

draws directed graphs. It works well on DAGs and other graphs that can be drawn as hierarchies. It reads attributed graph files and writes drawings. By default, the output format dot is the input file with layout coordinates appended.

dot2gxl

converts between graphs represented in GXL and in the DOT language. Unless a conversion type is specified using a flag, gxl2dot will deduce the type of conversion from the suffix of the input file, a .dot suffix causing a conversion from DOT to GXL, and a .gxl suffix causing a conversion from GXL to DOT.

dot_static

is a version of dotthat has all the Graphviz libraries compiled statically.

dotty

is a graph editor for the X Window System. It may be run as a standalone editor, or as a front end for applications that use graphs. It can control multiple windows viewing different graphs.

fdp

draws undirected graphs using a “spring” model. It relies on a force-directed approach in the spirit of Fruchterman and Reingold.

gc

is a graph analogue to wc in that it prints to standard output the number of nodes, edges, connected components or clusters contained in the input files. It also prints a total count for all graphs if more than one graph is given.

gvcolor

is a filter that sets node colors from initial seed values. Colors flow along edges from tail to head, and are averaged (as HSB vectors) at nodes. The graph must already have been processed by dot.

gvpack

reads in a stream of graphs, combines the graphs into a single layout, and produces a single graph serving as the union of the input graphs. The input graphs must be in dot format, and must have all necessary layout information.

gvpr

is a graph stream editor inspired by awk. It copies input graphs to its output, possibly transforming their structure and attributes, creating new graphs, or printing arbitrary information.

gxl2dot

converts between graphs represented in GXL and in the DOT language. Unless a conversion type is specified using a flag, gxl2dot will deduce the type of conversion from the suffix of the input file, a .dot suffix causing a conversion from DOT to GXL, and a .gxl suffix causing a conversion from GXL to DOT.

lefty

is a two-view graphics editor for technical pictures.

lneato

is a graph editor for the X Window System. It may be run as a standalone editor, or as a front end for applications that use graphs. It can control multiple windows viewing different graphs.

nop

reads a stream of graphs and prints each in pretty-printed (canonical) format on stdout. If no files are given, it reads from stdin.

prune

reads directed graphs in the same format used by dot and removes subgraphs rooted at nodes specified on the command line via options. These nodes themselves will not be removed, but can be given attributes so that they can be easily located by a graph stream editor such as gpr. prune correctly handles cycles, loops and multi-edges.

sccmap

decomposes digraphs into strongly connected components and an auxiliary map of the relationship between components. In this map, each component is collapsed into a node. The resulting graphs are printed to standard out. The number of nodes, edges and strongly connected components are printed to standard error. sccmap is a way of partitioning large graphs into more manageable pieces.

tred

computes the transitive reduction of directed graphs, and prints the resulting graphs to standard output. This removes edges implied by transitivity. Nodes and subgraphs are not otherwise affected. The “meaning” and validity of the reduced graphs is application dependent. tred is particularly useful as a preprocessor to dot to reduce clutter in dense layouts.

twopi

draws graphs using a radial layout. Basically, one node is chosen as the center and put at the origin. The remaining nodes are placed on a sequence of concentric circles centered about the origin, each a fixed radial distance from the previous circle.

unflatten

is a preprocessor to dot that is used to improve the aspect ratio of graphs having many leaves or disconnected nodes. The usual layout for such a graph is generally very wide or tall. unflatten inserts invisible edges or adjusts the minlen on edges to improve layout compaction.

libagraph.{so,a}

supports graph programming by maintaining graphs in memory and reading and writing graph files. Graphs, nodes and edges may be attributed with programmer-defined records and string name-value pairs. Graphs are composed of nodes, edges, and nested subgraphs. Internally, libagraph depends extensively on libcdt (formerly libdict) for set representation.

libcdt.{so,a}

manages run-time dictionaries using standard container data types: unordered set/multiset, ordered set/multiset, list, stack, and queue.

libexpr.{so,a}

is a C-like expression library.

libgraph.{so,a}

maintains directed and undirected attributed graphs in memory and reads and writes graph files. Graphs are composed of nodes, edges, and nested subgraphs. A subgraph may contain any nodes and edges of its parents, and may be passed to any libgraph function taking a graph pointer, except the three that create new attributes (where a main graph is required).

libpack.{so,a}

supports the use of connected components in the context of laying out graphs using other Graphviz libraries. One set of functions can be used to take a single graph and break it apart into connected components. A complementary set of functions takes a collection of graphs (not necessarily components of a single graph) which have been laid out separately, and packs them together moderately tightly. The packing is done using the polyomino algorithm of K. Freivalds et al.

libpathplan.{so,a}

contains functions to find the shortest path between two points in a simple polygon.

xterm-223

Introduction to xterm

xterm is a terminal emulator for the X Window System.

Package Information

xterm Dependencies

Required

Xorg Libraries

Optional

luit-1.0.2

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/Xterm

Installation of xterm

Note

This package should only be built if you are installing Xorg-7.1. If you have installed or will be installing Xorg-6.9.0 or XFree86, it is provided by those packages and should not be installed here. Ensure that you have the XORG_CONFIG and XORG_PREFIX variables set as described in the Xorg-7.1 page.

Install xterm by running the following commands:

TERMINFO=/usr/lib/terminfo ./configure $XORG_CONFIG \
    --enable-luit --with-wide-chars \
    --with-app-default=$XORG_PREFIX/share/X11/app-defaults &&
make

This package does not come with a test suite.

Now, as the root user:

make install &&
make install-ti

Command Explanations

TERMINFO=/usr/lib/terminfo: This ensures that the xterm terminfo file is installed to the system terminfo database when the installation prefix is not /usr.

--with-app-defaults=...: Sets the location for the app-defaults directory.

--enable-luit: Enables the luit filter for Unicode translation. If luit is not found in the PATH, it will be disabled.

--with-wide-chars: Adds support for wide characters.

make install-ti: This command installs corrected terminfo description files for use with xterm.

Configuring xterm

There are two ways to configure xterm. You can add X resource definitions to the user's ~/.Xresources file, or add them to the system-wide $XORG_PREFIX/lib/X11/app-defaults/Xterm file.

In order for xterm to follow the locale settings in the environment and use TrueType fonts, add the following definitions as the root user:

cat >> $XORG_PREFIX/lib/X11/app-defaults/XTerm << "EOF"
*VT100*locale: true
*VT100*faceName: Monospace
*VT100*faceSize: 10
EOF

Contents

Installed Programs: resize, uxterm, and xterm

Short Descriptions

resize

prints a shell command for setting the TERM and TERMCAP environment variables to indicate the current size of xterm window.

uxterm

is a wrapper script to start xterm with the proper settings in UTF-8 locales.

xterm

is a terminal emulator for the X Window System.

rman-3.2

Introduction to rman

rman is a utility to convert manual pages into other formats. It can currently supports HTML, ASCII, LaTeX, LaTeX2e, RTF, POD, and partial DocBook XML output.

Package Information

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/rman

Installation of rman

Note

This package should only be built if you are installing Xorg-7.1. If you have installed or will be installing Xorg-6.9.0 or XFree86, it is provided by those packages and should not be installed here. Ensure that you have the XORG_CONFIG and XORG_PREFIX variables set as described in the Xorg-7.1 page.

rman is no longer part of the Xorg distribution, however, packages that use it may expect it to be in the same location as your Xorg programs. Adjust the makefile to account for this:

sed -i -e "s@/opt/local@$XORG_PREFIX@" \
    -e "s@/usr/local@$XORG_PREFIX@" Makefile

Build rman by running the following command:

make

This package does not come with a test suite.

Now, as the root user:

make install

Contents

Installed Programs: rman

Short Description

rman

is a manpage converter.

Chapter 11. System Utilities

This chapter contains mainly hardware utilities. It also contains some applications used by other applications in the book for installation purposes.

GPM-1.20.1

Introduction to GPM

The GPM (General Purpose Mouse daemon) package contains a mouse server for the console and xterm. It not only provides cut and paste support generally, but its library component is used by various software such as Links to provide mouse support to the application. It is useful on desktops, especially if following (Beyond) Linux From Scratch instructions; it's often much easier (and less error prone) to cut and paste between two console windows than to type everything by hand!

Package Information

Additional Downloads

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/GPM

Installation of GPM

Install GPM by running the following commands:

patch -Np1 -i ../gpm-1.20.1-segfault-1.patch &&
patch -Np1 -i ../gpm-1.20.1-silent-1.patch &&
./configure --prefix=/usr --sysconfdir=/etc &&
LDFLAGS="-lm" make

Now, as the root user:

make install &&
cp -v conf/gpm-root.conf /etc &&
ldconfig

Command Explanations

LDFLAGS="-lm": The math library must be linked with gpm, as ceil() is used in some cursor scrolling logic.

Configuring GPM

Boot Script

Install the /etc/rc.d/init.d/gpm init script included in the blfs-bootscripts-20060910 package.

make install-gpm

Config Files

/etc/gpm-root.conf and ~/.gpm-root: The default and individual user gpm-root configuration files.

/etc/sysconfig/mouse: This file contains the name of your mouse device and the protocol which it uses. To create this file, run the following as the root user:

cat > /etc/sysconfig/mouse << "EOF"
# Begin /etc/sysconfig/mouse

MDEVICE="<yourdevice>"
PROTOCOL="<yourprotocol>"
GPMOPTS="<additional options>"

# End /etc/sysconfig/mouse
EOF

Configuration Information

Examples of values to set MDEVICE, PROTOCOL, and GPMOPTS to are:

MDEVICE="/dev/psaux"
PROTOCOL="imps2"
GPMOPTS=""

A list of which protocol values are known can be found by running gpm -m [device] -t -help. The MDEVICE setting depends on which type of mouse you have. For example, /dev/ttyS0 for a serial mouse (on Windows this is COM1), /dev/input/mice is often used for USB mice and /dev/psaux for PS2 mice. GPMOPTS is the 'catch all' for any additional options that are needed for your hardware.

Contents

Installed Programs: disable-paste, gpm, gpm-root, hltest, mev, and mouse-test
Installed Libraries: libgpm.{so.a}
Installed Directories: None

Short Descriptions

disable-paste

is a security mechanism used to disable the paste buffer.

gpm

is a cut and paste utility and mouse server for virtual consoles.

gpm-root

is a default handler for gpm. It is used to draw menus on the root window.

hltest

is a simple sample application using the high-level library, meant to be read by programmers trying to use the high-level library.

mev

is a program to report mouse events.

mouse-test

is a tool for determining the mouse type and device it's attached to.

libgpm.{so.a}

contains the API functions to access the GPM daemon.

Fcron-3.0.1

Introduction to Fcron

The Fcron package contains a periodical command scheduler which aims at replacing Vixie Cron.

Package Information

Fcron Dependencies

Optional

An MTA, text editor (default is vi from the Vim-7.0 package), Linux-PAM-0.99.4.0, DocBook-utils-0.6.14

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/fcron

Installation of Fcron

Fcron uses the cron facility of syslog to log all messages. Since LFS does not set up this facility in /etc/syslog.conf, it needs to be done prior to installing Fcron. This command will append the necessary line to the current /etc/syslog.conf (perform as the root user):

cat >> /etc/syslog.conf << "EOF"
# Begin fcron addition to /etc/syslog.conf

cron.* -/var/log/cron.log

# End fcron addition
EOF

The configuration file has been modified, so reloading the sysklogd daemon will activate the changes (again as the root user).

/etc/rc.d/init.d/sysklogd reload

For security reasons, an unprivileged user and group for Fcron should be created (perform as the root user):

groupadd -g 22 fcron &&
useradd -d /dev/null -c "Fcron User" -g fcron -s /bin/false -u 22 fcron

Install Fcron by running the following commands:

./configure --without-sendmail --with-boot-install=no &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--without-sendmail: By default, Fcron will attempt to use the sendmail command from an MTA package to email you the results of the fcron script. This switch is used to disable default email notification. Omit the switch to enable the default. Alternatively, you can use the --with-sendmail=</path/to/MTA command> to use a different mailer command.

--with-boot-install=no: This prevents installation of the bootscript included with the package.

--with-editor=</path/to/editor>: This switch allows you to set the default text editor.

Configuring Fcron

Config Files

/etc/fcron.conf, /etc/fcron.allow, and /etc/fcron.deny

Configuration Information

There are no required changes in any of the config files. Configuration information can be found in the man page for fcron.conf.

fcron scripts are written using fcrontab. Refer to the fcrontab man page for proper parameters to address your situation.

If Linux-PAM is installed, two PAM configuration files are installed in /etc/pam.d. Alternatively if /etc/pam.d is not used, the installation will append two configuration sections to the exiting /etc/pam.conf file. You should ensure the files match your preferences. Modify them as required to suit your needs.

Boot Script

Install the /etc/rc.d/init.d/fcron init script from the blfs-bootscripts-20060910 package.

make install-fcron

Contents

Installed Programs: fcron, fcrondyn, fcronsighup, and fcrontab
Installed Libraries: None
Installed Directories: /usr/share/doc/fcron-3.0.1 and /var/spool/fcron

Short Descriptions

fcron

is the scheduling daemon.

fcrondyn

is a user tool intended to interact with a running fcron daemon.

fcronsighup

instructs fcron to reread the Fcron tables.

fcrontab

is a program used to install, edit, list and remove the tables used by fcron.

Hdparm-6.6

Introduction to Hdparm

The hdparm package contains a utility that is useful for controlling ATA/IDE controllers and hard drives both to increase performance and sometimes to increase stability.

Warning

As well as being useful, incorrect usage of hdparm can destroy your information and in rare cases, drives. Use with caution and make sure you know what you are doing. If in doubt, it is recommended that you leave the default kernel parameters alone.

Package Information

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/hdparm

Installation of Hdparm

Build hdparm by running the following command:

make

This package does not come with a test suite.

Now, as the root user:

make install

Note that by default, hdparm is installed in /sbin as some systems may require it during the boot process before /usr is mounted. If you wish to install hdparm under the /usr hierarchy, then replace the above command with the following:

make binprefix=/usr/ install

Contents

Installed Program: hdparm
Installed Libraries: None
Installed Directories: None

Short Descriptions

hdparm

provides a command-line interface to various hard disk ioctls supported by the stock Linux ATA/IDE device driver subsystem.

Which-2.16 and Alternatives

The presence or absence of the which program in the main LFS book is probably one of the most contentious issues on the mailing lists. It has resulted in at least one flame war in the past. To hopefully put an end to this once and for all, presented here are two options for equipping your system with which. The question of which “which” is for you to decide.

The first option is to install the actual GNU which package.

Introduction to Which

Package Information

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/which

Installation of Which

Install which by running the following commands:

./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Contents

Installed Program: which
Installed Libraries: None
Installed Directories: None

Short Descriptions

which

shows the full path of (shell) commands installed in your PATH.

The 'which' Script

The second option (for those who don't want to install the package) is to create a simple script (execute as the root user):

cat > /usr/bin/which << "EOF"
#!/bin/bash
type -pa "$@" | head -n 1 ; exit ${PIPESTATUS[0]}
EOF
chmod -v 755 /usr/bin/which
chown -v root:root /usr/bin/which

This should work OK and is probably the easiest solution for most cases, but is not the most comprehensive implementation.

UnZip-5.52

Introduction to UnZip

The UnZip package contains ZIP extraction utilities. These are useful for extracting files from ZIP archives. ZIP archives are created with PKZIP or Info-ZIP utilities, primarily in a DOS environment.

Caution

The UnZip package has some locale related issues. See the discussion below in the section called “UnZip Locale Issues”. A more general discussion of these problems can be found in the Program Assumes Encoding section of the Locale Related Issues page.

Package Information

Additional Downloads

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/unzip

UnZip Locale Issues

Note

Use of UnZip in the JDK, Mozilla, DocBook or any other BLFS package installation is not a problem, as BLFS instructions never use UnZip to extract a file with non-ASCII characters in the file's name.

The UnZip package assumes that filenames stored in the ZIP archives created on non-Unix systems are encoded in CP850, and that they should be converted to ISO-8859-1 when writing files onto the filesystem. Such assumptions are not always valid. In fact, inside the ZIP archive, filenames are encoded in the DOS codepage that is in use in the relevant country, and the filenames on disk should be in the locale encoding. In MS Windows, the OemToChar() C function (from User32.DLL) does the correct conversion (which is indeed the conversion from CP850 to a superset of ISO-8859-1 if MS Windows is set up to use the US English language), but there is no equivalent in Linux.

When using unzip to unpack a ZIP archive containing non-ASCII filenames, the filenames are damaged because unzip uses improper conversion when any of its encoding assumptions are incorrect. For example, in the ru_RU.KOI8-R locale, conversion of filenames from CP866 to KOI8-R is required, but conversion from CP850 to ISO-8859-1 is done, which produces filenames consisting of undecipherable characters instead of words (the closest equivalent understandable example for English-only users is rot13). There are several ways around this limitation:

1) For unpacking ZIP archives with filenames containing non-ASCII characters, use WinZip while running the Wine Windows emulator.

2) After running unzip, fix the damage made to the filenames using the convmv tool (http://j3e.de/linux/convmv/). The following is an example for the ru_RU.KOI8-R locale:

Step 1. Undo the conversion done by unzip:

convmv -f iso-8859-1 -t cp850 -r --nosmart --notest \
    </path/to/unzipped/files>

Step 2. Do the correct conversion instead:

convmv -f cp866 -t koi8-r -r --nosmart --notest \
    </path/to/unzipped/files>

3) Apply this patch to unzip: https://bugzilla.altlinux.ru/attachment.cgi?id=532. It will apply with some offsets.

It allows to specify the assumed filename encoding in the ZIP archive using the -O charset_name option and the on-disk filename encoding using the -I charset_name option. Defaults: the on-disk filename encoding is the locale encoding, the encoding inside the ZIP archive is guessed according to the builtin table based on the locale encoding. For US English users, this still means that unzip converts from CP850 to ISO-8859-1 by default.

Caveat: this method works only with 8-bit locale encodings, not with UTF-8. Attempting to use a patched unzip in UTF-8 locales may result in a segmentation fault and is probably a security risk.

Installation of UnZip

Note that if you applied the patch described above for locale issues, the required security patch will have some offsets. Now install UnZip by running the following commands:

patch -Np1 -i ../unzip-5.52-security_fix-1.patch &&
make -f unix/Makefile LOCAL_UNZIP=-D_FILE_OFFSET_BITS=64 linux

To test the results, issue: make check.

Now, as the root user:

make prefix=/usr install

Command Explanations

linux: This target in the Makefile makes assumptions that are useful for a Linux system when compiling the executables. To obtain alternatives to this target, use make list

LOCAL_UNZIP=...: This sets the compilation flags to allow UnZip to handle files up to 4 GB.

Contents

Installed Programs: funzip, unzip, unzipfsx, zipgrep, and zipinfo
Installed Libraries: None
Installed Directories: None

Short Descriptions

funzip

allows the output of unzip commands to be redirected.

unzip

lists, tests or extracts files from a ZIP archive.

unzipfsx

is a self-extracting stub that can be prepended to a ZIP archive. Files in this format allow the recipient to decompress the archive without installing UnZip.

zipgrep

searches files in a ZIP archive for lines matching a pattern.

zipinfo

produces technical information about the files in a ZIP archive, including file access permissions, encryption status, type of compression, etc.

libunzip.so

contains the API functions required by the UnZip programs.

Zip-2.32

Introduction to Zip

The Zip package contains Zip utilities. These are useful for compressing files into ZIP archives.

Package Information

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/zip

Installation of Zip

Install Zip by running the following commands:

make -f unix/Makefile generic_gcc

This package does not come with a test suite.

Now, as the root user:

make prefix=/usr -f unix/Makefile install

Command Explanations

make prefix=/usr -f unix/Makefile install: This command overrides the prefix variable that is set to /usr/local in the unix/Makefile. Alternatives to generic_gcc can be seen with a make -f unix/Makefile list command.

Contents

Installed Programs: zip, zipcloak, zipnote, and zipsplit
Installed Libraries: None
Installed Directories: None

Short Descriptions

zip

compresses files into a ZIP archive.

zipcloak

is a utility to encrypt and decrypt a ZIP archive.

zipnote

reads or writes comments stored in a ZIP file.

zipsplit

is a utility to split ZIP files into smaller files.

PCI Utilities-2.2.3

Introduction to PCI Utilities

The PCI Utilities package is a set of programs for listing PCI devices, inspecting their status and setting their configuration registers.

Package Information

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/pciutils

Installation of PCI Utilities

Install PCI Utilities by running the following commands:

sed -i 's/null ;/null 2>\&1 ;/' update-pciids.sh &&
make PREFIX=/usr

This package does not come with a test suite.

Now, as the root user:

make PREFIX=/usr install

Some packages require the PCI static library. To install the library and headers, issue the following commands as the root user:

install -v -m 755 -d /usr/include/pci &&
install -v -m 644 lib/libpci.a /usr/lib &&
install -v -m 644 lib/*.h /usr/include/pci

Command Explanations

sed -i 's/null ;/null 2>\&1 ;/' update-pciids.sh: This command suppresses some unneeded screen output from the update-pciids command if you don't have either Lynx or Wget installed by redirecting the stderr output of the embedded which command to /dev/null.

Configuring PCI Utilities

The pci.ids data file is constantly being updated. To get a current version of this file, run update-pciids as the root user. This program requires the which-2.16 script or program to find cURL-7.15.3, Wget-1.10.2 or Lynx-2.8.6 which are used to download the most current file, and then replace the existing file in /usr/share.

You may wish to add an entry to root's (or any other user who has write privilege to /usr/share) crontab to automatically update the pci.ids file periodically.

Contents

Installed Programs: lspci, setpci and update-pciids
Installed Library: libpci.a
Installed Directory: /usr/include/pci

Short Descriptions

lspci

is a utility for displaying information about all PCI buses in the system and all devices connected to them.

setpci

is a utility for querying and configuring PCI devices.

update-pciids

fetches the current version of the PCI ID list. Requires cURL-7.15.3, Wget-1.10.2 or Lynx-2.8.6.

libpci.a

is the static library that allows applications to access the PCI subsystem.

usbutils-0.72

Introduction to usbutils

The usbutils package contains a utility used to display information about USB buses in the system and the devices connected to them.

Package Information

usbutils Dependencies

Required

libusb-0.1.12

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/usbutils

Installation of usbutils

Install usbutils by running the following commands:

sed -i 's|DEST=|&/usr/share/|' update-usbids.sh &&
./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install &&
install -v -m755 update-usbids.sh /usr/sbin/update-usbids

Command Explanations

sed -i '...' update-usbids.sh: This command is used to modify the download script so that it will replace the existing file in /usr/share instead of in the current directory.

Configuring usbutils

The usb.ids data file is constantly being updated. To get a current version of this file, run update-usbids as the root user. This program requires the which-2.16 script or program to find Wget-1.10.2 or Lynx-2.8.6 which are used to download the most current file, and replace the existing file in /usr/share.

You may wish to add an entry to root's (or any other user who has write privilege to /usr/share) crontab to automatically update the usb.ids file periodically.

Contents

Installed Programs: lsusb and update-usbids
Installed Libraries: None
Installed Directories: None

Short Descriptions

lsusb

is a utility for displaying information about all USB buses in the system and all devices connected to them.

update-usbids

downloads the current version of the USB ID list. Requires Wget-1.10.2 or Lynx-2.8.6.

pkg-config-0.20

Introduction to pkg-config

The pkg-config package contains a tool for passing the include path and/or library paths to build tools during the configure and make file execution.

Package Information

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/pkgconfig

Installation of pkg-config

Install pkg-config by running the following commands:

./configure --prefix=/usr &&
make

To test the results, issue: make check.

Now, as the root user:

make install

Configuring pkg-config

The default setting for PKG_CONFIG_PATH is /usr/lib/pkgconfig:/usr/share/pkgconfig because of the prefix used to install pkg-config. You may add to PKG_CONFIG_PATH by exporting additional paths on your system where .pc files are installed. Note that PKG_CONFIG_PATH is only needed when compiling packages, not during run-time.

Contents

Installed Program: pkg-config
Installed Libraries: None
Installed Directories: None

Short Descriptions

pkg-config

returns meta information for the specified library or package.

cpio-2.6

Introduction to cpio

The cpio package contains tools for archiving.

Package Information

Additional Downloads

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/cpio

Installation of cpio

Install cpio by running the following commands:

sed -i "s/invalid_arg/argmatch_invalid/" src/mt.c &&
patch -Np1 -i ../cpio-2.6-security_fixes-1.patch &&
./configure CPIO_MT_PROG=mt --prefix=/usr \
    --bindir=/bin --libexecdir=/tmp \
    --with-rmt=/usr/sbin/rmt &&
echo "#define HAVE_SETLOCALE 1" >> config.h &&
echo "#define HAVE_LSTAT 1" >> config.h &&
make

If you have teTeX-3.0 installed and wish to create alternate forms of the documentation, issue the any or all of the following commands:

make -C doc pdf &&
make -C doc ps &&
texi2html -o doc/cpio.html doc/cpio.texi &&
makeinfo --plaintext -o doc/cpio.txt doc/cpio.texi

To test the results, issue:

sed -i 's/static const char/const char/' tests/genfile.c &&
make check

Now, as the root user:

make install

If you built any of the alternate forms of documentation, install it by issuing the following commands as the root user:

install -v -m755 -d /usr/share/doc/cpio-2.6 &&
install -v -m644 doc/cpio.{pdf,ps,dvi,html,txt} \
                 /usr/share/doc/cpio-2.6

Command Explanations

sed -i "s/invalid_arg/argmatch_invalid/" src/mt.c: This command fixes a build problem with the mt program.

CPIO_MT_PROG=mt: This parameter forces the building and installation of the mt program.

--bindir=/bin: This parameter installs cpio to /bin instead of /usr/bin as recommended by the FHS guidelines.

--libexecdir=/tmp: This parameter is used so that /usr/libexec is not created.

--with-rmt=/usr/sbin/rmt: This parameter inhibits building the rmt program as it is already installed by the Tar package in LFS.

echo "#define HAVE_SETLOCALE 1" >> config.h: This command specifies that the system Libc implements the setlocale function since it is not detected by configure.

echo "#define HAVE_LSTAT 1" >> config.h: This define fixes a bug that causes cpio to convert symlinks into regular files during archive creation.

sed -i 's/static const ...: This command fixes a build problem when compiling the tests with GCC-4.0.3.

Contents

Installed Programs: cpio and mt
Installed Libraries: None
Installed Directories: None

Short Descriptions

cpio

copies files to and from archives.

mt

controls magnetic tape drive operations.

MC-4.6.1

Introduction to MC

MC (Midnight Commander) is a text-mode full-screen file manager and visual shell. It provides a clear, user-friendly, and somewhat protected interface to a Unix system while making many frequent file operations more efficient and preserving the full power of the command prompt.

Package Information

Do I Need the Debian Patch?

Midnight Commander without the Debian patch is completely unusable in multibyte locales because it assumes that characters and bytes are the same thing. The issue manifests itself as massive screen content corruption similar to what is depicted in this screenshot (taken in the ru_RU.UTF-8 locale). For a general discussion of this type of issue, see the Breaks Multibyte Characters section of the Locale Related Issues page. The Debian patch mostly fixes this issue, and adds support for recoding remote FTP filenames. Debian also fixed 64-bit issues, rare segfaults in mcedit, and improved syntax highlighting.

If you do not use a multibyte locale and do not need any of the new features or fixes, the patch is still supposed to be harmless. However, the patch changes the dependencies and build instructions, and in the past it caused unacceptable regressions for non-UTF-8 locale users. Thus, failsafe instructions without the patch are left in the book just in case. Due to the size and unofficial nature of the patch, please do not report bugs in the patched MC to the original MC developers.

MC Dependencies

Required

GLib-1.2.10 (untested with Debian patch) or GLib-2.10.3

Optional

GPM-1.20.1, X Window System, Samba-3.0.23d, S-Lang-2.0.6 (required when building with Debian patch), Zip-2.32, UnZip-5.52, and GNOME Libraries-1.4.2

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/MC

Installation of MC

If desired, apply Debian fixes:

patch -Np1 -i ../mc-4.6.1-debian_fixes-1.patch

Install MC by running the following commands:

CPPFLAGS="-DUTF8" ./configure --prefix=/usr \
            --enable-charset &&
make

MC with Debian patches expects its documentation to be stored in UTF-8 encoding on disk, and automatically converts it to the locale encoding when displaying on the terminal. This is different from the expectations of the unpatched MC, so the documentation files have to be converted if (and only if) the Debian patch has been applied:

convert-mans ISO-8859-1 UTF-8 lib/mc.hint{,.es,.it,.nl} &&
convert-mans ISO-8859-2 UTF-8 lib/mc.hint{.cs,.hu,.pl} &&
convert-mans ISO-8859-5 UTF-8 lib/mc.hint.sr &&
convert-mans KOI8-R UTF-8 lib/mc.hint.ru &&
convert-mans KOI8-U UTF-8 lib/mc.hint.uk &&
convert-mans BIG5 UTF-8 lib/mc.hint.zh &&
convert-mans ISO-8859-1 UTF-8 doc/{es,it}/mc.hlp.* &&
convert-mans ISO-8859-2 UTF-8 doc/{hu,pl}/mc.hlp.* &&
convert-mans ISO-8859-5 UTF-8 doc/sr/mc.hlp.sr &&
convert-mans KOI8-R UTF-8 doc/ru/mc.hlp.ru

This package does not come with a test suite.

Now, as the root user:

make install &&
chmod 1755 /usr/lib/mc/cons.saver

Command Explanations

CPPFLAGS="-DUTF8": This parameter activates UTF-8 support in the Debian patch and has no effect without this patch.

--enable-charset: This option adds support to mcedit for editing files in encodings different from the one implied by the current locale. This feature works in non-UTF-8 locales only, even with the Debian patch.

--with-screen=(slang|mcslang|ncurses): This parameter selects the screen library used by MC. NCurses support is currently buggy (MC does not handle mouse events in xterm correctly). UTF-8 support in the Debian patch is functional only when external S-Lang-2.0.6 is used as a screen library (this is the default).

--with-codepagedir=DIR: This parameter was useful only with SAMBA-2.x. New versions of SAMBA do not have codepage files.

chmod 1755 /usr/lib/mc/cons.saver: The cons.saver program has to be installed setuid root, because on LFS regular users have no access to /dev/vcsa* devices. This step is optional if MC is going to be started from X terminal emulators or ssh sessions only (thus rendering the cons.saver binary completely unneeded).

Configuring MC

Config Files

~/.mc/*

Configuration Information

The ~/.mc directory and its contents are created when you start mc for the first time. Then you can edit the main ~/.mc/ini configuration file manually or through the MC shell. Consult the mc(1) man page for details.

Contents

Installed Programs: cons.saver, mc, mcedit, mcmfmt, and mcview
Installed Libraries: None
Installed Directories: /usr/share/mc and /usr/lib/mc

Short Descriptions

cons.saver

is used internally by mc for saving and restoring the text behind the panels on Linux text console.

mc

is a visual shell.

mcedit

is an internal file editor.

mcmfmt

is used internally by mcview when viewing mailbox files.

mcview

is an internal file viewer.

Sysstat-6.0.2

Introduction to Sysstat

The Sysstat package contains utilities to monitor system performance and usage activity. Sysstat contains the sar utility, common to many commercial Unixes, and tools you can schedule via cron to collect and historize performance and activity data.

Package Information

Sysstat Dependencies

Recommended

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/sysstat

Installation of Sysstat

Install Sysstat by running the following commands:

make config &&
make

This package does not come with a test suite.

Now, as the root user:

make install &&
install -v -m644 sysstat.sysconfig /etc/sysconfig/sysstat

Command Explanations

make config: Runs the interactive configuration process. The first question prompts you for an “Installation directory”. Reply with /usr, as this is equivalent to Autoconf's --prefix=/usr parameter to configure. For all other prompts, you may press Enter to accept the (very sane) defaults. When prompted for “Number of daily data files to keep: [7]”, you may wish to keep a larger number of files. Note that anything entered larger than 28 will result in 28 being used.

Configuring Sysstat

Cron Information

To begin gathering Sysstat history information, you must add to, or create a privileged user's crontab. The default history data location is /var/log/sa. The user running Sysstat utilities via cron must have write access to this location.

Below is an example of what to install in the crontab. Adjust the parameters to suit your needs. Use man sa1 and man sa2 for information about the commands.

# 8am-7pm activity reports every 10 minutes during weekdays
0 8-18 * * 1-5 /usr/lib/sa/sa1 600 6 &

# 7pm-8am activity reports every hour during weekdays
0 19-7 * * 1-5 /usr/lib/sa/sa1 &

# Activity reports every hour on Saturday and Sunday
0 * * * 0,6 /usr/lib/sa/sa1 &

# Daily summary prepared at 19:05
5 19 * * * /usr/lib/sa/sa2 -A &

Ensure you submit the revised crontab to the cron daemon.

System Startup Information

At system startup, a LINUX RESTART message must be inserted in the daily data file to reinitialize the kernel counters. This can be automated by installing the /etc/rc.d/init.d/sysstat init script included in the blfs-bootscripts-20060910 package using the following command as the root user:

make install-sysstat

Contents

Installed Programs: iostat, mpstat, sar, sa1, sa2, sadc and sadf
Installed Libraries: None
Installed Directories: /usr/lib/sa, /usr/share/doc/sysstat-6.0.2 and /var/log/sa

Short Descriptions

iostat

reports CPU statistics and input/output statistics for devices and partitions.

mpstat

reports individual or combined processor related statistics.

sar

collects, reports and saves system activity information.

sa1

collects and stores binary data in the system activity daily data file. It is a front end to sadc designed to be run from cron.

sa2

writes a summarized daily activity report. It is a front end to sar designed to be run from cron.

sadc

is the system activity data collector, used as a backend for sar.

sadf

is used for displaying the contents of data files created by the sar command. But unlike sar, sadf can write its data in many different formats.

Apache Ant-1.6.5

Introduction to Apache Ant

The Apache Ant package is a Java-based build tool. In theory, it is kind of like make, but without make's wrinkles. Ant is different. Instead of a model where it is extended with shell-based commands, Ant is extended using Java classes. Instead of writing shell commands, the configuration files are XML-based, calling out a target tree where various tasks get executed. Each task is run by an object that implements a particular task interface.

Package Information

Additional Downloads

Apache Ant Dependencies

Required

JDK-1.5.0_10

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/apache-ant

Installation of Apache Ant

Note

You may need additional libraries to satisfy the build requirements of various packages installed using Apache Ant. Review the table at http://ant.apache.org/manual/install.html#librarydependencies for any prerequisite libraries you may need. One such library is the JUnit-3.8.1 testing framework library. Many Ant-installed packages will use this library to perform the unit tests during the build process. To install the JUnit library along with the Apache Ant package, download it from http://www.junit.org/, unzip the distribution file (requires UnZip-5.52) and copy the junit.jar file into the lib subdirectory of the Apache Ant source tree before beginning the Apache Ant build.

Install Apache Ant by running the following commands:

patch -Np1 -i ../apache-ant-1.6.5-blfs_install-1.patch

This package does not come with a test suite.

Now, as the root user:

./build.sh -Ddist.dir=/opt/ant-1.6.5 dist &&
ln -v -sf /etc/ant /opt/ant-1.6.5/etc &&
ln -v -sf ant-1.6.5 /opt/ant

Command Explanations

./build.sh -Ddist.dir=/opt/ant-1.6.5 dist: This command does everything. It builds, then installs the package into /opt/ant-1.6.5.

ln -v -sf /etc/ant /opt/ant-1.6.5/etc: The patch changes the configuration directory to /etc/ant to conform with FHS guidelines. This command creates a symlink from the configuration directory back to the installation directory as the package is expecting to find the files there.

ln -v -sf ant-1.6.5 /opt/ant: This command is optional, and creates a convenience symlink.

Configuring Apache Ant

Config Files

/etc/ant/ant.conf, ~/.ant/ant.conf, and ~/.antrc

Configuration Information

Some packages will require ant to be in the search path and the $ANT_HOME environment variable defined. Satisfy these requirements by adding the following lines to /etc/profile or to individual user's ~/.profile or ~/.bashrc files:

export PATH=$PATH:/opt/ant/bin
export ANT_HOME=/opt/ant

Contents

Installed Programs: ant, antRun, antRun.pl, complete-ant-cmd.pl, runant.pl, and runant.py
Installed Libraries: ant-*.jar, xercesImpl.jar, and xml-apis.jar
Installed Directories: /etc/ant and /opt/ant-1.6.5

Short Descriptions

ant

is a Java based build tool used by many packages instead of the conventional make program.

antRun

is a support script used to start ant build scripts in a given directory.

antRun.pl

is a Perl script that provides similar functionality offered by the antRun script.

complete-ant-cmd.pl

is a Perl script that allows Bash to complete an ant command-line.

runant.pl

is a Perl wrapper script used to invoke ant.

runant.py

is a Python wrapper script used to invoke ant.

ant-*.jar

files are the Apache Ant Java class libraries.

xercesImpl.jar

is a Java class library used by Apache Ant to perform XML parsing.

xml-apis.jar

contains the DOM Java classes required by the Apache Ant XML formatter.

D-BUS-0.62

Introduction to D-BUS

D-BUS is a message bus system, a simple way for applications to talk to one another. D-BUS supplies both a system daemon (for events such as “new hardware device added” or “printer queue changed”) and a per-user-login-session daemon (for general IPC needs among user applications). Also, the message bus is built on top of a general one-to-one message passing framework, which can be used by any two applications to communicate directly (without going through the message bus daemon).

Package Information

D-BUS Dependencies

Optional

pkg-config-0.20, expat-2.0.0 or libxml2-2.6.26, GLib-2.10.3, GTK+-2.8.20, Qt-3.3.7, Qt-4.x.x, X Window System, GCC-4.0.3 (for the Java compiler and tools), Pyrex (version 0.9.4.1 is known to work and requires Python-2.4.4), GtkSharp-1.0.x (requires Mono), Monodoc, Doxygen-1.4.6 (to generate the API documentation), and xmlto (to generate HTML documentation and manuals)

Listed below are some additional notes about the dependencies

  • Review the information from running ./configure --help for the available parameters to pass to the configure script to enable the various dependencies.

  • To build the Mono bindings, you must have GtkSharp installed. If you wish to use recent versions of GtkSharp, you'll need to make some trivial patches to the D-BUS sources. See http://www.mono-project.com/GtkSharpUpgrade for details.

  • If you have a recent version of Monodoc installed (>= 1.1.10) and you passed the --enable-mono-docs parameter to configure, the D-BUS build will fail. You can review the parts of this patch (http://www.mail-archive.com/frugalware-darcs@frugalware.org/msg10156.html) that apply to the Monodoc installation, to fix the build problems. Note this is untested by the BLFS Team, but should work just fine.

HAL Requirements

GLib-2.10.3 must be installed before you begin building D-BUS if you plan on installing HAL-0.5.7.1. GLib is required to build the libdbus-glib library, which is required by the HAL daemon.

If you plan on using HAL with KDE, you'll need to link D-BUS with the Qt libraries. Ensure you've installed Qt before beginning the D-BUS installation.

If you desire to use the hal-device-manager program, Pyrex (note the known working version listed in the dependencies) must be installed before you begin building D-BUS as the D-BUS Python bindings are required. You will also need to remove the --disable-python parameter from the configure command in the instructions below.

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/dbus

Kernel Configuration

Ensure the following option is enabled in the kernel configuration and recompile the kernel if necessary:

General Setup
  System V IPC

Installation of D-BUS

As the root user, create a system user and group to handle the system message bus activity:

groupadd -g 18 messagebus &&
useradd -c "D-BUS Message Daemon User" -d /dev/null \
        -u 18 -g messagebus -s /bin/false messagebus

Install D-BUS by running the following commands (you may wish to review the output from ./configure --help first and add any desired parameters to the configure command shown below):

./configure --prefix=/usr \
            --sysconfdir=/etc \
            --localstatedir=/var \
            --disable-python &&
make

The --enable-doxygen-docs parameter does not work properly. If you have Doxygen installed and you wish to build the API documentation, issue doxygen.

This package's test suite cannot be run without passing additional parameters to configure. These parameters are not intended to be used in a production build of D-BUS so you will have to build twice (issuing make distclean after the first build) if you want to run the regression tests.

Now, as the root user:

make install &&
install -v -m755 -d /usr/share/doc/dbus-0.62 &&
install -v -m644 doc/{TODO,*.{dtd,xml,xsl,html,txt,c}} \
    /usr/share/doc/dbus-0.62

If you built the API documentation, install it by issuing the following commands as the root user:

install -v -m755 -d /usr/share/doc/dbus-0.62/api &&
install -v -m644 doc/api/html/* \
    /usr/share/doc/dbus-0.62/api

Command Explanations

--localstatedir=/var: This parameter causes the daemon PID file to be created in /var/run/dbus instead of /usr/var/run/dbus.

--disable-python: This parameter is required if Python is not installed. Remove the parameter if Python (and Pyrex) is installed and you wish to build the Python bindings.

Configuring dbus

Config Files

/etc/dbus-1/session.conf, /etc/dbus-1/system.conf and /etc/dbus-1/system.d/*

Configuration Information

The configuration files listed above should probably not be modified. If changes are required, you should create /etc/dbus-1/session-local.conf and/or /etc/dbus-1/system-local.conf and make any desired changes to these files.

If any packages install a D-Bus .service file outside of the standard /usr/share/dbus-1/services directory, that directory should be added to the local session configuration. For instance, /usr/local/share/dbus-1/services can be added by performing the following commands as the root user:

cat > /etc/dbus-1/session-local.conf << "EOF"
<!DOCTYPE busconfig PUBLIC
 "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>

  <!-- Search for .service files in /usr/local -->
  <servicedir>/usr/local/share/dbus-1/services</servicedir>

</busconfig>
EOF

Boot Script

To automatically start dbus-daemon when the system is rebooted, install the /etc/rc.d/init.d/dbus bootscript from the blfs-bootscripts-20060910 package.

make install-dbus

Note that this boot script only starts the system-wide D-BUS daemon. Each user requiring access to D-BUS services will also need to run a session daemon as well. There are many methods you can use to start a session daemon using the dbus-launch command. Review the dbus-launch man page for details about the available parameters and options. Here are some suggestions and examples:

  • Add dbus-launch to the line in the ~/.xinitrc file that starts your graphical desktop environment as shown in the section called “Configuring the Core GNOME Packages”.

  • If you use xdm or some other display manager that calls the ~/.xsession file, you can add dbus-launch to the line in your ~/.xsession file that starts your graphical desktop environment. The syntax would be similar to the example in the ~/.xinitrc file.

  • If you use gdm or some other display manager that utilizes custom files to initiate sessions, use the example in the section called “Configuration Information” of the GDM instructions to create a file containing dbus-launch.

  • The examples shown previously use dbus-launch to specify a program to be run. This has the benefit (when also using the --exit-with-session parameter) of stopping the session daemon when the specified program is stopped. You can also start the session daemon in your system or personal startup scripts by adding the following lines:

    # Start the D-BUS session daemon
    eval `dbus-launch`
    export DBUS_SESSION_BUS_ADDRESS

    This method will not stop the session daemon when you exit your shell, therefore you should add the following line to your ~/.bash_logout file:

    # Kill the D-BUS session daemon
    kill $DBUS_SESSION_BUS_PID
  • A hint has been written that provides ways to start scripts using the KDM session manager of KDE. The concepts in this hint could possibly used with other session managers as well. The hint is located at http://www.linuxfromscratch.org/hints/downloads/files/execute-session-scripts-using-kdm.txt.

Contents

Installed Programs: dbus-binding-tool, dbus-cleanup-sockets, dbus-daemon, dbus-launch, dbus-monitor, dbus-send and dbus-viewer
Installed Libraries: libdbus-1.{so,a} and optionally, dbus-1.jar, libdbus-gcj-1.{so,a}, libdbus-glib-1.{so,a}, libdbus-qt-1.{so,a}, libdbus-qt4-1.{so,a}, libdbus-mono-1.{so,a} and Python modules
Installed Directories: /etc/dbus-1, /usr/include/dbus-1.0, /usr/lib/dbus-1.0, /usr/lib/python2.4/site-packages/dbus, /usr/share/dbus-1, /usr/share/doc/dbus-0.62 and /var/run/dbus

Short Descriptions

dbus-binding-tool

is used to create header files from GLib object files.

dbus-cleanup-sockets

is used to clean up leftover sockets in a directory.

dbus-daemon

is the D-BUS message bus daemon.

dbus-launch

is used to start dbus-daemon from a shell script. It would normally be called from a user's login scripts.

dbus-monitor

is used to monitor messages going through a D-BUS message bus.

dbus-send

is used to send a message to a D-BUS message bus.

dbus-viewer

is a graphical D-BUS frontend utility.

libdbus-1.{so,a}

contains the API functions used by the D-BUS message daemon. D-BUS is first a library that provides one-to-one communication between any two applications; dbus-daemon is an application that uses this library to implement a message bus daemon.

HAL-0.5.7.1

Introduction to HAL

HAL is a hardware abstraction layer, which is a piece of software that provides a view of the various hardware attached to a system. In addition to this, HAL keeps detailed metadata for each piece of hardware and provides hooks such that system and desktop-level software can react to changes in the hardware configuration in order to maintain system policy.

The most important goal of HAL is to provide plug-and-play facilities for UNIX-like desktops with focus on providing a rich and extensible description of device characteristics and features. One example of the functionality provided by HAL is when you plug in a USB storage device. HAL can automatically create a mount point in /media and mount the device.

Package Information

HAL Dependencies

Required

GLib-2.10.3, D-BUS-0.62 (see the HAL Requirements), Python-2.4.4, and XML::Parser-2.34

Recommended

Optional

pkg-config-0.20, intltool-0.34.2, libusb-0.1.12, Doxygen-1.4.6, and DocBook-utils-0.6.14

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/hal

Installation of HAL

You must create a dedicated user and group before installing the package. Though the default BLFS instructions run the HAL daemon as the root user, a configuration file is installed which has the dedicated user's name hard-coded in it. This causes a confusing message to be generated when starting the D-BUS daemon. Issue the following commands as the root user:

groupadd -g 19 haldaemon &&
useradd -c "HAL Daemon User" -d /dev/null -u 19 \
        -g haldaemon -s /bin/false haldaemon

Install HAL by running the following commands:

./configure --prefix=/usr \
            --sysconfdir=/etc \
            --libexecdir=/usr/lib/hal \
            --localstatedir=/var &&
make

To test the results, issue make check.

Now, as the root user:

make install &&
install -v -m755 -d /var/run/hald

Command Explanations

--libexecdir=/usr/lib/hal: This parameter forces the installation of libexec files to /usr/lib/hal instead of /usr/libexec.

--localstatedir=/var: This parameter forces the creation of the pid file to /var/run/hald instead of /usr/var/run/hald.

Run-Time Dependencies

The hal-device-manager program requires several additional packages to be installed before it will run. The list is significant and requires a substantial commitment to install them. It is left up to you to determine if the time and effort spent installing the following packages is worth using the hal-device-manager program.

Though the only requirement to run the hal-device-manager program is installing GNOME-Python, the dependency list is staggering. The following list does not include the dependencies already identified in the BLFS book. For example, libgnome already lists GNOME VFS, GConf, etc., so they are not repeated here. Note that some of the dependencies have their own dependencies, which have their own, and so forth and so on.

Note

The dependency list is designed to start at the bottom and work your way up until the last package to install is GNOME-Python. Note that the dependencies marked as “required” are required for the package it is listed under. For example, you don't need to install ORBit if you don't plan on installing PyORBit. The minimum packages you could install to support running hal-device-manager would be (in this order): libgnome-2.14.1, libglade-2.6.0, PyGTK and GNOME-Python.

Configuring HAL

Config Files

/etc/dbus-1/system.d/hal.conf, /etc/dbus-1/system.d/halusers.conf and /etc/hal/*

Configuration Information

The default setup for HAL is to allow only certain users to invoke methods such as Mount(). These are the root user and the user determined to be at the active console using pam_console. If you are not set up to use Linux-PAM-0.99.4.0 and pam_console, create a group that is allowed to invoke HAL methods with the following commands:

groupadd -g 61 halusers &&
cat > /etc/dbus-1/system.d/halusers.conf << "EOF"
<!DOCTYPE busconfig PUBLIC
 "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>

  <!-- Allow users in the halusers group invoke HAL methods -->
  <policy group="halusers">
    <allow send_interface="org.freedesktop.Hal.Device.SystemPowerManagement"/>
    <allow send_interface="org.freedesktop.Hal.Device.LaptopPanel"/>
    <allow send_interface="org.freedesktop.Hal.Device.Volume"/>
    <allow send_interface="org.freedesktop.Hal.Device.Volume.Crypto"/>
  </policy>

</busconfig>
EOF

Now add the users you would like to the halusers group to use HAL. Note that these users still need to have appropriate permissions to access the devices that HAL will invoke its methods on.

With the above configuration in place, authorized users now have the ability to unmount disk partitions mounted at non-standard locations such as /pub. If you'd like to restrict this policy to only drives which are considered removable or hotpluggable, add the following configuration file as the root user:

cat > /etc/hal/fdi/policy/no-fixed-drives.fdi << "EOF"
<?xml version="1.0" encoding="UTF-8"?> <!-- -*- SGML -*- -->

<!-- Don't allow HAL methods on disks that are not
     removable or hotpluggable -->

<deviceinfo version="0.2">
<device>
  <match key="@block.storage_device:storage.hotpluggable" bool="false">
    <match key="@block.storage_device:storage.removable" bool="false">
      <merge key="volume.ignore" type="bool">true</merge>
    </match>
  </match>
</device>
</deviceinfo>
EOF

HAL only provides the methods such as Mount() to act on hardware. In order to take advantage of these, a HAL event handler such as gnome-volume-manager-1.5.15 or Ivman should be installed.

Note

HAL will ignore any devices listed in /etc/fstab for the purpose of automounting. You must remove any listings for devices that you would like automounted such as CD-ROMs or USB keys.

Boot Script

To automatically start the hald daemon when the system is rebooted, install the /etc/rc.d/init.d/haldaemon bootscript from the blfs-bootscripts-20060910 package.

Important

If the system-wide D-BUS daemon was running during the installation of HAL, ensure you stop and restart the D-BUS daemon before attempting to start the hald daemon.

make install-haldaemon

Contents

Installed Programs: hal-device, hal-device-manager, hal-find-by-capability, hal-find-by-property, hal-get-property, hal-set-property, hald and lshal
Installed Libraries: libhal.{so,a} and libhal-storage,{so,a}
Installed Directories: /etc/hal, /usr/include/hal, /usr/lib/hal, /usr/share/doc/hal-0.5.7.1, /usr/share/hal and /var/run/hald

Short Descriptions

hal-device

is used to create, remove or show a HAL device.

hal-device-manager

shows a graphical representation of all the devices HAL is aware of. This program requires GNOME-Python. Here is a screenshot of hal-device-manager communicating with the HAL daemon and displaying a tree of device objects. The shown properties in the screenshot are for a device object representing a hard disk.

hal-find-by-capability

prints the Unique Device Identifiers for HAL device objects of a given capability.

hal-find-by-property

prints the Unique Device Identifiers for HAL device objects where a given property assumes a given value.

hal-get-property

retrieves a property from a device.

hal-set-property

attempts to set property for a device. Note that, due to security considerations, it may not be possible to set a property.

hald

is the HAL daemon program.

lshal

shows all devices and their properties. If the --monitor option is given then the device list and all devices are monitored for changes.

libhal.{so,a}

contains the API functions required by the HAL programs.

libhal-storage.{so,a}

contains the API functions required by the HAL storage and volume utility programs.

Chapter 12. Programming

A base LFS system can be used as a development platform, however the base system only includes language support for C, C++ and Perl. This chapter provides instructions to build many popular programming environments to greatly expand your system's development capabilities.

DejaGnu-1.4.4

Introduction to DejaGnu

DejaGnu is a framework for running test suites on GNU tools. It is written in expect, which uses Tcl (Tool command language).

Package Information

DejaGnu Dependencies

Required (Run-time Only)

Expect-5.43.0

Optional

DocBook-utils-0.6.14

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/dejagnu

Installation of DejaGnu

Install DejaGnu by running the following commands:

./configure --prefix=/usr &&
make

Now, as the root user:

make install &&
make install-doc

To test the installation, issue make check as an unprivileged user.

Contents

Installed Program: runtest
Installed Libraries: None
Installed Scripts: There are numerous Expect scripts installed in the /usr/share/dejagnu hierarchy.
Installed Directory: /usr/share/dejagnu

Short Descriptions

runtest

is the DejaGnu test driver program. It is used to control what tests to run, and variations on how to run them.

Doxygen-1.4.6

Introduction to Doxygen

The Doxygen package contains a documentation system for C++, C, Java, Objective-C, Corba IDL and to some extent PHP, C# and D. This is useful for generating HTML documentation and/or an off-line reference manual from a set of documented source files. There is also support for generating output in RTF, PostScript, hyperlinked PDF, compressed HTML, and Unix man pages. The documentation is extracted directly from the sources, which makes it much easier to keep the documentation consistent with the source code.

You can also configure Doxygen to extract the code structure from undocumented source files. This is very useful to quickly find your way in large source distributions. Used along with Graphviz, you can also visualize the relations between the various elements by means of include dependency graphs, inheritance diagrams, and collaboration diagrams, which are all generated automatically.

Package Information

Doxygen Dependencies

Optional

Qt-3.3.7, teTeX-3.0, Python-2.4.4, ESP Ghostscript-8.15.2 or AFPL Ghostscript-8.53, and Graphviz-2.8

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/doxygen

Installation of Doxygen

Install Doxygen by running the following commands:

rm src/unistd.h &&
./configure --prefix /usr --docdir /usr/share/doc &&
make

This package does not come with a test suite.

Now, as the root user:

make install

If you wish to generate and install the package documentation (note that man pages have already been installed), you must have Python, teTeX (for HTML docs) and Ghostscript (for PDF docs) installed, then issue the following command as the root user:

make install_docs

Command Explanations

rm src/unistd.h: There is a bug in Flex-2.5.33 which causes make to use this file instead of the system installed version. Removing this file allows the GUI front-end to build successfully. This command is not required if you don't pass the --with-doxywizard parameter (but won't affect the build otherwise).

--with-doxywizard: Use this parameter if Qt is installed and you wish to build the GUI front-end.

Configuring Doxygen

There is no real configuration necessary for the Doxygen package although three additional packages are required if you wish to use extended capabilities. If you need to use the language translation features, you must have Python-2.4.4 installed. If you require formulas to create PDF documentation, then you must have teTeX-3.0 installed. If you require formulas to convert PostScript files to bitmaps, then you must have AFPL Ghostscript-8.53 or ESP Ghostscript-8.15.2 installed.

Contents

Installed Programs: doxygen, doxytag, and optionally, doxywizard
Installed Libraries: None
Installed Directory: /usr/share/doc/doxygen

Short Descriptions

doxygen

is a command-line based utility used to generate template configuration files and then generate documentation from these templates. Use doxygen --help for an explanation of the command-line parameters.

doxytag

is used to generate a tag file and/or a search index for a set of HTML files.

doxywizard

is a GUI front-end for configuring and running doxygen.

Expect-5.43.0

Introduction to Expect

The Expect package contains tools for automating interactive applications such as telnet, ftp, passwd, fsck, rlogin, tip, etc. Expect is also useful for testing these same applications as well as easing all sorts of tasks that are prohibitively difficult with anything else.

Package Information

Additional Downloads

Expect Dependencies

Required

Tcl-8.4.13

Optional

Tk-8.4.13

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/expect

Installation of Expect

Install Expect by running the following commands:

patch -Np1 -i ../expect-5.43.0-spawn-2.patch &&
./configure --prefix=/usr \
            --with-tcl=/usr/lib \
            --with-tclinclude=/usr/include \
            --enable-shared &&
make

To test the results, issue: make test.

Now, as the root user:

make install &&
ln -sf ../libexpect5.43.a /usr/lib/expect5.43

Command Explanations

-with-tcl=/usr/lib: This parameter is required in some cases to link in the Tcl library.

--enable-shared: This option enables building the shared library.

ln -sf ../libexpect5.43.a /usr/lib/expect5.43: This command creates a required link to the static library.

Configuring Expect

Config Files

$exp_library/expect.rc and ~/.expect.rc

Configuration Information

Reference the expect man page for information about utilizing the expect.rc configuration files. Additionally, many of the tools contained in the Expect package will use their own configuration files. Reference the respective man page, or examine the script directly for configuration file information.

Contents

Installed Programs: autoexpect, autopasswd, cryptdir, decryptdir, dislocate, expect, ftp-rfc, kibitz, lpunlock, mkpasswd, passmass, rftp, rlogin-cwd, timed-read, timed-run, unbuffer, weather, and optionally (if Expect was linked against Tk), expectk, multixterm, tknewsbiff, tkpasswd, xkibitz, and xpstat
Installed Library: libexpect5.43.{so,a}
Installed Directory: /usr/lib/expect5.43

Short Descriptions

autoexpect

generates an Expect script from watching a session.

autopasswd

is a wrapper to make passwd(1) be non-interactive.

cryptdir

encrypts all files in a directory.

decryptdir

decrypts all files in a directory.

dislocate

allows processes to be disconnected and reconnected to a terminal.

expect

is a program that “talks” to other interactive programs according to a script.

ftp-rfc

retrieves an RFC (or the index) from UUNET.

kibitz

allows two (or more) people to interact with one shell (or any arbitrary program).

lpunlock

unhangs a printer which claims it is “waiting for lock”.

mkpasswd

generates passwords and can apply them automatically to users.

passmass

changes a password on multiple machines.

rftp

is much like ftp except it uses ~g and ~p instead of mget and mput.

rlogin-cwd

is rlogin except it uses the local current directory as the current working directory on the remote machine.

timed-read

reads a complete line from stdin and aborts after a given number of seconds.

timed-run

runs a program for a given amount of time.

unbuffer

disables the output buffering that occurs when program output is redirected.

weather

retrieves a weather report (courtesy University of Michigan) for a given city or geographical area.

expectk

is a combination of Expect with Tk and should run any wish or Expect script.

multixterm

creates multiple xterms that can be driven together or separately.

tknewsbiff

pops up a window when there is unread news in your favorite newsgroups and removes the window after you've read the news.

tkpasswd

is a script to change passwords using expectk.

xkibitz

allows users in separate xterms to share one shell (or any program that runs in an xterm).

xpstat

is a script that acts as a front-end for xpilot.

libexpect5.43.{so,a}

contains functions that allow Expect to be used as a Tcl extension or to be used directly from C or C++ (without Tcl).

GC-6.8

Introduction to GC

The GC package contains the Boehm-Demers-Weiser conservative garbage collector, which can be used as a garbage collecting replacement for the C malloc function or C++ new operator. It allows you to allocate memory basically as you normally would, without explicitly deallocating memory that is no longer useful. The collector automatically recycles memory when it determines that it can no longer be otherwise accessed. The collector is also used by a number of programming language implementations that either use C as intermediate code, want to facilitate easier interoperation with C libraries, or just prefer the simple collector interface. Alternatively, the garbage collector may be used as a leak detector for C or C++ programs, though that is not its primary goal.

Package Information

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gc

Installation of GC

Install GC by running the following commands:

sed -i "s|\$(datadir)/@PACKAGE@|&-6.8|" doc/Makefile.in &&
./configure --prefix=/usr \
    --datadir=/usr/share/doc --enable-cplusplus &&
make

To test the results, issue: make check.

Now, as the root user:

make install &&
install -v -m644 doc/gc.man /usr/share/man/man3/gc_malloc.3 &&
ln -v -s gc_malloc.3 /usr/share/man/man3/gc.3

Command Explanations

sed -i "s|\$(datadir)/@PACKAGE@|&-6.8|" ...: This command appends “-6.8” to the default documentation installation path of /usr/share/doc/gc.

--datadir=/usr/share/doc: This parameter changes the installation path of the documentation to /usr/share/doc/gc instead of /usr/share/gc.

--enable-cplusplus: This parameter forces the building and installation of the C++ library along with the standard C library.

Contents

Installed Programs: None
Installed Libraries: libgc.{so,a} and libgccpp.{so,a}
Installed Directories: /usr/include/gc and /usr/share/doc/gc-6.8

Short Descriptions

libgc.{so,a}

contains a C interface to the conservative garbage collector, primarily designed to replace the C malloc function.

libgccpp.{so,a}

contains a C++ interface to the conservative garbage collector.

GCC-4.0.3

Introduction to GCC

The GCC package contains GNU compilers. This package is useful for compiling programs written in C, C++, Fortran, Java, Objective C and Ada. Also included is GNU Treelang. Treelang is a sample language, useful only to help people understand how to implement a new language front end to GCC. It is not a useful language in itself other than as an example or basis for building a new language. Therefore only language developers are likely to have an interest in it.

Note

The Fortran compiler included with the GCC-4.x package now aims to be conformant with the Fortran 95 standard, not the Fortran 77 standard as all previous versions of GCC have been. Please note the following paragraph copied directly from the GCC-4.0.3 gfortran man page.

Gfortran is not yet a fully conformant Fortran 95 compiler. It can generate code for most constructs and expressions, but work remains to be done. In particular, there are known deficiencies with ENTRY, NAMELIST, and sophisticated use of MODULES, POINTERS and DERIVED TYPES. For those whose Fortran codes conform to either the Fortran 77 standard or the GNU Fortran 77 language, we recommend to use g77 from GCC 3.4.x

Instructions to install the 3.4.6 version of the Fortran compiler can be found in GCC-3.3.6 and on the BLFS Wiki.

Package Information

GCC Dependencies

Recommended

Optional (Required to Build the Fortran Compiler)

GMP-4.2 and MPFR

Note

If you plan to compile Ada, you will need to install GNAT temporarily to satisfy the circular dependency when you recompile GCC to include Ada.

GNAT-3.15 Package Information

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gcc

Installation of GNAT

Install GNAT by running the following command as the root user:

make ins-all prefix=/opt/gnat

The GNAT compiler can be invoked by executing the gcc binary installed in /opt/gnat/bin.

You may now remove the GNAT source directory:

cd .. &&
rm -rf gnat-3.15p-i686-pc-linux-gnu-bin

Prepare to compile GCC by placing the GNAT version of gcc at the beginning of the PATH variable by using the following commands:

PATH_HOLD=$PATH &&
export PATH=/opt/gnat/bin:$PATH_HOLD

Installation of GCC

Install GCC by running the following commands:

Important

The installation process may overwrite your existing GCC gcc and c++ compilers and libraries. It is highly recommended that you have the Tcl, Expect and DejaGnu packages installed before beginning the build so you can run the full suite of tests.

Do not continue with the make install command until you are confident the build was successful. You can compare your test results with those found at http://gcc.gnu.org/ml/gcc-testresults/. There's also an i686 platform test result produced by an LFS-SVN-20051127 system at http://anduin.linuxfromscratch.org/files/BLFS/gcc403_test.txt. You may also want to refer to the information found in the GCC-Pass 2 section of Chapter 5 in the LFS book (../../../../lfs/view/6.2/chapter05/gcc-pass2.html).

sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in &&
sed -i 's@\./fixinc\.sh@-c true@' gcc/Makefile.in &&
mkdir ../gcc-build &&
cd ../gcc-build &&
../gcc-4.0.3/configure \
    --prefix=/usr \
    --libexecdir=/usr/lib \
    --enable-shared \
    --enable-threads=posix \
    --enable-__cxa_atexit \
    --enable-clocale=gnu \
    --enable-languages=c,c++,objc,f95,ada,java,treelang &&
make bootstrap &&
make -k check &&
../gcc-4.0.3/contrib/test_summary

Now, as the root user:

make install &&
ln -v -sf ../usr/bin/cpp /lib &&
ln -v -sf gcc /usr/bin/cc &&
chown -v -R root:root \
    /usr/lib/gcc/i686-pc-linux-gnu/4.0.3/include &&
chown -v -R root:root \
    /usr/lib/gcc/i686-pc-linux-gnu/4.0.3/ada{lib,include}

The libffi interface header is installed in a location where other packages will not be able to find it. If you included Java as one of the installed languages, create a symbolic link in /usr/include to remedy this:

ln -v -sf `find /usr/lib/gcc -name ffitarget.h` /usr/include

As the root user, remove the GNAT installation:

rm -rf /opt/gnat

Now, as the unprivileged user, restore your old PATH:

export PATH=$PATH_HOLD &&
unset PATH_HOLD

Command Explanations

sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in: This command suppresses the installation of libiberty.a as the version provided by Binutils is used instead.

mkdir ../gcc-build; cd ../gcc-build: The GCC documentation recommends building the package in a dedicated build directory.

--enable-shared --enable-threads=posix --enable-__cxa_atexit: These parameters are required to build the C++ libraries to published standards.

--enable-clocale=gnu: This command is a failsafe for incomplete locale data.

--enable-languages=c,c++,objc,f95,ada,java,treelang: This command identifies which languages to build. You may modify this command to remove undesired languages.

make -k check: This command runs the test suite without stopping if any errors are encountered.

../gcc-4.0.3/contrib/test_summary: This command will produce a summary of the test suite results. You can append | grep -A7 Summ to the command to produce an even more condensed version of the summary. You may also wish to redirect the output to a file for review and comparison later on.

ln -v -sf ../usr/bin/cpp /lib: This command creates a link to the C PreProcessor as some packages expect it to be installed in the /lib directory.

ln -v -sf gcc /usr/bin/cc: This link is created as some packages refer to the C compiler using an alternate name.

chown -v -R root:root /usr/lib/gcc/i686-pc-linux-gnu/...: If the package is built by a user other than root, the ownership of the installed include and adalib directories (and their contents) will be incorrect. These commands change the ownership to the root user and group . Omit the command changing the Ada directories if you did not include Ada as one of the installed languages.

Contents

Installed Programs: addr2name.awk, fastjar, gcj, gcj-dbtool,gcjh, gfortran, gij, gjnih, gnat, gnatbind, gnatbl, gnatchop, gnatclean, gnatfind, gnatkr, gnatlink, gnatls, gnatmake, gnatname, gnatprep, gnatxref, gprmake, grepjar, grmic, grmiregistry, gtreelang, jcf-dump, jv-convert, jv-scan and architecture specific names for gcj and gcjh
Installed Libraries: libffi.{so,a}, libgcj.{so,a}, libgfortran.{so,a}, libgfortranbegin.a, libgij.{so,a}, libobjc.{so,a} and numerous other run-time libraries and executables in /usr/lib/gcc
Installed Directories: /usr/include/c++/4.0.3/{gcj,gnu,java,javax,org}, /usr/lib/gcc/i686-pc-linux-gnu/4.0.3/ada{include,lib}, /usr/lib/gcj-4.0.3, /usr/lib/security and /usr/share/java

Some program and library names and descriptions are not listed here, but can be found at ../../../../lfs/view/6.2/chapter06/gcc.html#contents-gcc as they were initially installed during the building of LFS.

Short Descriptions

addr2name.awk

emulates some of the functionality of addr2line.

fastjar

is an archive tool for Java archives.

gcj

is an ahead-of-time compiler for the Java language.

gcj-dbtool

is a tool for creating and manipulating class file mapping databases.

gcjh

generates header files from Java class files.

gfortran

is the Fortran compiler invoked by gcc.

gij

is the GNU interpreter for Java bytecode.

gjnij

is used to generate JNI header files from class files. Running it is equivalent to running gcjh -jni.

gnat

is the Ada compiler invoked by gcc.

gnatbind

is used to bind compiled objects.

gnatbl

is the Ada linker.

gnatchop

is useful for renaming files to meet the standard Ada default file naming conventions.

gnatclean

is used to remove files associated with a GNAT project.

gnatfind

is the GNAT definition/use finder.

gnatkr

is used to determine the crunched name for a given file, when crunched to a specified maximum length.

gnatlink

is used to link programs and build an executable file.

gnatls

is the compiled unit browser.

gnatmake

is an automatic make facility.

gnatname

will list the files associated with a GNAT project.

gnatprep

is the GNAT external preprocessor.

gnatxref

is the GNAT cross-referencer.

gprmake

is a tool used to create Makefiles that support compilation by multiple languages.

grepjar

searches jar files for a pattern.

grmic

generates stubs for Remote Method Invocation.

grmiregistry

starts a remote object registry on the current host.

gtreelang

is largely a cut down version of C, designed to showcase the features of the GCC code generation back end. Only those features that are directly supported by the GCC code generation back end are implemented. Features are implemented in a manner which is easiest and clearest to implement. Not all or even most code generation back end features are implemented. The intention is to add features incrementally until most features of the GCC back end are implemented in Treelang.

jcf-dump

prints information about Java class files.

jv-convert

converts files from one encoding to another.

jv-scan

prints information about Java source files.

GCC-3.3.6

Introduction to GCC-3.3.6

There are several reasons why you may wish to install GCC-3.3.6. Some packages have not been updated so they can be successfully compiled by GCC-4.0.3 as version 4.x.x of GCC is much stricter in enforcing coding standards. Additionally, some pre-compiled packages may require the GCC-3.3.6 libraries at run-time. Another reason you may need to install GCC-3.3.6 is to use the g77 Fortran 77 compiler provided by pre-4.x.x versions of GCC. GCC-4.x.x only includes gfortran, a Fortran 95 compatible compiler that is not yet ready to be used in a production environment.

If all you need is a working {f,g}77 Fortran 77 compiler, you may wish to use the one provided by GCC-3.4.x. This is what the GCC developers recommend. Instructions for building the GCC-3.4.x Fortran compiler can be found on the BLFS Wiki.

Package Information

Additional Downloads

GCC-3.3.6 Dependencies

Optional

DejaGnu-1.4.4 (required to run the full test suite)

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gcc3

Installation of GCC-3.3.6

Install GCC-3.3.6 by running the following commands:

patch -Np1 -i ../gcc-3.3.6-no_fixincludes-1.patch &&
patch -Np1 -i ../gcc-3.3.6-linkonce-1.patch &&
mkdir ../gcc-build &&
cd ../gcc-build &&
../gcc-3.3.6/configure --prefix=/opt/gcc-3.3.6 \
    --enable-shared --enable-languages=c,c++ --enable-threads=posix &&
make bootstrap

If desired, run the test suite using the following commands. The test_summary commands create log files which can be compared to known good results located at http://anduin.linuxfromscratch.org/files/BLFS/gcc336_test.txt.

make -k check &&
../gcc-3.3.6/contrib/test_summary >test_summary.log 2>&1 &&
../gcc-3.3.6/contrib/test_summary | \
    grep -A7 Summ >test_summary_short.log 2>&1

Now, as the root user:

make install &&
mv -v /opt/gcc-3.3.6/lib/libstdc++.so.5* /usr/lib &&
ln -v -sf /usr/lib/libstdc++.so.5.0.7 /opt/gcc-3.3.6/lib &&
ln -v -sf libstdc++.so.5.0.7 /opt/gcc-3.3.6/lib/libstdc++.so.5 &&
chown -v -R root:root \
    /opt/gcc-3.3.6/lib/gcc-lib/i686-pc-linux-gnu/3.3.6/include

Command Explanations

mkdir ../gcc-build; cd ../gcc-build: The GCC development team recommends building in a separate directory.

--enable-shared --enable-languages=c,c++ --enable-threads=posix: Configures GCC to build the C and C++ compilers and enable the related C++ options. In addition to c and c++, you can add f77 for FORTRAN (called g77). Note that GCC-4 no longer provides a FORTRAN 77 compiler.

mv -v /opt/gcc-3.3.6/lib/libstdc++.so.5* /usr/lib: Moves the C++ library to the standard lib directory to avoid having to add /opt/gcc-3.3.6/lib to /etc/ld.so.conf.

Configuring GCC-3.3.6

Configuration information

If you only need the GCC-3.3.6 C++ library, you may delete /opt/gcc-3.3.6.

Whenever you need to use GCC-3.3.6 instead of your system installed compiler, add /opt/gcc-3.3.6/bin to the front of your PATH or (preferably) set the CC environment variable before compiling the concerned package.

If you use g77 programs, you also should move the libg2c.* libraries and symbolic links to /usr/lib. Using export LD_LIBRARY_PATH=/opt/gcc-3.3.6/lib or updating /etc/ld.so.conf to point to /opt/gcc-3.3.6/lib is not recommended as it may conflict with your normal libraries.

Contents

Installed Programs: c++, cpp, g++, gcc, gccbug, gcov, and architecture specific names of these programs.
Installed Libraries: libgcc_s.so, libiberty.a, libstdc++.{a,so}, libsupc++.a, and other support libraries and files.
Installed Directory: /opt/gcc-3.3.6

Short Descriptions

The GCC-3.3.6 package contains the gcc-3.3.6 C and C++ compilers and the GCC-3.3.6 libstdc++.so library that is required by some commercial and pre-compiled packages.

Guile-1.6.7

Introduction to Guile

The Guile package contains the Project GNU's extension language library. Guile also contains a stand alone Scheme interpreter.

Package Information

Additional Downloads

Guile Dependencies

Optional

Emacs-21.4a

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/guile

Installation of Guile

Install Guile by running the following commands:

patch -Np1 -i ../guile-1.6.7-gcc4-1.patch &&
patch -Np1 -i ../guile-1.6.7-slib-1.patch &&
./configure --prefix=/usr --with-threads &&
make

If you have teTeX installed and wish to build alternate formats of the documentation, issue the following commands:

for DIRNAME in goops r5rs ref tutorial
do
  make -k -C doc/$DIRNAME pdf ps html
done &&
makeinfo --plaintext -o doc/goops/goops.txt doc/goops/goops.texi &&
makeinfo --plaintext -o doc/r5rs/r5rs.txt doc/r5rs/r5rs.texi &&
makeinfo --plaintext -o doc/ref/guile.txt doc/ref/guile.texi &&
makeinfo --plaintext -o doc/tutorial/guile-tut.txt \
    doc/tutorial/guile-tut.texi &&
unset DIRNAME

To test the results, issue: make check.

Now, as the root user:

make install &&
find examples -name "Makefile*" -exec rm {} \; &&
install -v -m755 -d /usr/share/doc/guile-1.6.7 &&
cp -v -R examples /usr/share/doc/guile-1.6.7

If you built the alternate formats of the documentation, install it using the following commands issued by the root user:

for DIRNAME in goops r5rs ref tutorial
do
  install -v -m755 -d /usr/share/doc/guile-1.6.7/$DIRNAME/html
  install -v -m644 doc/$DIRNAME/*.{pdf,ps,dvi,txt} \
      /usr/share/doc/guile-1.6.7/$DIRNAME
  if [ -d doc/$DIRNAME/$DIRNAME.html ]; then
    install -v -m644 doc/$DIRNAME/$DIRNAME.html/* \
        /usr/share/doc/guile-1.6.7/$DIRNAME/html
  fi
done &&

install -v -m644 doc/goops/hierarchy.{eps,png} \
    /usr/share/doc/guile-1.6.7/goops &&
install -v -m644 doc/ref/guile.html/* \
    /usr/share/doc/guile-1.6.7/ref/html &&
install -v -m644 doc/tutorial/guile-tut.html/* \
    /usr/share/doc/guile-1.6.7/tutorial/html

Contents

Installed Programs: guile, guile-config, guile-snarf, and guile-tools
Installed Libraries: libguile-ltdl.{so,a}, libguile-srfi-srfi-13-14-v-1.{so,a}, libguile-srfi-srfi-4-v-1.{so,a}, libguile.{so,a}, /libguilereadline-v-12.{so,a} and libqthreads.{so,a}
Installed Directories: /usr/include/guile, /usr/include/libguile, /usr/share/doc/guile-1.6.7 and /usr/share/guile

Short Descriptions

guile

is a stand-alone Scheme interpreter for Guile.

guile-config

is a Guile script which provides the information necessary to link your programs against the Guile library, in much the same way pkg-config-0.20 does.

guile-snarf

is a script to parse declarations in your C code for Scheme visible C functions, i Scheme objects to be used by C code, etc.

guile-tools

is a wrapper program installed along with guile which knows where a particular module is installed and calls it passing its args to a program.

JDK-1.5.0_10

Introduction to JDK

The JDK package contains Sun's Java development environment. This is useful for developing Java programs and provides the runtime environment necessary to run Java programs. It also includes a plug-in for browsers so that they can be Java aware.

The JDK comes in two flavors, a precompiled binary and a source package. Previously, the plugin included in the JDK binary package was unusable on LFS owing to incompatibilities with GCC-3 compiled browsers. This is not the case anymore.

In order to use the source code and patches, you must read and agree to the Sun Java Research License or optionally, the Sun Java Internal Use License. In addition, the source code is not allowed to be downloaded to some countries, so for users in those countries, the binary is the only option.

You will first need to download and install the binary version of the JDK.

To build from the source, you will also need to download the additional files and patches to complete the source build as detailed below.

Package Information

  • Binary download: http://java.sun.com/j2se/1.5.0/download.jsp (to download jdk-1_5_0_10-linux-i586.bin)

  • Download MD5 sum (binary): d916c24bed9eef7aebc2626115e14a11

  • Source download: http://download.java.net/tiger/archive/tiger_u10/ (to download jdk-1_5_0_10-fcs-src-b03-jrl-09_nov_2006.jar (or optionally the JIUL version), jdk-1_5_0_10-fcs-bin-b03-09_nov_2006.jar, and jdk-1_5_0_10-mozilla_headers-b03-unix-09_nov_2006.jar)

  • Download MD5 sums (source):

    09842a4e68040db473e04dbcc284f1d5 jdk-1_5_0_10-fcs-bin-b03-09_nov_2006.jar
    b59335f620e7da524be168b07319fa3b jdk-1_5_0_10-fcs-src-b03-jrl-09_nov_2006.jar
    f49df1a1e7fe351b7fa9f66db121616e jdk-1_5_0_10-mozilla_headers-b03-unix-09_nov_2006.jar
  • Download size (binary): 47.2 MB

  • Download size (source): 64.2 MB (three .jar files)

  • Estimated disk space required: 1882 MB

  • Estimated build time: 34 SBU

Additional Downloads

Required Patches

Recommended Patches

JDK Dependencies

Required (to Build JDK from Source)

X Window System, Zip-2.32, UnZip-5.52, cpio-2.6, ALSA Library-1.0.13, and Tcsh-6.14.00

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/jdk

Installation of JDK

Both the binary and source built versions will be installed. You may choose to keep either or both.

Tip

The ./jdk-mod.bin command below unpacks the distribution into a jdk1.5.0_10 directory. You will be required to view, and then accept (by entering a y keypress), a license agreement before any files are unpacked. If you are scripting (automating) the build, you'll need to account for this. There is information about automating build commands in the Automated Building Procedures section of Chapter 2. Towards the end of this section, specific information for automating this type of installation is discussed.

Normally in BLFS, the files are unpacked into a subdirectory and the starting point for the installation procedures is that location. For this application only, start in the directory where all the downloaded files are located.

Install the precompiled JDK with the following commands:

cp jdk-1_5_0_10-linux-i?86.bin jdk-mod.bin &&
sed -i "s:^PATH=.*::" jdk-mod.bin &&
chmod -v +x jdk-mod.bin &&
./jdk-mod.bin

Now, as the root user:

cd jdk1.5.0_10 &&
install -v -d /opt/jdk/jdk-precompiled-1.5.0_10 &&
mv -v * /opt/jdk/jdk-precompiled-1.5.0_10 &&
chown -v -R root:root /opt/jdk/jdk-precompiled-1.5.0_10 &&
ln -v -sf motif21/libmawt.so \
    /opt/jdk/jdk-precompiled-1.5.0_10/jre/lib/i386/ &&
cd ..

The binary version is now installed.

If you don't want to compile the source or are not in a position to download the source owing to license restrictions, skip ahead to the configuration section.

Save the existing path, and append the recently installed JDK.

export JAVA_HOME=/opt/jdk/jdk-precompiled-1.5.0_10 &&
export PATH_HOLD=${PATH} &&
export PATH=${PATH}:${JAVA_HOME}/bin

The source code is contained in self-extracting jar files. You will need to be in a windowed environment to extract the sources. Create a directory to store the extracted sources. Choose the newly created jdk-build directory when prompted for the target directory.

mkdir jdk-build &&
cd jdk-build &&
for JAR in ../jdk-1_5_0_10*.jar
    do java -jar ${JAR}
done

Apply all the patches downloaded above:

for PATCH in ../jdk-1.5.0_10*.patch
    do patch -Np1 -i ${PATCH}
done

If your X Window System is installed into any prefix other than /usr/X11R6, execute the following command, replacing <PREFIX> with the installation prefix of the X Window System:

find . -type f -exec sed -i 's@/usr/X11R6@<PREFIX>@g' {} \;

Set/unset some variables which affect the build:

export ALT_BOOTDIR=${JAVA_HOME} &&
export CLASSPATH_HOLD=${CLASSPATH} &&
unset JAVA_HOME CLASSPATH CFLAGS CXXFLAGS LDFLAGS &&
export ALT_DEVTOOLS_PATH="/usr/bin" &&
export BUILD_NUMBER="update-10" &&
export DEV_ONLY=true &&
export ALT_MOZILLA_HEADERS_PATH=${PWD}/share/plugin/ &&
export INSANE=true &&
export MAKE_VERBOSE=true &&
export ALT_CACERTS_FILE=${ALT_BOOTDIR}/jre/lib/security/cacerts

Warning

Setting CFLAGS/CXXFLAGS/LDFLAGS is guaranteed to make the build fail. If you are interested in optimizing the build, set OTHER_CFLAGS/OTHER_CXXFLAGS/OTHER_LDFLAGS instead. -O3, even in OTHER_C{,XX}FLAGS, is known to cause a build failure.

Additionally, if you would like to make in parallel, add the following:

export HOTSPOT_BUILD_JOBS=<3>

Build the JDK with the following commands. There will be a lot of messages about missing files that look like errors. These are caused by not meeting the expected build environment (Red Hat). As long as the build doesn't stop, the messages are harmless.

cd control/make &&
make &&
cd ../build/linux-i?86

To test the results, you can run one of the provided demo programs using the newly created java binary. Issue the following commands:

cd j2sdk-image/demo/jfc/Java2D &&
../../../bin/java -jar Java2Demo.jar &&
cd ../../../..

Now, as the root user, install the JDK:

cp -v -a j2sdk-image /opt/jdk/jdk-1.5.0_10 &&
chown -v -R root:root /opt/jdk/jdk-1.5.0_10 &&
ln -v -sf motif21/libmawt.so  /opt/jdk/jdk-1.5.0_10/jre/lib/i386/

Restore the unprivileged user's environment using the following commands:

export JAVA_HOME=${ALT_BOOTDIR} &&
export CLASSPATH=${CLASSPATH_HOLD} &&
export PATH=${PATH_HOLD} &&
unset ALT_BOOTDIR CLASSPATH_HOLD ALT_DEVTOOLS_PATH BUILD_NUMBER &&
unset DEV_ONLY ALT_MOZILLA_HEADERS_PATH INSANE MAKE_VERBOSE &&
unset ALT_CACERTS_FILE PATH_HOLD

Command Explanations

export ALT_BOOTDIR=${JAVA_HOME}: This variable sets the location of the bootstrap JDK.

export ALT_MOZILLA_HEADERS_PATH=${PWD}/share/plugin/: This tells the build exactly where to find the Mozilla headers. This has changed since the previous version and is not mentioned in the installation documentation included with the package source.

export ALT_DEVTOOLS_PATH="/usr/bin": This changes the location where the build finds the needed executables.

export BUILD_NUMBER="update-10": This will help you identify the compiled version of the runtime environment and virtual machine by appending this information to the version string.

export DEV_ONLY=true: This command skips compiling the documentation and eliminates a dependency on rpm.

unset JAVA_HOME CLASSPATH CFLAGS CXXFLAGS LDFLAGS: These variables cause miscompilation of the build. Never set them.

export INSANE=true: The certified platform for the build is Redhat Enterprise Advanced Server 2.1. This variable ensures that all the errors related to compiling on a non-certified platform will be displayed as warnings instead of errors.

export MAKE_VERBOSE=true: Allows the compiler commands to be displayed on the console.

export ALT_CACERTS_FILE...: Specifies the certificate file to use (from the installed binary JDK).

ln -sf motif21/libmawt.so /opt/jdk/jdk-1.5.0_10/jre/lib/i386/: This fixes linking issues with other applications that expect to find the motif libraries with the other JDK libraries.

Configuring JDK

Configuration Information

There are now two Java 2 SDKs installed in /opt/jdk. You should decide on which one you would like to use as the default. For example if you decide to use the source compiled JDK, do the following as the root user:

ln -v -nsf jdk-1.5.0_10 /opt/jdk/jdk

Add the following jdk.sh shell startup file to the /etc/profile.d directory with the following commands as the root user:

cat > /etc/profile.d/jdk.sh << "EOF"
# Begin /etc/profile.d/jdk.sh

# Set JAVA_HOME directory
JAVA_HOME=/opt/jdk/jdk

# Adjust PATH
pathappend ${JAVA_HOME}/bin PATH

# Auto Java CLASSPATH
# Copy jar files to, or create symlinks in this directory
AUTO_CLASSPATH_DIR=/usr/lib/classpath
pathprepend . CLASSPATH
for dir in `find ${AUTO_CLASSPATH_DIR} -type d 2>/dev/null`; do
    pathappend $dir CLASSPATH
done

export JAVA_HOME CLASSPATH
unset AUTO_CLASSPATH_DIR
unset dir

# End /etc/profile.d/jdk.sh
EOF

The Java plugin is located in $JAVA_HOME/jre/plugin/i?86/ns7/. Make a symbolic link to the file in that directory from your browser(s) plugins directory.

Important

The plugin must be a symlink for it to work. If not, the browsers will crash when you attempt to load a Java application.

Contents

Installed Programs: appletviewer, extcheck, idlj, jar, jarsigner, java, javac, javadoc,javah, javap, javaws, jdb, keytool, native2ascii, orbd, policytool, rmic, rmid, rmiregistry, serialver, servertool, and tnameserv
Installed Libraries: $JAVA_HOME/lib/*, $JAVA_HOME/jre/lib/*, and libjavaplugin_oji.so
Installed Directory: /opt/jdk

Short Descriptions

appletviewer

runs Java applets outside of the context of a browser.

extcheck

checks a specified JAR file for title and version conflicts with any extensions installed in the JDK software.

idlj

generates Java bindings from a given IDL file.

jar

combines multiple files into a single JAR archive file.

jarsigner

signs JAR (Java ARchive) files and verifies the signatures and integrity of a signed JAR.

java

launches a Java application by starting a Java runtime environment, loading a specified class and invoking its main method.

javac

reads class and interface definitions, written in the Java programming language, and compiles them into bytecode class files.

javadoc

parses the declarations and documentation comments in a set of Java source files and produces a corresponding set of HTML pages describing the classes, interfaces, constructors, methods, and fields.

javah

generates C header and source files that are needed to implement native methods.

javap

disassembles a Java class file.

javaws

launches Java application/applets hosted on a network.

jdb

is a simple command-line debugger for Java classes.

keytool

is a key and certificate management utility.

native2ascii

converts files that contain non-supported character encoding into files containing Latin-1 or Unicode-encoded characters.

orbd

is used to enable clients to transparently locate and invoke persistent objects on servers in the CORBA environment.

policytool

creates and manages a policy file graphically.

rmic

generates stub and skeleton class files for remote objects from the names of compiled Java classes that contain remote object implementations.

rmid

starts the activation system daemon.

rmiregistry

creates and starts a remote object registry on the specified port on the current host.

serialver

returns the serialVersionUID for one or more classes in a form suitable for copying into an evolving class.

servertool

provides an ease-of-use interface for application programmers to register, unregister, startup and shutdown a server.

tnameserv

starts the Java IDL name server.

Librep-0.17

Introduction to Librep

The librep package contains a Lisp system. This is useful for scripting or for applications that may use the Lisp interpreter as an extension language.

Package Information

Librep Dependencies

Required

GDBM-1.8.3

Optional

GMP-4.2 and GCC-4.0.3 (build Java so that libffi is built)

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/librep

Installation of Librep

Install librep by running the following commands:

./configure --prefix=/usr --libexecdir=/usr/lib &&
make

Now, as the root user:

make install

Command Explanations

--libexecdir=/usr/lib: This parameter installs files to /usr/lib/rep instead of /usr/libexec/rep.

Contents

Installed Programs: rep, rep-config, rep-remote, rep-xgettext, and repdoc
Installed Libraries: librep.so and numerous modules installed in the /usr/lib/rep hierarchy
Installed Directories: /usr/lib/rep, /usr/share/emacs/site-lisp, and /usr/share/rep

Short Descriptions

rep

is the Lisp interpreter.

librep.so

contains the functions necessary for the Lisp interpreter.

NASM-0.98.39

Introduction to NASM

NASM (Netwide Assembler) is an 80x86 assembler designed for portability and modularity. It includes a disassembler as well.

Package Information

Additional Downloads

NASM Dependencies

Optional (for Building Documentation)

teTeX-3.0, and ESP Ghostscript-8.15.2 or AFPL Ghostscript-8.53

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/nasm

Installation of NASM

Install NASM by running the following commands:

patch -Np1 -i ../nasm-0.98.39-security_fix-1.patch &&
./configure --prefix=/usr &&
make &&
make -C rdoff/doc &&
make -C rdoff/doc html

To build the base NASM documentation, ensure you have Ghostscript installed and issue:

make doc

To build the RDOFF Postscript documentation, ensure you have teTeX-3.0 installed and issue:

sed -i -e "s/dvips \$</& -o rdoff.ps/" rdoff/doc/Makefile &&
make -C rdoff/doc ps

To build the RDOFF PDF documentation, ensure you have Ghostscript installed and issue:

make -C rdoff/doc pdf

This package does not come with a test suite.

Now, as the root user:

make install &&
make install_rdf &&
install -v -m644 rdoff/doc/rdoff.info /usr/share/info &&
install -v -m755 -d /usr/share/doc/nasm/html &&
install -v -m644 rdoff/doc/v1-v2.txt /usr/share/doc/nasm &&
cp -v -R rdoff/doc/rdoff /usr/share/doc/nasm/html

If you built the Ghostscript generated documentation, install it using the following commands as the root user:

make install_doc &&
install -v -m644 rdoff/doc/rdoff.pdf /usr/share/doc/nasm

Lastly, if you built the RDOFF Postscript documentation, install it using the following command as the root user:

install -v -m644 rdoff/doc/rdoff.ps /usr/share/doc/nasm

Contents

Installed Programs: nasm, ndisasm, ldrdf, rdf2bin, rdf2com, rdf2ihx, rdfdump, rdflib, and rdx
Installed Libraries: None
Installed Directories: /usr/share/doc/nasm

Short Descriptions

nasm

is a portable 80x86 assembler.

ndisasm

is an 80x86 binary file disassembler.

ldrdf

is an RDOFF linker.

rdfdump

dumps the contents of an RDOFF file.

rdflib

is an RDOFF librarian.

rdx

is used to load and execute an RDOFF module.

PDL-2.4.2

Introduction to PDL

PDL (Perl Data Language) gives standard Perl the ability to compactly store and quickly manipulate the large N-dimensional data arrays common to scientific computing. PDL turns Perl into an array-oriented, numerical language similar to such commercial packages as IDL and MatLab. One can write simple Perl expressions to manipulate entire numerical arrays all at once.

PDL provides extensive numerical and semi-numerical functionality with support for two- and three-dimensional visualisation as well as a variety of I/O formats. The goal is to allow PDL to interact with a variety of external numerical packages, graphics and visualisation systems. Easy interfacing to such systems is one of the core design features of PDL.

Package Information

PDL Dependencies

PDL is a collection of over 90 Perl modules. Some of these modules require additional libraries, packages and/or Perl modules for full functionality. Listed below are the modules which require additional software or configuration. If you don't need a particular module's functionality, you don't need to install its dependencies. The dependency tree for each module is listed downward, meaning you'll need to start at the bottom of a module's tree and work up. The dependencies are listed in the same order as they are in the DEPENDENCIES file, found in the package source tree.

This package (and many of the dependency packages) requires a Fortran compiler for full functionality of all the different modules. The gfortran compiler installed with the current BLFS version of GCC (4.0.3) will not work. If you want to compile the parts of this package that require a Fortran compiler, you'll need to install a GCC-3.x.x version of Fortran. The GCC developers recommend using Fortran from GCC-3.4.6. You can find specific instructions to install a GCC-3.4.6 compiler on the BLFS Wiki. Alternatively, if you have a need to install GCC-3.3.6, you can add the Fortran compiler to the list of compilers installed in those instructions. Don't forget to put the directory containing the {g,f}77 commands at the beginning of your PATH environment variable before beginning the compilation.

PDL::NiceSlice

The PDL::NiceSlice module is used to enhance PDL's slice syntax. “Slicing” is a term used in the process of creating a cross-section, or slice, of a PDL object (piddle).

Inline::Pdlpp

The Inline::Pdlpp module allows you to define fast PP code inline in your scripts.

Perldl

perldl is a simple shell (written in Perl) which allows interactive use of PDL.

PDL::Graphics::TriD

The PDL::Graphics::TriD module implements a generic 3D plotting interface for PDL. Points, lines and surfaces (among other objects) are supported.

PDL::Graphics::PGPLOT

The PDL::Graphics::PGPLOT module is a convenience interface to the PGPLOT commands, implemented using the object oriented PGPLOT plotting package in the PDL::Graphics::PGPLOT::Window module.

PDL::Graphics::PLPLOT

The PDL::Graphics::PLPLOT module is a simple interface to the PLplot plotting library.

PDL::Graphics::IIS

The PDL::Graphics::IIS module provides an interface to any image display “device” which supports the “IIS protocol”.

PDL::Graphics::Karma

The PDL::Graphics::Karma module is an interface to Karma visualisation applications.

Note: You may need to modify the WHERE_KARMA => undef line in the source tree perldl.conf file to point to your installation of Karma

PDL::IO::Pic

The PDL::IO::Pic module implements I/O for a number of popular image formats by exploiting the xxxtopnm and pnmtoxxx converters from the Netpbm package and the cjpeg and djpeg converters. It also contains the routine wmpeg to write MPEG movies from piddles representing image stacks.

PDL::Slatec

The PDL::Slatec module serves the dual purpose of providing an interface to parts of the slatec library and showing how to interface PDL to an external library. The module provides routines to manipulate matrices, calculate FFTs, fit data using polynomials, and interpolate/integrate data using piecewise cubic Hermite interpolation.

PDL::GSL

The PDL::GSL module is an interface to the functions provided by the Gnu Scientific Library.

PDL::FFTW

The PDL::FFTW module is a means to interface PDL with the FFTW library. It's similar to the standard FFT routine but it's usually faster and has support for real transforms. It works well for the types of piddles for which the library was compiled (otherwise it must do conversions).

PDL::IO::Browser

The PDL::IO::Browser module is a 2D cursor terminal data browser for piddles.

There is no additional software required to use the module. However, the default is to not install the module because some platforms don't provide a curses compatible library. To enable the module, issue the following command:

sed -i -e "s/WITH_IO_BROWSER => 0/WITH_IO_BROWSER => 1/" \
    perldl.conf

PDL::IO::NDF

The PDL::IO::NDF module adds the ability to read and write Starlink N-dimensional data files as N-dimensional piddles.

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/pdl

Installation of PDL

Install PDL (and all the dependency Perl modules) by running the following commands:

sed -i 's/\(dirname);\)/\1\nuse blib;/' Demos/BAD*demo.pm.PL &&
perl Makefile.PL &&
make &&
make test

Now, as the root user:

make install

Command Explanations

sed -i '...' Demos/BAD*demo.pm.PL: This is necessary to fix a build issue caused by changes in ExtUtils::MakeMaker-6.30 which was introduction in Perl-5.8.8.

Configuring PDL

Config Files

~/.perldlrc and local.perldlrc in the current directory

Configuration Information

See http://pdl.sourceforge.net/PDLdocs/perldl.html#the startup file ~/.perldlrc for information about configuring perldl to suit your needs.

Contents

Installed Programs: pdl, pdldoc, perldl, and pptemplate
Installed Modules: 90+ individual Perl modules
Installed Directories: /usr/lib/perl5/site_perl/5.8.8/i686-linux/{,auto/}PDL

Short Descriptions

pdl

is a binary program called from PDL scripts which is used to interface perldl.

pdldoc

is a shell interface to PDL documentation.

perldl

is a simple shell (written in Perl) for interactive use of PDL.

pptemplate

is a script to generate Makefile.PL and PP file skeletons.

Perl Modules

Introduction to Perl Modules

The Perl module packages add useful objects to the Perl language. Modules utilized by packages throughout BLFS are listed here, along with their dependencies. Installation of the modules shown on this page should be accomplished by installing the listed dependencies (from the bottom and working up to the top) and then the desired module. Most references to Perl modules are in the form of Module, Module::SubName or Module::Sub::Name, though sometimes you'll see Module, Module-SubName or Module-Sub-Name. The references on this page that reflect an external URL are in the latter form, as these are the official package names.

Note

Some dependencies, such as the Test::Pod-1.24 module, are used by several of the listed dependencies of the main module and perhaps also the module being installed. Dependencies such as this are only listed once in the dependency chain for each main module (typically near the bottom-most dependency) to avoid redundancy and additional clutter in the instructions.

Archive::Zip-1.16

The Archive::Zip module allows a Perl program to create, manipulate, read, and write Zip archive files. The modules listed below are installed using the standard Perl module build and installation instructions.

Compress::Zlib-1.41

The Compress::Zlib module provides a Perl interface to the Zlib compression library. Most of the functionality provided by Zlib is available in Compress::Zlib. The module can be split into two general areas of functionality, namely in-memory compression/decompression and read/write access to gzip files.

Note

The Compress::Zlib module requires the following sed after untarring the distribution tarball (before any other build commands) to use the system-installed copy of Zlib.

sed -i -e "s|BUILD_ZLIB = True|BUILD_ZLIB = False|" \
       -e "s|INCLUDE    = ./zlib-src|INCLUDE    = /usr/include|" \
       -e "s|LIB        = ./zlib-src|LIB        = /usr/lib|" \
    config.in

Date::Manip-5.44

Date::Manip is a set of routines designed to make any common date/time manipulation easy to do. Operations such as comparing two times, calculating a time a given amount of time from another, or parsing international times are all easily done. From the very beginning, the main focus of Date::Manip has been to be able to do ANY desired date/time operation easily.

Finance::Quote-1.11

Finance::Quote is used to get stock quotes from various Internet sources, including Yahoo! Finance, Fidelity Investments, and the Australian Stock Exchange. There are two methods of using this module – a functional interface that is depreciated, and an object-orientated method that provides greater flexibility and stability. With the exception of straight currency exchange rates, all information is returned as a two-dimensional hash (or a reference to such a hash, if called in a scalar context).

After you've installed the package, issue perldoc Finance::Quote for full information. Alternatively, you can issue perldoc lib/Finance/Quote.pm after unpacking the distribution tarball and changing into the top-level directory. The module and dependencies are installed using the standard Perl module build and installation instructions.

Note

To run the regression test suite, you'll need a working Internet connection and then create a symbolic link to the test directory using the following command after unpacking the tarball and changing into the root directory of the source tree:

ln -s test t

Some tests will fail depending on certain conditions. See the INSTALL file for full details.

Finance::QuoteHist-1.07

The Finance::QuoteHist bundle is several modules designed to fetch historical stock quotes from the web. The module and dependencies are installed using the standard Perl module build and installation instructions.

HTML::Parser-3.54

The HTML::Parser distribution is a collection of modules that parse and extract information from HTML documents. The modules listed below are installed using the standard Perl module build and installation instructions.

HTML::TableExtract-2.07

HTML::TableExtract is a module that simplifies the extraction of the content contained in tables within HTML documents, extracted either as text or encoded element trees. Tables of note may be specified using Headers, Depth, Count, Attributes, or some combination of the four. The module and dependencies are installed using the standard Perl module build and installation instructions.

libwww-perl-5.805 (a.k.a. LWP)

The libwww-perl (LWP) collection is a set of Perl modules which provide a simple and consistent application programming interface to the World-Wide Web. The main focus of the library is to provide classes and functions that allow you to write WWW clients. The library also contains modules that are of more general use and even classes that help you implement simple HTTP servers. The LWP collection and all its Perl module dependencies are installed using the standard Perl module build and installation instructions.

Note

Newer versions of OpenSSL expose a bug in the Crypt::SSLeay sources. Issue the following sed command (after unpacking the Crypt::SSLeay tarball and changing directories into the root of the source tree) to fix the problem:

sed -i '/algorithms/ a\               SSL_library_init();' SSLeay.xs

Module::Build-0.2801

The Module::Build module is a system for building, testing, and installing Perl modules. It is meant to be an alternative to ExtUtils::MakeMaker. Developers may alter the behavior of the module through subclassing in a much more straightforward way than with MakeMaker. It also does not require a make command on your system. Most of the Module::Build code is pure-Perl and written in a very cross-platform way.

The Module::Build module (as well as any other Perl module that uses the Module::Build build system) uses modified build instructions. All the dependencies are installed using the standard Perl module build and installation instructions.

Module::Build Build and Installation Instructions

perl Build.PL &&
./Build &&
./Build test

Now, as the root user:

./Build install

Module::Info-0.30

The Module::Info module is quite useful for tasks other than just support of other modules. It can be used from the command-line to tell you if a particular module is included in, or has been installed into your Perl installation. Additionally, Module::Info can tell you what version of a module is installed and what dependencies are required for it. You can even use Module::Info to gather dependencies of uninstalled modules. The Module::Info module installs using the standard Perl module build and installation instructions. The version module requires using the Module::Build modified build instructions.

Module::Signature-0.54

The Module::Signature module is used to check and create SIGNATURE files for CPAN distributions. After installing Module::Signature you can verify the content of a distribution tarball (if it includes a SIGNATURE file) by unpacking the tarball, changing into the newly created directory and issuing the command cpansign -v. It will check each file's integrity, as well as the signature's validity. Note that some of the dependencies appear to be circular, however, they are only run-time conflicts and you should be able to fully utilize them as long as everything is installed. Module::Signature and the dependency modules are installed using the standard Perl module build and installation instructions.

Net::DNS-0.57

Net::DNS is a DNS resolver implemented in Perl. It can be used to perform nearly any type of DNS query from a Perl script. The Net::DNS module and all its dependencies are installed using the standard Perl module build and installation instructions.

SGMLSpm-1.03ii

The SGMLSpm module is a Perl library used for parsing the output from James Clark's SGMLS and NSGMLS parsers. This module requires modified installation instructions, shown below.

If your system's Perl version is different than 5.8.8, you'll need to modify the sed command below to reflect the version you have installed.

sed -i -e "s@/usr/local/bin@/usr/bin@" \
       -e "s@/usr/local/lib/perl5@/usr/lib/perl5/site_perl/5.8.8@" \
       -e "s@/usr/local/lib/www/docs@/usr/share/doc/perl5@" \
    Makefile

Now, as the root user:

make install &&
install -v -m755 -d /usr/share/doc/perl5 &&
make install_html &&
rm -v -f /usr/share/doc/perl5/SGMLSpm/sample.pl &&
install -v -m644 DOC/sample.pl /usr/share/doc/perl5/SGMLSpm

Test::Pod-1.24

The Test:Pod module is (most of the time, optionally) used by other modules during the build process to check the validity of POD (Plain Old Documentation) files. The Test::Pod module is typically included by module authors to automatically find and check all POD files in a module distribution. This module and all the dependencies are installed using the standard Perl module build and installation instructions.

Test::Pod::Coverage-1.08

The Test::Pod::Coverage module is used to check files in a distribution for POD coverage. It is normally used by developers to ensure their projects are adequately covered with POD and it is also used in the test suites of many module distributions. The Pod::Coverage module can use the Module::Build modified build instructions, all the other modules are installed using the standard Perl module build and installation instructions.

Test::Simple-0.62

The Test::Simple module contains utilities designed to assist developers in creating tests. A version of Test::Simple was installed during LFS with the Perl-5.8.8 installation, however, some of the sub-modules contained in Test::Simple have been updated (notably, the Test::More module) and these updated modules are now required by other modules. This updated version of Test::Simple also now includes the Test:Builder:Tester module, required by many of the modules on this page. Note that installing this updated version of Test::Simple will overwrite some files from the original Perl installation, but there's really nothing to be alarmed about as these modules are only used by developers creating tests, or for running the test suites during additional module installations.

Text::Diff-0.35

Text::Diff is used to perform diffs on files and record sets. It provides a basic set of services akin to the GNU diff utility. It is not anywhere near as feature complete as GNU diff, but it is better integrated with Perl and available on all platforms. Text::Diff is often faster than shelling out to a system's diff executable for small files, and generally slower on larger files. The modules listed below are installed using the standard Perl module build and installation instructions.

Tk-804.027

The Tk module is a Perl interface to the Tk package. The goal of this release is Unicode support via Perl's and core-Tk's use of UTF-8. Tk-804.027 builds and loads into a threaded Perl but is NOT yet thread safe. The module is installed using the standard Perl module build and installation instructions.

XML::Parser-2.34

The XML::Parser module is a Perl extension interface to James Clark's XML parser, expat. The module is installed using the standard Perl module build and installation instructions.

YAML-0.58

The YAML modules implement a YAML Loader and Dumper based on the YAML 1.0 specification http://www.yaml.org/spec/. YAML is a generic data serialization language that is optimized for human readability. It can be used to express the data structures of most modern programming languages.

Note

The YAML, Test::Base and Spiffy modules will install UTF-8 encoded manual pages. To modify the manual pages so that non-UTF-8 encoded pages are installed, issue the following commands (before any other build commands):

For Spiffy:     sed -i 's,\xc3\xb6,o,' lib/Spiffy.pm

For Test::Base: sed -i 's,\xc3\xb6,o,' \
                  lib/Test/Base{,/Filter}.pm \
                  lib/Module/Install/TestBase.pm

For YAML:       sed -i 's,\xc3\xb6,o,' \
                  ysh \
                  lib{,/Test}/YAML.pm \
                  lib/YAML/{Types,Node,Error,Marshall,Tag,Base}.pm \
                  lib/YAML/{Loader,Dumper}{,/Base}.pm

Standard Installation of Perl Modules

Install Perl modules by running the following commands:

perl Makefile.PL &&
make &&
make test

Now, as the root user:

make install

(Alternate) Auto Installation of Perl Modules.

There is an alternate way of installing the modules using the cpan shell install command. The command automatically downloads the source from the CPAN archive, extracts it, runs the compilation, testing and installation commands mentioned above, and removes the build source tree. You may still need to install dependent library packages before running the automated installation method.

The first time you run cpan, you'll be prompted to enter some information regarding download locations and methods. This information is retained in files located in ~/.cpan. Start the cpan shell by issuing 'cpan' as the root user. Any module may now be installed from the cpan>  prompt with the command:

install <Module::Name>

For additional commands and help, issue 'help' from the cpan>  prompt.

Alternatively, for scripted or non-interactive installations, use the following syntax as the root user to install one or more modules:

cpan -i <Module1::Name> <Module2::Name>

Review the cpan.1 man page for additional parameters you can pass to cpan on the command line.

PHP-5.1.4

Introduction to PHP

PHP is the PHP Hypertext Preprocessor. Primarily used in dynamic web sites, it allows for programming code to be directly embedded into the HTML markup.

Package Information

Additional Downloads

PHP Dependencies

Required

Apache-2.2.2

Recommended

Optional System Utilities and Libraries

libxslt-1.1.17, GMP-4.2, PCRE-6.7, Aspell-0.60.4, pkg-config-0.20, expat-2.0.0 (deprecated alternative to libxml2-2.6.26), OSSP mm, Net-SNMP, GNU Pth, re2c, XMLRPC-EPI, Dmalloc, recode, and an MTA (that provides a sendmail command)

Optional Graphics Utilities and Libraries

libjpeg-6b, LibTIFF-3.8.2, libpng-1.2.12, libexif-0.6.13, FreeType-2.1.10, X Window System, ClibPDF, GD, t1lib, and FDF Toolkit

Optional Web Utilities

cURL-7.15.3, HTML Tidy-051026, mnoGoSearch, Hyperwave, Roxen WebServer, Caudium, and WDDX

Optional Data Management Utilities and Libraries

OpenLDAP-2.3.27, GDBM-1.8.3, MySQL-5.0.21, PostgreSQL-8.1.3, unixODBC-2.2.11, QDBM, cdb, SQLite, Mini SQL, Empress, Birdstep, DBMaker, Adabas, FrontBase, and Monetra

PHP also provides support for many commercial database tools such as Oracle, SAP and ODBC Router.

Optional Security/Encryption Utilities and Libraries

OpenSSL-0.9.8d, Cyrus SASL-2.1.21, MIT Kerberos V5-1.6 or Heimdal-0.7.2, libmcrypt, and mhash

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/php

Installation of PHP

You can use PHP for server-side scripting, command-line scripting or client-side GUI applications. This book provides instructions for setting up PHP for server-side scripting as it is the most common form.

Note

PHP has many more configure options that will enable support for various things. You can use ./configure --help to see a full list of the available options. Also, use of the PHP web site is highly recommended, as their online docs are very good. An example of a configure command that utilizes many of the most common dependencies can be found at http://anduin.linuxfromscratch.org/files/BLFS/php_configure.txt.

If, for whatever reason, you don't have libxml2-2.6.26 installed, you need to add --disable-libxml to the configure command in the instructions below. Note that this will prevent the pear command from being built.

Install PHP by running the following commands:

sed -i 's/const char \*errpfx,/const DB_ENV *dbenv, & const/' \
    ext/dba/dba_db4.c &&
./configure --prefix=/usr \
            --sysconfdir=/etc \
            --with-apxs2 \
            --enable-force-cgi-redirect \
            --enable-discard-path \
            --with-config-file-path=/etc \
            --with-zlib \
            --enable-bcmath \
            --with-bz2 \
            --enable-calendar \
            --enable-dba \
            --enable-exif \
            --enable-ftp \
            --with-gettext \
            --enable-mbstring \
            --with-ncurses \
            --with-readline &&
make

To test the results, issue: make test. Three of the (over 1600) tests are known to fail: an iconv stream filter test (ext/iconv/tests/iconv_stream_filter.phpt) and two MBString function overload tests (ext/mbstring/tests/overload01.phpt and ext/mbstring/tests/overload02.phpt). Additionally, if you have the unixODBC package installed and linked into the build, you may see many failures related to it.

Now, as the root user:

make install &&
install -v -m644 php.ini-recommended /etc/php.ini &&
install -v -m755 -d /usr/share/doc/php-5.1.4 &&
install -v -m644 CODING_STANDARDS EXTENSIONS INSTALL NEWS \
                 README* TODO* UPGRADING php.gif \
    /usr/share/doc/php-5.1.4 &&
ln -v -s /usr/lib/php/doc/Archive_Tar/docs/Archive_Tar.txt \
    /usr/share/doc/php-5.1.4

The pre-built HTML documentation is packaged in two forms: a tarball containing many individual files, useful for quick loading into your browser, and one large individual file, which is useful for using the search utility of your browser. If you downloaded either, or both, of the documentation files, issue the following commands as the root user to install them (note these instructions assume English docs, modify the tarball names below if necessary).

For the “Single HTML” file:

install -v -m644 ../php_manual_en.html.gz \
    /usr/share/doc/php-5.1.4 &&
gunzip -v /usr/share/doc/php-5.1.4/php_manual_en.html.gz

For the “Many HTML files” tarball:

tar -xvf ../php_manual_en.tar.gz -C /usr/share/doc/php-5.1.4 &&
chown -v -R root:root /usr/share/doc/php-5.1.4/html

Command Explanations

sed -i '...' ext/dba/dba_db4.c: This command is used to fix an issue with the use of Berkeley DB >= 4.3.x.

--with-apxs2: This parameter builds the Apache HTTPD 2.0 module.

--with-config-file-path=/etc: This parameter makes PHP look for the php.ini configuration file in /etc.

--with-zlib: This parameter adds support for Zlib compression.

--enable-bcmath: Enables bc style precision math functions.

--with-bz2: Adds support for Bzip2 compression functions.

--enable-calendar: This parameter provides support for calendar conversion.

--enable-dba: This parameter enables support for database (dbm-style) abstraction layer functions.

--enable-exif: Enables functions to access metadata from images.

--enable-ftp: This parameter enables FTP functions.

--with-gettext: Enables functions that use Gettext text translation.

--enable-mbstring: This parameter enables multibyte string support.

--with-ncurses: Provides ncurses terminal independent cursor handling.

--with-readline: This parameter enables command line Readline support.

--disable-libxml: This parameter allows building PHP without libxml2 installed.

Configuring PHP

Config Files

/etc/php.ini and /etc/pear.conf

Configuration Information

The file used as the default /etc/php.ini configuration file is recommended by the PHP development team. This file modifies the default behavior of PHP. If no /etc/php.ini is used, all configuration settings fall to the defaults. You should review the comments in this file and ensure the changes are acceptable in your particular environment.

You may have noticed the following from the output of the make install command:

You may want to add: /usr/lib/php to your php.ini include_path

If desired, add the entry using the following command as the root user:

sed -i 's@php/includes"@&\ninclude_path = ".:/usr/lib/php"@' \
    /etc/php.ini

To enable PHP support in the Apache web server, a new LoadModule (which should be handled automatically by the make install command) and AddType directives must be added to the httpd.conf file:

LoadModule php5_module lib/apache/libphp5.so
AddType application/x-httpd-php .php

Additionally, it can be useful to add an entry for index.php to the DirectoryIndex directive of the httpd.conf file. Lastly, adding a line to setup the .phps extension to show highlighted PHP source may be desirable:

AddType application/x-httpd-php-source .phps

You'll need to restart the Apache web server after making any modifications to the httpd.conf file.

Contents

Installed Programs: pear, peardev, pecl, php, php-config and phpize
Installed Library: libphp5.so Apache module
Installed Directories: /usr/include/php, /usr/lib/php and /usr/share/doc/php-5.1.4

Short Descriptions

php

is a command line interface that enables you to parse and execute PHP code.

pear

is the PHP Extension and Application Repository (PEAR) package manager.

Python-2.4.4

Introduction to Python

The Python package contains the Python development environment. This is useful for object-oriented programming, writing scripts, prototyping large programs or developing entire applications.

Package Information

Additional Downloads

Python Dependencies

Optional

OpenSSL-0.9.8d, Tk-8.4.13, and GDBM-1.8.3

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/Python

Installation of Python

Install Python by running the following commands:

patch -Np1 -i ../Python-2.4.4-gdbm-1.patch &&
./configure --prefix=/usr --enable-shared &&
make

To test the results, issue: make test.

Now, as the root user:

make install

Note

There is no documentation installed using the instructions above. However, There are LaTeX sources included with the distribution. See the Doc/README file in the source distribution for instructions to format the LaTeX sources. Alternatively, you can download preformatted documentation from http://www.python.org/doc/current/download.html.

Contents

Installed Programs: pydoc, python, python2.4, smtpd.py, and optionally if Tk is installed, idle
Installed Libraries: libpython2.4.so and numerous modules installed in /usr/lib/python2.4/lib-dynload
Installed Directories: /usr/include/python2.4 and /usr/lib/python2.4

Short Descriptions

idle

is a wrapper script that opens a Python aware GUI editor.

pydoc

is the Python documentation tool.

python

is an interpreted, interactive, object-oriented programming language.

python2.4

is a version-specific name for the python program.

smtpd.py

is an SMTP proxy implemented in Python.

PyXML-0.8.4

Introduction to PyXML

The PyXML package contains a validating XML parser, an implementation of the SAX and DOM programming interfaces, an interface to the Expat parser, and a C helper module that can speed up xmllib.py by a factor of five. This is useful for validating, parsing and manipulating XML files using Python programs.

Package Information

PyXML Dependencies

Required

Python-2.4.4

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/pyxml

Installation of PyXML

Install PyXML by running the following commands:

python setup.py build

Now, as the root user:

python setup.py install &&
install -v -m644 doc/man/xmlproc_*.1 /usr/share/man/man1 &&
install -v -m755 -d /usr/share/doc/PyXML-0.8.4 &&
cp -v -R doc demo test /usr/share/doc/PyXML-0.8.4 &&
install -v -m644 README* /usr/share/doc/PyXML-0.8.4

To run the regression tests, the package must first be installed. Then, as an unprivileged user, issue the following commands:

cd test &&
python regrtest.py &&
cd ..

Command Explanations

python setup.py build: This command copies the *.py files to a staging area and compiles the C extensions.

python setup.py install: This command installs the package.

Contents

Installed Programs: xmlproc_parse and xmlproc_val
Installed Libraries: PyXML Python library modules
Installed Directories: /usr/lib/python2.4/site-packages/_xmlplus and /usr/share/doc/PyXML-0.8.4

Short Descriptions

xmlproc_parse

is a simple XML file parser using the xmlproc parser.

xmlproc_val

is a validating XML file parser using the xmlproc parser.

Ruby-1.8.5

Introduction to Ruby

The Ruby package contains the Ruby development environment. This is useful for object-oriented scripting.

Package Information

Ruby Dependencies

Optional

OpenSSL-0.9.8d, Tk-8.4.13, and GDBM-1.8.3

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/ruby

Installation of Ruby

Install Ruby by running the following commands:

./configure --prefix=/usr \
            --enable-shared \
            --enable-pthread \
            --enable-install-doc &&
make

To test the results, issue: make test.

Now, as the root user:

make install

Command Explanations

--enable-shared: This parameter builds the libruby shared library.

--enable-pthread: This parameter links the threading library into the Ruby build.

Contents

Installed Programs: ruby, irb, erb, rdoc, ri, and testrb
Installed Libraries: libruby.so and numerous modules located in the /usr/lib/ruby hierarchy.
Installed Directories: /usr/lib/ruby and /usr/share/ri

Short Descriptions

ruby

is an interpreted scripting language for quick and easy object-oriented programming.

irb

is the interactive interface for Ruby.

erb

is Tiny eRuby. It interprets a Ruby code embedded text file.

ri

displays documentation from a database on Ruby classes, modules and methods.

libruby.so

contains the API functions required by Ruby.

Tcl-8.4.13

Introduction to Tcl

The Tcl package contains the Tool Command Language, a robust general-purpose scripting language.

Package Information

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/tcl

Installation of Tcl

Note

This package is also installed in LFS during the bootstrap phase. As it is not installed during Chapter 6 of LFS, installation instructions are included here in BLFS.

Install Tcl by running the following commands:

cd unix &&
./configure --prefix=/usr --enable-threads &&
make

To test the results, issue: make test.

Now, as the root user:

make install &&
make install-private-headers &&
ln -v -sf tclsh8.4 /usr/bin/tclsh

Command Explanations

--enable-threads: This switch forces the package to build with thread support.

make install-private-headers: This command is used to install the Tcl library interface headers used by other packages if they link to the Tcl library.

ln -v -sf tclsh8.4 /usr/bin/tclsh: This command is used to create a compatibility symbolic link to the tclsh8.4 file as many packages expect a file named tclsh.

Contents

Installed Programs: tclsh and tclsh8.4
Installed Libraries: libtcl.so and libtclstub8.4.a
Installed Directories: /usr/lib/tcl8.4

Short Descriptions

tclsh

is a symlink to the tclsh8.4 program.

tclsh8.4

is a simple shell containing the Tcl interpreter.

libtcl.so

contains the API functions required by Tcl.

Tk-8.4.13

Introduction to Tk

The Tk package contains a TCL GUI Toolkit.

Package Information

Tk Dependencies

Required

X Window System and Tcl-8.4.13

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/tk

Installation of Tk

Install Tk by running the following commands:

cd unix &&
./configure --prefix=/usr --enable-threads &&
make

Running the tests is not recommended. Some tests may crash your X Server. To test the results anyway, issue: make test. Ensure you run it from an X Window display device with the GLX extensions loaded, else the tests will hang.

Now, as the root user:

make install &&
make install-private-headers &&
ln -v -sf wish8.4 /usr/bin/wish

Command Explanations

--enable-threads: This switch forces the package to build with thread support.

make install-private-headers: This command is used to install the Tk library interface headers used by other packages if they link to the Tk library.

ln -v -sf wish8.4 /usr/bin/wish: This command is used to create a compatibility symbolic link to the wish8.4 file as many packages expect a file named wish.

Contents

Installed Programs: wish and wish8.4
Installed Libraries: libtk.so and libtkstub8.4.a
Installed Directories: /usr/lib/tk8.4

Short Descriptions

wish

is a symlink to the wish8.4 program.

wish8.4

is a simple shell containing the Tk toolkit that creates a main window and then processes Tcl commands.

libtk.so

contains the API functions required by Tk.

Other Programming Tools

Introduction

This section is provided to show you some additional programming tools for which instructions have not yet been created in the book or for those that are not appropriate for the book. Note that these packages may not have been tested by the BLFS team, but their mention here is meant to be a convenient source of additional information.

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/OtherProgrammingTools

Programming Frameworks, Languages and Compilers

A+

A+ is a powerful and efficient programming language. It is freely available under the GNU General Public License. It embodies a rich set of functions and operators, a modern graphical user interface with many widgets and automatic synchronization of widgets and variables, asynchronous execution of functions associated with variables and events, dynamic loading of user compiled subroutines, and many other features. Execution is by a rather efficient interpreter. A+ was created at Morgan Stanley. Primarily used in a computationally-intensive business environment, many critical applications written in A+ have withstood the demands of real world developers over many years. Written in an interpreted language, A+ applications tend to be portable.

ABC

ABC is an interactive programming language and environment for personal computing, originally intended as a good replacement for BASIC. It was designed by first doing a task analysis of the programming task. ABC is easy to learn (an hour or so for someone who has already programmed), and yet easy to use. Originally intended as a language for beginners, it has evolved into a powerful tool for beginners and experts alike. Some features of the language include: a powerful collection of only five data types that easily combines strong typing, yet without declarations, no limitations (such as max int), apart from sheer exhaustion of memory refinements to support top-down programming, nesting by indentation and programs typically are one fourth or one fifth the size of the equivalent Pascal or C program.

ALF

ALF is a language which combines functional and logic programming techniques. The foundation of ALF is Horn clause logic with equality which consists of predicates and Horn clauses for logic programming, and functions and equations for functional programming. The ALF system is an efficient implementation of the combination of resolution, narrowing, rewriting and rejection. Similarly to Prolog, ALF uses a backtracking strategy corresponding to a depth-first search in the derivation tree.

ASM

ASM is a Java bytecode manipulation framework. It can be used to dynamically generate stub classes or other proxy classes, directly in binary form, or to dynamically modify classes at load time, i.e., just before they are loaded into the Java Virtual Machine. ASM offers similar functionalities as BCEL or SERP, but is much smaller (33KB instead of 350KB for BCEL and 150KB for SERP) and faster than these tools (the overhead of a load time class transformation is of the order of 60% with ASM, 700% or more with BCEL, and 1100% or more with SERP). Indeed ASM was designed to be used in a dynamic way (though it works statically as well) and was therefore designed and implemented to be as small and as fast as possible.

BCPL

BCPL is a simple typeless language that was designed in 1966 by Martin Richards and implemented for the first time at MIT in the Spring of 1967.

BETA

BETA is developed within the Scandinavian School of object-orientation, where the first object-oriented language, Simula, was developed. BETA is a modern language in the Simula tradition. The resulting language is smaller than Simula in spite of being considerably more expressive. BETA is a strongly typed language like Simula, Eiffel and C++, with most type checking being carried out at compile-time. It is well known that it is not possible to obtain all type checking at compile time without sacrificing the expressiveness of the language. BETA has optimum balance between compile-time type checking and run-time type checking.

<bigwig>

<bigwig> is a high-level programming language for developing interactive Web services. Programs are compiled into a conglomerate of lower-level technologies such as C code, HTTP, HTML, JavaScript, and SSL, all running on top of a runtime system based on an Apache Web server module. It is a descendant of the Mawl project but is a completely new design and implementation with vastly expanded ambitions. The <bigwig> language is really a collection of tiny domain-specific languages focusing on different aspects of interactive Web services. These contributing languages are held together by a C-like skeleton language. Thus, <bigwig> has the look and feel of C-programs but with special data and control structures.

Bigloo

Bigloo is a Scheme implementation devoted to one goal: enabling Scheme based programming style where C(++) is usually required. Bigloo attempts to make Scheme practical by offering features usually presented by traditional programming languages but not offered by Scheme and functional programming. Bigloo compiles Scheme modules and delivers small and fast stand-alone binary executables. It enables full connections between Scheme and C programs, between Scheme and Java programs, and between Scheme and C# programs.

C--

C-- is a portable assembly language that can be generated by a front end and implemented by any of several code generators. It serves as an interface between high-level compilers and retargetable, optimizing code generators. Authors of front ends and code generators can cooperate easily.

Caml

Caml is a general-purpose programming language, designed with program safety and reliability in mind. It is very expressive, yet easy to learn and use. Caml supports functional, imperative, and object-oriented programming styles. It has been developed and distributed by INRIA, France's national research institute for computer science, since 1985. The Objective Caml system is the main implementation of the Caml language. It features a powerful module system and a full-fledged object-oriented layer. It comes with a native-code compiler that supports numerous architectures, for high performance; a bytecode compiler, for increased portability; and an interactive loop, for experimentation and rapid development.

Cayenne

Cayenne is a simple(?) functional language with a powerful type system. The basic types are functions, products, and sums. Functions and products use dependent types to gain additional power. There are very few building blocks in the language, but a lot of “syntactic sugar” to make it more readable. There is no separate module language in Cayenne since the dependent types allow the normal expression language to be used at the module level as well. The design of Cayenne has been heavily influenced by Haskell and constructive type theory and with some things borrowed from Java. The drawback of such a powerful type system is that the type checking becomes undecidable.

Ch

Ch is an embeddable C/C++ interpreter for cross-platform scripting, shell programming, 2D/3D plotting, numerical computing, and embedded scripting.

Clean

Clean is a general purpose, state-of-the-art, pure and lazy functional programming language designed for making real-world applications. Clean is the only functional language in the world which offers uniqueness typing. This type system makes it possible in a pure functional language to incorporate destructive updates of arbitrary data structures (including arrays) and to make direct interfaces to the outside imperative world. The type system makes it possible to develop efficient applications.

CORN

CORN is designed for modeling concurrency and advanced computation. It provides lazy evaluation between concurrently worked threads, with object-oriented and functional style of semantic. This language can be also used for parallel computation.

Cyclone

Cyclone is a programming language based on C that is safe, meaning that it rules out programs that have buffer overflows, dangling pointers, format string attacks, and so on. High-level, type-safe languages, such as Java, Scheme, or ML also provide safety, but they don't give the same control over data representations and memory management that C does (witness the fact that the run-time systems for these languages are usually written in C.) Furthermore, porting legacy C code to these languages or interfacing with legacy C libraries is a difficult and error-prone process. The goal of Cyclone is to give programmers the same low-level control and performance of C without sacrificing safety, and to make it easy to port or interface with legacy C code.

D

D is a general purpose systems and applications programming language. It is a higher level language than C++, but retains the ability to write high performance code and interface directly with the operating system APIs and with hardware. D is well suited to writing medium to large scale million line programs with teams of developers. It is easy to learn, provides many capabilities to aid the programmer, and is well suited to aggressive compiler optimization technology. D is not a scripting language, nor an interpreted language. It doesn't come with a VM, a religion, or an overriding philosophy. It's a practical language for practical programmers who need to get the job done quickly, reliably, and leave behind maintainable, easy to understand code. D is the culmination of decades of experience implementing compilers for many diverse languages, and attempting to construct large projects using those languages. It draws inspiration from those other languages (most especially C++) and tempers it with experience and real world practicality.

DMDScript

DMDScript is Digital Mars' implementation of the ECMA 262 scripting language. Netscape's implementation is called JavaScript, Microsoft's implementation is called JScript. DMDScript is much faster than other implementations, which you can verify with the included benchmark.

DotGNU Portable.NET

DotGNU Portable.NET goal is to build a suite of free software tools to build and execute .NET applications, including a C# compiler, assembler, disassembler, and runtime engine. While the initial target platform was GNU/Linux, it is also known to run under Windows, Solaris, NetBSD, FreeBSD, and MacOS X. The runtime engine has been tested on the x86, PowerPC, ARM, Sparc, PARISC, s390, Alpha, and IA-64 processors. DotGNU Portable.NET is part of the DotGNU project, built in accordance with the requirements of the GNU Project. DotGNU Portable.NET is focused on compatibility with the ECMA specifications for CLI. There are other projects under the DotGNU meta-project to build other necessary pieces of infrastructure, and to explore non-CLI approaches to virtual machine implementation.

Dylan

Dylan is an advanced, object-oriented, dynamic language which supports rapid program development. When needed, programs can be optimized for more efficient execution by supplying more type information to the compiler. Nearly all entities in Dylan (including functions, classes, and basic data types such as integers) are first class objects. Additionally, Dylan supports multiple inheritance, polymorphism, multiple dispatch, keyword arguments, object introspection, macros, and many other advanced features... --Peter Hinely.

E

E is a secure distributed Java-based pure-object platform and p2p scripting language. It has two parts: ELib and the E Language. Elib provides the stuff that goes on between objects. As a pure-Java library, ELib provides for inter-process capability-secure distributed programming. Its cryptographic capability protocol enables mutually suspicious Java processes to cooperate safely, and its event-loop concurrency and promise pipelining enable high performance deadlock free distributed pure-object computing. The E Language can be used to express what happens within an object. It provides a convenient and familiar notation for the ELib computational model, so you can program in one model rather than two. Under the covers, this notation expands into Kernel-E, a minimalist lambda-language much like Scheme or Smalltalk. Objects written in the E language are only able to interact with other objects according to ELib's semantics, enabling object granularity intra-process security, including the ability to safely run untrusted mobile code (such as caplets).

elastiC

elastiC is a portable high-level object-oriented interpreted language with a C like syntax. Its main characteristics are: open source, interpreted, has portable bytecode compilation, dynamic typing, automatic real very fast garbage collection, object oriented with meta-programming support (a la Smalltalk), functional programming support (Scheme-like closures with lexical scoping, and eval-like functionality), hierarchical namespaces, a rich set of useful built-in types (dynamic arrays, dictionaries, symbols, ...), extensibile with C (you can add functions, types, classes, methods, packages, ...), embeddable in C. elastiC has been strongly influenced by C, Smalltalk, Scheme and Python and tries to merge the best characteristics of all these languages, while still coherently maintaining its unique personality.

Erlang/OTP

Erlang/OTP is a development environment based on Erlang. Erlang is a programming language which has many features more commonly associated with an operating system than with a programming language: concurrent processes, scheduling, memory management, distribution, networking, etc. The initial open-source Erlang release contains the implementation of Erlang, as well as a large part of Ericsson's middleware for building distributed high-availability systems. Erlang is characterized by the following features: robustness, soft real-time, hot code upgrades and incremental code loading.

Euphoria

Euphoria is a simple, flexible, and easy-to-learn programming language. It lets you quickly and easily develop programs for Windows, DOS, Linux and FreeBSD. Euphoria was first released in 1993. Since then Rapid Deployment Software has been steadily improving it with the help of a growing number of enthusiastic users. Although Euphoria provides subscript checking, uninitialized variable checking and numerous other run-time checks, it is extremely fast. People have used it to develop high-speed DOS games, Windows GUI programs, and Linux X Windows programs. It is also very useful for CGI (Web-based) programming.

Felix

Felix is an advanced Algol like procedural programming language with a strong functional subsystem. It features ML style static typing, first class functions, pattern matching, garbage collection, polymorphism, and has built in support for high performance microthreading, regular expressions and context free parsing. The system provides a scripting harness so the language can be used like other scripting languages such as Python and Perl, but underneath it generates native code to obtain high performance. A key feature of the system is that it uses the C/C++ object model, and provides an advanced binding sublanguage to support integration with C/C++ at both the source and object levels, both for embedding C/C++ data types and functions into Felix, and for embedding Felix into exitsing C++ architectures. The Felix compiler is written in Objective Caml, and generates ISO C++ which should compile on any platform.

ferite

ferite is a scripting language and engine all in one manageable chunk. It is designed to be easily extended in terms of API, and to be used within other applications making them more configurable and useful to the end user. It has a syntax similar to a number of other languages but remains clean and its own language.

Forth

Forth is a stack-based, extensible language without type-checking. It is probably best known for its "reverse Polish" (postfix) arithmetic notation, familiar to users of Hewlett-Packard calculators. Forth is a real-time programming language originally developed to control telescopes. Forth has many unique features and applications: it can compile itself into a new compiler, reverse-polish coding, edit time error checking and compiling (similar to BASIC), extremely efficient thread based language, can be used to debug itself, extensible; thus can become what ever you need it to be. The links below lead to the website of the Forth Interest Group (FIG), a world-wide, non-profit organization for education in and the promotion of the Forth computer language. Another worthwhile website dedicated to the Forth community is http://wiki.forthfreak.net/.

GNU Smalltalk

GNU Smalltalk is a free implementation of the Smalltalk-80 language which runs on most versions on Unix and, in general, everywhere you can find a POSIX-compliance library. An uncommon feature of it is that it is well-versed to scripting tasks and headless processing. See http://www.gnu.org/software/smalltalk/gst-manual/gst_1.html#SEC1 for a more detailed explanation of GNU Smalltalk.

Haskell

Haskell is a computer programming language. In particular, it is a polymorphicly typed, lazy, purely functional language, quite different from most other programming languages. The language is named for Haskell Brooks Curry, whose work in mathematical logic serves as a foundation for functional languages. Haskell is based on lambda calculus. There are many implementations of Haskell, among them:

HLA (High Level Assembly)

The HLA language was developed as a tool to help teach assembly language programming and machine organization to University students at the University of California, Riverside. The basic idea was to teach students assembly language programming by leveraging their knowledge of high level languages like C/C++ and Pascal/Delphi. At the same time, HLA was designed to allow advanced assembly language programmers write more readable and more powerful assembly language code.

Icon

Icon is a high-level, general-purpose programming language with a large repertoire of features for processing data structures and character strings. It is an imperative, procedural language with a syntax reminiscent of C and Pascal, but with semantics at a much higher level.

Io

Io is a small, prototype-based programming language. The ideas in Io are mostly inspired by Smalltalk (all values are objects), Self (prototype-based), NewtonScript (differential inheritance), Act1 (actors and futures for concurrency), LISP (code is a runtime inspectable/modifiable tree) and Lua (small, embeddable).

J

J is a modern, high-level, general-purpose, high-performance programming language. It is portable and runs on Windows, Unix, Mac, and PocketPC handhelds, both as a GUI and in a console. True 64-bit J systems are available for XP64 or Linux64, on AMD64 or Intel EM64T platforms. J systems can be installed and distributed for free.

Jamaica

Jamaica, the JVM Macro Assembler, is an easy-to-learn and easy-to-use assembly language for JVM bytecode programming. It uses Java syntax to define a JVM class except for the method body that takes bytecode instructions, including Jamaica's built-in macros. In Jamaica, bytecode instructions use mnemonics and symbolic names for all variables, parameters, data fields, constants and labels.

Joy

Joy is a purely functional programming language. Whereas all other functional programming languages are based on the application of functions to arguments, Joy is based on the composition of functions. All such functions take a stack as an argument and produce a stack as a value. Consequently much of Joy looks like ordinary postfix notation. However, in Joy a function can consume any number of parameters from the stack and leave any number of results on the stack. The concatenation of appropriate programs denotes the composition of the functions which the programs denote.

Judo

Judo is a practical, functional scripting language. It is designed to cover the use cases of not only algorithmic/object-oriented/multi-threaded programming and Java scripting but also a number of major application domain tasks, such as scripting for JDBC, WSDL, ActiveX, OS, multiple file/data formats, etc. Despite its rich functionality, the base language is extremely simple, and domain support syntax is totally intuitive to domain experts, so that even though you have never programmed in Judo, you would have little trouble figuring out what the code does.

JWIG

JWIG is a Java-based high-level programming language for development of interactive Web services. It contains an advanced session model, a flexible mechanism for dynamic construction of XML documents, in particular XHTML, and a powerful API for simplifying use of the HTTP protocol and many other aspects of Web service programming. To support program development, JWIG provides a unique suite of highly specialized program analyses that at compile time verify for a given program that no runtime errors can occur while building documents or receiving form input, and that all documents being shown are valid according to the document type definition for XHTML 1.0. The main goal of the JWIG project is to simplify development of complex Web services, compared to alternatives, such as, Servlets, JSP, ASP, and PHP. JWIG is a descendant of the <bigwig> research language.

Lava

Lava is a name unfortunately chosen for several unrelated software development languages/projects. So it doesn't appear as though BLFS has a preference for one over another, the project web sites are listed below, without descriptions of the capabilities or features for any of them.

Lua

Lua is a powerful light-weight programming language designed for extending applications. It is also frequently used as a general-purpose, stand-alone language. It is free software. Lua combines simple procedural syntax with powerful data description constructs based on associative arrays and extensible semantics. It is dynamically typed, interpreted from bytecodes, and has automatic memory management with garbage collection, making it ideal for configuration, scripting, and rapid prototyping. A fundamental concept in the design of Lua is to provide meta-mechanisms for implementing features, instead of providing a host of features directly in the language. For example, although Lua is not a pure object-oriented language, it does provide meta-mechanisms for implementing classes and inheritance. Lua's meta-mechanisms bring an economy of concepts and keep the language small, while allowing the semantics to be extended in unconventional ways. Extensible semantics is a distinguishing feature of Lua. Lua is a language engine that you can embed into your application. This means that, besides syntax and semantics, it has an API that allows the application to exchange data with Lua programs and also to extend Lua with C functions. In this sense, it can be regarded as a language framework for building domain-specific languages. Lua is implemented as a small library of C functions, written in ANSI C, and compiles unmodified in all known platforms. The implementation goals are simplicity, efficiency, portability, and low embedding cost. The result is a fast language engine with small footprint, making it ideal in embedded systems too.

Mercury

Mercury is a new logic/functional programming language, which combines the clarity and expressiveness of declarative programming with advanced static analysis and error detection features. Its highly optimized execution algorithm delivers efficiency far in excess of existing logic programming systems, and close to conventional programming systems. Mercury addresses the problems of large-scale program development, allowing modularity, separate compilation, and numerous optimization/time trade-offs.

Mono

Mono provides the necessary software to develop and run .NET client and server applications on Linux, Solaris, Mac OS X, Windows, and Unix. Sponsored by Novell, the Mono open source project has an active and enthusiastic contributing community and is positioned to become the leading choice for development of Linux applications.

MPD

MPD is a variant of the SR programming language. SR has a Pascal-like syntax and uses guarded commands for control statements. MPD has a C-like syntax and C-like control statements. However, the main components of the two languages are the same: resources, globals, operations, procs, procedures, processes, and virtual machines. Moreover, MPD supports the same variety of concurrent programming mechanisms as SR: co statements, semaphores, call/send/forward invocations, and receive and input statements.

Nemerle

Nemerle is a high-level statically-typed programming language for the .NET platform. It offers functional, object-oriented and imperative features. It has a simple C#-like syntax and a powerful meta-programming system. Features that come from the functional land are variants, pattern matching, type inference and parameter polymorphism (aka generics). The meta-programming system allows great compiler extensibility, embedding domain specific languages, partial evaluation and aspect-oriented programming.

Octave

GNU Octave is a high-level language, primarily intended for numerical computations. It provides a convenient command line interface for solving linear and nonlinear problems numerically, and for performing other numerical experiments using a language that is mostly compatible with Matlab. It may also be used as a batch-oriented language. Octave has extensive tools for solving common numerical linear algebra problems, finding the roots of nonlinear equations, integrating ordinary functions, manipulating polynomials, and integrating ordinary differential and differential-algebraic equations. It is easily extensible and customizable via user-defined functions written in Octave's own language, or using dynamically loaded modules written in C++, C, Fortran, or other languages.

OO2C (Optimizing Oberon-2 Compiler)

OO2C is an Oberon-2 development platform. It consists of an optimizing compiler, a number of related tools, a set of standard library modules and a reference manual. Oberon-2 is a general-purpose programming language in the tradition of Pascal and Modula-2. Its most important features are block structure, modularity, separate compilation, static typing with strong type checking (also across module boundaries) and type extension with type-bound procedures. Type extension makes Oberon-2 an object-oriented language.

Ordered Graph Data Language (OGDL)

OGDL is a structured textual format that represents information in the form of graphs, where the nodes are strings and the arcs or edges are spaces or indentation.

Pike

Pike is a dynamic programming language with a syntax similar to Java and C. It is simple to learn, does not require long compilation passes and has powerful built-in data types allowing simple and really fast data manipulation. Pike is released under the GNU GPL, GNU LGPL and MPL.

Pyrex

Pyrex is a language specially designed for writing Python extension modules. It's designed to bridge the gap between the nice, high-level, easy-to-use world of Python and the messy, low-level world of C. Pyrex lets you write code that mixes Python and C data types any way you want, and compiles it into a C extension for Python.

Q

Q is a functional programming language based on term rewriting. Thus, a Q program or “script” is simply a collection of equations which are used to evaluate expressions in a symbolic fashion. The equations establish algebraic identities and are interpreted as rewriting rules in order to reduce expressions to “normal forms”.

R

R is a language and environment for statistical computing and graphics. It is a GNU project similar to the S language and environment which was developed at Bell Laboratories (formerly AT&T, now Lucent Technologies) by John Chambers and colleagues. R can be considered as a different implementation of S. There are some important differences, but much code written for S runs unaltered under R. R provides a wide variety of statistical (linear and nonlinear modelling, classical statistical tests, time-series analysis, classification, clustering, ...) and graphical techniques, and is highly extensible. The S language is often the vehicle of choice for research in statistical methodology, and R provides an Open Source route to participation in that activity.

Regina Rexx

Regina is a Rexx interpreter that has been ported to most Unix platforms (Linux, FreeBSD, Solaris, AIX, HP-UX, etc.) and also to OS/2, eCS, DOS, Win9x/Me/NT/2k/XP, Amiga, AROS, QNX4.x, QNX6.x BeOS, MacOS X, EPOC32, AtheOS, OpenVMS, SkyOS and OpenEdition. Rexx is a programming language that was designed to be easy to use for inexperienced programmers yet powerful enough for experienced users. It is also a language ideally suited as a macro language for other applications.

Serp

Serp is an open source framework for manipulating Java bytecode. The goal of the Serp bytecode framework is to tap the full power of bytecode modification while lowering its associated costs. The framework provides a set of high-level APIs for manipulating all aspects of bytecode, from large-scale structures like class member fields to the individual instructions that comprise the code of methods. While in order to perform any advanced manipulation, some understanding of the class file format and especially of the JVM instruction set is necessary, the framework makes it as easy as possible to enter the world of bytecode development.

Small Device C Compiler (SDCC)

SDCC is a Freeware, retargetable, optimizing ANSI-C compiler that targets the Intel 8051, Maxim 80DS390 and the Zilog Z80 based MCUs. Work is in progress on supporting the Motorola 68HC08 as well as Microchip PIC16 and PIC18 series. The entire source code for the compiler is distributed under GPL.

SmartEiffel (The GNU Eiffel Compiler)

SmartEiffel claims to be “the fastest and the slimmest multi-platform Eiffel compiler on Earth”. Eiffel is an object-oriented programming language which emphasizes the production of robust software. Its syntax is keyword-oriented in the ALGOL and Pascal tradition. Eiffel is strongly statically typed, with automatic memory management (typically implemented by garbage collection). Distinguishing characteristics of Eiffel include Design by contract (DbC), liberal use of inheritance including multiple inheritance, a type system handling both value and reference semantics, and generic classes. Eiffel has a unified type system—all types in Eiffel are classes, so it is possible to create subclasses of the basic classes such as INTEGER. Eiffel has operator overloading, including the ability to define new operators, but does not have method overloading.

Squeak

Squeak is an open, highly-portable Smalltalk implementation whose virtual machine is written entirely in Smalltalk, making it easy to debug, analyze, and change. To achieve practical performance, a translator produces an equivalent C program whose performance is comparable to commercial Smalltalks. Other noteworthy aspects of Squeak include: real-time sound and music synthesis written entirely in Smalltalk, extensions of BitBlt to handle color of any depth and anti-aliased image rotation and scaling, network access support that allows simple construction of servers and other useful facilities, it runs bit-identical on many platforms (Windows, Mac, Unix, and others), a compact object format that typically requires only a single word of overhead per object and a simple yet efficient incremental garbage collector for 32-bit direct pointers efficient bulk-mutation of objects.

SR (Synchronizing Resources)

SR is a language for writing concurrent programs. The main language constructs are resources and operations. Resources encapsulate processes and variables they share; operations provide the primary mechanism for process interaction. SR provides a novel integration of the mechanisms for invoking and servicing operations. Consequently, all of local and remote procedure call, rendezvous, message passing, dynamic process creation, multicast, and semaphores are supported. SR also supports shared global variables and operations.

Standard ML

Standard ML is a safe, modular, strict, functional, polymorphic programming language with compile-time type checking and type inference, garbage collection, exception handling, immutable data types and updatable references, abstract data types, and parametric modules. It has efficient implementations and a formal definition with a proof of soundness. There are many implementations of Standard ML, among them:

Steel Bank Common Lisp (SBCL)

SBCL is an open source (free software) compiler and runtime system for ANSI Common Lisp. It provides an interactive environment including an integrated native compiler, a debugger, and many extensions. SBCL runs on a number of platforms.

Tiny C Compiler (TCC)

Tiny C Compiler is a small C compiler that can be used to compile and execute C code everywhere, for example on rescue disks (about 100KB for x86 TCC executable, including C preprocessor, C compiler, assembler and linker). TCC is fast. It generates optimized x86 code, has no byte code overhead and compiles, assembles and links several times faster than GCC. TCC is versatile, any C dynamic library can be used directly. It is heading toward full ISOC99 compliance and can compile itself. The compiler is safe as it includes an optional memory and bound checker. Bound checked code can be mixed freely with standard code. TCC compiles and executes C source directly. No linking or assembly necessary. A full C preprocessor and GNU-like assembler is included. It is C script supported; just add “#!/usr/local/bin/tcc -run” on the first line of your C source, and execute it directly from the command line. With libtcc, you can use TCC as a backend for dynamic code generation.

TinyCOBOL

TinyCOBOL is a COBOL compiler being developed by members of the free software community. The mission is to produce a COBOL compiler based on the COBOL 85 standards. TinyCOBOL is available for the Intel architecture (IA32) and compatible processors on the following platforms: BeOS, FreeBSD, Linux and MinGW on Windows.

Yorick

Yorick is an interpreted programming language, designed for postprocessing or steering large scientific simulation codes. Smaller scientific simulations or calculations, such as the flow past an airfoil or the motion of a drumhead, can be written as standalone yorick programs. The language features a compact syntax for many common array operations, so it processes large arrays of numbers very efficiently. Unlike most interpreters, which are several hundred times slower than compiled code for number crunching, Yorick can approach to within a factor of four or five of compiled speed for many common tasks. Superficially, Yorick code resembles C code, but Yorick variables are never explicitly declared and have a dynamic scoping similar to many Lisp dialects. The “unofficial” home page for Yorick can be found at http://www.maumae.net/yorick.

ZPL

ZPL is an array programming language designed from first principles for fast execution on both sequential and parallel computers. It provides a convenient high-level programming medium for supercomputers and large-scale clusters with efficiency comparable to hand-coded message passing. It is the perfect alternative to using a sequential language like C or Fortran and a message passing library like MPI.

Programming Libraries and Bindings

Boost

Boost provides free peer-reviewed portable C++ source libraries. The emphasis is on libraries which work well with the C++ Standard Library. The libraries are intended to be widely useful, and are in regular use by thousands of programmers across a broad spectrum of applications, platforms and programming environments.

Byte Code Engineering Library (BCEL)

BECL is intended to give users a convenient possibility to analyze, create, and manipulate (binary) Java class files (those ending with .class). Classes are represented by objects which contain all the symbolic information of the given class: methods, fields and byte code instructions, in particular. Such objects can be read from an existing file, be transformed by a program (e.g., a class loader at run-time) and dumped to a file again. An even more interesting application is the creation of classes from scratch at run-time. The Byte Code Engineering Library may be also useful if you want to learn about the Java Virtual Machine (JVM) and the format of Java .class files. BCEL is already being used successfully in several projects such as compilers, optimizers, obsfuscators, code generators and analysis tools.

Choco

Choco is a Java library for constraint satisfaction problems (CSP), constraint programming (CP) and explanation-based constraint solving (e-CP). It is built on a event-based propagation mechanism with backtrackable structures.

FFTW (Fastest Fourier Transform in the West)

FFTW is a C subroutine library for computing the discrete Fourier transform (DFT) in one or more dimensions, of arbitrary input size, and of both real and complex data (as well as of even/odd data, i.e., the discrete cosine/sine transforms or DCT/DST).

GOB (GObject Builder)

GOB (GOB2 anyway) is a preprocessor for making GObjects with inline C code so that generated files are not edited. Syntax is inspired by Java and Yacc or Lex. The implementation is intentionally kept simple, and no C actual code parsing is done.

GTK+/GNOME Language Bindings (wrappers)

GTK+/GNOME language bindings allow GTK+ to be used from other programming languages, in the style of those languages.

gtkmm

gtkmm is the official C++ interface for the popular GUI library GTK+. Highlights include typesafe callbacks, widgets extensible via inheritance and a comprehensive set of widgets. You can create user interfaces either in code or with the Glade designer, using libglademm.

Java-GNOME

Java-GNOME is a set of Java bindings for the GNOME and GTK+ libraries that allow GNOME and GTK+ applications to be written in Java. The Java-GNOME API has been carefully designed to be easy to use, maintaining a good OO paradigm, yet still wrapping the entire functionality of the underlying libraries. Java-GNOME can be used with the Eclipse development environment and Glade user interface designer to create applications with ease.

gtk2-perl

gtk2-perl is the collective name for a set of perl bindings for GTK+ 2.x and various related libraries. These modules make it easy to write GTK and GNOME applications using a natural, perlish, object-oriented syntax.

PyGTK

PyGTK provides a convenient wrapper for the GTK library for use in Python programs, and takes care of many of the boring details such as managing memory and type casting. When combined with PyORBit and gnome-python, it can be used to write full featured GNOME applications.

KDE Language Bindings

KDE and most KDE applications are implemented using the C++ programming language, however there are number of bindings to other languages are available. These include scripting languages like Perl, Python and Ruby, and systems programming languages such as Java and C#.

Numerical Python (Numpy)

Numerical Python adds a fast array facility to the Python language.

Perl Scripts and Additional Modules

There are many Perl scripts and additional modules located on the Comprehensive Perl Archive Network (CPAN) web site. Here you will find “All Things Perl”.

SWIG

SWIG is a software development tool that connects programs written in C and C++ with a variety of high-level programming languages. SWIG is used with different types of languages including common scripting languages such as Perl, Python, Tcl/Tk and Ruby. The list of supported languages also includes non-scripting languages such as C#, Common Lisp (Allegro CL), Java, Modula-3 and OCAML. Also several interpreted and compiled Scheme implementations (Chicken, Guile, MzScheme) are supported. SWIG is most commonly used to create high-level interpreted or compiled programming environments, user interfaces, and as a tool for testing and prototyping C/C++ software. SWIG can also export its parse tree in the form of XML and Lisp s-expressions.

Integrated Development Environments

A-A-P

A-A-P makes it easy to locate, download, build and install software. It also supports browsing source code, developing programs, managing different versions and distribution of software and documentation. This means that A-A-P is useful both for users and for developers.

Anjuta

Anujuta is a versatile Integrated Development Environment (IDE) for C and C++ on GNU/Linux. It has been written for GTK/GNOME and features a number of advanced programming facilities. These include project management, application wizards, an on-board interactive debugger, and a powerful source editor with source browsing and syntax highlighting.

Eclipse

Eclipse is an open source community whose projects are focused on providing an extensible development platform and application frameworks for building software. Eclipse contains many projects, including an Integrated Development Environment (IDE) for Java.

Mozart

The Mozart Programming System is an advanced development platform for intelligent, distributed applications. Mozart is based on the Oz language, which supports declarative programming, object-oriented programming, constraint programming, and concurrency as part of a coherent whole. For distribution, Mozart provides a true network transparent implementation with support for network awareness, openness, and fault tolerance. Security is upcoming. It is an ideal platform for both general-purpose distributed applications as well as for hard problems requiring sophisticated optimization and inferencing abilities.

Other Development Tools

cachecc1

cachecc1 is a GCC cache. It can be compared with the well known ccache package. It has some unique features including the use of an LD_PRELOADed shared object to catch invocations to cc1, cc1plus and as, it transparently supports all build methods, it can cache GCC bootstraps and it can be combined with distcc to transparently distribute compilations.

ccache

ccache is a compiler cache. It acts as a caching pre-processor to C/C++ compilers, using the -E compiler switch and a hash to detect when a compilation can be satisfied from cache. This often results in 5 to 10 times faster speeds in common compilations.

DDD (GNU Data Display Debugger)

GNU DDD is a graphical front-end for command-line debuggers such as GDB, DBX, WDB, Ladebug, JDB, XDB, the Perl debugger, the Bash debugger, or the Python debugger. Besides “usual” front-end features such as viewing source texts, DDD has an interactive graphical data display, where data structures are displayed as graphs..

distcc

distcc is a program to distribute builds of C, C++, Objective C or Objective C++ code across several machines on a network. distcc should always generate the same results as a local build, is simple to install and use, and is usually much faster than a local compile. distcc does not require all machines to share a filesystem, have synchronized clocks, or to have the same libraries or header files installed. They can even have different processors or operating systems, if cross-compilers are installed.

Exuberant Ctags

Exuberant Ctags generates an index (or tag) file of language objects found in source files that allows these items to be quickly and easily located by a text editor or other utility. A tag signifies a language object for which an index entry is available (or, alternatively, the index entry created for that object). Tag generation is supported for the following languages: Assembler, AWK, ASP, BETA, Bourne/Korn/Zsh Shell, C, C++, COBOL, Eiffel, Fortran, Java, Lisp, Lua, Make, Pascal, Perl, PHP, Python, REXX, Ruby, S-Lang, Scheme, Tcl, Vim, and YACC. A list of editors and tools utilizing tag files may be found at http://ctags.sourceforge.net/tools.html.

GDB (GNU Debugger)

GDB is the GNU Project debugger. It allows you to see what is going on “inside” another program while it executes. It also allows you to see what another program was doing at the moment it crashed.

User Notes and Installation Instructions: http://wiki.linuxfromscratch.org/blfs/wiki/OtherProgrammingTools

gocache (GNU Object Cache)

ccache is a clone of ccache, with the goal of supporting compilers other than GCC and adding additional features. Embedded compilers will especially be in focus.

OProfile

OProfile is a system-wide profiler for Linux systems, capable of profiling all running code at low overhead. OProfile is released under the GNU GPL. It consists of a kernel driver and a daemon for collecting sample data, and several post-profiling tools for turning data into information. OProfile leverages the hardware performance counters of the CPU to enable profiling of a wide variety of interesting statistics, which can also be used for basic time-spent profiling. All code is profiled: hardware and software interrupt handlers, kernel modules, the kernel, shared libraries, and applications. OProfile is currently in alpha status; however it has proven stable over a large number of differing configurations. It is being used on machines ranging from laptops to 16-way NUMA-Q boxes.

SCons

SCons is an Open Source software construction tool, i.e, a next-generation build tool. Think of SCons as an improved, cross-platform substitute for the classic make utility with integrated functionality similar to Autoconf/Automake and compiler caches such as ccache.

strace

strace is a system call tracer, i.e., a debugging tool which prints out a trace of all the system calls made by another process or program.

Valgrind

Valgrind is a collection of five tools: two memory error detectors, a thread error detector, a cache profiler and a heap profiler used for debugging and profiling Linux programs. Features include automatic detection of many memory management and threading bugs as well as detailed profiling to speed up and reduce memory use of your programs.

Part IV. Connecting to a Network

The LFS book covers setting up networking by connecting to a LAN with a static IP address. There are other methods used to connect to a LAN and other networks (such as the Internet). The most popular methods are covered in this chapter.

Chapter 13. Dial-up Networking

This chapter provides utilities for system interaction with a modem.

PPP-2.4.4

Introduction to PPP

The PPP package contains the pppd daemon and the chat program. This is used for connecting to other machines; often for connecting to the Internet via a dial-up or PPPoE connection to an ISP.

Package Information

PPP Dependencies

Optional

libpcap-0.9.4 (needed to do PPP filtering) and Linux ATM (to build the pppoatm.so plugin)

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/PPP

Installation of PPP

Note

PPP support must be compiled into the kernel or available as a kernel module.

Install PPP by running the following commands:

./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install &&
make install-etcppp

Command Explanations

make install-etcppp: This command puts example configuration files in /etc/ppp.

Configuring PPP

Config Files

/etc/ppp/*

Configuration Information

The PPP daemon requires very little configuration. The main trick is scripting the connection. This can be done either using the chat program which comes with this package or by using WvDial-1.54.0.

Contents

Installed Programs: chat, pppd, pppdump, pppoe-discovery and pppstats
Installed Libraries: Several plugin modules installed in /usr/lib/pppd/2.4.3
Installed Directories: /etc/ppp, /usr/include/pppd and /usr/lib/pppd

Short Descriptions

chat

defines a conversational exchange between the computer and the modem. Its primary purpose is to establish the connection between the Point-to-Point Protocol Daemon (PPPD) and the remote pppd process.

pppd

is the Point to Point Protocol daemon.

pppdump

is used to convert PPP record files to a readable format.

pppstats

is used to print PPP statistics.

WvDial-1.54.0

Introduction to WvDial

The WvDial package contains a no-nonsense, quick and easy to use alternative to chat and pppd scripts. If you simply want to dial a modem without the fuss and hassle of chat issues, then you'll want this.

Package Information

WvDial Dependencies

Required

WvStreams-4.2.2 and PPP-2.4.4

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/WvDial

Installation of WvDial

Install WvDial by running the following commands:

make PREFIX=/usr

Now, as the root user:

make PREFIX=/usr install

Configuring WvDial

Config Files

/etc/wvdial.conf and /etc/ppp/peers/*

Configuration Information

Perform the following two commands as the root user:

touch /etc/wvdial.conf &&
wvdialconf /etc/wvdial.conf

wvdialconf will test that you have a working modem and try to determine its exact setup. You will then need to enter your ISP's phone number, login name and password into the /etc/wvdial.conf file.

You then start wvdial with:

wvdial

For more information, examine the wvdialconf, wvdial.conf and wvdial man pages.

Contents

Installed Programs: wvdial and wvdialconf
Installed Libraries: None
Installed Directory: /etc/ppp/peers

Short Descriptions

wvdial

starts a PPP connection.

wvdialconf

automates the configuration of wvdial.

Chapter 14. DHCP Clients

DHCP stands for Dynamic Host Configuration Protocol. It is a protocol used by many sites to automatically provide information such as IP addresses, subnet masks and routing information to computers. If your network uses DHCP, you will need a DHCP client in order to connect to it. DHCP is also used by some cable modems.

BLFS currently provides installation instructions for two DHCP clients, dhclient (from the dhcp package) and dhcpcd. BLFS presents both sets of installation instructions and discusses how to create an appropriate service script to work with the network bootscript and the DHCP client of your choice.

DHCP-3.0.5 Client

The DHCP package comes with both a client (dhclient) and a server program for using DHCP. If you want to install this package, the instructions can be found at DHCP-3.0.5. Note that if you only want to use the client, you do not need to run the server and so do not need the startup script and links provided for the server daemon. You only need to run the DHCP server if you're providing this service to a network, and it's likely that you'll know if that's the case; if it isn't, don't run the server! Once you have installed the package, return here for information on how to configure the client (dhclient).

Configuring DHCP Client

To configure dhclient, you need to first install the network service script, /etc/sysconfig/network-devices/services/dhclient included in the blfs-bootscripts-20060910 package (as root):

make install-service-dhclient

Next, create the /etc/sysconfig/network-devices/ifconfig.eth0/dhclient configuration file with the following commands as the root user. Adjust as necessary for additional interfaces:

install -v -d /etc/sysconfig/network-devices/ifconfig.eth0 &&
cat > /etc/sysconfig/network-devices/ifconfig.eth0/dhclient << "EOF"
ONBOOT="yes"
SERVICE="dhclient"
DHCP_START="-q <add additional start parameters here>"
DHCP_STOP="-q -r <add additional stop parameters here>"

# Set PRINTIP="yes" to have the script print
# the DHCP assigned IP address
PRINTIP="no"

# Set PRINTALL="yes" to print the DHCP assigned values for
# IP, SM, DG, and 1st NS. This requires PRINTIP="yes".
PRINTALL="no"
EOF

For more information on the appropriate DHCP_START and DHCP_STOP values, examine the man page for dhclient.

Finally, you should create the /etc/dhclient.conf file using the following commands as the root user:

Note

You'll need to add a second interface definition to the file if you have more than one interface.

cat > /etc/dhclient.conf << "EOF"
# dhclient.conf

interface "eth0"{
prepend domain-name-servers 127.0.0.1;
request subnet-mask, broadcast-address, time-offset, routers,
        domain-name, domain-name-servers, host-name;
require subnet-mask, domain-name-servers;
}
# end dhclient.conf
EOF

Dhcpcd-2.0.8

Introduction to Dhcpcd

dhcpcdis an implementation of the DHCP client specified in RFC2131. This is useful for connecting your computer to a network which uses DHCP to assign network addresses.

Package Information

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/dhcpcd

Installation of Dhcpcd

Install dhcpcd by running the following commands:

./configure --prefix="" --mandir=/usr/share/man &&
make

This package does not come with a test suite.

Now, as the root user:

make install &&
chmod -v 754 /etc/dhcpc/dhcpcd.exe

Command Explanations

--prefix="": There may be a good reason for abandoning the normal BLFS convention of using --prefix=/usr here. If you are installing DHCP, it is likely that it is required during the boot process and /usr may be network mounted, in which case dhcpcd wouldn't be available due to being on the network! Therefore, depending on your situation, you may want it to be installed in /sbin or /usr/sbin. This command installs to /sbin.

Configuring Dhcpcd

Config Files

/etc/dhcpc/dhcpcd.exe

Configuration Information

To configure dhcpcd, you need to first install the network service script, /etc/sysconfig/network-devices/services/dhcpcd included in the blfs-bootscripts-20060910 package (as user root):

make install-service-dhcpcd

Whenever dhcpcd configures or shuts down a network interface, it executes the script /etc/dhcpc/dhcpcd.exe. This script can be customized to perform additional actions for the network interface. See the man page of dhcpcd for more details.

Finally, as the root user create the /etc/sysconfig/network-devices/ifconfig.eth0/dhcpcd configuration file using the following commands. Adjust appropriately for additional interfaces:

install -v -d /etc/sysconfig/network-devices/ifconfig.eth0 &&
cat > /etc/sysconfig/network-devices/ifconfig.eth0/dhcpcd << "EOF"
ONBOOT="yes"
SERVICE="dhcpcd"
DHCP_START="<insert appropriate start options here>"
DHCP_STOP="-k <insert additional stop options here>"

# Set PRINTIP="yes" to have the script print
# the DHCP assigned IP address
PRINTIP="no"

# Set PRINTALL="yes" to print the DHCP assigned values for
# IP, SM, DG, and 1st NS. This requires PRINTIP="yes".
PRINTALL="no"
EOF

For more information on the appropriate DHCP_START and DHCP_STOP values, examine the man page for dhcpcd.

Note

The default behavior of dhcpcd is to overwrite (after making backup copies) /etc/resolv.conf, /etc/yp.conf and /etc/ntp.conf with new files containing information from the DHCP server. If this is undesirable, review the dhcpcd man page for switches to add to the DHCP_START value.

Contents

Installed Program: dhcpcd
Installed Libraries: None
Installed Directory: /etc/dhcpc and /var/lib/dhcpc

Short Descriptions

dhcpcd

is an implementation of the DHCP client specified in RFC2131 (when -r option is not specified) and RFC1541 (when -r option is specified).

Chapter 15. Other Connections

Other methods to connect to large networks are through ISDN and PPPoE interfaces, among others. PPPoE is discussed here. Pages written for ISDN (or others as the need arises) are always welcome and will be included in future books, if the information becomes available.

RP-PPPoE-3.8

Introduction to RP-PPPoE

The Roaring Penguin PPPoE package contains both a client and a server component that works with the client. The client allows you to connect to large networks that use the PPPoE protocol, common among ADSL providers. The server component runs alongside the client, allowing you to configure other clients that send out a configuration request.

Package Information

RP-PPPoE Dependencies

Required

PPP-2.4.4 and Net-tools-1.60 (you may omit Net-tools by using the following patch to utilize IPRoute2 instead: http://www.linuxfromscratch.org/patches/blfs/6.2.0/rp-pppoe-3.8-iproute2-1.patch)

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/RP-PPPoE

Installation of RP-PPPoE

Note

If you plan on using kernel-mode PPPoE, this package is no longer explicitly needed, however, it is recommended for ease of configuration. Additional information about kernel mode PPPoE can be found in rp-pppoe-3.8/doc/KERNEL-MODE-PPPOE.

Fix the location of the logger executable in several PPPoE scripts:

sed -i s%/usr/bin/logger%/bin/logger% \
    scripts/pppoe-{connect,setup,stop}.in

Install RP-PPPoE by running the following commands:

cd src &&
./configure &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

These are the standard installation commands that will install the package into the /usr prefix. You can optionally use the go script in the root of the source tree to run the same commands, which are then immediately followed by the pppoe-setup script.

Configuring RP-PPPoE

Config Files

/etc/ppp/pppoe.conf, /etc/ppp/firewall-standalone, /etc/ppp/firewall-masq, /etc/ppp/pppoe-server-options, /etc/resolv.conf, /etc/ppp/pap-secrets, /etc/ppp/chap-secrets

Configuration Information

To configure RP-PPPoE after installation, you should run the pppoe-setup script.

When configuring your connection, you will need to have your ISP's nameserver information available, as well as your username and password. You will also be asked whether to configure a dial-on-demand or a constant connection. If your service provider does not charge by the minute, it is usually good to have a bootscript handle the connection for you. You can, of course, choose not to install the following script, and start your connection manually with the pppoe-start script.

Optionally install the /etc/sysconfig/network-devices/services/pppoe service script included with the blfs-bootscripts-20060910 package (as user root).

make install-service-pppoe

Now create the config file for use with the pppoe service script (as user root):

Note

If you have previously configured the network interface that will now use PPPoE, you should remove the interface configuration files for that interface (as user root):

rm -v /etc/sysconfig/network-devices/ifconfig.eth0/*
install -v -d /etc/sysconfig/network-devices/ifconfig.eth0 &&
cat > /etc/sysconfig/network-devices/ifconfig.eth0/pppoe << "EOF"
ONBOOT="yes"
SERVICE="pppoe"
EOF

Contents

Installed Programs: pppoe-connect, pppoe-setup, pppoe-start, pppoe-status, pppoe-stop, pppoe, pppoe-relay, pppoe-server and pppoe-sniff
Installed Libraries: None
Installed Directories: /etc/ppp/plugins and /usr/share/doc/rp-pppoe-3.8

Short Descriptions

pppoe-connect

is a shell script which manages an PPPoE connection using the user-space PPPoE client.

pppoe-setup

is a script for configuring the client. Configuration is then stored in /etc/ppp/pppoe.conf.

pppoe-start

starts the client using the options specified in /etc/ppp/pppoe.conf.

pppoe-status

displays the status of the PPPoE connection.

pppoe-stop

stops the client.

pppoe

is the client program. Generally it should not be started on its own.

pppoe-relay

starts the server relay agent.

pppoe-server

starts the server component.

pppoe-sniff

is a small network sniffer designed to assist in setting PPPOE_EXTRA settings.

Part V. Basic Networking

Chapter 16. Networking Libraries

These applications are support libraries for other applications in the book. It is unlikely that you would just install these libraries, you will generally find that you will be referred to this chapter to satisfy a dependency of other applications.

cURL-7.15.3

Introduction to cURL

The cURL package contains curl and its support library. This is useful for transferring files with URL syntax. This ability to both download and redirect files can be incorporated into other programs to support functions like streaming media.

Package Information

cURL Dependencies

Optional

pkg-config-0.20, OpenSSL-0.9.8d or GnuTLS, OpenLDAP-2.3.27, libidn-0.6.3, MIT Kerberos V5-1.6 or Heimdal-0.7.2, krb4, SPNEGO, and c-ares

Optional (for Running the Test Suite)

Stunnel-4.15 (for running HTTPS and FTPS tests) and Valgrind (not used if building the shared library)

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/curl

Installation of cURL

Install cURL by running the following commands:

./configure --prefix=/usr &&
make

To test the results, issue: make check. Note that if you have Stunnel and TCP Wrapper installed and you wish to perform the HTTPS tests, you'll need to have an unrestrictive /etc/hosts.deny file.

Now, as the root user:

make install &&
find docs -name "Makefile*" -o -name "*.1" -o -name "*.3" | xargs rm &&
install -v -d -m755 /usr/share/doc/curl-7.15.3 &&
cp -v -R docs/* /usr/share/doc/curl-7.15.3

Command Explanations

--with-gssapi: This parameter adds Kerberos 5 support to libcurl.

find docs -name "Makefile*" -o -name "*.1" -o -name "*.3" | xargs rm: This instruction removes files that are not needed in /usr/share/doc/curl-7.15.3 to facilitate copying appropriate files. The "*.1" and "*.3" files are installed by the normal make install.

Contents

Installed Programs: curl and curl-config
Installed Library: libcurl.{so,a}
Installed Directories: /usr/include/curl, /usr/share/curl and /usr/share/doc/curl-7.15.3

Short Descriptions

curl

is a client that can get documents from or send documents to any of the following protocols: HTTP, HTTPS (needs OpenSSL-0.9.8d), FTP, GOPHER, DICT, TELNET, LDAP (needs OpenLDAP-2.3.27 at run time) or FILE.

curl-config

prints information about the last compile, like libraries linked to and prefix setting.

libcurl.{so,a}

provides the API functions required by curl and other programs.

WvStreams-4.2.2

Introduction to WvStreams

WvStreams is a library suite containing platform-independent C++ networking and utilities libraries for rapid application development.

Package Information

  • Download (HTTP): http://open.nit.ca/download/wvstreams-4.2.2.tar.gz

  • Download (FTP):

  • Download MD5 sum: 103230cb9926cb8f3f4d8dc8584f3b9c

  • Download size: 1.2 MB

  • Estimated disk space required: 46 MB (additional 44 MB to install documentation)

  • Estimated build time: 0.8 SBU (additional 1.9 SBU to build documentation)

WvStreams Dependencies

Required

OpenSSL-0.9.8d

Optional

pkg-config-0.20, Gamin-0.1.7, Linux-PAM-0.99.4.0, Tcl-8.4.13, Qt-3.3.7, Speex-1.0.5, libvorbis-1.1.2, Doxygen-1.4.6, FFTW-2.<X>, SWIG, QDBM, OpenSLP, XPLC, Valgrind, and Electric Fence

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/wvstreams

Installation of WvStreams

If you have Tcl and SWIG installed and wish to utilize them, run the following:

sed -i -e "s/8_3/8_4/"  -e "s/8\.3/8.4/" \
      configure{,.ac} include/wvautoconf.h.in bindings/rules.mk

Install WvStreams by running the following commands:

./configure --prefix=/usr \
    --sysconfdir=/etc --localstatedir=/var &&
make

If Doxygen is installed and you wish to build the API documentation, issue the following command:

make doxygen

To test the results, issue: make test.

Now, as the root user:

make install

If you built the API documentation, install it using the following commands:

install -v -d -m755 /usr/share/doc/wvstreams-4.2.2/doxy-html &&
install -v -m644 Docs/doxy-html/* \
    /usr/share/doc/wvstreams-4.2.2/doxy-html

Command Explanations

sed -i ...: Change to tcl8.4 from tcl8.3.

--sysconfdir=/etc: This parameter places configuration files in /etc instead of /usr/etc.

--localstatedir=/var: This parameter places uniconfd run-time files in /var/lib instead of /usr/var/lib.

Configuring WvStreams

Config Files

/etc/uniconf.conf

Configuration Information

As with most libraries, there is no configuration to do, save that the library directory, i.e., /opt/lib or /usr/local/lib should appear in /etc/ld.so.conf so that ldd can find the shared libraries. After checking that this is the case, /sbin/ldconfig should be run while logged in as root.

Contents

Installed Programs: uni and uniconfd
Installed Libraries: libuniconf.{so,a}, libwvbase.{so,a}, libwvfft.{so,a}, libwvoggspeex.{so,a}, libwvoggvorbis.{so,a}, libwvqt.{so,a}, libwvstreams.{so,a}, libwvtelephony.{so,a}, libwvutils.{so,a} and libxplc-cxx.a
Installed Directories: /usr/include/wvstreams, /usr/share/doc/wvstreams-4.2.2 and /var/lib/uniconf

Short Descriptions

uni

is a program to interface with the UniConf configuration system.

uniconfd

is a daemon program for the UniConf configuration system.

libuniconf.{so,a}

contains functions that define a hierarchical registry abstraction in the UniConf configuration system.

libwvbase.{so,a}

contains the Base64 encoder and decoder implementations functions.

libwvfft.{so,a}

enables WvStreams programs to easily handle Fast-Fourier transforms, instead of forcing the programmer to use the much harder to use libfftw interface.

libwvoggspeex.{so,a}

enables quick and painless creation of audio streams using the Speex Voice over IP CODEC.

libwvoggvorbis.{so,a}

enables quick and painless creation of audio streams using the OggVorbis CODEC.

libwvqt.{so,a}

enables WvStreams to act as the I/O and configuration back end for Qt and KDE.

libwvstreams.{so,a}

provides functions for basic streaming I/O support.

libtelephony.{so,a}

contains telephony function routines such as echo cancellation, dc offset removal, automatic gain control, etc.

libwvutils.{so,a}

contains functions required by the WvStreams libraries and utility programs.

libxplc-cxx.a

contains helper functions for the C++ WvStreams bindings.

GNet-2.0.7

Introduction to GNet

The GNet package contains a simple network library. This is useful for supporting TCP sockets, UDP and IP multicast, asynchronous DNS lookup, and more.

Package Information

GNet Dependencies

Required

GLib-1.2.10 or GLib-2.10.3

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gnet

Installation of GNet

Install GNet by running the following commands:

./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Contents

Installed Programs: None
Installed Library: libgnet-2.0.{so,a}
Installed Directories: /usr/include/gnet-2.0, /usr/lib/gnet-2.0 and /usr/share/doc/libgnet2.0-dev or /usr/share/gtk-doc/html/gnet

Short Descriptions

libgnet-2.0.{so,a}

is a simple network library written in C. It is object-oriented and built upon GLib. It is intended to be easy to use and port.

libsoup-2.2.96

Introduction to libsoup

The libsoup package contains an HTTP library implementation in C. This is useful for accessing HTTP servers in a completely asynchronous mode.

Package Information

libsoup Dependencies

Required

GLib-2.10.3 and libxml2-2.6.26

Optional

GTK-Doc-1.6, Apache-2.2.2 (required to run the test suite), PHP-5.1.4 compiled with XMLRPC-EPI support (only used for the XMLRPC regression tests), and GnuTLS (which needs libgpg-error then libgcrypt)

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libsoup

Installation of libsoup

Install libsoup by running the following commands:

./configure --prefix=/usr &&
make

To test the results, issue make check.

Now, as the root user:

make install

Command Explanations

--enable-gtk-doc: Use this parameter if GTK-Doc is installed and you wish to rebuild the API documentation.

Contents

Installed Programs: None
Installed Library: libsoup-2.2.{so,a}
Installed Directories: /usr/include/libsoup-2.2 and /usr/share/gtk-doc/html/libsoup

Short Descriptions

libsoup-2.2.{so,a}

provides functions for asynchronous HTTP connections.

Libpcap-0.9.4

Introduction to Libpcap

libpcap provides functions for user-level packet capture, used in low-level network monitoring.

Package Information

Libpcap Dependencies

Optional

Software distribution for the DAG and Septel range of passive network monitoring cards.

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libpcap

Installation of Libpcap

Install libpcap by running the following commands:

./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install &&
install -v -m755 -d /usr/share/doc/libpcap-0.9.4 &&
install -v -m644 doc/*{html,txt} /usr/share/doc/libpcap-0.9.4

Contents

Installed Programs: None
Installed Library: libpcap.a
Installed Directory: /usr/share/doc/libpcap-0.9.4

Short Descriptions

libpcap.a

is a library used for user-level packet capture.

Chapter 17. Text Web Browsers

People who are new to Unix-based systems tend to ask the question "Why on earth would I want a text-mode browser? I'm going to compile X and use Konqueror/Mozilla/Whatever!". Those who have been around systems for a while know that when (not if) you manage to mess up your graphical browser install and you need to look up some information on the web, a console based browser will save you. Also, there are quite a few people who prefer to use one of these browsers as their principle method of browsing; either to avoid the clutter and bandwidth which accompanies images or because they may use a text-to-speech synthesizer which can read the page to them (of use for instance to partially sighted or blind users). In this chapter you will find installation instructions for three console web browsers:

Links-2.1pre23

Introduction to Links

Links is a text and graphics mode WWW browser. It includes support for rendering tables and frames, features background downloads, can display colors and has many other features.

Caution

In the text mode, Links cannot be configured to use UTF-8 encoding for the terminal output. This limitation renders Links useless as a text-based browser in UTF-8 locales. See general discussion of this type of issue in the Needed Encoding Not a Valid Option section on the Locale Related Issues page.

In the graphical mode, Links displays text correctly even in UTF-8 locales, if all characters exist in the built-in font used by Links. Form submission in UTF-8 locales is handled correctly when running in X11-based (but not framebuffer-based) graphical mode.

Package Information

Links Dependencies

Optional

GPM-1.20.1, OpenSSL-0.9.8d, libpng-1.2.12, libjpeg-6b, LibTIFF-3.8.2, PCRE-6.7, SVGAlib, DirectFB, and X Window System

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/LinksBrowser

Installation of Links

Install Links by running the following commands:

./configure --prefix=/usr &&
make CFLAGS="-O2 -Wno-sign-compare -Wno-pointer-sign"

This package does not come with a test suite.

Now, as the root user:

make install &&
install -v -d -m755 /usr/share/doc/links-2.1pre23 &&
install -v -m644 doc/links_cal/* KEYS BRAILLE_HOWTO \
    /usr/share/doc/links-2.1pre23

Command Explanations

CFLAGS="-O2 -Wno-sign-compare -Wno-pointer-sign": Disable printing of many warnings about mismatched signs in parameter passing and comparison operations during compilation.

--enable-graphics: Add this switch if you want to use Links in graphics mode. You will either need to install the X Window System or enable frame buffer support in your kernel and install GPM-1.20.1.

Configuring Links

Config Files

~/.links/*

Configuration Information

Links stores its configuration in per-user files in the ~/.links directory. These files are created automatically when links is run for the first time.

For the correct display of non-ASCII characters, Links has to be configured through the menu (accessible by pressing the ESC key), as follows:

  • If running Links in the text mode, go to the “Setup > Character set” menu item and select the character set that matches your locale.

  • Optionally, go to the “Setup > Language” menu and select the user interface language.

  • Finally, select the “Setup > Save options” menu item.

Contents

Installed Program: links
Installed Libraries: None
Installed Directories: /usr/share/doc/links-2.1pre23

Short Descriptions

links

is a text and graphics mode WWW browser.

Lynx-2.8.6

Introduction to Lynx

Lynx is a text based web browser.

Package Information

Lynx Dependencies

Optional

OpenSSL-0.9.8d or experimentaly, GnuTLS (which needs libgpg-error then libgcrypt), Zip-2.32, UnZip-5.52, an MTA (that provides a sendmail command), and sharutils (for a uudecode program)

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/Lynx

Installation of Lynx

Install Lynx by running the following commands:

./configure --prefix=/usr \
            --sysconfdir=/etc/lynx \
            --datadir=/usr/share/doc/lynx-2.8.6 \
            --with-zlib \
            --with-bzlib \
            --with-screen=ncursesw \
            --enable-locale-charset &&
make

This package does not come with a test suite.

Now, as the root user:

make install-full &&
chgrp -v -R root /usr/share/doc/lynx-2.8.6/lynx_doc

Command Explanations

--sysconfdir=/etc/lynx: This parameter is used so that the configuration files are located in /etc/lynx instead of /usr/etc.

--datadir=/usr/share/doc/lynx-2.8.6: This parameter is used so that the documentation files are installed into /usr/share/doc/lynx-2.8.6 instead of /usr/share/lynx_{doc,help}.

--with-zlib: This enables support for linking libz into Lynx.

--with-bzlib: This enables support for linking libbz2 into Lynx.

--with-screen=ncursesw: This switch enables the use of advanced wide-character support present in the system NCurses library. This is needed for proper display of characters and line wrapping in multibyte locales.

--enable-locale-charset: This switch allows Lynx to deduce the proper character encoding for terminal output from the current locale. A configuration step is still needed (see below), but, unlike the situation without this switch, the configuration step becomes the same for all users (without the switch, one would have to specify the display charcter set explicitly). This is important for environments such as a LiveCD, where the amount of system-specific configuration steps has to be reduced to the minimum.

--enable-nls: This switch allows Lynx to print translated messages (such as questions about cookies and SSL certificates).

--with-ssl: This enables support for linking SSL into Lynx.

--with-gnutls: This enables experimental support for linking GnuTLS into Lynx.

make install-full: In addition to the standard installation, this target installs the documentation and help files.

chgrp -v -R root /usr/share/doc/lynx-2.8.6/lynx_doc: This command corrects the improper group ownership of installed documentation files caused if Lynx is built by any user other than root.

Configuring Lynx

Config Files

/etc/lynx/lynx.cfg

Configuration Information

The proper way to get the display character set is to examine the current locale. However, Lynx does not do this by default. Change this setting:

sed -i 's/#\(LOCALE_CHARSET\):FALSE/\1:TRUE/' /etc/lynx/lynx.cfg

Many other system-wide settings such as proxies can also be set in the /etc/lynx/lynx.cfg file.

Contents

Installed Program: lynx
Installed Libraries: None
Installed Directories: /etc/lynx and /usr/share/doc/lynx-2.8.6

Short Descriptions

lynx

is a general purpose, text-based, distributed information browser for the World Wide Web.

W3m-0.5.1

Introduction to W3m

w3m is primarily a pager but it can also be used as a text-mode WWW browser.

Package Information

W3m Dependencies

Required

GC-6.8

Optional

pkg-config-0.20, GPM-1.20.1, OpenSSL-0.9.8d, Imlib-1.9.15 or Imlib2-1.2.2, GDK Pixel Buffer-0.22.0, Compface-1.4, nkf, a Mail User Agent and an External Browser

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/W3M

Installation of W3m

Install w3m by running the following commands:

./configure --prefix=/usr --libexecdir=/usr/lib --sysconfdir=/etc &&
make

This package does not come with a test suite.

Now, as the root user:

make install &&
install -v -D -m 644 doc/keymap.default /etc/w3m/keymap &&
install -v -D -m 644 doc/menu.default /etc/w3m/menu &&
install -v -d -m 755 /usr/share/doc/w3m-0.5.1/html &&
install -v -m 644 doc/{HISTORY,READM*,keymap.*,menu.*} \
    /usr/share/doc/w3m-0.5.1 &&
install -v -m 644 doc/*.html \
    /usr/share/doc/w3m-0.5.1/html

Configuring W3m

Config Files

/etc/w3m/* and ~/.w3m/*

Contents

Installed Programs: w3m and w3mman
Installed Libraries: None
Installed Directories: /usr/lib/w3m, /usr/share/w3m and usr/share/doc/w3m-0.5.1

Short Descriptions

w3m

is a text based web browser and pager.

w3mman

is an interface to the on-line reference manuals in w3m.

Chapter 18. Basic Networking Programs

These applications are generally client applications used to access the appropriate server across the building or across the world. Tcpwrappers and portmap are support programs for daemons that you may have running on your machine.

CVS-1.11.22

Introduction to CVS

CVS is the Concurrent Versions System. This is a version control system useful for projects using a central repository to hold files and then track all changes made to those files. These instructions install the client used to manipulate the repository, creation of a repository is covered at Running a CVS Server.

Package Information

Additional Downloads

CVS Dependencies

Optional

GDBM-1.8.3, Tcsh-6.14.00, OpenSSH-4.5p1, krb4, MIT Kerberos V5-1.6 or Heimdal-0.7.2 (for the GSSAPI libraries), AFPL Ghostscript-8.53 or ESP Ghostscript-8.15.2, and an MTA (that provides a sendmail command)

CVS will invoke a default text editor to create a commit message if the -m "Commit message" parameter was not used when changes are committed to a respository. CVS looks for the following text editors, in the order shown below, during configuration to determine the default. This default can always be overridden by the CVSEDITOR or EDITOR environment variables and can be specified directly by passing the --with-editor=<desired text editor> parameter to the configure script.

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/cvs

Installation of CVS

By default CVS is statically linked against the Zlib library included in its source tree. This makes it exposed to possible security vulnerabilities in that library. If you want to modify CVS to use the system shared Zlib library, apply the following patch:

patch -Np1 -i ../cvs-1.11.22-zlib-1.patch

Install CVS by running the following commands:

./configure --prefix=/usr &&
make

If you have teTeX-3.0 installed and wish to create DVI, Postscript, HTML or text docs from the documentation source files, issue the following command:

make -C doc html txt dvi ps

To test the results, issue: make check. This will take quite a while. If you don't have rsh configured for access to the host you are building on (or you didn't pass the --with-rsh= parameter to the configure script, some tests may fail. If you passed the --with-rsh=ssh parameter to enable ssh as the default remote shell program, you'll need to issue the following command so that the tests will complete without any failures:

sed -e 's/rsh};/ssh};/' \
    -e 's/g=rw,o=r$/g=r,o=r/' \
    -i src/sanity.sh

Now, as the root user:

make install &&
install -v -m755 -d /usr/share/doc/cvs-1.11.22 &&
install -v -m644 FAQ README /usr/share/doc/cvs-1.11.22 &&
install -v -m644 doc/*.pdf /usr/share/doc/cvs-1.11.22

If you created any additional documentation, install it by issuing the following commands as the root user:

install -v -m644 doc/*.{ps,dvi,txt} /usr/share/doc/cvs-1.11.22 &&
install -v -m755 -d /usr/share/doc/cvs-1.11.22/html/cvs{,client} &&
install -v -m644 doc/cvs.html/* \
                 /usr/share/doc/cvs-1.11.22/html/cvs &&
install -v -m644 doc/cvsclient.html/* \
                 /usr/share/doc/cvs-1.11.22/html/cvsclient

Configuring CVS

Config Files

~/.cvsrc, ~/.cvswrappers, and ~/.cvspass.

Configuration Information

~/.cvsrc is the main CVS configuration file. This file is used by users to specify defaults for different cvs commands. For example, to make all cvs diff commands run with -u, a user would add diff -u to their .cvsrc file.

~/.cvswrappers specifies wrappers to be used in addition to those specified in the CVSROOT/cvswrappers file in the repository.

~/.cvspass contains passwords used to complete logins to servers.

Contents

Installed Programs: cvs, cvsbug, and rcs2log
Installed Libraries: None
Installed Directories: /usr/share/cvs and /usr/share/doc/cvs-1.11.22

Short Descriptions

cvs

is the main program file for the concurrent versions system.

cvsbug

is used to send problem reports about CVS to a central support site.

rcs2log

is a symlink to the contributed RCS to Change Log generator.

Inetutils-1.4.2

Introduction to Inetutils

The Inetutils package contains network clients and servers.

Package Information

Additional Downloads

Inetutils Dependencies

Optional

Linux-PAM-0.99.4.0, TCP Wrapper-7.6, krb4, and Heimdal-0.7.2 or MIT Kerberos V5-1.6

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/inetutils

Installation of Inetutils

Install Inetutils by running the following commands:

patch -Np1 -i ../inetutils-1.4.2-gcc4_fixes-3.patch &&
patch -Np1 -i ../inetutils-1.4.2-daemon_fixes-1.patch &&
./configure --prefix=/usr --libexecdir=/usr/sbin \
    --sysconfdir=/etc --localstatedir=/var \
    --mandir=/usr/share/man --infodir=/usr/share/info \
    --disable-logger --disable-syslogd &&
make

This package does not come with a test suite.

Now, as the root user:

make install &&
mv -v /usr/bin/ping /bin

Command Explanations

--disable-logger: This switch prevents Inetutils installing a logger program, which is installed in the LFS book.

--disable-syslogd: This switch prevents Inetutils installing a system log daemon, which is installed in the LFS book.

--with-wrap: This switch makes Inetutils compile against tcp-wrappers. Add this option if you want to utilize tcp-wrappers.

--disable-whois: This switch will prevent Inetutils installing an outdated whois client. Add this option if you plan on installing Whois-4.7.20.

--with-pam: This switch makes Inetutils link against Linux-PAM libraries. Add this option if you want to utilize PAM.

--disable-servers: Some of the servers included with Inetutils are insecure in nature and in some cases better alternatives exist. You can choose this switch to enable only the servers you need, avoiding the installation of unneeded servers.

Contents

A list of the installed programs not included here, along with their short descriptions can be found at ../../../../lfs/view/6.2/chapter06/inetutils.html#contents-inetutils.

Installed Programs: ftpd, inetd, rexecd, rlogind, rshd, talkd, telnetd, tftpd, uucpd and whois
Installed Libraries: None
Installed Directories: None

Short Descriptions

ftpd

is a DARPA Internet File Transfer Protocol Server.

inetd

is an Internet super-server. Note that the xinetd-2.3.14 package provides a much better server that does the same thing.

rexecd

is a remote execution server.

rlogind

is a remote login server.

rshd

is a remote shell server.

talkd

is a remote user communication server.

telnetd

is a DARPA TELNET protocol server.

tftpd

is an Internet Trivial File Transfer Protocol server.

uucpd

is a server for supporting UUCP connections over networks.

whois

is a client for the whois directory service. Note that the Whois-4.7.20 package provides a much better client.

NcFTP-3.1.9

Introduction to NcFTP

The NcFTP package contains a powerful and flexible interface to the Internet standard File Transfer Protocol. It is intended to replace or supplement the stock ftp program.

Package Information

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/ncftp

Installation of NcFTP

There are two ways to build NcFTP. The first (and optimal) way builds most of the functionality as a shared library and then builds and installs the program linked against this library. The second method simply links all of the functionality into the binary statically. This doesn't make the dynamic library available for linking by other applications. You need to choose which method best suits you. Note that the second method does not create an entirely statically linked binary; only the libncftp parts are statically linked in, in this case. Be aware that building and using the shared library is covered by the Clarified Artistic License; however, developing applications that utilize the shared library is subject to a different license.

To install NcFTP using the first (and optimal) method, run the following commands:

./configure --prefix=/usr &&
make -C libncftp shared

Now, as the root user:

make -C libncftp soinstall

Again, as an unprivileged user:

make

Again, as the root user:

make install

To install NcFTP using the second method (with the libncftp functionality linked in statically) run the following commands:

./configure --prefix=/usr &&
make

Now, as the root user:

make install

Command Explanations

make -C ... && make -C ...: These commands make and install the dynamic library libncftp which is then used to link against when compiling the main program.

Configuring NcFTP

Config Files

~/.ncftp/*; especially ~/.ncftp/prefs_v3

Configuration Information

Most NcFTP configuration is done while in the program, and the configuration files are dealt with automatically. One exception to this is ~/.ncftp/prefs_v3. There are various options to alter in there, including:

yes-i-know-about-NcFTPd=yes

This disables the splash screen advertising the NcFTPd server.

There are other options in the prefs_v3 file. Most of these are self-explanatory.

Contents

Installed Programs: ncftp, ncftpbatch, ncftpbookmarks, ncftpget, ncftpls, ncftpput, and ncftpspooler
Installed Library: libncftp.so
Installed Directories: None

Short Descriptions

ncftp

is a browser program for File Transfer Protocol.

ncftpbatch

is an individual batch FTP job processor.

ncftpbookmarks

is the NcFTP Bookmark Editor (NCurses-based).

ncftpget

is an internet file transfer program for scripts used to retrieve files.

ncftpls

is an internet file transfer program for scripts used to list files.

ncftpput

is an internet file transfer program for scripts used to transfer files.

ncftpspooler

is a global batch FTP job processor daemon.

Net-tools-1.60

Introduction to Net-tools

The Net-tools package is a collection of programs for controlling the network subsystem of the Linux kernel.

Package Information

Additional Downloads

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/net-tools

Installation of Net-tools

Note

The Net-tools package installs a hostname program which will overwrite the existing program installed by Coreutils during a base LFS installation. If, for whatever reason, you need to reinstall the Coreutils package after installing Net-tools, you should apply the coreutils-5.96-suppress_hostname-1.patch patch (after the other patches) if you wish to preserve the Net-tools hostname program.

The instructions below automate the configuration process by piping yes to the make config command. If you wish to run the interactive configuration process (by changing the instruction to just make config), but you are not sure how to answer all the questions, then just accept the defaults. This will be just fine in the majority of cases. What you're asked here is a bunch of questions about which network protocols you've enabled in your kernel. The default answers will enable the tools from this package to work with the most common protocols: TCP, PPP, and several others. You still need to actually enable these protocols in the kernel—what you do here is merely tell the package to include support for those protocols in its programs, but it's up to the kernel to make the protocols available.

Install Net-tools by running the following commands:

patch -Np1 -i ../net-tools-1.60-gcc34-3.patch &&
patch -Np1 -i ../net-tools-1.60-kernel_headers-2.patch &&
patch -Np1 -i ../net-tools-1.60-mii_ioctl-1.patch &&
yes "" | make config &&
sed -i -e 's|HAVE_IP_TOOLS 0|HAVE_IP_TOOLS 1|g' \
       -e 's|HAVE_MII 0|HAVE_MII 1|g' config.h &&
sed -i -e 's|# HAVE_IP_TOOLS=0|HAVE_IP_TOOLS=1|g' \
       -e 's|# HAVE_MII=0|HAVE_MII=1|g' config.make &&
make

This package does not come with a test suite.

Now, as the root user:

make update

Command Explanations

yes "" | make config: Piping yes to make config skips the interactive configuration and accepts the defaults.

sed -i -e ...: These two seds change the configuration files to force building the ipmaddr, iptunnel and mii-tool programs.

Contents

Installed Programs: arp, dnsdomainname, domainname, hostname, ifconfig, ipmaddr, iptunnel, mii-tool, nameif, netstat, nisdomainname, plipconfig, rarp, route, slattach, and ypdomainname
Installed Libraries: None
Installed Directories: None

Short Descriptions

arp

is used to manipulate the kernel's ARP cache, usually to add or delete an entry, or to dump the entire cache.

dnsdomainname

reports the system's DNS domain name.

domainname

reports or sets the system's NIS/YP domain name.

hostname

reports or sets the name of the current host system.

ifconfig

is the main utility for configuring network interfaces.

ipmaddr

adds, deletes and shows an interface's multicast addresses.

iptunnel

adds, changes, deletes and shows an interface's tunnels.

mii-tool

checks or sets the status of a network interface's Media Independent Interface (MII) unit.

nameif

names network interfaces based on MAC addresses.

netstat

is used to report network connections, routing tables, and interface statistics.

nisdomainname

does the same as domainname.

plipconfig

is used to fine tune the PLIP device parameters, to improve its performance.

rarp

is used to manipulate the kernel's RARP table.

route

is used to manipulate the IP routing table.

slattach

attaches a network interface to a serial line. This allows you to use normal terminal lines for point-to-point links to other computers.

ypdomainname

does the same as domainname.

NTP-4.2.0a

Introduction to NTP

The NTP package contains a client and server to keep the time synchronized between various computers over a network. This package is the official reference implementation of the NTP protocol.

Package Information

NTP Dependencies

Optional

OpenSSL-0.9.8d

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/ntp

Installation of NTP

Install NTP by running the following commands:

./configure --prefix=/usr --bindir=/usr/sbin \
    --sysconfdir=/etc &&
make

To test the results, issue: make check.

Now, as the root user:

make install &&
install -v -m755 -d /usr/share/doc/ntp-4.2.0a &&
cp -v -R html /usr/share/doc/ntp-4.2.0a/

Configuring NTP

Config Files

/etc/ntp.conf

Configuration Information

The following configuration file defines various NTP servers with open access from different continents. It also creates a drift file where ntpd stores the frequency offset. Since the documentation included with the package is sparse, visit the NTP website at http://www.ntp.org/ and http://www.pool.ntp.org/ for more information.

cat > /etc/ntp.conf << "EOF"
# Africa
server tock.nml.csir.co.za

# Asia
server 0.asia.pool.ntp.org

# Australia
server 0.oceania.pool.ntp.org

# Europe
server 0.europe.pool.ntp.org

# North America
server 0.north-america.pool.ntp.org

# South America
server 2.south-america.pool.ntp.org

driftfile /var/cache/ntp.drift
EOF

Synchronizing the Time

There are two options. Option one is to run ntpd continuously and allow it to synchronize the time in a gradual manner. The other option is to run ntpd periodically (using cron) and update the time each time ntpd is scheduled.

If you choose Option one, then install the /etc/rc.d/init.d/ntp init script included in the blfs-bootscripts-20060910 package.

make install-ntp

If you prefer to run ntpd periodically, add the following command to root's crontab:

ntpd -q

Execute the following command if you would like to set the hardware clock to the current system time at shutdown and reboot:

ln -v -sf ../init.d/setclock /etc/rc.d/rc0.d/K46setclock &&
ln -v -sf ../init.d/setclock /etc/rc.d/rc6.d/K46setclock

The other way around is already set up by LFS.

Contents

Installed Programs: ntp-keygen, ntp-wait, ntpd, ntpdate, ntpdc, ntpq, ntptime, ntptrace, and tickadj
Installed Libraries: None
Installed Directory: /usr/share/doc/ntp-4.2.0a

Short Descriptions

ntp-keygen

generates cryptographic data files used by the NTPv4 authentication and identification schemes.

ntp-wait

is useful at boot time, to delay the boot sequence until ntpd has set the time.

ntpd

is a NTP daemon that runs in the background and keeps the date and time synchronized based on response from configured NTP servers. It also functions as a NTP server.

ntpdate

is a client program that sets the date and time based on the response from an NTP server. This command is deprecated.

ntpdc

is used to query the NTP daemon about its current state and to request changes in that state.

ntpq

is an utility program used to monitor ntpd operations and determine performance.

ntptime

reads and displays time-related kernel variables.

ntptrace

traces a chain of NTP servers back to the primary source.

tickadj

reads, and optionally modifies, several timekeeping-related variables in older kernels that do not have support for precision timekeeping.

OpenSSH-4.5p1 Client

The ssh client is a secure replacement for telnet. If you want to install it, the instructions can be found in Chapter 21 – OpenSSH-4.5p1. Note that if you only want to use the client, you do not need to run the server and so do not need the startup script and links. In accordance with good practice, only run the server if you actually need it (and if you don't know whether you need it or not, it's likely that you don't!).

Portmap-5beta

Introduction to Portmap

The portmap package is a more secure replacement for the original SUN portmap package. Portmap is used to forward RPC requests to RPC daemons such as NFS and NIS.

Package Information

Additional Downloads

Portmap Dependencies

Required

TCP Wrapper-7.6

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/portmap

Installation of Portmap

Portmap runs as a daemon with a uid of 1. This uid is not configurable. To set up a user to match this uid, as the root user, run:

useradd -u 1 -g 1 -d /dev/null -s /bin/false bin

Install portmap with the following commands:

patch -Np1 -i ../portmap-5beta-compilation_fixes-3.patch &&
patch -Np1 -i ../portmap-5beta-glibc_errno_fix-1.patch &&
make

Now, as the root user:

make install

Note

The above installation places executable portmap in /sbin. You may choose to move the file to /usr/sbin. If you do, remember to modify the bootscript also.

Configuring Portmap

Boot Script

Install the /etc/rc.d/init.d/portmap init script included in the blfs-bootscripts-20060910 package.

make install-portmap

Contents

Installed Programs: pmap_dump, pmap_set, and portmap
Installed Libraries: None
Installed Directories: None

Short Descriptions

pmap_dump

saves the port mapping table to an ASCII file.

pmap_set

restores the port mapping table from an ASCII file.

portmap

is an RPC port mapper.

Rsync-2.6.8 Client

rsync is a utility for fast incremental file transfers. If you want to install it, the instructions can be found in Chapter 24 – rsync-2.6.8. Note that if you only want to use the client, you do not need to run the server and so do not need the startup script and links. In accordance with good practice, only run the server if you actually need it (and if you don't know whether you need it or not, it's likely that you don't!).

Samba-3.0.23d Client

The Samba client utilities are used to transfer files to and from, mount SMB shares located on or use printers attached to Windows and other SMB servers. If you want to install these utilities, the instructions can be found in Chapter 21 – Samba-3.0.23d. After performing the basic installation, configure the utilities using the configuration section titled “Scenario 1: Minimal Standalone Client-Only Installation”.

Note that if you only want to use these client utilities, you do not need to run the server daemons and so do not need the startup script and links. In accordance with good practice, only run the server daemons if you actually need them. You'll find an explanation of the services provided by the server daemons in the Samba-3.0.23d instructions.

Subversion-1.3.1

Introduction to Subversion

Subversion is a version control system that is designed to be a compelling replacement for CVS in the open source community. It extends and enhances CVS' feature set, while maintaining a similar interface for those already familiar with CVS. These instructions install the client and server software used to manipulate a Subversion repository. Creation of a repository is covered at Running a Subversion Server.

Package Information

  • Download (HTTP): http://subversion.tigris.org/tarballs/subversion-1.3.1.tar.bz2

  • Download (FTP):

  • Download MD5 sum: 07b95963968ae345541ca99d0e7bf082

  • Download size: 6.7 MB

  • Estimated disk space required: 100 MB (additional 57 MB to install all bindings and 465 MB to run all test suites)

  • Estimated build time: 1.7 SBU (add 1.1 SBU for bindings and 20-60 minutes to run test suites)

Subversion Dependencies

Optional

Python-2.4.4 (required to run the test suite), Apache-2.2.2 or Apache Portable Runtime, neon-0.25.5, JDK-1.5.0_10 (to build the Java bindings), JUnit (required for running the Java bindings test suite and requires UnZip-5.52), Dante (alternate Java compiler), and Jikes (another alternate Java compiler)

Optional for the Bundled Version of Neon

pkg-config-0.20, libxml2-2.6.26 or expat-2.0.0, OpenSSL-0.9.8d, Heimdal-0.7.2 or MIT Kerberos V5-1.6

Optional for the Bundled Version of Apache Portable Runtime

expat-2.0.0 and GDBM-1.8.3

Optional to Build the SWIG Bindings

SWIG, Python-2.4.4, and Ruby-1.8.5

Note that the Python, Perl and Ruby bindings will not compile properly with the current version of SWIG. To build the bindings, you must have SWIG-1.3.{24,25} installed. Complete instructions for building the SWIG bindings can be found in the Subversion source tree file ./subversion/bindings/swig/INSTALL.

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/subversion

Installation of Subversion

Caution

For reasons that are not yet fully understood, Subversion repositories based on some versions of Berkeley DB (notably 4.4.x) may not perform reliably. Though there have been no reports of corrupted databases caused by this issue, the Subversion test suite may report a failure in one of the tests due to problems opening a repository based on Berkeley DB. This issue only affects BDB-based repositories on a local installation and does not affect access to a BDB-based repository on a remote system built with older versions of Subversion or Berkeley DB.

For these reasons, the Berkeley DB back-end is disabled, and any local BDB-based repositories you may have will be unavailable after installing Subversion using the following instructions. Please reference the information at http://svnbook.red-bean.com/en/1.1/ch05s03.html#svn-ch-5-sect-3.5 if you need to migrate your repositores.

Install Subversion by running the following commands:

./configure --prefix=/usr \
            --without-berkeley-db \
            --with-installbuilddir=/usr/lib/apr-0 &&
make

Note

If you have Apache installed, pass the --with-apr=/usr and --with-apr-util=/usr switches to the configure script. Otherwise, Subversion will overwrite APR and APR-utils from the Apache installation with the source distribution files. You may also need to pass --with-apxs=/usr/sbin/apxs as apxs might not be in an unprivileged user's PATH and won't be properly discovered. Additionally if you have Apache installed, you may safely remove the --with-installbuilddir=/usr/lib/apr-0 parameter as it will have no effect.

If you passed the --enable-javahl parameter to configure and wish to build the Java bindings, issue the following command:

make javahl

If you passed the -with-swig parameter to configure and wish to build the Perl, Python and/or Ruby bindings, issue any or all of the following commands:

make swig-pl &&
make swig-py &&
make swig-rb

To test the results of the Subversion build, issue: make check. This will take quite a long time.

Note

The fs-base-test is known to fail with issues surrounding the Berkely database installation. As mentioned earlier, it is not yet fully understood why this test fails.

To test the results of the Java bindings build, issue make check-javahl. Note you must have the JUnit (version 3.8.x) testing framework installed.

To test the results of any or all of the SWIG bindings, you can use the following commands:

make check-swig-pl &&
make check-swig-py &&
make check-swig-rb

Now, as the root user:

make install &&
rm doc/{Makefile,doxygen.conf} &&
find doc -type d -exec chmod 755 {} \; &&
find doc -type f -exec chmod 644 {} \; &&
install -v -m755 -d /usr/share/doc/subversion-1.3.1 &&
cp -v -R doc/* /usr/share/doc/subversion-1.3.1

If you built the Java bindings, issue the following command as the root user to install them:

make install-javahl

If you built any of the SWIG bindings, issue any or all of the following commands as the root user to install them:

make install-swig-pl &&

make install-swig-py &&
echo /usr/lib/svn-python \
    > /usr/lib/python2.4/site-packages/subversion.pth &&

make install-swig-rb

Command Explanations

--with-installbuilddir=/usr/lib/apr-0: This parameter is used (and only has an effect if you used the source provided version of Apache Portable Runtime) to force the installation of some APR-related support programs to /usr/lib/apr-0 instead of /usr/build.

--with-neon=<prefix>: This option should be used if you wish to use a system-installed version of neon.

--with-ssl: This switch enables OpenSSL support in neon (only required if you use the bundled version of neon).

Configuring Subversion

Config Files

~/.subversion/config and /etc/subversion/config

Configuration Information

/etc/subversion/config is the Subversion system-wide configuration file. This file is used to specify defaults for different svn commands.

~/.subversion/config is the user's personal configuration file. It is used to override the system-wide defaults set in /etc/subversion/config.

Contents

Installed Programs: svn, svnadmin, svndumpfilter, svnlook, svnserve, svnversion, and optionally, neon-config and apr-config
Installed Libraries: libsvn*.{so,a} and optionally, libneon.{so,a} and the mod_dav_svn.so, and mod_authz_svn.so Apache HTTP DSO modules
Installed Directories: /etc/subversion, /usr/include/neon (optional), /usr/include/subversion-1, /usr/lib/perl5/site_perl/5.8.8/i686-linux/auto/SVN (optional), /usr/lib/perl5/site_perl/5.8.8/i686-linux/SVN (optional), /usr/lib/svn-javahl (optional), /usr/lib/svn-python (optional), /usr/share/doc/neon-0.25.5 (optional), and /usr/share/doc/subversion-1.3.1

Short Descriptions

svn

is a command-line client program used to access Subversion repositories.

svnadmin

is a tool for creating, tweaking or repairing a Subversion repository.

svndumpfilter

is a program for filtering Subversion repository dumpfile format streams.

svnlook

is a tool for inspecting a Subversion repository.

svnserve

is a custom standalone server program, able to run as a daemon process or invoked by SSH.

svnversion

is used to report the version number and state of a working Subversion repository copy.

neon-config

is a script which provides information about an installed copy of the neon library.

libsvn_*.{so,a}

are the support libraries used by the Subversion programs.

libneon.{so,a}

is used as a high-level interface to common HTTP and WebDAV methods.

mod_authz_svn.so

is a plug-in module for the Apache HTTP server, used to authenticate users to a Subversion repository over the Internet or an intranet.

mod_dav_svn.so

is a plug-in module for the Apache HTTP server, used to make a Subversion repository available to others over the Internet or an intranet.

TCP Wrapper-7.6

Introduction to TCP Wrapper

The TCP Wrapper package provides daemon wrapper programs that report the name of the client requesting network services and the requested service.

Package Information

Additional Downloads

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/tcpwrappers

Installation of TCP Wrapper

Install TCP Wrapper with the following commands:

patch -Np1 -i ../tcp_wrappers-7.6-shared_lib_plus_plus-1.patch &&
sed -i -e "s,^extern char \*malloc();,/* & */," scaffold.c &&
make REAL_DAEMON_DIR=/usr/sbin STYLE=-DPROCESS_OPTIONS linux

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

sed -i -e ... scaffold.c: This command removes an obsolete C declaration which causes the build to fail if using GCC >= 3.4.x.

Configuring TCP Wrapper

Config Files

/etc/hosts.allow and /etc/hosts.deny

File protections: the wrapper, all files used by the wrapper, and all directories in the path leading to those files, should be accessible but not writable for unprivileged users (mode 755 or mode 555). Do not install the wrapper set-uid.

As the root user, perform the following edits on the /etc/inetd.conf configuration file:

finger stream tcp nowait nobody /usr/sbin/in.fingerd in.fingerd

becomes:

finger stream tcp nowait nobody /usr/sbin/tcpd in.fingerd

Note

The finger server is used as an example here.

Similar changes must be made if xinetd is used, with the emphasis being on calling /usr/sbin/tcpd instead of calling the service daemon directly, and passing the name of the service daemon to tcpd.

Contents

Installed Programs: tcpd, tcpdchk, tcpdmatch, try-from, and safe_finger
Installed Library: libwrap.{so,a}
Installed Directories: None

Short Descriptions

tcpd

is the main access control daemon for all Internet services, which inetd or xinetd will run instead of running the requested service daemon.

tcpdchk

is a tool to examine a tcpd wrapper configuration and report problems with it.

tcpdmatch

is used to predict how the TCP wrapper would handle a specific request for a service.

try-from

can be called via a remote shell command to find out if the host name and address are properly recognized.

safe_finger

is a wrapper for the finger utility, to provide automatic reverse name lookups.

libwrap.{so,a}

contains the API functions required by the TCP Wrapper programs as well as other programs to become “TCP Wrapper-aware”.

Wget-1.10.2

Introduction to Wget

The Wget package contains a utility useful for non-interactive downloading of files from the Web.

Package Information

Wget Dependencies

Optional

OpenSSL-0.9.8d and Dante

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/wget

Installation of Wget

Install Wget by running the following commands:

./configure --prefix=/usr --sysconfdir=/etc &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--sysconfdir=/etc: This relocates the configuration file from /usr/etc to /etc.

Configuring Wget

Config Files

/etc/wgetrc and ~/.wgetrc

There are no changes required to these files.

Contents

Installed Program: wget
Installed Libraries: None
Installed Directories: None

Short Descriptions

wget

retrieves files from the Web using the HTTP, HTTPS and FTP protocols. It is designed to be non-interactive, for background or unattended operations.

Wireless Tools-28

Introduction to Wireless Tools

The Wireless Extension (WE) is a generic API in the Linux kernel allowing a driver to expose configuration and statistics specific to common Wireless LANs to user space. A single set of tools can support all the variations of Wireless LANs, regardless of their type as long as the driver supports Wireless Extensions. WE parameters may also be changed on the fly without restarting the driver (or Linux).

The Wireless Tools (WT) package is a set of tools allowing manipulation of the Wireless Extensions. They use a textual interface to support the full Wireless Extension.

Package Information

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/WirelessTools

Kernel Configuration

To use Wireless Tools, the kernel must have the appropriate drivers and other support available. The appropriate bus must also be available. For many laptops, the PCMCIA bus (CONFIG_PCCARD) needs to be built. In some cases, this bus support will also need to be built for embedded wireless cards. The appropriate bridge support also needs to be built. For many modern laptops, the CardBus host bridge (CONFIG_YENTA) will be needed.

In addition to the bus, the actual driver for the specific wireless card must also be available. There are many wireless cards and they don't all work with Linux. The first place to look for card support is the kernel. The drivers are located in Device Drivers → Network Device Support → Wireless LAN (non-hamradio). There are also external drivers available for some very common cards. For more information, look at the user notes.

After the correct drivers are loaded, the interface will appear in /proc/net/wireless.

Installation of Wireless Tools

To install Wireless Tools, use the following commands:

make

This package does not come with a test suite.

Now, as the root user:

make PREFIX=/usr install

Contents

Installed Programs: ifrename, iwconfig, iwevent, iwgetid, iwlist, iwpriv, and iwspy
Installed Library: libiw.so
Installed Directories: None

Short Descriptions

ifrename

renames network interfaces based on various static criteria.

iwconfig

configures a wireless network interface.

iwevent

displays wireless events generated by drivers and setting changes.

iwgetid

reports ESSID, NWID or AP/Cell Address of wireless networks.

iwlist

gets detailed wireless information from a wireless interface.

iwpriv

configures optional (private) parameters of a wireless network interface.

iwspy

gets wireless statistics from specific node.

libiw.so

contains functions required by the wireless programs and provides an API for other programs.

Other Networking Programs

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/othernetprogs

NCPFS contains client and administration tools for use with Novell networks. See the User Notes for details.

Chapter 19. Basic Networking Utilities

This chapter contains some tools that come in handy when the network needs investigating.

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/basicnetworkingutilities

Traceroute-1.4a12

Introduction to Traceroute

The Traceroute package contains a program which is used to display the network route that packets take to reach a specified host. This is a standard network troubleshooting tool. If you find yourself unable to connect to another system, traceroute can help pinpoint the problem.

Package Information

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/traceroute

Installation of Traceroute

Install Traceroute by running the following commands:

sed -i -e 's/-o bin/-o root/' Makefile.in &&
./configure --prefix=/usr &&
make

Now, as the root user:

make install &&
make install-man

Command Explanations

sed 's/-o bin/-o root/' Makefile.in: Adjusts the Makefile so that the program is installed with user root owning the files instead of user bin (which doesn't exist on a default LFS system).

make install: Installs traceroute with SUID set to root in the /usr/sbin directory. This makes it possible for all users to execute traceroute. For absolute security, turn off the SUID bit in traceroute's file permissions with the command:

chmod -v 0755 /usr/sbin/traceroute

The risk is that if a security problem such as a buffer overflow was ever found in the Traceroute code, a regular user on your system could gain root access if the program is SUID root. Of course, removing the SUID permission also makes it impossible for users other than root to utilize traceroute, so decide what's right for your individual situation.

The goal of BLFS is to be completely FHS compliant, so if you do leave the traceroute binary SUID root, then you should move traceroute to /usr/bin with the following command:

mv -v /usr/sbin/traceroute /usr/bin

This ensures that the binary is in the path for non-root users.

Contents

Installed Program: traceroute
Installed Libraries: None
Installed Directories: None

Short Descriptions

traceroute

does basically what it says: it traces the route your packets take from the host you are working on to another host on a network, showing all the intermediate hops (gateways) along the way.

Nmap-4.03

Introduction to Nmap

Nmap is a utility for network exploration and security auditing. It supports ping scanning, port scanning and TCP/IP fingerprinting.

Package Information

Nmap Dependencies

Optional

OpenSSL-0.9.8d, PCRE-6.7, GTK+-2.8.20 (for building the graphical front-end) and libpcap-0.9.4

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/nmap

Installation of Nmap

Install Nmap by running the following commands:

./configure --prefix=/usr &&
make

This package does not come with a test-suite:

Now, as the root user:

make install

Contents

Installed Programs: nmap and optionally, nmapfe
Installed Libraries: None
Installed Directories: /usr/share/applications and /usr/share/nmap

Short Descriptions

nmap

is a utility for network exploration and security auditing. It supports ping scanning, port scanning and TCP/IP fingerprinting.

nmapfe

is the graphical front end to nmap.

Whois-4.7.20

Introduction to Whois

Whois is a client-side application which queries the whois directory service for information pertaining to a particular domain name.

Package Information

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/whois

Installation of Whois

Install Whois by running the following commands:

make

This package does not come with a test suite (that works).

Now, as the root user:

make prefix=/usr install

Contents

Installed Program: whois
Installed Libraries: None
Installed Directories: None

Short Descriptions

whois

is a client-side application which queries the whois directory service for information pertaining to a particular domain name.

BIND Utilities-9.3.3

Introduction to BIND Utilities

BIND Utilities is not a separate package, it is a collection of the client side programs that are included with BIND-9.3.3. The BIND package includes the client side programs nslookup, dig and host. If you install BIND server, these programs will be installed automatically. This section is for those users who don't need the complete BIND server, but need these client side applications.

Package Information

BIND Utilities Dependencies

Optional

OpenSSL-0.9.8d

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/bind-utils

Installation of BIND Utilities

Install BIND Utilities by running the following commands:

./configure --prefix=/usr &&
make -C lib/dns &&
make -C lib/isc &&
make -C lib/bind9 &&
make -C lib/isccfg &&
make -C lib/lwres &&
make -C bin/dig

Now, as the root user:

make -C bin/dig install

Command Explanations

make -C lib/...: These commands build the libraries that are needed for the client programs.

make -C bin/dig: This command builds the client programs.

Contents

Installed Programs: dig, host, and nslookup
Installed Libraries: None
Installed Directories: None

Short Descriptions

See the program descriptions in the BIND-9.3.3 section.

Ethereal-0.99.0

Introduction to Ethereal

The Ethereal package contains a network protocol analyzer, also known as a “sniffer”. This is useful for analyzing data captured “off the wire” from a live network connection, or data read from a capture file. Ethereal provides both a graphical and TTY-mode front-end for examining captured network packets from over 500 protocols, as well as the capability to read capture files from many other popular network analyzers.

Package Information

Additional Downloads

From this page you can download many different docs in a variety of formats.

Ethereal dependencies

Required

GLib-1.2.10 or GLib-2.10.3 (to build the TTY-mode front-end only)

Recommended

Optional

pkg-config-0.20, GTK+-1.2.10 or GTK+-2.8.20 (to build the GUI front-end), OpenSSL-0.9.8d, Heimdal-0.7.2 or MIT Kerberos V5-1.6, Python-2.4.4, PCRE-6.7, GnuTLS (which needs libgpg-error then libgcrypt), Net-SNMP, adns, and Lua

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/ethereal

Kernel Configuration

The kernel must have the Packet protocol enabled for Ethereal to capture live packets from the network. Enable the Packet protocol by choosing “Y” in the “Networking” – “Packet socket” configuration parameter. Alternatively, build the af_packet.ko module by choosing “M” in this parameter.

Installation of Ethereal

Install Ethereal by running the following commands:

./configure --prefix=/usr \
            --sysconfdir=/etc \
            --enable-threads &&
make

This package does not come with a test suite.

Now, as the root user:

make install &&
install -v -m644 FAQ README{,.linux} doc/README.* doc/*.{pod,txt} \
                 /usr/share/ethereal &&
install -v -m644 -D ethereal.desktop \
                    /usr/share/applications/ethereal.desktop &&
install -v -m644 -D image/elogo3d48x48.png \
                    /usr/share/pixmaps/ethereal.png &&
install -v -m755 -d /usr/share/pixmaps/ethereal &&
install -v -m644 image/*.{png,ico,xpm,bmp} \
                 /usr/share/pixmaps/ethereal

If you downloaded any of the documentation files from the page listed in the 'Additional Downloads', install them by issuing the following commands as the root user:

install -v -m755 -d /usr/share/doc/ethereal-0.99.0 &&
install -v -m644 <Downloaded_Files> /usr/share/doc/ethereal-0.99.0

Command Explanations

--enable-threads: This parameter enables the use of threads in ethereal.

--with-ssl: This parameter enables the use of the OpenSSL libcrypto library.

Configuring Ethereal

Config Files

/etc/ethereal.conf and ~/.ethereal/preferences

Configuration Information

Though the default configuration parameters are very sane, reference the configuration section of the Ethereal User's Guide for configuration information. Most of Ethereal's configuration can be accomplished using the menu options of the ethereal graphical interface.

Note

If you want to look at packets, make sure you don't filter them out with iptables-1.3.6. If you want to exclude certain classes of packets, it is more efficient to do it with iptables than Ethereal.

Contents

Installed Programs: capinfos, dftest, editcap, ethereal, idl2eth, mergecap, randpkt, tethereal and text2pcap
Installed Libraries: libethereal.so, libwiretap.so and numerous dissector plugin modules
Installed Directories: /usr/lib/ethereal, /usr/share/ethereal and /usr/share/pixmaps/ethereal

Short Descriptions

capinfos

reads a saved capture file and returns any or all of several statistics about that file. It is able to detect and read any capture supported by the Ethereal package.

dftest

is a display-filter-compiler test program.

editcap

edits and/or translates the format of capture files. It knows how to read libpcap capture files, including those of tcpdump, Ethereal and other tools that write captures in that format.

ethereal

is a GUI network protocol analyzer. It lets you interactively browse packet data from a live network or from a previously saved capture file.

idl2eth

takes a user specified CORBA IDL file and generates “C” source code that can be used to create an Ethereal plugin.

mergecap

combines multiple saved capture files into a single output file.

randpkt

creates random-packet capture files.

tethereal

is a TTY-mode network protocol analyzer. It lets you capture packet data from a live network or read packets from a previously saved capture file.

text2pcap

reads in an ASCII hex dump and writes the data described into a libpcap-style capture file.

libethereal.so

contains functions used by the Ethereal programs to perform filtering and packet capturing.

libwiretap.so

is a library being developed as a future replacement for libpcap, the current standard Unix library for packet capturing. For more information, see the README file in the source wiretap directory.

Chapter 20. Mail/News Clients

Mail Clients help you retrieve (Fetchmail), sort (Procmail), read and compose responses (Heirloom mailx, Mutt, Pine, Kmail, Balsa, Evolution, SeaMonkey) to email.

News clients also help you retrieve, sort, read and compose responses, but these messages travel through USENET (a worldwide bulletin board system) using the Network News Transfer Protocol (NNTP).

Heirloom mailx-12.0

Introduction to Heirloom mailx

The Heirloom mailx package (formerly known as the Nail package) contains mailx, a command-line Mail User Agent derived from Berkeley Mail which is intended to provide the functionality of the POSIX mailx command with additional support for MIME messages, IMAP (including caching), POP3, SMTP, S/MIME, message threading/sorting, scoring, and filtering. Heirloom mailx is especially useful for writing scripts and batch processing.

Package Information

Heirloom mailx Dependencies

Optional

OpenSSL-0.9.8d or NSS-3.11.3, Heimdal-0.7.2 or MIT Kerberos V5-1.6 (for IMAP GSSAPI authentication), and an MTA

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/mailx

Installation of Heirloom mailx

Install Heirloom mailx by running the following commands.

make SENDMAIL=/usr/sbin/sendmail

This package does not come with a test suite.

Now, as the root user:

make PREFIX=/usr UCBINSTALL=/usr/bin/install install &&
ln -v -sf mailx /usr/bin/mail &&
ln -v -sf mailx /usr/bin/nail &&
install -v -m755 -d /usr/share/doc/mailx-12.0 &&
install -v -m644 README mailx.1.html /usr/share/doc/mailx-12.0

Command Explanations

make SENDMAIL=/usr/sbin/sendmail: This changes the default MTA path of /usr/lib/sendmail.

make PREFIX=/usr UCBINSTALL=/usr/bin/install install: This changes the default installation path of /usr/local and the default install command path of /usr/ucb.

Configuring Heirloom mailx

Config Files

/etc/nail.rc, ~/.mailrc and ~/.nailrc

Contents

Installed Programs: mail, mailx and nail
Installed Libraries: None
Installed Directories: None

Short Descriptions

mailx

is a command-line mail user agent compatible with the mailx command found on commercial Unix versions.

mail

is a symbolic link to mailx.

nail

is a symbolic link to mailx.

Procmail-3.22

Introduction to Procmail

The Procmail package contains an autonomous mail processor. This is useful for filtering and sorting incoming mail.

Package Information

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/procmail

Installation of Procmail

This package does not come with a test suite.

Install Procmail by running the following commands as the root user:

make LOCKINGTEST=/tmp install &&
make install-suid

Command Explanations

make LOCKINGTEST=/tmp install: This prevents make from asking you where to test file-locking patterns.

make install-suid: Modifies permissions of the installed files.

Configuring Procmail

Config Files

/etc/procmailrc and ~/.procmailrc

Configuration Information

Recipes have to be written and placed in your ~/.procmailrc for execution. The procmailex man page is the starting place to learn how to write recipes.

Contents

Installed Programs: formail, lockfile, mailstat and procmail
Installed Libraries: None
Installed Directories: None

Short Descriptions

formail

is a filter that can be used to format mail into mailbox format.

lockfile

is a utility that can lock a file for single use interactively or in a script.

mailstat

prints a summary report of mail that has been filtered by procmail since the last time mailstat was ran.

procmail

is an autonomous mail processor. It performs all the functions of an MDA (Mail Delivery Agent).

Fetchmail-6.3.4

Introduction to Fetchmail

The Fetchmail package contains a mail retrieval program. "It retrieves mail from remote mail servers and forwards it to your local (client) machine's delivery system, so it can then be read by normal mail user agents."

Package Information

Fetchmail Dependencies

Required

OpenSSL-0.9.8d and a local MDA (Procmail-3.22)

Optional

Python-2.4.4 and Tk-8.4.13

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/fetchmail

Installation of Fetchmail

Install Fetchmail by running the following commands:

./configure --prefix=/usr --with-ssl --enable-fallback=procmail &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--with-ssl: This enables SSL if found, so that you can handle connections to secure POP3 and IMAP servers.

--enable-fallback=procmail: This tells Fetchmail to hand incoming mail to Procmail for delivery if your port 25 mail server is not present or not responding.

Configuring Fetchmail

Config Files

~/.fetchmailrc

Configuration Information

cat > ~/.fetchmailrc << "EOF"
set logfile /var/log/fetchmail.log
set no bouncemail
set postmaster root

poll SERVERNAME :
    user <username> pass <password>;
    mda "/usr/bin/procmail -f %F -d %T";
EOF

chmod -v 0600 ~/.fetchmailrc

This is an example configuration that should suffice for most people. You can add as many users and servers as you need using the same syntax.

man fetchmail: Look for the section near the bottom named CONFIGURATION EXAMPLES. It gives some quick examples. There are countless other config options once you get used to it.

Contents

Installed Program: fetchmail and fetchmailconf
Installed Libraries: None
Installed Directories: None

Short Descriptions

fetchmail

when executed as a user, this will source that users ~/.fetchmailrc and download the appropriate mail.

fetchmailconf

this program provides a Tk GUI interface to your ~/.fetchmailrc file making it much easier to configure. However, you will require Python, and it must have the Tkinker module available.

Mutt-1.5.11

Introduction to Mutt

The Mutt package contains a Mail User Agent. This is useful for reading, writing, replying to, saving, and deleting your email.

Package Information

Additional Downloads

Mutt Dependencies

Optional

GnuPG-1.4.3, OpenSSL-0.9.8d or GnuTLS (which needs libgpg-error then libgcrypt), an MTA (that provides a sendmail command), Aspell-0.60.4, MIT Kerberos V5-1.6 or Heimdal-0.7.2, Cyrus SASL-2.1.21, S-Lang-2.0.6, libidn-0.6.3, GDBM-1.8.3, and GDB

Optional (To Regenerate Documentation)

libxslt-1.1.17, and Links-2.1pre23 or w3m

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/mutt

Installation of Mutt

Note

This version of Mutt is a development release. The BLFS staff has determined that it provides a stable program and fixes two issues in the current stable version of Mutt: a segmentation fault that occurs under certain conditions and a compilation problem when building with GCC-4.0.3. To find the current stable release, please refer to the Mutt home page.

Mutt requires a group named mail. You can add this group, if it does not exist, with this command:

groupadd -g 34 mail

If you did not install an MTA, such as Postfix-2.3.3 or Sendmail-8.13.6, you need to modify the ownership of /var/mail with this command:

chgrp -v mail /var/mail

Fix a security vulnerability in Mutt:

patch -Np1 -i ../mutt-1.5.11-security_fix-1.patch

Install Mutt by running the following commands:

./configure --prefix=/usr --sysconfdir=/etc \
    --enable-pop --enable-imap &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--enable-pop: This switch enables POP3 support.

--enable-imap: This switch enables IMAP support.

--with-...: This switch enables the various dependencies.

Configuring Mutt

Config Files

/etc/Muttrc, ~/.muttrc, /etc/mime.types, ~/.mime.types

Configuration Information

No changes in these files are necessary to begin using Mutt. When you are ready to make changes, the man page for muttrc is a good starting place.

In order to utilize GnuPG, use the following command:

cat /usr/share/doc/mutt/samples/gpg.rc >> ~/.muttrc

Contents

Installed Programs: flea, mutt, mutt_dotlock, muttbug, pgpring, and pgpwrap
Installed Libraries: None
Installed Directories: /usr/doc/mutt

Short Descriptions

flea

is a bug submitter for Mutt.

mutt

is a Mail User Agent (MUA) which enables you to read, write and delete your email.

mutt_dotlock

implements the mail spool file lock.

muttbug

is a script that executes flea.

Pine-4.64

Introduction to Pine

The Pine package contains the Pine Mail User Agent and several server daemons for various mail protocols, in addition to some nice file and directory editing/browsing programs.

Package Information

Additional Downloads

Pine Dependencies

Required

OpenSSL-0.9.8d

Optional

OpenLDAP-2.3.27 and MIT Kerberos V5-1.6

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/pine

Installation of Pine

Install Pine by running the following commands:

patch -Np1 -i ../pine-4.64-utf8-1.patch &&
sed -i "s@/usr/local/lib/pine@/etc/pine@g" \
    $(grep -lr /usr/local/lib/pine *) &&
./build DEBUG=-O MAILSPOOL=/var/mail \
    SSLDIR=/usr SSLCERTS=/etc/ssl/certs slx

This package does not come with a test suite.

Now, as the root user:

install -v -m644 doc/*.1 /usr/share/man/man1 &&
install -v -p -m644 doc/tech-notes/*.html /usr/share/doc/pine4.64 &&
install -v -m755 \
bin/{pine,imapd,ipop2d,ipop3d,mailutil,mtest,pico,pilot,rpdump,rpload} \
    /usr/bin

Command Explanations

patch -Np1 -i ../pine-4.64-utf8-1.patch: This patch enables Pine UTF-8 and charset conversion.

sed -i "s@/usr/ ... /lib/pine *): This sed will make Pine use /etc for configuration files. It also alters the documentation to reflect that.

The build procedure for Pine is somewhat unusual, in that options usually passed as ./configure options or housed in $CFLAGS must all be passed on the command line to the ./build script.

./build slx: Pine offers quite a few target platforms, slx specifies Linux using -lcrypt to get the crypt function. See the doc/pine-ports file for more information and other authentication options.

DEBUG=-O: This flag compiles an optimized version of pine and pico that produces no debug files.

MAILSPOOL=/var/mail: Location of mail spool files, /var/mail.

SSLDIR=/usr SSLCERTS=/etc/ssl/certs: Location of OpenSSL files.

Configuring Pine

Config Files

~/.pinerc

Configuration Information

The pine executable needs no global configuration to use. Users set Pine options in ~/.pinerc using an internal configuration menu.

Contents

Installed Programs: imapd, ipop2d, ipop3d, mtest, pico, pilot, pine, rpdump, and rpload
Installed Libraries: None
Installed Directories: /usr/share/doc/pine4.64

Short Descriptions

imapd

is the IMAP server daemon.

ipop2d

is an IMAP to POP2 conversion server.

ipop3d

is an IMAP to POP3 conversion server.

metest

is a minimal IMAP mail user agent, used for debugging.

pico

is a stand-alone editor, similar to the Pine internal message composer.

pilot

is a file and directory navigator and browser.

pine

is the Pine mail user agent.

rpdump

is used to copy data from remote Pine configuration files or address books into a local file.

rpload

is the Pine remote data utility, used to convert local Pine configuration files or address books into remote configurations or address books.

TIN-1.8.2

Introduction to TIN

TIN is a threaded NNTP and spool based console-mode UseNet newsreader. It supports threading, scoring, different charsets, and many other useful things. It has also support for different languages.

Package Information

TIN Dependencies

Optional

PCRE-6.7, libidn-0.6.3, an MTA that provides the sendmail command or Heirloom mailx-12.0, GnuPG-1.4.3, Aspell-0.60.4, INN, UUDeview, Socks, Metamail, and Dmalloc or dbmalloc

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/Tin

Installation of TIN

Install TIN by running the following commands:

./configure --prefix=/usr --with-screen=ncursesw \
    --enable-nntp-only --disable-printing &&
make build

This package does not come with a test suite.

Now, as the root user:

make install &&
make install_sysdefs &&
rm -vf doc/*.? &&
install -v -m755 -d /usr/share/doc/tin-1.8.2 &&
install -v -m644 doc/* /usr/share/doc/tin-1.8.2

Command Explanations

--with-screen=ncursesw: This switch forces the use of wide-character functions from the ncursesw library (for UTF-8 and Asian languages support).

--enable-nntp-only: Reading news from a local spool is disabled with this switch. Don't use this if you have installed INN and want to use its spool.

--disable-printing: This switch disables printing since TIN cannot send non-ASCII text to the printer correctly. Remove this switch if you can tolerate this limitation.

--with-editor: This switch sets the default editor used by TIN. The default is vi.

Configuring TIN

Config Files

/etc/tin/tinrc, ~/.tin/tinrc, ~/.newsrc, /etc/tin/tin.defaults, /etc/tin/mime.types, /etc/tin/keymap and /etc/mailcap

Configuration Information

Set some global defaults for TIN by running the following commands as the root user:

cat > /etc/tin/tinrc << "EOF"
use_mouse=ON
getart_limit=100
translit=ON
EOF

Now, as an unprivileged user, subscribe to some newsgroups, specify the news server, and run tin:

cat >> ~/.newsrc << "EOF"
gmane.linux.lfs.devel:
gmane.linux.lfs.beyond.devel:
EOF
export NNTPSERVER=news.gmane.org
tin -Q

For printing, TIN executes the lpr command. This can be provided by CUPS-1.2.7 or LPRng-3.8.28.

If you do not have the metamail program, TIN will use an internal parser for multipart MIME articles. Alternatively, you can use Mutt for MIME parsing through the metamutt shell script. This requires both the Mutt-1.5.11 and Procmail-3.22 programs. To use metamutt, set metamail_prog=metamutt in tin.

Contents

Installed Programs: tin, rtin, tinews.pl, metamutt, opt-case.pl, w2r.pl, and url_handler.sh
Installed Libraries: None
Installed Directory: /etc/tin

Short Descriptions

tin

is a UseNet news reader.

rtin

is a symbolic link to tin.

tinews.pl

posts and signs an article via NNTP.

metamutt

is a replacement of metamail using Mutt.

opt-case.pl

optimizes case insensitive regexp filters for tin.

w2r.pl

converts tin wildmat filters to tin regexp filters.

url_handler.sh

calls a web browser for viewing hyperlinks.

Other Mail and News Programs

Pan-0.14.2 is a GTK2 based newsreader program.

knode is a Qt based newsreader program from kdepim-3.5.6.

kmail is a Qt based mail client from kdepim-3.5.6.

Balsa-2.3.13 is a GTK2 based mail client.

SeaMonkey-1.1 includes both a mail client and newsreader in its installation.

Thunderbird-1.5.0.9 is a mail/news client based on the Mozilla code base.

Evolution-2.6.3 includes a GTK2 based mail client.

Part VI. Servers

Chapter 21. Major Servers

Major servers are the programs that provide content or services to users or other programs.

Apache-2.2.2

Introduction to Apache

The Apache package contains an open-source HTTP server. It is useful for creating local intranet web sites or running huge web serving operations.

Package Information

Additional Downloads

Apache Dependencies

Optional

GDBM-1.8.3, OpenSSL-0.9.8d, OpenLDAP-2.3.27, PostgreSQL-8.1.3, SQLite, PCRE-6.7, pkg-config-0.20, expat-2.0.0, and distcache

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/apache

Installation of Apache

For security reasons, running the server as an unprivileged user and group is strongly encouraged. Create the following group and user using the following commands (as root):

groupadd -g 25 apache &&
useradd -c "Apache Server" -d /dev/null -g apache \
        -s /bin/false -u 25 apache

Note

The above command directs the Apache user's home directory to /dev/null. This may not work for some add-ons such as ViewVC, a browser interface for CVS and Subversion version control repositories. See the User Notes for details for specific applications.

The following patch modifies the layout of destination directories and among them, the build directory at /usr/lib/apache/build. This will allow the modules added to Apache to be configured without errors. Apply the patch:

patch -Np1 -i ../httpd-2.2.2-config-1.patch

Note

You may wish to review the output from ./configure --help and include whatever parameters are necessary to the configure command below to build the modules required for your installation. There are as many as 62 additional parameters you can add to the configure command to build additional modules. Some of the extra parameters which aren't described or mentioned in the --help information are listed in the “Command Explanations” section below.

Build and install Apache by running the following commands:

./configure --enable-layout=FHS --enable-mods-shared=all &&
make

This package does not come with a test suite.

Now, as the root user:

make install &&
chown -v root:root /usr/lib/apache/httpd.exp \
    /usr/sbin/{apxs,apachectl,dbmmanage,envvars{,-std}} \
    /usr/share/man/man1/{dbmmanage,ht{dbm,digest,passwd}}.1 \
    /usr/share/man/man8/{ab,apachectl,apxs,htcacheclean,httpd}.8 \
    /usr/share/man/man8/{logresolve,rotatelogs,suexec}.8 &&
chown -v -R apache:apache /srv/www

Command Explanations

--with-expat=/usr: Uses the system installed expat. If you have installed expat and do not use this switch, the Apache installation may overwrite some files from the expat installation.

--enable-mods-shared=all: The modules should be compiled and used as Dynamic Shared Objects (DSOs) so they can be included and excluded from the server using the run-time configuration directives.

--enable-ssl: Use this parameter to create the mod_ssl module and enable SSL support. This parameter is mentioned as one of many parameters which can be passed to the configure command to create additional DSO modules.

--with-pcre: Add this parameter to use the system installed version of the PCRE library.

--with-z: Add this parameter to use the system installed version of the Zlib library.

--with-ldap: This parameter is required if you passed the --enable-authnz-ldap or --enable-ldap options to configure and enabled the OpenLDAP modules.

chown root:root ...: This command changes the ownership of some installed files, the result of building the package as a user other than root.

chown -R apache:apache /srv/www: By default, the installation process installs files (documentation, error messages, default icons, etc.) with the ownership of the user that extracted the files from the tar file. If you want to change the ownership to another user, you should do so at this point. The only requirement is that the document directories need to be accessible by the httpd process with (r-x) permissions and files need to be readable (r--) by the apache user.

Configuring Apache

Config Files

/etc/apache/*

Configuration Information

The main configuration file is named /etc/apache/httpd.conf. Modify it so that the HTTP server runs as the dedicated user and group:

sed -i -e "s/User daemon/User apache/" \
       -e "s/Group daemon/Group apache/" \
    /etc/apache/httpd.conf

See http://httpd.apache.org/docs-2.2/configuring.html for detailed instructions on customizing your Apache HTTP server configuration file.

There's a problem with the ISAPI DSO module caused from compiling with GCC-4.0.3. If you included the parameter to build the module, comment out the module's load command in the configuration file with the following command:

sed -i "s/^LoadModule isapi_module/# &/" \
    /etc/apache/httpd.conf

Boot Script

If you want the Apache server to start automatically when the system is booted, install the /etc/rc.d/init.d/apache init script included in the blfs-bootscripts-20060910 package.

make install-apache

Contents

Installed Programs: ab, apachectl, apr-config, apu-config, apxs, checkgid, dbmmanage, htdbm, htdigest, htpasswd, httpd, instdso.sh, logresolve, and rotatelogs
Installed Libraries: libapr-1.{so,a}, libaprutil-1.{so,a}, and /usr/lib/apache/*.so
Installed Directories: /etc/apache, /srv/www, /usr/include/apache, /usr/lib/apache, and /var/log/apache

Short Descriptions

ab

is a tool for benchmarking your Apache HTTP server.

apachectl

is a front end to the Apache HTTP server which is designed to help the administrator control the functioning of the Apache httpd daemon.

apxs

is a tool for building and installing extension modules for the Apache HTTP server.

dbmanage

is used to create and update the DBM format files used to store usernames and passwords for basic authentication of HTTP users.

htdigest

is used to create and update the flat-files used to store usernames, realms and passwords for digest authentication of HTTP users.

htpasswd

is used to create and update the flat-files used to store usernames and passwords for basic authentication of HTTP users.

httpd

is the Apache HTTP server program.

instdso.sh

is a script which installs Apache DSO modules.

logresolve

is a post-processing program to resolve IP-addresses in Apache's access log files.

rotatelogs

is a simple program for use in conjunction with Apache's piped log file feature.

BIND-9.3.3

Introduction to BIND

The BIND package provides a DNS server and client utilities. If you are only interested in the utilities, refer to the BIND Utilities-9.3.3.

Package Information

BIND Dependencies

Optional

OpenSSL-0.9.8d

Optional (to Run the Test Suite)

Net-tools-1.60 (for ifconfig) and Net-DNS-0.57

Optional (to [Re]Build Documentation)

teTeX-3.0 and libxslt-1.1.17

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/bind

Installation of BIND

Install BIND by running the following commands:

sed -i 's/#ifdef SO_BSDCOMPAT/#if 0/' lib/isc/unix/socket.c &&
./configure --prefix=/usr --sysconfdir=/etc \
    --enable-threads --with-libtool &&
make

Issue the following commands to run the complete suite of tests. First, as root, set up some test interfaces:

bin/tests/system/ifconfig.sh up

Now run the test suite as an unprivileged user:

make check 2>&1 | tee check.log

Again as root, clean up the test interfaces:

bin/tests/system/ifconfig.sh down

Issue the following command to check that all 144 tests ran successfully:

grep "R:PASS" check.log | wc -l

Finally, install the package as the root user:

make install &&
chmod 755 /usr/lib/{lib{bind9,isc{,cc,cfg},lwres,dns}.so.*.?.?} &&
cd doc &&
install -v -d -m755 /usr/share/doc/bind-9.3.3/{arm,draft,misc,rfc} &&
install -v -m644 arm/*.html \
    /usr/share/doc/bind-9.3.3/arm &&
install -v -m644 draft/*.txt \
    /usr/share/doc/bind-9.3.3/draft &&
install -v -m644 rfc/* \
    /usr/share/doc/bind-9.3.3/rfc &&
install -v -m644 \
    misc/{dnssec,ipv6,migrat*,options,rfc-compliance,roadmap,sdb} \
    /usr/share/doc/bind-9.3.3/misc

Command Explanations

sed -i -e 's/#ifdef SO_BSDCOMPAT/#if 0/' lib/isc/unix/socket.c: This command removes an obsolete reference so that the bind daemon does not generate messages about it in the log.

--sysconfdir=/etc: This parameter forces BIND to look for configuration files in /etc instead of /usr/etc.

--enable-threads: This parameter enables multi-threading capability.

--with-libtool: This parameter forces the building of dynamic libraries and links the installed binaries to these libraries.

chmod 755 /usr/lib/{lib{bind9,isc{,cc,cfg},lwres,dns}.so.*.?.?}: Enable the execute bit to prevent a warning when using ldd to check library dependencies.

cd doc; install ...: These commands install the additional package documentation. Optionally, omit any or all of these commands.

Configuring BIND

Config files

named.conf, root.hints, 127.0.0, rndc.conf and resolv.conf

Configuration Information

BIND will be configured to run in a chroot jail as an unprivileged user (named). This configuration is more secure in that a DNS compromise can only affect a few files in the named user's HOME directory.

Create the unprivileged user and group named:

groupadd -g 20 named &&
useradd -c "BIND Owner" -g named -s /bin/false -u 20 named
install -d -m770 -o named -g named /srv/named

Set up some files, directories and devices needed by BIND:

cd /srv/named &&
mkdir -p dev etc/namedb/slave var/run &&
mknod /srv/named/dev/null c 1 3 &&
mknod /srv/named/dev/random c 1 8 &&
chmod 666 /srv/named/dev/{null,random} &&
mkdir /srv/named/etc/namedb/pz &&
cp /etc/localtime /srv/named/etc

Then, generate a key for use in the named.conf and rdnc.conf files using the rndc-confgen command:

rndc-confgen -b 512 | grep -m 1 "secret" | cut -d '"' -f 2

Create the named.conf file from which named will read the location of zone files, root name servers and secure DNS keys:

cat > /srv/named/etc/named.conf << "EOF"
 options {
     directory "/etc/namedb";
    pid-file "/var/run/named.pid";
    statistics-file "/var/run/named.stats";

 };
 controls {
     inet 127.0.0.1 allow { localhost; } keys { rndc_key; };
 };
 key "rndc_key" {
     algorithm hmac-md5;
     secret "<Insert secret from rndc-confgen's output here>";
 };
 zone "." {
     type hint;
     file "root.hints";
 };
 zone "0.0.127.in-addr.arpa" {
     type master;
     file "pz/127.0.0";
 };

// Bind 9 now logs by default through syslog (except debug).
// These are the default logging rules.

logging {
     category default { default_syslog; default_debug; };
     category unmatched { null; };

  channel default_syslog {
      syslog daemon;                      // send to syslog's daemon
                                          // facility
      severity info;                      // only send priority info
                                          // and higher
  };

  channel default_debug {
      file "named.run";                   // write to named.run in
                                          // the working directory
                                          // Note: stderr is used instead
                                          // of "named.run"
                                          // if the server is started
                                          // with the '-f' option.
      severity dynamic;                   // log at the server's
                                          // current debug level
  };

  channel default_stderr {
      stderr;                             // writes to stderr
      severity info;                      // only send priority info
                                          // and higher
  };

  channel null {
     null;                                // toss anything sent to
                                          // this channel
  };
};

EOF

Create the rndc.conf file with the following commands:

cat > /etc/rndc.conf << "EOF"
key rndc_key {
algorithm "hmac-md5";
    secret
    "<Insert secret from rndc-confgen's output here>";
    };
options {
    default-server localhost;
    default-key    rndc_key;
};
EOF

The rndc.conf file contains information for controlling named operations with the rndc utility.

Create a zone file with the following contents:

cat > /srv/named/etc/namedb/pz/127.0.0 << "EOF"
$TTL 3D
@      IN      SOA     ns.local.domain. hostmaster.local.domain. (
                        1       ; Serial
                        8H      ; Refresh
                        2H      ; Retry
                        4W      ; Expire
                        1D)     ; Minimum TTL
                NS      ns.local.domain.
1               PTR     localhost.
EOF

Create the root.hints file with the following commands:

Note

Caution must be used to ensure there are no leading spaces in this file.

cat > /srv/named/etc/namedb/root.hints << "EOF"
.                       6D  IN      NS      A.ROOT-SERVERS.NET.
.                       6D  IN      NS      B.ROOT-SERVERS.NET.
.                       6D  IN      NS      C.ROOT-SERVERS.NET.
.                       6D  IN      NS      D.ROOT-SERVERS.NET.
.                       6D  IN      NS      E.ROOT-SERVERS.NET.
.                       6D  IN      NS      F.ROOT-SERVERS.NET.
.                       6D  IN      NS      G.ROOT-SERVERS.NET.
.                       6D  IN      NS      H.ROOT-SERVERS.NET.
.                       6D  IN      NS      I.ROOT-SERVERS.NET.
.                       6D  IN      NS      J.ROOT-SERVERS.NET.
.                       6D  IN      NS      K.ROOT-SERVERS.NET.
.                       6D  IN      NS      L.ROOT-SERVERS.NET.
.                       6D  IN      NS      M.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET.     6D  IN      A       198.41.0.4
B.ROOT-SERVERS.NET.     6D  IN      A       192.228.79.201
C.ROOT-SERVERS.NET.     6D  IN      A       192.33.4.12
D.ROOT-SERVERS.NET.     6D  IN      A       128.8.10.90
E.ROOT-SERVERS.NET.     6D  IN      A       192.203.230.10
F.ROOT-SERVERS.NET.     6D  IN      A       192.5.5.241
G.ROOT-SERVERS.NET.     6D  IN      A       192.112.36.4
H.ROOT-SERVERS.NET.     6D  IN      A       128.63.2.53
I.ROOT-SERVERS.NET.     6D  IN      A       192.36.148.17
J.ROOT-SERVERS.NET.     6D  IN      A       192.58.128.30
K.ROOT-SERVERS.NET.     6D  IN      A       193.0.14.129
L.ROOT-SERVERS.NET.     6D  IN      A       198.32.64.12
M.ROOT-SERVERS.NET.     6D  IN      A       202.12.27.33
EOF

The root.hints file is a list of root name servers. This file must be updated periodically with the dig utility. A current copy of root.hints can be obtained from ftp://rs.internic.net/domain/named.root. Consult the BIND 9 Administrator Reference Manual for details.

Create or modify resolv.conf to use the new name server with the following commands:

Note

Replace <yourdomain.com> with your own valid domain name.

cp /etc/resolv.conf /etc/resolv.conf.bak &&
cat > /etc/resolv.conf << "EOF"
search <yourdomain.com>
nameserver 127.0.0.1
EOF

Set permissions on the chroot jail with the following command:

chown -R named.named /srv/named

Boot Script

To start the DNS server at boot, install the /etc/rc.d/init.d/bind init script included in the blfs-bootscripts-20060910 package.

make install-bind

Now start BIND with the new boot script:

/etc/rc.d/init.d/bind start

Testing BIND

Test out the new BIND 9 installation. First query the local host address with dig:

dig -x 127.0.0.1

Now try an external name lookup, taking note of the speed difference in repeated lookups due to the caching. Run the dig command twice on the same address:

dig www.linuxfromscratch.org &&
dig www.linuxfromscratch.org

You can see almost instantaneous results with the named caching lookups. Consult the BIND Administrator Reference Manual located at doc/arm/Bv9ARM.html in the package source tree, for further configuration options.

Contents

Installed Programs: dig, dnssec-keygen, dnssec-signzone, host, isc-config.sh, lwresd, named, named-checkconf, named-checkzone, nslookup, nsupdate, rndc, and rndc-confgen
Installed Libraries: libbind9.{so,a}, libdns.{so,a}, libisc.{so,a}, libisccc.{so,a}, libisccfg.{so,a}, and liblwres.{so,a}
Installed Directories: /srv/named, /usr/include/bind9, /usr/include/dns, /usr/include/dst, /usr/include/isc, /usr/include/isccc, /usr/include/isccfg, /usr/include/lwres, and /usr/share/doc/bind-9.3.3

Short Descriptions

dig

interrogates DNS servers.

dnssec-keygen

is a key generator for secure DNS.

dnssec-signzone

generates signed versions of zone files.

host

is a utility for DNS lookups.

lwresd

is a caching-only name server for local process use.

named

is the name server daemon.

named-checkconf

checks the syntax of named.conf files.

named-checkzone

checks zone file validity.

nslookup

is a program used to query Internet domain nameservers.

nsupdate

is used to submit DNS update requests.

rndc

controls the operation of BIND.

rndc-confgen

generates rndc.conf files.

NFS Utilities-1.0.10

Introduction to NFS Utilities

The NFS Utilities package contains the userspace server and client tools necessary to use the kernel's NFS abilities. NFS is a protocol that allows sharing file systems over the network.

Package information

NFS Utilities Dependencies

Required

portmap-5beta (Runtime dependency)

Optional for NFSv4 Support

pkg-config-0.20 and libevent and libnsfidmap

Optional for GSS (RPC Security) Support

pkg-config-0.20, and MIT Kerberos V5-1.6 or Heimdal-0.7.2 or libgssapi, and librpcsecgss; for additional SPKM-3 support, install SPKM-3

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/nfs-utils

Kernel Configuration

Enable the following options in the kernel configuration and recompile the kernel if necessary:

File systems:
  Network File Systems:
    NFS File System Support: M or Y
    NFS Server Support: M or Y

Select the appropriate sub-options that appear when the above options are selected.

Installation of NFS Utilities

Before you compile the program, ensure that the nobody user and nogroup group have been created. You can add them by running the following commands as the root user:

groupadd -g 99 nogroup &&
useradd -c "Unprivileged Nobody" -d /dev/null -g nogroup \
    -s /bin/false -u 99 nobody

Note

The classic uid and gid values are 65534 which is also -2 when interpreted as a signed 16-bit number. These values impact other files on some filesystems that do not have support for sparse files. The nobody and nogroup values are relatively arbitrary. The impact on a server is nil if the exports file is configured correctly. If it is misconfigured, an ls -l or ps listing will show a uid or gid number of 65534 instead of a name. The client uses nobody only as the user running rpc.statd.

Install NFS Utilities by running the following commands:

./configure --prefix=/usr \
            --sysconfdir=/etc \
            --disable-nfsv4 \
            --disable-gss &&
make

This package does not come with a test suite.

Now, as the root user:

Note

If your /usr directory is NFS mounted, you should install the executables in /sbin by passing an additional parameter --sbindir=/sbin to the above ./configure command.

make install

Command Explanations

--disable-nfsv4: Disables support for NFS version 4.

--disable-gss: Disables support for RPCSEC GSS (RPC Security).

--with-tcp-wrappers: Use this option to enable tcpwrappers support.

Configuring NFS Utilities

Server Configuration

/etc/exports contains the exported directories on NFS servers. Refer to the exports.5 manual page for the syntax of this file. Also refer to the "NFS HowTo" available at http://nfs.sourceforge.net/nfs-howto/ for information on how to configure the servers and clients in a secure manner. For example, for sharing the /home directory over the local network, the following line may be added:

/home <192.168.0.0/255.255.255.0>(rw,subtree_check,anonuid=99,anongid=99)
Boot Script

Install the /etc/rc.d/init.d/nfs-server init script included in the blfs-bootscripts-20060910 package to start the server at boot.

make install-nfs-server

Now create the /etc/sysconfig/nfs-server configuration file:

cat > /etc/sysconfig/nfs-server << "EOF"
PORT="2049"
PROCESSES="8"
QUOTAS="no"
KILLDELAY="10"
EOF
tcpwrappers Configuration

If you enabled support for tcpwrappers, ensure you have an entry in the /etc/hosts.allow file for access from the portmap daemon if you have a restrictive /etc/hosts.deny file.

Client Configuration

/etc/fstab contains the directories that are to be mounted on the client. Alternately the partitions can be mounted by using the mount command with the proper options. To mount the /home and /usr partitions, add the following to the /etc/fstab:

<server-name>:/home  /home nfs   rw,_netdev,rsize=8192,wsize=8192 0 0
<server-name>:/usr   /usr  nfs   ro,_netdev,rsize=8192            0 0
Boot Script

Install the /etc/rc.d/init.d/nfs-client init script included in the blfs-bootscripts-20060910 package to start the client services at boot.

make install-nfs-client

To automatically mount nfs filesystems, clients will also need to install the netfs bootscript as described in Configuring for Network Filesystems.

Contents

Installed Programs: exportfs, nfsstat, nhfsgraph, nhfsnums, nhfsrun, nhfsstone, rpc.lockd, rpc.mountd, rpc.nfsd, rpc.rquotad, rpc.statd, and showmount
Installed Libraries: None
Installed Directories: /var/lib/nfs

Short Descriptions

exportfs

maintains a list of NFS exported file systems.

nfsstat

prints NFS statistics.

nhfsgraph

runs nhfsstone over multiple loads.

nhfsnums

converts raw numbers from nhfsstone output into plot format.

nhfsrun

executes nhfsstone with a range of different loads.

nhfsstone

is used on a NFS client to generate an artificial load with a particular mix of NFS operations.

rpc.lockd

starts the NFS lock manager (NLM) on kernels that don't start it automatically. However, since most kernels do start it automatically it is usually not required.

rpc.mountd

implements the NFS mount protocol on an NFS server.

rpc.nfsd

implements the user level part of the NFS service on the server.

rpc.rquotad

is an rpc server which returns quotas for a user of a local file system which is mounted by a remote machine over the NFS.

rpc.statd

is used by the NFS file locking service, rpc.lockd, to implement lock recovery when the NFS server machine crashes and reboots. Runs on the NFS server only.

showmount

displays mount information for an NFS server.

OpenSSH-4.5p1

Introduction to OpenSSH

The OpenSSH package contains ssh clients and the sshd daemon. This is useful for encrypting authentication and subsequent traffic over a network.

Package Information

OpenSSH Dependencies

Required

OpenSSL-0.9.8d

Optional

Linux-PAM-0.99.4.0, TCP Wrapper-7.6, X Window System, MIT Kerberos V5-1.6 or Heimdal-0.7.2, JDK-1.5.0_10, Net-tools-1.60, Sysstat-6.0.2, OpenSC, and libsectok

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/OpenSSH

Installation of OpenSSH

OpenSSH runs as two processes when connecting to other computers. The first process is a privileged process and controls the issuance of privileges as necessary. The second process communicates with the network. Additional installation steps are necessary to set up the proper environment, which are performed by the following commands:

install -v -m700 -d /var/lib/sshd &&
chown -v root:sys /var/lib/sshd &&
groupadd -g 50 sshd &&
useradd -c 'sshd PrivSep' -d /var/lib/sshd -g sshd \
    -s /bin/false -u 50 sshd

OpenSSH is very sensitive to changes in the linked OpenSSL libraries. If you recompile OpenSSL, OpenSSH may fail to startup. An alternative is to link against the static OpenSSL library. To link against the static library, execute the following command:

sed -i "s:-lcrypto:/usr/lib/libcrypto.a -ldl:g" configure

Install OpenSSH by running the following commands:

sed -i "s/lkrb5 -ldes/lkrb5/" configure &&
./configure --prefix=/usr --sysconfdir=/etc/ssh \
    --libexecdir=/usr/lib/openssh --with-md5-passwords \
    --with-privsep-path=/var/lib/sshd &&
make

If you linked tcp_wrappers into the build using the --with-tcp-wrappers parameter, ensure you add 127.0.0.1 to the sshd line in /etc/hosts.allow if you have a restrictive /etc/hosts.deny file, or the test suite will fail. To run the test suite, issue: make -k tests.

Now, as the root user:

make install &&
install -v -m755 -d /usr/share/doc/openssh-4.5p1 &&
install -v -m644 INSTALL LICENCE OVERVIEW README* WARNING.RNG \
    /usr/share/doc/openssh-4.5p1

Command Explanations

sed -i "s/lkrb5 -ldes/lkrb5/" configure: This command fixes a build crash if you used the --with-kerberos5 parameter and you built the Heimdal package in accordance with the BLFS instructions. The command is harmless in all other instances.

--sysconfdir=/etc/ssh: This prevents the configuration files from being installed in /usr/etc.

--with-md5-passwords: This is required if you made the changes recommended by the shadowpasswd_plus LFS hint on your SSH server when you installed the Shadow Password Suite or if you access a SSH server that authenticates by user passwords encrypted with md5.

--libexecdir=/usr/lib/openssh: This parameter changes the installation path of some programs to /usr/lib/openssh instead of /usr/libexec.

Configuring OpenSSH

Config Files

~/.ssh/*, /etc/ssh/ssh_config, and /etc/ssh/sshd_config

There are no required changes to any of these files. However, you may wish to view the /etc/ssh/ files and make any changes appropriate for the security of your system. One recommended change is that you disable root login via ssh. Execute the following command as the root user to disable root login via ssh:

echo "PermitRootLogin no" >> /etc/ssh/sshd_config

Additional configuration information can be found in the man pages for sshd, ssh and ssh-agent.

Boot Script

To start the SSH server at system boot, install the /etc/rc.d/init.d/sshd init script included in the blfs-bootscripts-20060910 package.

make install-sshd

Contents

Installed Programs: scp, sftp, sftp-server, slogin, ssh, sshd, ssh-add, ssh-agent, ssh-keygen, ssh-keyscan, and ssh-keysign
Installed Libraries: None
Installed Directories: /etc/ssh, /var/lib/sshd and /usr/share/doc/openssh-4.5p1

Short Descriptions

scp

is a file copy program that acts like rcp except it uses an encrypted protocol.

sftp

is an FTP-like program that works over SSH1 and SSH2 protocols.

sftp-server

is an SFTP server subsystem. This program is not normally called directly by the user.

slogin

is a symlink to ssh.

ssh

is an rlogin/rsh-like client program except it uses an encrypted protocol.

sshd

is a daemon that listens for ssh login requests.

ssh-add

is a tool which adds keys to the ssh-agent.

ssh-agent

is an authentication agent that can store private keys.

ssh-keygen

is a key generation tool.

ssh-keyscan

is a utility for gathering public host keys from a number of hosts.

ssh-keysign

is used by ssh to access the local host keys and generate the digital signature required during hostbased authentication with SSH protocol version 2. This program is not normally called directly by the user.

ProFTPD-1.3.0

Introduction to ProFTPD

The ProFTPD package contains a secure and highly configurable FTP daemon. This is useful for serving large file archives over a network.

Package Information

ProFTPD Dependencies

Optional

Linux-PAM-0.99.4.0

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/proftpd

Installation of ProFTPD

For security reasons, you should install ProFTPD using an unprivileged user and group. As the root user:

groupadd -g 46 proftpd &&
useradd -c proftpd -d /srv/ftp -g proftpd \
        -s /usr/bin/proftpdshell -u 46 proftpd &&
install -v -d -m775 -o proftpd -g proftpd /srv/ftp &&
ln -v -s /bin/false /usr/bin/proftpdshell &&
echo /usr/bin/proftpdshell >> /etc/shells

Install ProFTPD as an unprivileged user by running the following commands:

./configure --prefix=/usr --sysconfdir=/etc \
    --localstatedir=/var/run &&
make

Now, as the root user:

make install

Command Explanations

install -v -d -m775 -o proftpd -g proftpd /srv/ftp: Create the home directory for ProFTPD.

ln -v -s /bin/false /usr/bin/proftpdshell: Set the default shell as a link to an invalid shell.

echo /usr/bin/proftpdshell >> /etc/shells: Fake a valid shell for compatibility purposes.

Note

The above two commands can be omitted if the following directive is placed in the configuration file:

RequireValidShell off

By default, proftpd will require that users logging in have valid shells. The RequireValidShell directive turns off this requirement. This is only recommended if you are setting up your FTP server exclusively for anonymous downloads.

--sysconfdir=/etc: This prevents the configuration files from going to /usr/etc.

--localstatedir=/var/run: This uses /var/run instead of /usr/var for lock files.

Configuring ProFTPD

Config Files

/etc/proftpd.conf

Configuration Information

This is a simple, download-only sample configuration. See the ProFTPD documentation in /usr/share/doc/proftpd and consult the website at http://www.proftpd.org/ for example configurations.

cat > /etc/proftpd.conf << "EOF"
# This is a basic ProFTPD configuration file
# It establishes a single server and a single anonymous login.

ServerName                      "ProFTPD Default Installation"
ServerType                      standalone
DefaultServer                   on

# Port 21 is the standard FTP port.
Port                            21
# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
Umask                           022

# To prevent DoS attacks, set the maximum number of child processes
# to 30.  If you need to allow more than 30 concurrent connections
# at once, simply increase this value.  Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd)
MaxInstances                    30

# Set the user and group that the server normally runs at.
User                            proftpd
Group                           proftpd

# Normally, files should be overwritable.
<Directory /*>
  AllowOverwrite                on
</Directory>

# A basic anonymous configuration, no upload directories.
<Anonymous ~proftpd>
  User                          proftpd
  Group                         proftpd
  # Clients should be able to login with "anonymous" as well as "proftpd"
  UserAlias                     anonymous proftpd

  # Limit the maximum number of anonymous logins
  MaxClients                    10

  # 'welcome.msg' should be displayed at login, and '.message' displayed
  # in each newly chdired directory.
  DisplayLogin                  welcome.msg
  DisplayFirstChdir             .message

  # Limit WRITE everywhere in the anonymous chroot
  <Limit WRITE>
    DenyAll
  </Limit>
</Anonymous>
EOF

Boot Script

Install the /etc/rc.d/init.d/proftpd init script included in the blfs-bootscripts-20060910 package.

make install-proftpd

Contents

Installed Programs: ftpcount, ftpdctl, ftptop, ftpwho, ftpshut, proftpd
Installed Libraries: None
Installed Directory: /var/run/proftpd

Short Descriptions

proftpd

is the FTP daemon.

ftpcount

shows the current number of connections.

ftpshut

shuts down all proftpd servers at a given time.

ftptop

displays running status on connections.

ftpwho

shows current process information for each session.

Samba-3.0.23d

Introduction to Samba

The Samba package provides file and print services to SMB/CIFS clients and Windows networking to Linux clients. Samba can also be configured as a Windows NT 4.0 Domain Controller replacement (with caveats working with NT PDC's and BDC's), a file/print server acting as a member of a Windows NT 4.0 or Active Directory domain and a NetBIOS (rfc1001/1002) nameserver (which amongst other things provides LAN browsing support).

Package Information

Samba Dependencies

Optional

popt-1.10.4, Linux-PAM-0.99.4.0, CUPS-1.2.7, OpenLDAP-2.3.27, Gamin-0.1.7, Heimdal-0.7.2 or MIT Kerberos V5-1.6, Python-2.4.4 (to build Samba API bindings for the Python installation), libacl (requires libattr), and Valgrind (optionally used by the test suite)

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/samba3

Installation of Samba

Install Samba by running the following commands:

Note

If you wish to run the test suite after the binaries are built, you must add the --enable-socket-wrapper parameter to the configure script below. You may want to run configure with the --help parameter first. There may be other parameters needed to take advantage of optional dependencies.

cd source &&
./configure \
    --prefix=/usr \
    --sysconfdir=/etc \
    --localstatedir=/var \
    --with-piddir=/var/run \
    --with-fhs \
    --with-smbmount &&
make

You must become the root user to run the test framework. To run the tests, issue: make test. If you have Linux-PAM installed and built the PAM library modules, you can perform a dlopen test by issuing: make test_pam_modules.

Now, as the root user:

make install &&
mv -v /usr/lib/samba/libsmbclient.so /usr/lib &&
ln -v -sf ../libsmbclient.so /usr/lib/samba &&
ln -v -sf libsmbclient.so /usr/lib/libsmbclient.so.0 &&

chmod -v 644 /usr/include/lib{smbclient,msrpc}.h &&

install -v -m755 nsswitch/libnss_win{s,bind}.so /lib &&
ln -v -sf libnss_winbind.so /lib/libnss_winbind.so.2 &&
ln -v -sf libnss_wins.so /lib/libnss_wins.so.2 &&

install -v -m644 ../examples/smb.conf.default /etc/samba &&

install -v -m755 -d /usr/share/doc/samba-3.0.23d &&
install -v -m644 ../docs/*.pdf /usr/share/doc/samba-3.0.23d &&
ln -v -s ../../samba/swat  /usr/share/doc/samba-3.0.23d

If you passed the --with-python option to the configure script, issue the following command as the root user to install the Python extensions:

make python_install

Command Explanations

--sysconfdir=/etc: Sets the configuration file directory to avoid the default of /usr/etc.

--localstatedir=/var: Sets the variable data directory to avoid the default of /usr/var.

--with-fhs: Assigns all other file paths in a manner compliant with the Filesystem Hierarchy Standard (FHS).

--with-smbmount: Orders the creation of an extra binary for use by the mount command so that mounting remote SMB (Windows) shares becomes no more complex than mounting remote NFS shares.

--with-pam: Use this parameter to link Linux-PAM into the build. This also builds the pam_winbind.so and pam_smbpass.so PAM modules. You can find instructions on how to configure and use the pam_winbind.somodule by running man winbindd.

mv -v /usr/lib/samba/libsmbclient.so ...; ln -v -sf ../libsmbclient.so ...: The libsmbclient.so library is needed by other packages. This command moves it to a location where other packages can find it.

install -v -m755 nsswitch/libnss_win{s,bind}.so /lib: The nss libraries are not installed by default. If you intend to use winbindd for domain auth, and/or WINS name resolution, you need these libraries.

ln -v -sf libnss_winbind.so /lib/libnss_winbind.so.2 and ln -v -sf libnss_wins.so /lib/libnss_wins.so.2: These symlinks are required by glibc to use the NSS libraries.

install -v -m644 ../examples/smb.conf.default /etc/samba: This copies a default smb.conf file into /etc/samba. This sample configuration will not work until you copy it to /etc/samba/smb.conf and make the appropriate changes for your installation. See the configuration section for minimum values which must be set.

Configuring Samba

Config Files

/etc/samba/smb.conf

Mounting Shares by Unprivileged Users

If it is desired for unprivileged users to directly mount (and unmount) SMB and CIFS shares, the smbmnt, smbumount, mount.cifs and umount.cifs commands must be setuid root. Note that users can only mount SMB/CIFS shares on a mount point owned by that user (requires write access also). If desired, change these programs to setuid root by issuing the following command as the root user:

chmod -v 4755 /usr/bin/smb{mnt,umount}
              /usr/sbin/{,u}mount.cifs

Printing to SMB Clients

If you use CUPS for print services, and you wish to print to a printer attached to an SMB client, you need to create an SMB backend device. To create the device, issue the following command as the root user:

ln -v -sf /usr/bin/smbspool /usr/lib/cups/backend/smb

Configuration Information

Due to the complexity and the many various uses for Samba, complete configuration for all the package's capabilities is well beyond the scope of the BLFS book. This section provides instructions to configure the /etc/samba/smb.conf file for two common scenarios. The complete contents of /etc/samba/smb.conf will depend on the purpose of Samba installation.

Note

You may find it easier to copy the configuration parameters shown below into an empty /etc/samba/smb.conf file instead of copying and editing the default file as mentioned in the “Command Explanations” section. How you create/edit the /etc/samba/smb.conf file will be left up to you. Do ensure the file is only writeable by the root user (mode 644).

Scenario 1: Minimal Standalone Client-Only Installation

Choose this variant if you only want to transfer files using smbclient, mount Windows shares and print to Windows printers, and don't want to share your files and printers to Windows machines.

A /etc/samba/smb.conf file with the following three parameters is sufficient:

[global]
    workgroup = MYGROUP
    dos charset = cp850
    unix charset = ISO-8859-1

The values in this example specify that the computer belongs to a Windows workgroup named “MYGROUP”, uses the “cp850” character set on the wire when talking to MS-DOS and MS Windows 9x, and that the filenames are stored in the “ISO-8859-1” encoding on the disk. Adjust these values appropriately for your installation. The “unix charset” value must be the same as the output of locale charmap when executed with the LANG variable set to your preferred locale, otherwise the ls command may not display correct filenames of downloaded files.

There is no need to run any Samba servers in this scenario, thus you don't need to install the provided bootscripts.

Scenario 2: Standalone File/Print Server

Choose this variant if you want to share your files and printers to Windows machines in your workgroup in addition to the capabilities described in Scenario 1.

In this case, the /etc/samba/smb.conf.default file may be a good template to start from. Also add “dos charset” and “unix charset” parameters to the “[global]” section as described in Scenario 1 in order to prevent filename corruption.

The following configuration file creates a separate share for each user's home directory and also makes all printers available to Windows machines:

[global]
    workgroup = MYGROUP
    dos charset = cp850
    unix charset = ISO-8859-1

[homes]
    comment = Home Directories
    browseable = no
    writable = yes

[printers]
    comment = All Printers
    path = /var/spool/samba
    browseable = no
    guest ok = no
    printable = yes

Other parameters you may wish to customize in the “[global]” section include:

    server string =
    security =
    hosts allow =
    load printers =
    log file =
    max log size =
    socket options =
    local master =

Reference the comments in the /etc/samba/smb.conf.default file for information regarding these parameters.

Since the smbd and nmbd daemons are needed in this case, install the samba bootscript. Be sure to run smbpasswd (with the -a option to add users) to enable and set passwords for all accounts that need Samba access, or use the SWAT web interface (see below) to do the same. Using the default Samba passdb backend, any user you attempt to add will also be required to exist in the /etc/passwd file.

Advanced Requirements

More complex scenarios involving domain control or membership are possible if the right flags are passed to the ./configure script when the package is built. Such setups are advanced topics and cannot be adequately covered in BLFS. Many complete books have been written on these topics alone. It should be noted, however, that a Samba BDC cannot be used as a fallback for a Windows PDC, and conversely, a Windows BDC cannot be used as a fallback for a Samba PDC. Also in some domain membership scenarios, the winbindd daemon and the corresponding bootscript are needed.

There is quite a bit of documentation available which covers many of these advanced configurations. Point your web browser to the links below to view some of the documentation included with the Samba package:

Configuring SWAT

The built in SWAT (Samba Web Administration Tool) utility can be used for basic configuration of the Samba installation, but because it may be inconvenient, undesirable or perhaps even impossible to gain access to the console, BLFS recommends setting up access to SWAT using Stunnel. Without Stunnel, the root password is transmitted in clear text over the wire, and is considered an unacceptable security risk. After considering the security implications of using SWAT without Stunnel, and you still wish to implement SWAT without it, instructions are provided at this end of this section.

Setting up SWAT using Stunnel

First install, or ensure you have already installed, the Stunnel-4.15 package.

Next you must add entries to /etc/services and modify the inetd/xinetd configuration.

Add swat and swat_tunnel entries to /etc/services with the following commands issued as the root user:

echo "swat            904/tcp" >> /etc/services &&
echo "swat_tunnel     905/tcp" >> /etc/services

If inetd is used, the following command will add the swat_tunnel entry to /etc/inetd.conf (as user root):

echo "swat_tunnel stream tcp nowait.400 root /usr/sbin/swat swat" \
    >> /etc/inetd.conf

Issue a killall -HUP inetd to reread the changed inetd.conf file.

If you use xinetd, the following command will create the Samba file as /etc/xinetd.d/swat_tunnel (you may need to modify or remove the “only_from” line to include the desired host[s]):

cat >> /etc/xinetd.d/swat_tunnel << "EOF"
# Begin /etc/xinetd.d/swat_tunnel

service swat_tunnel
{
    port            = 905
    socket_type     = stream
    wait            = no
    only_from       = 127.0.0.1
    user            = root
    server          = /usr/sbin/swat
    log_on_failure  += USERID
}

# End /etc/xinetd.d/swat_tunnel
EOF

Issue a killall -HUP xinetd to read the new /etc/xinetd.d/swat_tunnel file.

Next, you must add an entry for the swat service to the /etc/stunnel/stunnel.conf file (as user root):

cat >> /etc/stunnel/stunnel.conf << "EOF"
[swat]
accept  = 904
connect = 905
TIMEOUTclose = 1

EOF

Restart the stunnel daemon using the following command as the root user:

/etc/rc.d/init.d/stunnel restart

SWAT can be launched by pointing your web browser to https://<CA_DN_field>:904. Substitute the hostname listed in the DN field of the CA certificate used with Stunnel for <CA_DN_field>.

Setting up SWAT without Stunnel

Warning

BLFS does not recommend using these procedures because of the security risk involved. However, in a home network environment and disclosure of the root password is an acceptable risk, the following instructions are provided for your convenience.

Add a swat entry to /etc/services with the following command issued as the root user:

echo "swat            904/tcp" >> /etc/services

If inetd is used, the following command issued as the root user will add a swat entry to the /etc/inetd.conf file:

echo "swat stream tcp nowait.400 root /usr/sbin/swat swat" \
    >> /etc/inetd.conf

Issue a killall -HUP inetd to reread the changed inetd.conf file.

If xinetd is used, the following command issued as the root user will create an /etc/xinetd.d/swat file:

cat >> /etc/xinetd.d/swat << "EOF"
# Begin /etc/xinetd.d/swat

service swat
{
    port            = 904
    socket_type     = stream
    wait            = no
    only_from       = 127.0.0.1
    user            = root
    server          = /usr/sbin/swat
    log_on_failure  += USERID
}

# End /etc/xinetd.d/swat
EOF

Issue a killall -HUP xinetd to read the new /etc/xinetd.d/swat file.

SWAT can be launched by pointing your web browser to http://localhost:904.

Note

If you linked Linux-PAM into the Samba build, you'll need to create an /etc/pam.d/samba file.

Boot Script

For your convenience, boot scripts have been provided for Samba. There are two included in the blfs-bootscripts-20060910 package. The first, samba, will start the smbd and nmbd daemons needed to provide SMB/CIFS services. The second script, winbind, starts the winbindd daemon, used for providing Windows domain services to Linux clients.

The default Samba installation uses the nobody user for guest access to the server. This can be overridden by setting the guest account = parameter in the /etc/samba/smb.conf file. If you utilize the guest account = parameter, ensure this user exists in the /etc/passwd file. To use the default user, issue the following commands as the root user:

groupadd -g 99 nogroup &&
useradd -c "Unprivileged Nobody" -d /dev/null -g nogroup \
    -s /bin/false -u 99 nobody

Install the samba script with the following command issued as the root user:

make install-samba

If you also need the winbind script:

make install-winbind

Contents

Installed Programs: eventlogadm, findsmb, mount.cifs, mount.smbfs, net, nmbd, nmblookup, ntlm_auth, pdbedit, profiles, rpcclient, smbcacls, smbclient, smbcontrol, smbcquotas, smbd, smbget, smbmnt, smbmount, smbpasswd, smbspool, smbstatus, smbtar, smbtree, smbumount, swat, tdbbackup, tdbdump, tdbtool, testparm, unmount.cifs, wbinfo and winbindd
Installed Libraries: libnss_winbind.so, libnss_wins.so, libsmbclient.so, libmsrpc.so, the pam_winbind.so and pam_smbpass.so PAM libraries, and assorted character set, filesystem and support modules.
Installed Directories: /etc/samba, /usr/lib/python2.4/site-packages/samba, /usr/lib/samba, /usr/share/doc/samba-3.0.23d, /usr/share/samba, /var/lib/samba and /var/log/samba

Short Descriptions

eventlogadm

is used to write records to eventlogs from STDIN, add the specified source and DLL eventlog registry entries and display the active eventlog names (from smb.conf).

findsmb

lists information about machines that respond to SMB name queries on a subnet.

mount.cifs

mounts a Linux CIFS filesystem. It is usually invoked indirectly by the mount command when using the -t cifs option.

mount.smbfs

is a symlink to smbmount which provides /bin/mount with a way to mount remote Windows (or Samba) fileshares.

net

is a tool for administration of Samba and remote CIFS servers, similar to the net utility for DOS/Windows.

nmbd

is the Samba NetBIOS name server.

nmblookup

is used to query NetBIOS names and map them to IP addresses.

ntlm_auth

is a tool to allow external access to Winbind's NTLM authentication function.

pdbedit

is a tool used to manage the SAM database.

profiles

is a utility that reports and changes SIDs in Windows registry files. It currently only supports Windows NT.

rpcclient

is used to execute MS-RPC client side functions.

smbcacls

is used to manipulate Windows NT access control lists.

smbclient

is a SMB/CIFS access utility, similar to FTP.

smbcontrol

is used to control running smbd, nmbd and winbindd daemons.

smbcquotas

is used to manipulate Windows NT quotas on SMB file shares.

smbd

is the main Samba daemon which provides SMB/CIFS services to clients.

smbget

is a simple utility with wget-like semantics, that can download files from SMB servers. You can specify the files you would like to download on the command-line.

smbmnt

is a helper application used by the smbmount program to do the actual mounting of SMB shares. It can be installed setuid root if you want unprivileged users to be able to mount their SMB shares.

smbmount

is usually invoked as mount.smbfs by the mount command when using the -t smbfs option, mounts a Linux SMB filesystem.

smbpasswd

changes a user's Samba password.

smbspool

sends a print job to an SMB printer.

smbstatus

reports current Samba connections.

smbtar

is a shell script used for backing up SMB/CIFS shares directly to Linux tape drives or a file.

smbtree

is a text-based SMB network browser.

smbumount

is used by unprivileged users to unmount SMB filesystems, provided that it is setuid root.

swat

is the Samba Web Administration Tool.

tdbbackup

is a tool for backing up or validating the integrity of Samba .tdb files.

tdbdump

is a tool used to print the contents of a Samba .tdb file.

tdbtool

is a tool which allows simple database manipulation from the command line.

testparm

checks an smb.conf file for proper syntax.

umount.cifs

is used by normal, non-root users, to unmount their own Common Internet File System (CIFS) mounts.

wbinfo

queries a running winbindd daemon.

winbindd

resolves names from Windows NT servers.

vsftpd-2.0.5

Introduction to vsftpd

The vsftpd package contains a very secure and very small FTP daemon. This is useful for serving files over a network.

Package Information

vsftpd Dependencies

Optional

Linux-PAM-0.99.4.0, OpenSSL-0.9.8d, TCP Wrapper-7.6, and libcap

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/vsftpd

Installation of vsftpd

For security reasons, running vsftpd as an unprivileged user and group is encouraged. Also, a user should be created to map anonymous users. As the root user, create the needed directories, users, and groups with the following commands:

install -v -d -m 0755 /var/ftp/empty &&
install -v -d -m 0755 /home/ftp &&
groupadd -g 47 vsftpd &&
useradd -d /dev/null -c "vsftpd User" -g vsftpd -s /bin/false \
        -u 47 vsftpd &&
groupadd -g 45 ftp &&
useradd -c anonymous_user -d /home/ftp -g ftp -s /bin/false -u 45 ftp

Build vsftpd as an unprivileged user using the following command:

make

This package does not come with a test suite.

Once again, become the root user and install vsftpd with the following commands:

install -v -m 755 vsftpd /usr/sbin/vsftpd &&
install -v -m 644 vsftpd.8 /usr/share/man/man8 &&
install -v -m 644 vsftpd.conf.5 /usr/share/man/man5 &&
install -v -m 644 vsftpd.conf /etc

Command Explanations

install -v -d ...: This creates the directory that anonymous users will use (/home/ftp) and the directory the daemon will chroot into (/var/ftp/empty).

Note

/home/ftp should not be owned by the user vsftpd, or the user ftp.

echo "#define VSF_BUILD_TCPWRAPPERS" >>builddefs.h: Use this prior to make to add support for tcpwrappers.

echo "#define VSF_BUILD_SSL" >>builddefs.h: Use this prior to make to add support for SSL.

install -v -m ...: The Makefile uses non-standard installation paths. These commands install the files in /usr and /etc.

Configuring vsftpd

Config Files

/etc/vsftpd.conf

Configuration Information

vsftpd comes with a basic anonymous-only configuration file that was copied to /etc above. While still as root, this file should be modified because it is now recommended to run vsftpd in standalone mode as opposed to inetd/xinetd mode. Also, you should specify the privilege separation user created above. Finally, you should specify the chroot directory. man vsftpd.conf will give you all the details.

cat >> /etc/vsftpd.conf << "EOF"
background=YES
listen=YES
nopriv_user=vsftpd
secure_chroot_dir=/var/ftp/empty
EOF

Boot Script

Install the /etc/rc.d/init.d/vsftpd init script included in the blfs-bootscripts-20060910 package.

make install-vsftpd

Contents

Installed Program: vsftpd
Installed Libraries: None
Installed Directories: /var/ftp, /var/ftp/empty, /home/ftp

Short Descriptions

vsftpd

is the FTP daemon.

xinetd-2.3.14

Introduction to xinetd

xinetd is the eXtended InterNET services daemon, a secure replacement for inetd.

Package Information

xinetd Dependencies

Optional

TCP Wrapper-7.6 and Avahi

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/xinetd

Installation of xinetd

Install xinetd by running the following commands:

./configure --prefix=/usr --with-loadavg &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Configuring xinetd

Config Files

/etc/xinetd.conf and /etc/xinetd.d/*

Configuration Information

Ensure the path to all daemons is /usr/sbin, rather than the default path of /usr/etc, and install the xinetd configuration files by running the following commands as the root user:

cat > /etc/xinetd.conf << "EOF"
# Begin /etc/xinetd
# Configuration file for xinetd
#

defaults
{
      instances       = 60
      log_type        = SYSLOG daemon
      log_on_success  = HOST PID USERID
      log_on_failure  = HOST USERID
      cps             = 25 30
}

# All service files are stored in the /etc/xinetd.d directory
#
includedir /etc/xinetd.d
# End /etc/xinetd
EOF

All of the following files have the statement, "disable = yes". To activate any of the services, this statement will need to be changed to "disable = no".

Note

The following files are listed to demonstrate classic xinetd applications. In many cases, these applications are not needed. In some cases, the applications are considered security risks. For example, telnet, rlogin, rexec, and rsh transmit unencrypted usernames and passwords over the network and can be easily replaced with a more secure alternative: ssh.

install -v -d -m755 /etc/xinetd.d &&
cat > /etc/xinetd.d/login << "EOF" &&
# Begin /etc/xinetd.d/login

service login
{
   disable        = yes
   socket_type    = stream
   protocol       = tcp
   wait           = no
   user           = root
   server         = /usr/sbin/in.rlogind
   log_type       = SYSLOG local4 info
}

# End /etc/xinetd.d/login
EOF
cat > /etc/xinetd.d/shell << "EOF" &&
# Begin /etc/xinetd.d/shell

service shell
{
   disable        = yes
   socket_type    = stream
   wait           = no
   user           = root
   instances      = UNLIMITED
   flags          = IDONLY
   log_on_success += USERID
   server         = /usr/sbin/in.rshd
}

# End /etc/xinetd.d/shell
EOF
cat > /etc/xinetd.d/exec << "EOF" &&
# Begin /etc/xinetd.d/exec

service exec
{
   disable        = yes
   socket_type    = stream
   wait           = no
   user           = root
   server         = /usr/sbin/in.rexecd
}

# End /etc/xinetd.d/exec
EOF
cat > /etc/xinetd.d/comsat << "EOF" &&
# Begin /etc/xinetd.d/comsat

service comsat
{
   disable        = yes
   socket_type    = dgram
   wait           = yes
   user           = nobody
   group          = tty
   server         = /usr/sbin/in.comsat
}

# End /etc/xinetd.d/comsat
EOF
cat > /etc/xinetd.d/talk << "EOF" &&
# Begin /etc/xinetd.d/talk

service talk
{
   disable        = yes
   socket_type    = dgram
   wait           = yes
   user           = root
   server         = /usr/sbin/in.talkd
}

# End /etc/xinetd.d/talk
EOF
cat > /etc/xinetd.d/ntalk << "EOF" &&
# Begin /etc/xinetd.d/ntalk

service ntalk
{
   disable        = yes
   socket_type    = dgram
   wait           = yes
   user           = root
   server         = /usr/sbin/in.ntalkd
}

# End /etc/xinetd.d/ntalk
EOF
cat > /etc/xinetd.d/telnet << "EOF" &&
# Begin /etc/xinetd.d/telnet

service telnet
{
   disable        = yes
   socket_type    = stream
   wait           = no
   user           = root
   server         = /usr/sbin/in.telnetd
   bind           = 127.0.0.1
   log_on_failure += USERID
}

service telnet
{
   disable        = yes
   socket_type    = stream
   wait           = no
   user           = root
#  server         = /usr/sbin/in.telnetd
   bind           = 192.231.139.175
   redirect       = 128.138.202.20 23
   log_on_failure += USERID
}

# End /etc/xinetd.d/telnet
EOF
cat > /etc/xinetd.d/ftp << "EOF" &&
# Begin /etc/xinetd.d/ftp

service ftp
{
   disable        = yes
   socket_type    = stream
   wait           = no
   user           = root
   server         = /usr/sbin/in.ftpd
   server_args    = -l
   instances      = 4
   log_on_success += DURATION USERID
   log_on_failure += USERID
   access_times   = 2:00-8:59 12:00-23:59
   nice           = 10
}

# End /etc/xinetd.d/ftp
EOF
cat > /etc/xinetd.d/tftp << "EOF" &&
# Begin /etc/xinetd.d/tftp

service tftp
{
   disable        = yes
   socket_type    = dgram
   wait           = yes
   user           = root
   server         = /usr/sbin/in.tftpd
   server_args    = -s /tftpboot
}

# End /etc/xinetd.d/tftp
EOF
cat > /etc/xinetd.d/finger << "EOF" &&
# Begin /etc/xinetd.d/finger

service finger
{
   disable        = yes
   socket_type    = stream
   wait           = no
   user           = nobody
   server         = /usr/sbin/in.fingerd
}

# End /etc/xinetd.d/finger
EOF
cat > /etc/xinetd.d/systat << "EOF" &&
# Begin /etc/xinetd.d/systat

service systat
{
   disable           = yes
   socket_type       = stream
   wait              = no
   user              = nobody
   server            = /usr/bin/ps
   server_args       = -auwwx
   only_from         = 128.138.209.0
   log_on_success    = HOST
}

# End /etc/xinetd.d/systat
EOF
cat > /etc/xinetd.d/netstat << "EOF" &&
# Begin /etc/xinetd.d/netstat

service netstat
{
   disable           = yes
   socket_type       = stream
   wait              = no
   user              = nobody
   server            = /usr/ucb/netstat
   server_args       = -f inet
   only_from         = 128.138.209.0
   log_on_success    = HOST
}

# End /etc/xinetd.d/netstat
EOF
cat > /etc/xinetd.d/echo << "EOF" &&
# Begin /etc/xinetd.d/echo

service echo
{
   disable     = yes
   type        = INTERNAL
   id          = echo-stream
   socket_type = stream
   protocol    = tcp
   user        = root
   wait        = no
}

service echo
{
   disable     = yes
   type        = INTERNAL
   id          = echo-dgram
   socket_type = dgram
   protocol    = udp
   user        = root
   wait        = yes
}

# End /etc/xinetd.d/echo
EOF
cat > /etc/xinetd.d/chargen << "EOF" &&
# Begin /etc/xinetd.d/chargen

service chargen
{
   disable        = yes
   type           = INTERNAL
   id             = chargen-stream
   socket_type    = stream
   protocol       = tcp
   user           = root
   wait           = no
}

service chargen
{
   disable        = yes
   type           = INTERNAL
   id             = chargen-dgram
   socket_type    = dgram
   protocol       = udp
   user           = root
   wait           = yes
}

# End /etc/xinetd.d/chargen
EOF
cat > /etc/xinetd.d/daytime << "EOF" &&
# Begin /etc/xinetd.d/daytime

service daytime
{
   disable        = yes
   type           = INTERNAL
   id             = daytime-stream
   socket_type    = stream
   protocol       = tcp
   user           = root
   wait           = no
}

service daytime
{
   disable        = yes
   type           = INTERNAL
   id             = daytime-dgram
   socket_type    = dgram
   protocol       = udp
   user           = root
   wait           = yes
}

# End /etc/xinetd.d/daytime
EOF
cat > /etc/xinetd.d/time << "EOF" &&
# Begin /etc/xinetd.d/time

service time
{
   disable        = yes
   type           = INTERNAL
   id             = time-stream
   socket_type    = stream
   protocol       = tcp
   user           = root
   wait           = no
}


service time
{
   disable        = yes
   type           = INTERNAL
   id             = time-dgram
   socket_type    = dgram
   protocol       = udp
   user           = root
   wait           = yes
}

# End /etc/xinetd.d/time
EOF
cat > /etc/xinetd.d/rstatd << "EOF" &&
# Begin /etc/xinetd.d/rstatd

service rstatd
{
   disable     = yes
   type        = RPC
   flags       = INTERCEPT
   rpc_version = 2-4
   socket_type = dgram
   protocol    = udp
   server      = /usr/sbin/rpc.rstatd
   wait        = yes
   user        = root
}

# End /etc/xinetd.d/rstatd
EOF
cat > /etc/xinetd.d/rquotad << "EOF" &&
# Begin /etc/xinetd.d/rquotad

service rquotad
{
   disable     = yes
   type        = RPC
   rpc_version = 1
   socket_type = dgram
   protocol    = udp
   wait        = yes
   user        = root
   server      = /usr/sbin/rpc.rstatd
}

# End /etc/xinetd.d/rquotad
EOF
cat > /etc/xinetd.d/rusersd << "EOF" &&
# Begin /etc/xinetd.d/rusersd

service rusersd
{
   disable     = yes
   type        = RPC
   rpc_version = 1-2
   socket_type = dgram
   protocol    = udp
   wait        = yes
   user        = root
   server      = /usr/sbin/rpc.rusersd
}

# End /etc/xinetd.d/rusersd
EOF
cat > /etc/xinetd.d/sprayd << "EOF" &&
# Begin /etc/xinetd.d/sprayd

service sprayd
{
   disable      = yes
   type         = RPC
   rpc_version  = 1
   socket_type  = dgram
   protocol     = udp
   wait         = yes
   user         = root
   server       = /usr/sbin/rpc.sprayd
}

# End /etc/xinetd.d/sprayd
EOF
cat > /etc/xinetd.d/walld << "EOF" &&
# Begin /etc/xinetd.d/walld

service walld
{
   disable      = yes
   type         = RPC
   rpc_version  = 1
   socket_type  = dgram
   protocol     = udp
   wait         = yes
   user         = nobody
   group        = tty
   server       = /usr/sbin/rpc.rwalld
}

# End /etc/xinetd.d/walld
EOF
cat > /etc/xinetd.d/irc << "EOF"
# Begin /etc/xinetd.d/irc

service irc
{
   disable      = yes
   socket_type  = stream
   wait         = no
   user         = root
   flags        = SENSOR
   type         = INTERNAL
   bind         = 192.168.1.30
   deny_time    = 60
}

# End /etc/xinetd.d/irc
EOF

The format of the /etc/xinetd.conf is documented in the xinetd.conf.5 man page. Further information can be found at http://www.xinetd.org.

Boot Script

As the root user, install the /etc/rc.d/init.d/xinetd init script included in the blfs-bootscripts-20060910 package.

make install-xinetd

As the root user, use the new boot script to start xinetd:

/etc/rc.d/init.d/xinetd start

Checking the /var/log/daemon.log file should prove quite entertaining. This file may contain entries similar to the following:

Aug 22 21:40:21 dps10 xinetd[2696]: Server /usr/sbin/in.rlogind is not
executable [line=29]
Aug 22 21:40:21 dps10 xinetd[2696]: Error parsing attribute server -
DISABLING SERVICE [line=29]
Aug 22 21:40:21 dps10 xinetd[2696]: Server /usr/sbin/in.rshd is not
executable [line=42]

These errors are because most of the servers xinetd is trying to control are not installed yet.

Contents

Installed Programs: itox, xconv.pl, and xinetd
Installed Libraries: None
Installed Directories: /etc/xinetd.d/

Short Descriptions

itox

is a utility used for converting inetd.conf files to xinetd.conf format.

xconv.pl

is a Perl script used for converting inetd.conf files to xinetd.conf format, similar to itox.

xinetd

is the Internet services daemon.

Chapter 22. Mail Server Software

MTAs are the programs which transport mail from one machine to the other. The traditional MTA is Sendmail, however there are several other choices.

As well as SMTP servers there is a POP server (qpopper) and an IMAP server (Courier-IMAP).

Exim-4.61

Introduction to Exim

The Exim package contains a Mail Transport Agent written by the University of Cambridge, released under the GNU Public License.

Package Information

Additional Downloads

  • Additional formats of the documentation (text-based docs are shipped with the sources) can be downloaded by following the links shown at http://exim.org/docs.html.

Exim Dependencies

Required

Berkeley DB-4.4.20 (built in LFS) or GDBM-1.8.3 or TDB

Optional

X Window System, OpenLDAP-2.3.27, OpenSSL-0.9.8d or GnuTLS, Cyrus SASL-2.1.21, MySQL-5.0.21, PostgreSQL-8.1.3, TCP Wrapper-7.6, and Linux-PAM-0.99.4.0

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/exim

Installation of Exim

Before building Exim, as the root user you should create the group and user exim which will run the exim daemon:

groupadd -g 31 exim &&
useradd -d /dev/null -c "Exim Daemon" -g exim -s /bin/false -u 31 exim

Install Exim with the following commands:

sed -e 's,^BIN_DIR.*$,BIN_DIRECTORY=/usr/sbin,' \
    -e 's,^CONF.*$,CONFIGURE_FILE=/etc/exim.conf,' \
    -e 's,^EXIM_USER.*$,EXIM_USER=exim,' \
    -e 's,^EXIM_MONITOR,#EXIM_MONITOR,' src/EDITME > Local/Makefile &&
make

This package does not come with a test suite.

Now, as the root user:

make install &&
install -v -m644 doc/exim.8 /usr/share/man/man8 &&
install -v -d -m755 /usr/share/doc/exim-4.61 &&
install -v -m644 doc/* /usr/share/doc/exim-4.61 &&
ln -sv exim /usr/sbin/sendmail

Command Explanations

sed -e ... > Local/Makefile: Most of Exim's configuration options are compiled in using the directives in Local/Makefile which is created from the src/EDITME file. This command specifies the minimum set of options. Descriptions for the options are listed below.

BIN_DIRECTORY=/usr/sbin: This installs all of Exim's binaries and scripts in /usr/sbin.

CONFIGURE_FILE=/etc/exim.conf: This installs Exim's main configuration file in /etc.

EXIM_USER=exim: This tells Exim that after the daemon no longer needs root privileges, the process hands off the daemon to the exim user.

#EXIM_MONITOR: This defers building the Exim monitor program, as it requires X Window System support, by commenting out the EXIM_MONITOR line in the Makefile. If you wish to build the monitor program, omit this sed command and issue the following command before building the package (modify Local/eximon.conf, if necessary): cp exim_monitor/EDITME Local/eximon.conf.

ln -sv exim /usr/sbin/sendmail: Creates a link to sendmail for applications which need it. Exim will accept most Sendmail command-line options.

Adding Additional Functionality

To utilize some or all of the dependency packages, you'll need to modify Local/Makefile to include the appropriate directives and parameters to link additional libraries before you build Exim. Local/Makefile is heavily commented with instructions on how to do this. Listed below is additional information to help you link these dependency packages.

To use a backend database other than Berkeley DB, see the instructions at http://exim.org/exim-html-4.61/doc/html/spec_html/ch04.html#SECTdb.

For SSL functionality, see the instructions at http://exim.org/exim-html-4.61/doc/html/spec_html/ch04.html#SECTinctlsssl and http://exim.org/exim-html-4.61/doc/html/spec_html/ch38.html.

For tcpwrappers functionality, see the instructions at http://exim.org/exim-html-4.61/doc/html/spec_html/ch04.html#id2522928. http://exim.org/exim-html-4.61/doc/html/spec_html/ch04.html#id2522928

For information about adding authentication mechanisms to the build, see chapters 33-37 of http://exim.org/exim-html-4.61/doc/html/spec_html/index.html.

For information about linking Linux-PAM, see the instructions in section 7 of http://exim.org/exim-html-4.61/doc/html/spec_html/ch11.html.

For information about linking database engine libraries used for Exim name lookups, see the instructions at http://exim.org/exim-html-4.61/doc/html/spec_html/ch09.html.

If you wish to add Readline support to Exim when invoked in “test expansion” (-be) mode, see the information in the -be section of http://exim.org/exim-html-4.61/doc/html/spec_html/ch05.html#id2525974.

You may wish to modify the default configuration and send log files to syslog instead of the default /var/spool/exim/log directory. See the information at http://exim.org/exim-html-4.61/doc/html/spec_html/ch48.html.

Configuring Exim

Config Files

/etc/exim.conf and /etc/aliases

Configuration Information

A default (nothing but comments) /etc/aliases file is installed during the package installation if this file did not exist on your system. Create the necessary aliases and start the Exim daemon using the following commands:

cat >> /etc/aliases << "EOF"
postmaster: root
MAILER-DAEMON: root
EOF
exim -v -bi &&
/usr/sbin/exim -bd -q15m

Note

To protect an existing /etc/aliases file, the command above appends these aliases to it. This file should be checked and duplicate aliases removed, if present.

The /usr/sbin/exim -bd -q15m command starts the Exim daemon with a 15 minute interval in processing the mail queue. Adjust this parameter to suit your desires.

Boot Script

To automate the running of exim at startup, install the /etc/rc.d/init.d/exim init script included in the blfs-bootscripts-20060910 package.

make install-exim

The bootscript also starts the Exim daemon and dispatches a queue runner process every 15 minutes. Modify the -q<time interval> parameter in /etc/rc.d/init.d/exim, if necessary for your installation.

Contents

Installed Programs: exicyclog, exigrep, exim, exim-4.43-2, exim_checkaccess, exim_dbmbuild, exim_dumpdb, exim_fixdb, exim_lock, exim_tidydb, eximstats, exinext, exipick, exiqgrep, exiqsumm, exiwhat, and optionally, eximon, and eximon.bin
Installed Libraries: None
Installed Directories: /usr/share/doc/exim-4.61 and /var/spool/exim

Short Descriptions

exicyclog

cycles Exim log files.

exigrep

searches Exim log files.

exim

is a symlink to the exim-4.43-2 MTA daemon.

exim-4.43-2

is the Exim mail transport agent daemon.

exim_checkaccess

states whether a given recipient address from a given host is acceptable or not.

exim_dbmbuild

creates and rebuilds Exim databases.

exim_dumpdb

writes the contents of Exim databases to the standard output.

exim_fixdb

modifies data in Exim databases.

exim_lock

locks a mailbox file.

exim_tidydb

removes old records from Exim databases.

eximstats

generates mail statistics from Exim log files.

exinext

queries remote host retry times.

exipick

selects messages based on various criteria.

exiqgrep

is a utility for selective queue listing.

exiqsumm

produces a summary of the messages in the mail queue.

exiwhat

queries running Exim processes.

eximon

is a start-up shell script for eximon.bin used to set the required environment variables before running the program.

eximon.bin

is a monitor program which displays current information in an X window, and also contains a menu interface to Exim's command line administration options.

Postfix-2.3.3

Introduction to Postfix

The Postfix package contains a Mail Transport Agent (MTA). This is useful for sending email to other users of your host machine. It can also be configured to be a central mail server for your domain, a mail relay agent or simply a mail delivery agent to your local Internet Service Provider (ISP).

Package Information

Postfix Dependencies

Optional

PCRE-6.7, MySQL-5.0.21, PostgreSQL-8.1.3, OpenLDAP-2.3.27, OpenSSL-0.9.8d, Cyrus SASL-2.1.21, and cdb or TinyCDB

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/postfix

Installation of Postfix

Configuring the Build

The Postfix source tree does not contain a configure script, rather the makefile in the top-level directory contains a makefiles target that regenerates all the other makefiles in the build tree. If you wish to use additional software such as a database back-end for virtual users, or TLS/SSL authentication, you will need to regenerate the makefiles using one or more of the appropriate CCARGS and AUXLIBS settings listed below.

Here is an example that combines the TLS and Cyrus-SASL arguments:

make makefiles \
CCARGS='-DUSE_TLS -DUSE_SASL_AUTH -DUSE_CYRUS_SASL \
    -DDEF_DAEMON_DIR=\"/usr/lib/postfix\" \
    -DDEF_MANPAGE_DIR=\"/usr/share/man\" \
    -DDEF_HTML_DIR=\"/usr/share/doc/postfix-2.3.3/html\" \
    -DDEF_README_DIR=\"/usr/share/doc/postfix-2.3.3/README\" \
    -I/usr/include/openssl -I/usr/include/sasl' \
    AUXLIBS='-L/usr/lib -lssl -lcrypto -lsasl2'
TLS Authentication

To use TLS authentication with postfix you will need to pass the following values to the make makefiles command:

CCARGS='-DUSE_TLS -I/usr/include/openssl'
AUXLIBS='-L/usr/lib -lssl -lcrypto'

To use TLS you will also need Cyrus SASL-2.1.21.

Cyrus-SASL

To use Cyrus-SASL with Postfix, use the following arguments:

CCARGS='-DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl'
AUXLIBS='-L/usr/lib -lsasl2'
OpenLDAP

To use OpenLDAP with Postfix, use the following arguments:

CCARGS='-I/usr/include -DHAS_LDAP'
AUXLIBS='-L/usr/lib -lldap -llber'
MySQL

To use MySQL with Postfix, use the following arguments:

CCARGS='-DHAS_MYSQL -I/usr/include/mysql'
AUXLIBS='-L/usr/lib -lmysqlclient -lz -lm'
PostgreSQL

To use PostgreSQL with Postfix, use the following arguments:

CCARGS='-DHAS_PGSQL -I/usr/include/postgresql'
AUXLIBS='-L/usr/lib -lpq -lz -lm'
TinyCDB

To use TinyCDB with Postfix, use the following arguments:

CCARGS='-DHAS_CDB'
AUXLIBS='</path/to/CDB>/libcdb.a'

Installing Postfix

Before you compile the program, you need to create users and groups that will be expected to be in place during the installation. Add the users and groups with the following commands issued by the root user:

groupadd -g 32 postfix &&
groupadd -g 33 postdrop &&
useradd -c "Postfix Daemon User" -d /dev/null -g postfix \
    -s /bin/false -u 32 postfix &&
chown -v postfix:postfix /var/mail

Install Postfix by running the following commands:

make makefiles \
CCARGS='-DDEF_DAEMON_DIR=\"/usr/lib/postfix\" \
    -DDEF_MANPAGE_DIR=\"/usr/share/man\" \
    -DDEF_HTML_DIR=\"/usr/share/doc/postfix-2.3.3/html\" \
    -DDEF_README_DIR=\"/usr/share/doc/postfix-2.3.3/README\" \
    <additional args>' \
    <AUXLIBS='additional args'> &&
make

This package does not come with a test suite.

Now, as the root user:

sh postfix-install -non-interactive

Command Explanations

make makefiles: This command rebuilds the makefiles throughout the source tree to use the options contained in the CCARGS and AUXLIBS variables.

sh postfix-install -non-interactive: This keeps the install script from asking any questions, thereby accepting default destination directories in all but the few cases mentioned in the 'make makefiles' command.

Configuring Postfix

Config Files

/etc/aliases, /etc/postfix/main.cf, and /etc/postfix/master.cf

Configuration Information

cat >> /etc/aliases << "EOF"
# Begin /etc/aliases

MAILER-DAEMON:    postmaster
postmaster:       root

root:             LOGIN
# End /etc/aliases
EOF

Note

To protect an existing /etc/aliases file, the above command appends these aliases to it if it exists. This file should be checked and duplicate aliases removed, if present.

The /etc/aliases file that was just created or appended, the main.cf and the master.cf must be personalized for your system. The aliases file needs your non-root login identity so mail addressed to root can be forwarded to you at the user level. The main.cf file needs your fully qualified hostname. All of these edits can be done with sed commands entered into the console with appropriate substitutions of your non-root login name for <user> and your fully qualified hostname for <localhost.localdomain>. You will find the main.cf file is self documenting, so load it into your editor to make the changes you need for your situation.

sed -i "s/LOGIN/<user>/" /etc/aliases &&
sed -i "s/#myhostname = host.domain.tld/myhostname = \
  <localhost.localdomain>/" /etc/postfix/main.cf &&
/usr/bin/newaliases

If you have an existing configuration, you can run the postfix utility to add any necessary definitions to your existing files. As the root user:

/usr/sbin/postfix upgrade-configuration

Before starting Postfix, you should check that your configuration and file permissions will work properly. Run the following commands as the root user to check and start your Postfix server:

/usr/sbin/postfix check &&
/usr/sbin/postfix start

Boot Script

To automate the running of Postfix at startup, install the /etc/rc.d/init.d/postfix init script included in the blfs-bootscripts-20060910 package.

make install-postfix

Contents

Installed Programs: anvil, bounce, cleanup, discard, error, flush, lmtp, local, mailq, master, newaliases, nqmgr, oqmgr, pickup, pipe, postalias, postcat, postconf, postdrop, postfix, postkick, postlock, postlog, postmap, postqueue, postsuper, proxymap, qmgr, qmqpd, sendmail, showq, smtp, smtpd, spawn, tlsmgr, trivial-rewrite, verify, and virtual
Installed Libraries: None
Installed Directories: /etc/postfix, /usr/lib/postfix and /usr/share/doc/postfix-2.3.3

Short Descriptions

anvil

Provides connection and rate request limiting.

bounce

A daemon that maintains per-message log files with non-delivery status information.

cleanup

A daemon that processes inbound mail, inserts it into the incoming mail queue, and informs the queue manager of its arrival.

discard

Processes delivery requests from the queue manager that cannot be delivered to the recipient.

error

A daemon that processes non-delivery requests from the queue manager.

flush

A daemon that maintains a record of deferred mail by destination.

lmtp

A daemon that processes message delivery requests from the queue manager.

local

A daemon that processes delivery requests from the queue manager to deliver mail to local recipients.

mailq

A symlink to sendmail.

master

The resident process that runs Postfix daemons on demand.

newaliases

A symlink to sendmail.

nqmgr

A daemon that awaits the arrival of incoming mail and arranges for its delivery.

oqmgr

The old style queue manager. This will be removed soon.

pickup

A daemon that waits for hints that new mail has been dropped into the maildrop directory, and feeds it into the cleanup daemon.

pipe

A daemon that processes requests from the queue manager to deliver messages to external commands.

postalias

Creates or queries one or more Postfix alias databases, or updates an existing one.

postcat

Prints the contents of the named files in human readable format.

postconf

Displays or changes the value of Postfix configuration parameters.

postdrop

Creates a file in the maildrop directory and copies it's standard input to the file.

postfix

Controls the operation of the Postfix mail system.

postkick

Sends requests to the specified service over a local transport channel.

postlock

Locks a mail folder for exclusive use, and executes commands passed to it.

postlog

A Postfix-compatible logging interface for use in, for example, shell scripts.

postmap

Creates or queries one or more Postfix lookup tables, or updates an existing one.

postqueue

The Postfix user interface for queue management.

postsuper

The Postfix user interface for superuser queue management.

proxymap

Provides read-only table lookup services to other Postfix processes.

qmgr

A daemon that awaits the arrival of incoming mail and arranges for its delivery.

qmqpd

A daemon that receives one message per connection, and pipes it through the cleanup daemon, and places it into the incoming queue.

scache

Maintains a connection cache used for sharing a connection multiple times.

sendmail

The Postfix to Sendmail compatibility interface.

showq

A daemon that reports the Postfix mail queue status.

smtp

Looks up a list of mail exchanger addresses for the destination host, sorts the list by preference, and connects to each listed address until it finds a server that responds.

smtpd

Accepts network connection requests and performs zero or more SMTP transactions per connection.

spawn

Listens on a port as specified in the Postfix master.cf file and spawns an external command whenever a connection is established.

tlsmgr

Maintains the TLS session cache and acts as the PRNG manager.

trivial-rewrite

A daemon that rewrites addresses to standard form.

verify

Maintains a record of what recipient addresses are known to be deliverable or undeliverable.

virtual

Delivers mail to virtual user's mail directories.

Qpopper-4.0.9

Introduction to Qpopper

The Qpopper package contains a POP3 mail server.

Package Information

Qpopper Dependencies

Required

An MTA

Optional

OpenSSL-0.9.8d, GDBM-1.8.3, Linux-PAM-0.99.4.0, and MIT Kerberos V5-1.6 or Heimdal-0.7.2

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/qpopper

Installation of Qpopper

Install Qpopper with the following commands:

./configure --prefix=/usr --enable-standalone &&
make

Now, as the root user:

make install &&
install -D -m644 GUIDE.pdf /usr/share/doc/qpopper-4.0.9/GUIDE.pdf

Command Explanations

--enable-standalone: This option gives the flexibility to run Qpopper in standalone mode.

Configuring Qpopper

Configuration Information

Update the Syslog configuration file and force the syslogd daemon to reread the new file so that Qpopper events are logged:

echo "local0.notice;local0.debug /var/log/POP.log" >> \
    /etc/syslog.conf &&
killall -HUP syslogd

If you want Qpopper to start automatically when the system is booted, install the /etc/rc.d/init.d/qpopper init script included in the blfs-bootscripts-20060910 package.

make install-qpopper

This startup procedure uses a configuration file. The details of the configuration file can be found in the documentation file GUIDE.pdf.

cat > /etc/mail/qpopper.conf << "EOF"
# Qpopper configuration file

set debug = false

set spool-dir = /var/spool/mail/
set temp-dir  = /var/spool/mail/

set downcase-user = true
set trim-domain = true

set statistics = true

# End /etc/shells
EOF

If you use inetd, the following command will add the Qpopper entry to /etc/inetd.conf:

echo "pop3 stream tcp nowait root /usr/sbin/popper popper" >> \
    /etc/inetd.conf &&
killall inetd || inetd

Issue a killall -HUP inetd to reread the changed inetd.conf file.

If you use xinetd, the following command will create the Qpopper file as /etc/xinetd.d/pop3:

cat >> /etc/xinetd.d/pop3 << "EOF"
# Begin /etc/xinetd.d/pop3

service pop3
{
    port            = 110
    socket_type     = stream
    protocol        = tcp
    wait            = no
    user            = root
    server          = /usr/sbin/popper
}

# End /etc/xinetd.d/pop3
EOF

Issue a killall -HUP xinetd to reread the changed xinetd.conf file.

Contents

Installed Program: popper
Installed Libraries: None
Installed Directories: None

Short Descriptions

popper

is the POP3 server daemon.

Sendmail-8.13.6

Introduction to Sendmail

The Sendmail package contains a Mail Transport Agent (MTA).

Package Information

Sendmail Dependencies

Required

Procmail-3.22

Optional

OpenSSL-0.9.8d, OpenLDAP-2.3.27, TCP Wrapper-7.6, Cyrus SASL-2.1.21, nph, and AFPL Ghostscript-8.53 or ESP Ghostscript-8.15.2 (for creating PDF documentation)

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/sendmail

Installation of Sendmail

Before building Sendmail, create the required user, group and directory with the following commands issued as the root user:

groupadd -g 26 smmsp &&
useradd -c "Sendmail Daemon" -g smmsp -d /dev/null \
        -s /bin/false -u 26 smmsp &&
chmod -v 1777 /var/mail &&
install -v -m700 -d /var/spool/mqueue

Note: See the source tree sendmail/README file for information on linking optional packages into the build. Use the example below, which adds support for tcpwrappers, SASL, StartTLS (OpenSSL) and OpenLDAP, as a starting point. Of course, modify it to suit your particular needs.

cat >> devtools/Site/site.config.m4 << "EOF"
APPENDDEF(`confENVDEF',`-DSTARTTLS -DTCPWRAPPERS -DSASL -DLDAPMAP')
APPENDDEF(`confLIBS', `-lssl -lcrypto -lwrap -lsasl2 -lldap -llber')
APPENDDEF(`confINCDIRS', `-I/usr/include/sasl')
EOF

Install Sendmail with the following commands:

cat >> devtools/Site/site.config.m4 << "EOF"
define(`confMANGRP',`root')
define(`confMANOWN',`root')
define(`confSBINGRP',`root')
define(`confUBINGRP',`root')
define(`confUBINOWN',`root')
EOF
cd sendmail &&
sh Build &&
cd ../cf/cf &&
cp generic-linux.mc sendmail.mc &&
sh Build sendmail.cf

Now, as the root user:

install -v -d -m755 /etc/mail &&
sh Build install-cf &&

cd ../.. &&
sh Build install &&

install -v -m644 cf/cf/{submit,sendmail}.mc /etc/mail &&
cp -v -R cf/* /etc/mail &&

install -v -m755 -d /usr/share/doc/sendmail-8.13.6/{cf,sendmail} &&
install -v -m644 \
        CACerts FAQ KNOWNBUGS LICENSE PGPKEYS README RELEASE_NOTES \
        /usr/share/doc/sendmail-8.13.6 &&
install -v -m644 sendmail/{README,SECURITY,TRACEFLAGS,TUNING} \
        /usr/share/doc/sendmail-8.13.6/sendmail &&
install -v -m644 cf/README /usr/share/doc/sendmail-8.13.6/cf &&

for manpage in sendmail editmap mailstats makemap praliases smrsh
do
    install -v -m444 $manpage/$manpage.8 /usr/share/man/man8
done &&
install -v -m444 sendmail/aliases.5    /usr/share/man/man5 &&
install -v -m444 sendmail/mailq.1      /usr/share/man/man1 &&
install -v -m444 sendmail/newaliases.1 /usr/share/man/man1 &&
install -v -m444 vacation/vacation.1   /usr/share/man/man1

Install the Sendmail Installation and Operations Guide with the following commands:

cd doc/op &&
sed -i 's/groff/GROFF_NO_SGR=1 groff/' Makefile &&
make op.txt op.pdf

Now, as the root user:

install -v -d -m755 /usr/share/doc/sendmail-8.13.6 &&
install -v -m644 op.ps op.txt op.pdf /usr/share/doc/sendmail-8.13.6 &&
cd ../..

Note: remove op.pdf from the make and install commands if you don't have Ghostscript installed.

Command Explanations

cat > devtools/Site/site.config.m4 << "EOF": This creates a configuration file changing some of the default settings.

sh Build; sh Build sendmail.cf; sh Build install-cf; sh Build install: Sendmail uses an m4 based build script to create the various Makefiles. These commands build and install the package.

for manpage in...;do...;done; install ...: The man pages are installed already formatted and man displays them somewhat garbled. These commands replace the formatted pages with pages man can display properly.

Configuring Sendmail

Config Files

/etc/mail/*

Configuration Information

Create the /etc/mail/local-host-names and /etc/mail/aliases files using the following commands as the root user:

echo $(hostname) > /etc/mail/local-host-names
cat > /etc/mail/aliases << "EOF"
postmaster: root
MAILER-DAEMON: root

EOF
newaliases -v

Sendmail's primary configuration file, /etc/mail/sendmail.cf, is complex and not meant to be directly edited. The recommended method for changing it is to modify /etc/mail/sendmail.mc and various m4 files, then run the m4 macro processor from within /etc/mail as follows:

m4 m4/cf.m4 sendmail.mc > sendmail.cf

A full explanation of the files to modify, and the available parameters can be found in /etc/mail/README.

Boot Script

To automate the running of Sendmail at startup, install the /etc/rc.d/init.d/sendmail init script included in the blfs-bootscripts-20060910 package.

make install-sendmail

Note

The -qNm option to sendmail, where N is number of minutes, controls how often Sendmail will process the mail queue. A default of 5 minutes is used in the init script. Individual workstation users may want to set this as low as 1 minute, large installations handling more mail may want to set it higher.

Contents

Installed Programs: editmap, hoststat, mailstats, mailq, makemap, newaliases, praliases, purgestat, sendmail, smrsh, and vacation
Installed Libraries: None
Installed Directories: /etc/mail, /usr/share/doc/sendmail-8.13.6, /var/spool/mqueue, and /var/spool/clientmqueue

Short Descriptions

editmap

queries and edits Sendmail map files.

hoststat

prints Sendmail's persistent host status.

mailstats

displays Sendmail statistics.

mailq

prints a summary of outbound mail messages waiting for delivery.

makemap

creates Sendmail map files.

newaliases

rebuilds /etc/mail/aliases.db from the contents of /etc/mail/aliases.

praliases

displays current Sendmail aliases.

purgestat

causes Sendmail to clear (purge) all its host-status information.

sendmail

is the Sendmail mail transport agent.

smrsh

is a restricted shell for Sendmail.

vacation

is an email auto responder.

Chapter 23. Databases

This chapter includes databases that range from single-user read/write to industrial database servers with transaction support. Generally, you will be sent here to satisfy dependencies to other applications although building a SQL server on a base LFS system is entirely possible.

Berkeley DB-4.4.20

Introduction to Berkeley DB

The Berkeley DB package contains programs and utilities used by many other applications for database related functions. This package is also installed during LFS and may already exist on your system. It is listed here in BLFS as well because you may need to reinstall it if you need the additional language bindings or the RPC server. If you do reinstall Berkeley DB, ensure you use the 4.4.20 version used in the LFS book.

Package Information

Additional Downloads

Berkeley DB Dependencies

Optional

Tcl-8.4.13, JDK-1.5.0_10, and sharutils (for the uudecode command)

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/db

Testing Berkeley DB

You may want to skip ahead to the section called “Installation of Berkeley DB”. The test suite can take up to 150 SBUs and has a few bugs causing a report of “Regression tests failed”. However, running the test suite is a very exhaustive test of your hardware, perhaps pushing your machine harder (especially disk I/O) than it will ever see during production use. Note that you must have Tcl installed to run the test suite.

Build for the Berkeley DB test by running the following commands:

for PATCH in ../patch.4.4.20.{1..4}; do patch -Np0 -i $PATCH; done &&
cd build_unix &&
../dist/configure --prefix=/usr \
                  --enable-test \
                  --enable-tcl  \
                  --with-tcl=/usr/lib &&
make

To test the results, start tclsh:

tclsh

From the tclsh prompt (), run:

source ../test/test.tcl
run_parallel 5 run_std
exit

Clean up the source tree with the following command:

make realclean &&
cd ..

Installation of Berkeley DB

The installation commands below are identical to the commands used in the LFS book. If you installed Berkeley DB in LFS, and you don't add anything to the configure script, you'll end up with exactly what you already have. The additional parameters you can use are listed in the Command Explanations section below. Install Berkeley DB by running the following commands:

for PATCH in ../patch.4.4.20.{1..4}; do patch -Np0 -i $PATCH; done &&
cd build_unix &&
../dist/configure --prefix=/usr \
                  --enable-compat185 \
                  --enable-cxx &&
make

Now, as the root user:

make docdir=/usr/share/doc/db-4.4.20 install &&
chown -v root:root /usr/bin/db_* /usr/lib/libdb* /usr/include/db* &&
chown -v root:root /usr/bin/berkeley_db_svc &&
chown -v -R root:root /usr/share/doc/db-4.4.20

Command Explanations

cd build_unix && ../dist/configure --prefix=/usr...: This replaces the normal ./configure command, as Berkeley DB comes with various build directories for different platforms.

--enable-compat185: This switch enables building the DB-1.85 compatibility API.

--enable-cxx: This switch enables building C++ API libraries.

--enable-tcl --with-tcl=/usr/lib: Enables Tcl support in DB and creates the libdb_tcl libraries.

--enable-java: Enables Java support in DB and creates the libdb_java libraries.

--enable-rpc: Enables building the Berkeley DB RPC server.

make docdir=/usr/share/doc/db-4.4.20 install: This installs the documentation in the correct location instead of /usr/docs.

chown -v root:root /usr/bin/berkeley_db_svc: This command changes the ownership of the RPC server program. It is only required if you passed --enable-rpc to the configure script.

Contents

Only the program and libraries not installed in LFS are listed here, the others can be found at ../../../../lfs/view/6.2/chapter06/db.html#contents-db as they were initially installed during the building of LFS.

Installed Program: berkeley_db_svc
Installed Libraries: libdb_java.{so,a} and libdb_tcl.{so,a}
Installed Directory: /usr/share/doc/db-4.4.20

Short Descriptions

berkeley_db_svc

is the Berkeley DB RPC server.

MySQL-5.0.21

Introduction to MySQL

MySQL is a widely used and fast SQL database server. It is a client/server implementation that consists of a server daemon and many different client programs and libraries.

Package Information

MySQL Dependencies

Optional

OpenSSL-0.9.8d and TCP Wrapper-7.6.

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/mysql

Installation of MySQL

For security reasons, running the server as an unprivileged user and group is strongly encouraged:

groupadd -g 40 mysql &&
useradd -c "MySQL Server" -d /dev/null -g mysql -s /bin/false \
        -u 40 mysql

Build and install MySQL by running the following commands:

C_EXTRA_FLAGS=-fno-strict-aliasing \
./configure --prefix=/usr \
            --sysconfdir=/etc \
            --libexecdir=/usr/sbin \
            --localstatedir=/srv/mysql \
            --enable-thread-safe-client \
            --enable-assembler \
            --enable-local-infile \
            --with-unix-socket-path=/var/run/mysql/mysql.sock \
            --without-debug \
            --without-bench \
            --without-readline \
            --with-berkeley-db \
            --with-extra-charsets=all &&
make testdir=/tmp/mysql

To test the results, issue: make test. Note that if you have a restrictive /etc/hosts.deny file, you will need to add an appropriate entry to the /etc/hosts.allow file for the mysqld daemon, else many of the tests will fail.

Now, as the root user:

make testdir=/tmp/mysql install &&
rm -rf /tmp/mysql &&
cd /usr/lib &&
ln -v -sf mysql/libmysqlclient{,_r}.so* .

Command Explanations

C_EXTRA_FLAGS=-fno-strict-aliasing: This environment variable adjusts the compiler optimization to avoid failures in the testsuite and other operations.

--libexecdir=/usr/sbin: This switch installs the mysqld daemon and the mysqlmanager program in an appropriate location.

--localstatedir=/srv/mysql: This switch forces MySQL to use /srv/mysql for database files and other variable data.

--enable-thread-safe-client: This switch compiles a thread-safe MySQL client library.

--enable-assembler: This switch allows using assembler versions of some string functions.

--enable-local-infile: This switch enables the “LOAD DATA INFILE” SQL statement.

--with-unix-socket-path=/var/run/mysql: This switch puts the unix-domain socket into the /var/run/mysql directory instead of the default /tmp.

--without-bench: This switch skips building the benchmark suite.

--without-readline: This switch forces the build to use the system copy of readline instead of the bundled copy.

--with-berkeley-db: This switch enables using Berkeley DB tables as a back end.

--with-extra-charsets=all: This switch enables international character sets within the suite.

make testdir=...: This installs the test suite in /tmp/mysql. The test suite is not required, nor does it function properly on an installed version of MySQL, so it is removed in the next step.

ln -v -sf mysql/libmysqlclient{,_r}.so* .: This command makes the MySQL shared libraries available to other packages at run-time.

--with-openssl: This switch adds OpenSSL support to MySQL.

--with-libwrap: This switch adds tcpwrappers support to MySQL.

Configuring MySQL

Config Files

/etc/my.cnf and ~/.my.cnf

Configuration Information

There are several default configuration files available in /usr/share/mysql which you can use. Create /etc/my.cnf using the following command as the root user:

install -v -m644 /usr/share/mysql/my-medium.cnf /etc/my.cnf

You can now install a database and change the ownership to the unprivileged user and group (perform as the root user):

mysql_install_db --user=mysql &&
chgrp -v mysql /srv/mysql{,/test,/mysql}

Further configuration requires that the MySQL server is running. Start the server using the following commands as the root user:

install -v -m755 -o mysql -g mysql -d /var/run/mysql &&
mysqld_safe --user=mysql 2>&1 >/dev/null &

A default installation does not set up a password for the administrator, so use the following command as the root user to set one. Replace <new-password> with your own.

mysqladmin -u root password <new-password>

Configuration of the server is now finished. Shut the server down using the following command as the root user:

mysqladmin -p shutdown

Boot Script

Install the /etc/rc.d/init.d/mysql init script included in the blfs-bootscripts-20060910 package as the root user to start the MySQL server during system boot-up.

make install-mysql

Contents

Installed Programs: comp_err, innochecksum, msql2mysql, my_print_defaults, myisam_ftdump, myisamchk, myisamlog, myisampack, mysql, mysql_client_test, mysql_config, mysql_convert_table_format, mysql_create_system_tables, mysql_explain_log, mysql_find_rows, mysql_fix_extensions, mysql_fix_privilege_tables, mysql_install_db, mysql_secure_installation, mysql_setpermission, mysql_tableinfo, mysql_tzinfo_to_sql, mysql_waitpid, mysql_zap, mysqlaccess, mysqladmin, mysqlbinlog, mysqlbug, mysqlcheck, mysqld, mysqld_multi, mysqld_safe, mysqldump, mysqldumpslow, mysqlhotcopy, mysqlimport, mysqlmanager, mysqlshow, mysqltest, mysqltestmanager, mysqltestmanager-pwgen, mysqltestmanagerc, perror, replace, resolve_stack_dump, and resolveip
Installed Libraries: libdbug.a, libheap.a, libmyisam.a, libmyisammrg.a, libmysqlclient.{so,a}, libmysqlclient_r.{so,a}, libmystrings.a, libmysys.a, and libvio.a
Installed Directories: /srv/mysql, /usr/include/mysql, /usr/lib/mysql, /usr/share/mysql, and /var/run/mysql

Short Descriptions

Descriptions of all the programs and libraries would be several pages long. Instead, consult the mysql.info documentation or the on-line reference manual at http://dev.mysql.com/doc/refman/5.0/en/index.html.

The Perl DBI modules must be installed for some of the MySQL support programs to function properly.

PostgreSQL-8.1.3

Introduction to PostgreSQL

PostgreSQL is an advanced object-relational database management system (ORDBMS), derived from the Berkeley Postgres database management system.

Package Information

PostgreSQL Dependencies

Optional

Python-2.4.4, Tcl-8.4.13, OpenSSL-0.9.8d, Linux-PAM-0.99.4.0, krb4, MIT Kerberos V5-1.6 or Heimdal-0.7.2, and Bonjour

Optional (To Regenerate Documentation)

DocBook SGML DTD-4.4, DocBook DSSSL Stylesheets-1.79, OpenJade-1.3.2, and SGMLSpm-1.03ii

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/postgresql

Installation of PostgreSQL

Install PostgreSQL with the following commands:

sed -i "s|dsssl-stylesheets|& \\\\\n        sgml/docbook/&-1.79|" \
    configure &&
./configure --prefix=/usr --enable-thread-safety &&
make

To test the results, issue: make check.

Now, as the root user:

make install &&
chown -v root:root /usr/share/doc/postgresql/html/* &&
install -v -m755 -d /usr/share/doc/postgresql/{FAQ/html,TODO.detail} &&
install -v -m644 doc/TODO /usr/share/doc/postgresql &&
install -v -m644 doc/FAQ* /usr/share/doc/postgresql/FAQ &&
install -v -m644 doc/src/FAQ/* /usr/share/doc/postgresql/FAQ/html &&
install -v -m644 doc/TODO.detail/* \
    /usr/share/doc/postgresql/TODO.detail

Note

If you are upgrading an existing system and are going to install the new files over the old ones, then you should back up your data, shut down the old server and follow the instructions in the official PostgreSQL documentation.

Initialize a database cluster with the following commands issued by the root user:

install -v -m755 -d /srv/pgsql/data &&
groupadd -g 41 postgres &&
useradd -c "PostgreSQL Server" -g postgres -d /srv/pgsql/data \
        -u 41 postgres &&
chown -v postgres /srv/pgsql/data &&
su - postgres -c '/usr/bin/initdb -D /srv/pgsql/data'

As the root user, start the database server with the following command:

su - postgres -c '/usr/bin/postmaster -D /srv/pgsql/data > \
    /srv/pgsql/data/logfile 2>&1 &'

Still as user root, create a database and verify the installation:

su - postgres -c '/usr/bin/createdb test' &&
echo "create table t1 ( name varchar(20), state_province varchar(20) );" \
    | (su - postgres -c '/usr/bin/psql test ') &&
echo "insert into t1 values ('Billy', 'NewYork');" \
    | (su - postgres -c '/usr/bin/psql test ') &&
echo "insert into t1 values ('Evanidus', 'Quebec');" \
    | (su - postgres -c '/usr/bin/psql test ') &&
echo "insert into t1 values ('Jesse', 'Ontario');" \
    | (su - postgres -c '/usr/bin/psql test ') &&
echo "select * from t1;" | (su - postgres -c '/usr/bin/psql test')

Command Explanations

sed -i "s|dsssl-stylesheets|...": This command puts an extra line in the configure script so that the BLFS installed version of the DSSSL stylesheets are discovered.

--enable-thread-safety: This switch makes the client libraries thread-safe by allowing concurrent threads in libpq and ECPG programs to safely control their private connection handles.

chown -R root:root /usr/share/doc/postgresql/html/*: This command corrects the improper ownership of documentation files.

groupadd ...; useradd ...: These commands add an unprivileged user and group to run the database server.

createdb test; create table t1; insert into t1 values...; select * from t1: Create a database, add a table to it, insert some rows into the table and select them to verify that the installation is working properly.

Configuring PostgreSQL

Config Files

$PGDATA/pg_ident.con, $PGDATA/pg_hba.conf and $PGDATA/postgresql.conf

The PGDATA environment variable is used to distinguish database clusters from one another by setting it to the value of the directory which contains the cluster desired. The three configuration files exist in every PGDATA/ directory. Details on the format of the files and the options that can be set in each can be found in file:///usr/share/doc/postgresql/html/index.html.

Boot Script

Install the /etc/rc.d/init.d/postgresql init script included in the blfs-bootscripts-20060910 package.

make install-postgresql

Contents

Installed Programs: clusterdb, createdb, createlang, createuser, dropdb, droplang, dropuser, ecpg, initdb, ipcclean, pg_config, pg_controldata, pg_ctl, pg_dump, pg_dumpall, pg_resetxlog, pg_restore, pltcl_delmod, pltcl_listmod, pltcl_loadmod, postgres, postmaster, psql, and vacuumdb
Installed Libraries: libecpg.{so,a}, libecpg_compat.{so,a}, libpgport.a, libpgtypes.{so,a}, libpq.{so,a}, and various charset modules.
Installed Directories: /srv/pgsql, /usr/include/libpq, /usr/include/postgresql, /usr/lib/postgresql, /usr/share/doc/postgresql, and /usr/share/postgresql

Short Descriptions

clusterdb

is a utility for reclustering tables in a PostgreSQL database.

createdb

creates a new PostgreSQL database.

createlang

defines a new PostgreSQL procedural language.

createuser

defines a new PostgreSQL user account.

dropdb

removes a PostgreSQL database.

droplang

removes a PostgreSQL procedural language.

dropuser

removes a PostgreSQL user account.

ecpg

is the embedded SQL preprocessor.

initdb

creates a new database cluster.

ipcclean

removes shared memory and semaphores left over by an aborted database server.

pg_config

retrieves PostgreSQL version information.

pg_controldata

returns information initialized during initdb, such as the catalog version and server locale.

pg_ctl

controls stopping and starting the database server.

pg_dump

dumps database data and metadata into scripts which are used to recreate the database.

pg_dumpall

recursively calls pg_dump for each database in a cluster.

pg_resetxlog

clears the write-ahead log and optionally resets some fields in the pg_control file.

pg_restore

creates databases from dump files created by pg_dump.

pltcl_delmod

is a support script used to delete a module from a PL/Tcl table. The command requires the Pgtcl package to be installed also.

pltcl_listmod

is a support script used to list the modules in a PL/Tcl table. The command requires the Pgtcl package to be installed also.

pltcl_loadmod

is a support script used to load a module into a PL/Tcl table. The command requires the Pgtcl package to be installed also.

postgres

is a single user database server, generally used for debugging.

postmaster

is a multi-user database daemon.

psql

is a console based database shell.

vacuumdb

compacts databases and generates statistics for the query analyzer.

Chapter 24. Other Server Software

Here you will find many ways to share your machine with the rest of the world or your local network. Before installing any packages in this chapter, you need to be sure you understand what the package does and how to set it up correctly. It might also be helpful to learn about the consequences of an improper setup so that you can analyze the risks.

DHCP-3.0.5

Introduction to DHCP

The DHCP package contains both the client and server programs for DHCP. dhclient (the client) is useful for connecting your computer to a network which uses DHCP to assign network addresses. dhcpd (the server) is useful for assigning network addresses on your private network.

Package Information

Additional Downloads

DHCP Dependencies

Required

Net-tools-1.60 (you may omit net-tools by using the optional patch to utilize iproute2.

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/dhcp

Kernel Configuration

You must have Packet Socket support (Device Drivers ⇒ Networking Support ⇒ Networking Options ⇒ Packet Socket) compiled into the kernel.

Installation of DHCP

First fix a problem with always regenerating /etc/resolv.conf whether the DNS server has changed or not.

patch -Np1 -i ../dhcp-3.0.5-client_dns-1.patch

If you chose not to install net-tools, apply the iproute2 patch:

patch -Np1 -i ../dhcp-3.0.5-iproute2-1.patch

Install DHCP by running the following commands:

./configure &&
make

Now, as the root user:

make LIBDIR=/usr/lib INCDIR=/usr/include install

Command Explanations

LIBDIR=/usr/lib INCDIR=/usr/include: This command installs the library and include files in /usr instead of /usr/local.

Configuring DHCP

Config Files

/etc/dhclient.conf and /etc/dhcpd.conf

Configuration Information

Information on configuring the DHCP client can be found in Chapter 14, DHCP Clients.

Note that you only need the DHCP server if you want to issue LAN addresses over your network. The DHCP client doesn't need this script to be used. Also note that this script is coded for the eth1 interface, which may need to be modified for your hardware configuration.

Install the /etc/rc.d/init.d/dhcp init script included in the blfs-bootscripts-20060910 package.

make install-dhcp

The lease file must exist on startup. The following command will satisfy that requirement:

touch /var/state/dhcp/dhcpd.leases

The following commands will create a base configuration file for a DHCP server. There are several options that you may want to add (information that is passed back to the DHCP client) and those are covered in the man pages for dhcp.conf.

cat > /etc/dhcpd.conf << "EOF"
default-lease-time 72000;
max-lease-time 144000;
ddns-update-style ad-hoc;

subnet <192.168.5.0> netmask <255.255.255.0> {
  range <192.168.5.10> <192.168.5.240>;
  option broadcast-address <192.168.5.255>;
  option routers <192.168.5.1>;
}
EOF

All addresses should be changed to meet your circumstance.

Contents

Installed Programs: dhcpd, dhcrelay, dhclient, dhclient-script, and omshell
Installed Libraries: bdhcpctl.a, libomapi.a
Installed Directories: /var/state/dhcp, /usr/include/omapip, and /usr/include/isi-dhcp

Short Descriptions

dhclient

is the implementation of the DHCP client.

dhcpd

implements Dynamic Host Configuration Protocol (DHCP) and Internet Bootstrap Protocol (BOOTP) requests for network addresses.

dhcrelay

provides a means to accept DHCP and BOOTP requests on a subnet without a DHCP server and relay them to a DHCP server on another subnet.

omshell

provides an interactive way to connect to, query, and possibly change, the ISC DHCP Server's state via OMAPI, the Object Management API.

Leafnode-1.11.5

Introduction to Leafnode

Leafnode is an NNTP server designed for small sites to provide a local USENET spool.

Package Information

Leafnode Dependencies

Required

PCRE-6.7 and TCP Wrapper-7.6

Recommended

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/leafnode

Installation of Leafnode

As the root user, create the group and user news, if not present:

groupadd -g 36 news &&
useradd -c "Leafnode News Server" -d /var/spool/news -g news \
        -u 36 news

Install Leafnode by running the following commands:

./configure --prefix=/usr \
    --localstatedir=/var --sysconfdir=/etc/leafnode \
    --with-lockfile=/var/lock/leafnode/fetchnews.lck &&
make

To test the results, issue: make check.

Now, as the root user:

make install

Command Explanations

--localstatedir=/var: Change the default spool directory of /usr/var.

--sysconfdir=/etc/leafnode: Leafnode reads its configuration data from a file called config which will be created in /etc/leafnode to avoid any potential conflict with other packages.

make update: Run this command if you are upgrading from a very old version of Leafnode.

Configuring Leafnode

Config Files

/etc/leafnode/config, /etc/nntpserver, /etc/sysconfig/createfiles /etc/inetd.conf or /etc/xinetd.conf or /etc/xinetd.d/nntp

Configuration Information

The /etc/leafnode/config file must be edited to reflect the name of the upstream NNTP provider. Copy the example configuration file to /etc/leafnode/config and save the original for reference:

cp /etc/leafnode/config.example /etc/leafnode/config

Change the

server = 

entry to reflect your news provider.

The /etc/nntpserver file must contain 127.0.0.1 to prevent news clients from reading news from the upstream feed. Create this file using the following command:

cat > /etc/nntpserver << "EOF"
127.0.0.1

EOF

The /etc/rc.d/init.d/cleanfs script, part of the LFS bootscript package, will remove the /var/lock/leafnode directory during the system boot sequence. Install the following line in the /etc/sysconfig/createfiles file to re-create the directory:

/var/lock/leafnode   dir   2775   news   news

Leafnode may be configured to use inetd by adding an entry to the /etc/inetd.conf file with the following command:

echo "nntp stream tcp nowait news /usr/sbin/tcpd /usr/sbin/leafnode" \
>> /etc/inetd.conf

Issue a killall -HUP inetd to reread the changed inetd.conf file.

If you use xinetd, the following command will create the Leafnode file as /etc/xinetd.d/nntp:

cat >> /etc/xinetd.d/nntp << "EOF"
# Begin /etc/xinetd.d/nntp

        service nntp
        {
           flags           = NAMEINARGS NOLIBWRAP
           socket_type     = stream
           protocol        = tcp
           wait            = no
           user            = news
           server          = /usr/sbin/tcpd
           server_args     = /usr/sbin/leafnode
           instances       = 7
           per_source      = 3
        }

# End /etc/xinetd.d/nntp
EOF

Issue a killall -HUP xinetd to reread the changed xinetd.conf file.

Add entries to the root or news user's crontab to run the fetchnews and texpire commands at the desired time intervals.

Contents

Installed Programs: applyfilter, checkgroups, fetchnews, leafnode, leafnode-version, newsq, and texpire
Installed Libraries: None
Installed Directories: /etc/leafnode, /var/lock/leafnode, and /var/spool/news

Short Descriptions

applyfilter

filters newsgroup articles according to regular expressions.

checkgroups

inserts newsgroup titles into the newsgroup database.

fetchnews

sends posted articles to and retrieves new articles from an upstream news server.

leafnode

is an NNTP server daemon.

leafnode-version

prints the Leafnode version.

newsq

shows articles waiting to be sent upstream.

texpire

expires old articles and unread groups.

OpenLDAP-2.3.27

Introduction to OpenLDAP

The OpenLDAP package provides an open source implementation of the Lightweight Directory Access Protocol.

Package Information

Note

The OpenLDAP stable releases are packaged without version numbers in the tarball names. You can see the relationship between the version number and name of the tarball at http://www.openldap.org/software/download/.

OpenLDAP Dependencies

Required

Berkeley DB-4.4.20 is recommended (built in LFS) or GDBM-1.8.3

Recommended

Optional

TCP Wrapper-7.6, unixODBC-2.2.11, GMP-4.2, GNU Pth, and OpenSLP

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/openldap

Installation of OpenLDAP

Install OpenLDAP by running the following commands:

./configure --prefix=/usr \
            --libexecdir=/usr/sbin \
            --sysconfdir=/etc \
            --localstatedir=/srv/ldap \
            --disable-debug \
            --enable-dynamic \
            --enable-crypt \
            --enable-modules \
            --enable-ldap \
            --enable-ldbm \
            --enable-dyngroup \
            --enable-dynlist \
            --enable-ppolicy \
            --enable-valsort &&
make depend &&
make

To test the results, issue: make test.

Now, as the root user:

make install &&
chmod -v 755 /usr/lib/libl*-2.3.so.0.2.15 &&
install -v -m755 -d /usr/share/doc/openldap-2.3.27/{drafts,guide,rfc} &&
install -v -m644 doc/drafts/* /usr/share/doc/openldap-2.3.27/drafts &&
install -v -m644 doc/rfc/*    /usr/share/doc/openldap-2.3.27/rfc &&
cp -v -R doc/guide/*          /usr/share/doc/openldap-2.3.27/guide

Command Explanations

--libexecdir=/usr/sbin: Installs the slapd and slurpd daemon programs in /usr/sbin instead of /usr/libexec.

--sysconfdir=/etc: Sets the configuration file directory to avoid the default of /usr/etc.

--localstatedir=/srv/ldap: Sets the directory to use for the LDAP directory database, replication logs and run-time variable data.

--disable-debug: Disable debugging code.

--enable-dynamic: This forces the OpenLDAP libraries to be dynamically linked to the executable programs.

--enable-crypt: Enables crypt(3) passwords.

--enable-modules: Enables dynamic module support.

--enable-ldap: Enables the slapd LDAP backend.

--enable-ldbm: Build slapd with the primary database back end using either Berkeley DB or GNU Database Manager.

--enable-dyngroup: Enables the slapd dynamic group overlay.

--enable-dynlist: Enables the slapd dynamic list overlay.

--enable-ppolicy: Enables the slapd password policy overlay.

--enable-valsort: Enables the slapd value sorting overlay.

make test: Validates the correct build of the package. If you've enabled tcp_wrappers, ensure you add 127.0.0.1 to the slapd line in the /etc/hosts.allow file if you have a restrictive /etc/hosts.deny file.

chmod -v 755 /usr/lib/libl*-2.3.so.0.2.15: This command adds the executable bit to the shared libraries.

--disable-bdb --disable-hdb --with-ldbm-api=gdbm: Pass these parameters to the configure command if you wish to use GDBM instead of Berkeley DB as the primary backend database.

Note

Run ./configure --help to see if there are other parameters you can pass to the configure command to enable other options or dependency packages.

Configuring OpenLDAP

Config Files

/etc/openldap/*

Configuration Information

Configuring the slapd and slurpd servers can be complex. Securing the LDAP directory, especially if you are storing non-public data such as password databases, can also be a challenging task. You'll need to modify the /etc/openldap/slapd.conf and /etc/openldap/ldap.conf files to set up OpenLDAP for your particular needs.

Resources to assist you with topics such as choosing a directory configuration, backend and database definitions, access control settings, running as a user other than root and setting a chroot environment include:

Utilizing GDBM

To utilize GDBM as the database backend, the “database” entry in /etc/openldap/slapd.conf must be changed from “bdb” to “ldbm”. You can use both by creating an additional database section in /etc/openldap/slapd.conf.

Mozilla Address Directory

By default, LDAPv2 support is disabled in the slapd.conf file. Once the database is properly set up and Mozilla is configured to use the directory, you must add allow bind_v2 to the slapd.conf file.

Boot Script

To automate the startup of the LDAP server at system bootup, install the /etc/rc.d/init.d/openldap init script included in the blfs-bootscripts-20060910 package using the following command:

make install-openldap1

Note: The init script you just installed only starts the slapd daemon. If you wish to also start the slurpd daemon at system startup, install a modified version of the script using this command:

make install-openldap2

Note

The init script starts the daemons without any parameters. You'll need to modify the script to include the parameters needed for your specific configuration. See the slapd and slurpd man pages for parameter information.

Testing the Configuration

Start the LDAP server using the init script:

/etc/rc.d/init.d/openldap start

Verify access to the LDAP server with the following command:

ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts

The expected result is:

# extended LDIF
#
# LDAPv3
# base <> with scope base
# filter: (objectclass=*)
# requesting: namingContexts
#

#
dn:
namingContexts: dc=my-domain,dc=com

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1

Contents

Installed Programs: ldapadd, ldapcompare, ldapdelete, ldapmodify, ldapmodrdn, ldappasswd, ldapsearch, ldapwhoami, slapadd, slapcat, slapd, slapdn, slapindex, slappasswd, slaptest, and slurpd
Installed Libraries: liblber.{so,a}, libldap.{so,a}, and libldap_r.{so,a}
Installed Directories: /etc/openldap, /srv/ldap, and /usr/share/openldap

Short Descriptions

ldapadd

opens a connection to an LDAP server, binds and adds entries.

ldapcompare

opens a connection to an LDAP server, binds and performs a compare using specified parameters.

ldapdelete

opens a connection to an LDAP server, binds and deletes one or more entries.

ldapmodify

opens a connection to an LDAP server, binds and modifies entries.

ldapmodrdn

opens a connection to an LDAP server, binds and modifies the RDN of entries.

ldappasswd

is a tool to set the password of an LDAP user.

ldapsearch

opens a connection to an LDAP server, binds and performs a search using specified parameters.

ldapwhoami

opens a connection to an LDAP server, binds and displays whoami information.

slapadd

is used to add entries specified in LDAP Directory Interchange Format (LDIF) to an LDAP database.

slapcat

is used to generate an LDAP LDIF output based upon the contents of a slapd database.

slapd

is the stand-alone LDAP server.

slapdn

checks a list of string-represented DNs based on schema syntax.

slapindex

is used to regenerate slapd indices based upon the current contents of a database.

slappasswd

is an OpenLDAP password utility.

slaptest

checks the sanity of the slapd.conf file.

slurpd

is the stand-alone LDAP replication server.

liblber.{so,a}

is a set of lightweight Basic Encoding Rules routines. These routines are used by the LDAP library routines to encode and decode LDAP protocol elements using the (slightly simplified) Basic Encoding Rules defined by LDAP. They are not normally used directly by an LDAP application program except in the handling of controls and extended operations.

libldap.{so,a}

supports the LDAP programs and provide functionality for other programs interacting with LDAP.

libldap_r.{so,a}

contains the functions required by the LDAP programs to produce the results from LDAP requests.

rsync-2.6.8

Introduction to rsync

The rsync package contains the rsync utility. This is useful for synchronizing large file archives over a network.

Package Information

rsync Dependencies

Optional

popt-1.10.4 and DocBook-utils-0.6.14

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/rsync

Installation of rsync

For security reasons, running the rsync server as an unprivileged user and group is encouraged. If you intend to run rsync as a daemon, create the rsyncd user and group with the following commands issued by the root user:

groupadd -g 48 rsyncd &&
useradd -c "rsyncd Daemon" -d /home/rsync -g rsyncd \
    -s /bin/false -u 48 rsyncd

Install rsync by running the following commands:

./configure --prefix=/usr &&
make

If you have DocBook-Utils installed and wish to build HTML documentation, issue:

cd doc &&
docbook2html rsync.sgml &&
cd ..

To test the results, issue: make check.

Now, as the root user:

make install

If you built the HTML documentation, install it using the following commands as the root user:

install -v -m755 -d /usr/share/doc/rsync-2.6.8 &&
install -v -m644 doc/*.html /usr/share/doc/rsync-2.6.8

Configuring rsync

Config Files

/etc/rsyncd.conf

Configuration Information

For client access to remote files, you may need to install the OpenSSH-4.5p1 package to connect to the remote server.

This is a simple download-only configuration to set up running rsync as a server. See the rsyncd.conf(5) man-page for additional options (i.e., user authentication).

cat > /etc/rsyncd.conf << "EOF"
# This is a basic rsync configuration file
# It exports a single module without user authentication.

motd file = /home/rsync/welcome.msg
use chroot = yes

[localhost]
    path = /home/rsync
    comment = Default rsync module
    read only = yes
    list = yes
    uid = rsyncd
    gid = rsyncd

EOF

You can find additional configuration information and general documentation about rsync at http://rsync.samba.org/documentation.html.

Boot Script

Note that you only want to start the rsync server if you want to provide an rsync archive on your local machine. You don't need this script to run the rsync client.

Install the /etc/rc.d/init.d/rsyncd init script included in the blfs-bootscripts-20060910 package.

make install-rsyncd

Contents

Installed Program: rsync
Installed Libraries: None
Installed Directories: Optionally, /usr/share/doc/rsync-2.6.8

Short Descriptions

rsync

is a replacement for rcp (and scp) that has many more features. It uses the “rsync algorithm” which provides a very fast method of syncing remote files. It does this by sending just the differences in the files across the link, without requiring that both sets of files are present at one end of the link beforehand.

Running a CVS Server

Running a CVS Server

This section will describe how to set up, administer and secure a CVS server.

CVS Server Dependencies

Required

CVS-1.11.22 and OpenSSH-4.5p1

Setting up a CVS Server.

A CVS server will be set up using OpenSSH as the remote access method. Other access methods, including :pserver: and :server: will not be used for write access to the CVS repository. The :pserver: method sends clear text passwords over the network and the :server: method is not supported in all CVS ports. Instructions for anonymous, read only CVS access using :pserver: can be found at the end of this section.

Configuration of the CVS server consists of four steps:

1. Create a Repository.

Create a new CVS repository with the following commands:

mkdir /srv/cvsroot &&
chmod 1777 /srv/cvsroot &&
export CVSROOT=/srv/cvsroot &&
cvs init

2. Import Source Code Into the Repository.

Import a source module into the repository with the following commands, issued from a user account on the same machine as the CVS repository:

cd <sourcedir> &&
cvs import -m "<repository test>" <cvstest> <vendortag> <releasetag>

3. Verify Local Repository Access.

Test access to the CVS repository from the same user account with the following command:

cvs co cvstest

4. Verify Remote Repository Access.

Test access to the CVS repository from a remote machine using a user account that has ssh access to the CVS server with the following commands:

Note

Replace <servername> with the IP address or host name of the CVS repository machine. You will be prompted for the user's shell account password before CVS checkout can continue.

export CVS_RSH=/usr/bin/ssh &&
cvs -d:ext:<servername>:/srv/cvsroot co cvstest

Configuring CVS for Anonymous Read Only Access.

CVS can be set up to allow anonymous read only access using the :pserver: method by logging on as root and executing the following commands:

(grep anonymous /etc/passwd || useradd anonymous -s /bin/false -u 98) &&
echo anonymous: > /srv/cvsroot/CVSROOT/passwd &&
echo anonymous > /srv/cvsroot/CVSROOT/readers

If you use inetd, the following command will add the CVS entry to /etc/inetd.conf:

echo "2401  stream  tcp  nowait  root  /usr/bin/cvs cvs -f \
    --allow-root=/srv/cvsroot pserver" >> /etc/inetd.conf

Issue a killall -HUP inetd to reread the changed inetd.conf file.

If you use xinetd, the following command will create the CVS file as /etc/xinetd.d/cvspserver:

cat >> /etc/xinetd.d/cvspserver << "EOF"
# Begin /etc/xinetd.d/cvspserver

     service cvspserver
     {
          port        = 2401
          socket_type = stream
          protocol    = tcp
          wait        = no
          user        = root
          passenv     = PATH
          server      = /usr/bin/cvs
          server_args = -f --allow-root=/srv/cvsroot pserver
     }

# End /etc/xinetd.d/cvspserver
EOF

Issue a /etc/rc.d/init.d/xinetd reload to reread the changed xinetd.conf file.

Testing anonymous access to the new repository requires an account on another machine that can reach the CVS server via network. No account on the CVS repository is needed. To test anonymous access to the CVS repository, log in to another machine as an unprivileged user and execute the following command:

cvs -d:pserver:anonymous@<servername>:/srv/cvsroot co cvstest

Note

Replace <servername> with the IP address or hostname of the CVS server.

Command Explanations

mkdir /srv/cvsroot: Create the CVS repository directory.

chmod 1777 /srv/cvsroot: Set sticky bit permissions for CVSROOT.

export CVSROOT=/srv/cvsroot: Specify new CVSROOT for all cvs commands.

cvs init: Initialize the new CVS repository.

cvs import -m "repository test" cvstest vendortag releasetag: All source code modules must be imported into the CVS repository before use, with the cvs import command. The -m flags specifies an initial descriptive entry for the new module. The cvstest parameter is the name used for the module in all subsequent cvs commands. The vendortag and releasetag parameters are used to further identify each CVS module and are mandatory whether used or not.

(grep anonymous /etc/passwd || useradd anonymous -s /bin/false -u 98): Check for an existing anonymous user and create one if not found.

echo anonymous: > /srv/cvsroot/CVSROOT/passwd: Add the anonymous user to the CVS passwd file, which is unused for anything else in this configuration.

echo anonymous > /srv/cvsroot/CVSROOT/readers: Add the anonymous user to the CVS readers file, a list of users who have read only access to the repository.

Contents

Installed Programs: None
Installed Libraries: None
Installed Directories: /srv/cvsroot

Running a Subversion Server

Running a Subversion Server

This section will describe how to set up, administer and secure a Subversion server.

Note

The default build instructions for Subversion disabled the Berkeley DB repository back-end due to the errors encountered in the test suite while building the Subversion-1.3.1 package. This should not present a functionality issue as the FSFS repository back-end is now the default, and recommended by the Subversion development team.

If you have existing repositories based on a Berkeley DB back-end and you followed the BLFS instructions for building Subversion, you'll need to dump the databases, create new repositories using the FSFS back-end, then then reload the data into the new repositories. Instructions for performing these operations can be found at http://svnbook.red-bean.com/en/1.1/ch05s03.html#svn-ch-5-sect-3.5.

Subversion Server Dependencies

Required

Subversion-1.3.1 and OpenSSH-4.5p1

Setting up a Subversion Server.

The following instructions will install a Subversion server, which will be set up to use OpenSSH as the secure remote access method, with svnserve available for anonymous access.

Configuration of the Subversion server consists of the following steps:

1. Setup Users, Groups, and Permissions

You'll need to be user root for the initial portion of configuration. Create the svn user and group with the following commands:

groupadd -g 56 svn &&
useradd -c "SVN Owner" -d /home/svn -m -g svn -s /bin/false -u 56 svn

If you plan to have multiple repositories, you should have a group dedicated to each repository for ease of administration. Create the svntest group for the test repository and add the svn user to that group with the following commands:

groupadd -g 57 svntest &&
usermod -G svntest svn

Additionally you should set umask 002 while working with a repository so that all new files will be writable by owner and group. This is made mandatory by creating a wrapper script for svn and svnserve:

mv /usr/bin/svn /usr/bin/svn.orig &&
mv /usr/bin/svnserve /usr/bin/svnserve.orig &&
cat >> /usr/bin/svn << "EOF"
#!/bin/sh
umask 002
/usr/bin/svn.orig "$@"
EOF
cat >> /usr/bin/svnserve << "EOF"
#!/bin/sh
umask 002
/usr/bin/svnserve.orig "$@"
EOF
chmod 0755 /usr/bin/svn{,serve}

Note

If you use Apache for working with the repository over HTTP, even for anonymous access, you should wrap /usr/sbin/httpd in a similar script.

2. Create a Subversion repository.

With subversion-1.1.0 and greater, a new type of repository data-store is available, FSFS. There is a tradeoff for speed with the new backend, however, the repository can now be placed on a network mount, and any corruption does not require an admin to recover the repository. For more information and comparison between FSFS and BDB, see http://svnbook.red-bean.com/svnbook-1.1/ch05.html#svn-ch-5-sect-1.2.A.

Create a new Subversion repository with the following commands:

install -v -m 0755 -d /srv &&
install -v -m 0755 -o svn -g svn -d /srv/svn/repositories &&
svnadmin create --fs-type fsfs /srv/svn/repositories/svntest

Now that the repository is created, it should be populated with with something useful. You'll need to have a predefined directory layout set up exactly as you want your repository to look. For example, here is a sample BLFS layout setup with a root of svntest/. You'll need to setup a directory tree similar to the following:

          svntest/            # The name of the repository
             trunk/           # Contains the existing source tree
                BOOK/
                bootscripts/
                edguide/
                patches/
                scripts/
             branches/        # Needed for additional branches
             tags/            # Needed for tagging release points

Once you've created your directory layout as shown above, you are ready to do the initial import:

svn import -m "Initial import." \
    </path/to/source/tree> \
    file:///srv/svn/repositories/svntest

Now change owner and group information on the repository, and add an unprivileged user to the svn and svntest groups:

chown -R svn:svntest /srv/svn/repositories/svntest &&
chmod -R g+w /srv/svn/repositories/svntest &&
chmod g+s /srv/svn/repositories/svntest/db &&
usermod -G svn,svntest,<insert existing groups> <username>

svntest is the group assigned to the svntest repository. As mentioned earlier, this eases administration of multiple repositories when using OpenSSH for authentication. Going forward, you'll need to add your unprivileged user, and any additional users that you wish to have write access to the repository, to the svn and svntest groups.

In addition, you'll notice that the new repository's db directory is set-groupID. If the reasoning is not immediately obvious, when using any external authentication method (such as ssh), the sticky bit is set so that all new files will be owned by the user, but group of svntest. Anyone in the svntest group can create files, but still give the entire group write access to those files. This avoids locking out other users from the repository.

Now, return to an unprivileged user account, and take a look at the new repository using svnlook:

svnlook tree /srv/svn/repositories/svntest/

Note

You may need to log out and back in again to refresh your group memberships. 'su <username>' should work around this as well.

3. Configure the Server

As mentioned previously, these instructions will configure the server to use only ssh for write access to the repository and to provide anonymous access using svnserve. There are several other ways to provide access to the repository. These additional configurations are best explained at http://svnbook.red-bean.com/.

Access configuration needs to be done for each repository. Create the svnserve.conf file for the svntest repository using the following commands:

cp /srv/svn/repositories/svntest/conf/svnserve.conf \
    /srv/svn/repositories/svntest/conf/svnserve.conf.default &&
cat > /srv/svn/repositories/svntest/conf/svnserve.conf << "EOF"
[general]
anon-access = read
auth-access = write
EOF

There is not a lot to the configuration file at all. You'll notice that only the general section is required. Take a look at the svnserve.conf.default file for information on using svnserve's built-in authentication method.

4. Starting the Server

There are a couple of ways to start svnserve. The most common way is to start it as an inetd or xinetd process. Alternately, you can use a bootscript to start the service at startup.

Note

If you do not wish to provide anonymous access to your svn repositories or use svnserve's built-in authentication, you do not need to run svnserve.

If you use inetd, add a line to /etc/inetd.conf using the following commands:

cat >> /etc/inetd.conf << "EOF"
svn stream tcp nowait svn /usr/bin/svnserve svnserve -i
EOF

If you use xinetd, the following command will create the Subversion server file as /etc/xinetd.d/svn:

cat >> /etc/xinetd.d/svn << "EOF"
# Begin /etc/xinetd.d/svn

service svn
{
        port                    = 3690
        socket_type             = stream
        protocol                = tcp
        wait                    = no
        user                    = svn
        server                  = /usr/bin/svnserve
        server_args             = -i -r /srv/svn/repositories
}

# End /etc/xinetd.d/svn
EOF

Finally, if you wish to simply start the server at startup, install the svn bootscript included in the blfs-bootscripts-20060910 package.

make install-svn

Part VII. X + Window Managers

Chapter 25. X Window System Environment

This chapter contains instructions to build and configure a graphical user environment. You will need to choose one of the three packages in BLFS that implements the X Window System: Xorg X11R6 or X11R7 (Xorg-6.9.0 or Xorg-7.1), or XFree86 (XFree86). These packages are all quite similar. In fact, the base system of Xorg is XFree86-4.4.0RC2. Differences in the licensing philosophies was the original reason for the split.

A second reason for the forking of X packages is the stated goals of the developers. Some developers were unhappy with the administration and progress of XFree86. The X.org Foundation's future plans include significant improvements to the internals of the system and more frequent releases.

Xorg-7.1 introduces a completely autotooled build system, but is otherwise the same codebase as Xorg-6.9.0. Most large commercial distributions have decided to use the Xorg package, but several still provide XFree86.

XFree86 continues to be a solid, conservative application with excellent driver support.

Traditional X Window System

Xorg-6.9.0

Introduction to Xorg

Xorg is a freely redistributable open-source implementation of the X Window System. This system provides a client/server interface between display hardware (the mouse, keyboard, and video displays) and the desktop environment, while also providing both the windowing infrastructure and a standardized application interface (API).

Package Information

Additional Downloads

Xorg Dependencies

Required

libpng-1.2.12 and Fontconfig-2.3.2

Optional

Linux-PAM-0.99.4.0

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/Xorg

Download Instructions

As an alternative to downloading the entire source tree in a single file, there are several smaller files that can be fetched from the download location (directory /pub/X11R6.9.0/src/):

  • X11R6.9.0-src1.tar.gz

  • X11R6.9.0-src2.tar.gz

  • X11R6.9.0-src3.tar.gz

  • X11R6.9.0-src4.tar.gz

  • X11R6.9.0-src5.tar.gz

  • X11R6.9.0-src6.tar.gz

  • X11R6.9.0-src7.tar.gz

The first package contains the Xorg libraries and support programs, the second contains standard X programs, the third contains the X server, the fourth and fifth are fonts, the sixth is normal documentation, and the seventh is hardcopy documentation.

To check the files for integrity, download the md5sums file. Then:

md5sum -c md5sums

For each file you downloaded, an OK status should be displayed.

Kernel Configuration

If you have an Intel P6 (Pentium Pro, Pentium II and later), it is recommended that you compile MTRR (Memory Type Range Registers) support into the kernel. The kernel can map Cyrix and AMD CPUs to the MTRR interface, so selecting this option is useful for those processors also. This option is found in the "Processor type and features" menu. It can increase performance of image write operations 2.5 times or more on PCI or AGP video cards.

In the "Character Devices" section of the "Device Drivers" menu, enable AGP Support and select the chipset support on your motherboard. If you do not know the chipset, you may select all the chip types at the expense of extra kernel size. You can usually determine your motherboard's chipset by running the command lspci, a program from the PCI Utilities-2.2.3 package.

In the "Character Devices" section, disable Direct Rendering Manager unless you have a Direct Rendering Infrastructure (DRI) supported video card. A complete list of DRI supported video cards can be found at http://dri.sourceforge.net in the "Status" section. Currently, supported cards include those from 3dfx (Voodoo, Banshee), 3Dlabs, ATI (Rage Pro, Rage 128, Radeon 7X00, Radeon 2), Intel (i810, i815), and Matrox (G200, G400, G450).

Additionally, NVidia provides their own closed source binary drivers, which do not make use of DRI. If you intend to use these drivers, do not enable DRI.

If you made any changes to the kernel configuration, recompile and install the new kernel.

Installation of Xorg

Various build fixes

The Xorg sources must be patched in order to avoid a race condition with the luit program. Additionally, Xorg contains 5 security vulnerabilities. Fix these issues with the following commands:

patch -Np1 -i ../xorg-6.9.0-luit_race-1.patch &&
patch -Np1 -i ../xorg-6.9.0-security-4.patch

Additionally, if you choose to install Xorg to any prefix other than /usr/X11R6, the luit package needs another correction to fix a hard coded path. Execute the following command:

sed -i 's@/usr/X11R6@</usr>@' programs/luit/parser.h

Suppressing Xprint-related Modification to '/etc'

Xorg insists on putting its boot and profile scripts into the /etc directory even if specifically told not to compile anything Xprint server or client related (see host.def below). The following command will suppress any such modifications:

sed -i '/^SUBDIRS =/s/ etc$//' programs/Xserver/Xprint/Imakefile

Setting Up a Shadow Directory

When building Xorg, you should create a shadow directory of symbolic links for the compiled code. To do that, first make lndir. Starting from the xc directory:

pushd config/util &&
make -f Makefile.ini lndir
popd

Now create the shadow tree:

mkdir ../xcbuild &&
cd ../xcbuild &&
../xc/config/util/lndir ../xc

Creating 'host.def'

The next step is to create the config/cf/host.def file. The documentation for Xorg indicates that the application will build without a host.def file, but the included libraries for Fontconfig and FreeType2 do not build properly on a base LFS system. Therefore, you must specify that these libraries, as well as others, should be imported from the system.

Note

config/cf/host.def is a C file, not a shell script. Ensure the comments delimited by /* ... */ are balanced when modifying the file.

cat > config/cf/host.def << "EOF"
/* Begin Xorg host.def file */

/* System Related Information.  If you read and configure only one
 * section then it should be this one.  The Intel architecture defaults
 * are set for a i686 and higher.  Axp is for the Alpha architecture
 * and Ppc is for the Power PC.  AMD64 is for the Opteron processor.
 * Note that there have been reports that the Ppc optimization line
 * causes segmentation faults during build.  If that happens, try
 * building without the DefaultGcc2PpcOpt line.  ***********/

/* #define DefaultGcc2i386Opt  -O2 -fno-strength-reduce \
                               -fno-strict-aliasing -march=i686 */
/* #define DefaultGcc2AMD64Opt -O2 -fno-strength-reduce \
                               -fno-strict-aliasing */
/* #define DefaultGcc2AxpOpt   -O2 -mcpu=ev6 */
/* #define DefaultGcc2PpcOpt   -O2 -mcpu=750 */

#define HasFreetype2            YES
#define HasFontconfig           YES
#define HasExpat                YES
#define HasLibpng               YES
#define HasZlib                 YES

/* Uncomment the following define if you'd like
 * xdm to use Linux-PAM
#define HasPam                  YES
 */

/*
 * Which drivers to build.  When building a static server, each of
 * these will be included in it.  When building the loadable server
 * each of these modules will be built.
 *
#define XF86CardDrivers         mga glint nv tga s3virge sis rendition \
                                neomagic i740 tdfx savage \
                                cirrus vmware tseng trident chips apm \
                                GlideDriver fbdev i128 \
                                ati DevelDrivers ark \
                                cyrix siliconmotion vesa vga \
                                XF86OSCardDrivers XF86ExtraCardDrivers
*/

/*
 * Select the XInput devices you want by uncommenting this.
 *
#define XInputDrivers           mouse keyboard acecad calcomp citron \
                                digitaledge dmc dynapro elographics \
                                microtouch mutouch penmount spaceorb \
                                summa wacom void magictouch aiptek
 */

/* Most installs will only need this */

#define XInputDrivers           mouse keyboard

/* Xterm is no longer built by default */
#define BuildXterm              YES

/* Disable building Xprint server and clients until we get them figured
 * out but build Xprint libraries to allow precompiled binaries such as
 * Acrobat Reader to run.
 */

#define XprtServer              NO
#define BuildXprintClients      NO

/* Uncomment the following define if you would prefer to install X into
 * /usr or change it to any other location that you prefer.
 * The GL related defines disable compatibility symlinks (the links
 * are not needed when X is installed in /usr).
#define ProjectRoot             /usr
#define LinkGLToUsrInclude      NO
#define LinkGLToUsrLib          NO
 */

/* End Xorg host.def file */
EOF

There are several other options that you may want to consider. A well documented example file is config/cf/xorgsite.def.

Build Commands

Install Xorg by running the following commands:

sed -i -e "s@^#include <linux/config.h>@/* & */@" \
    `grep -lr linux/config.h *` &&
( make World 2>&1 | tee xorg-compile.log && exit $PIPESTATUS )

This package does not come with a test suite.

Now, as the root user:

make install &&
make install.man

If you've installed Xorg in the default prefix listed above, run the following commands as the root user:

ln -v -s ../X11R6/bin /usr/bin/X11 &&
ln -v -s ../X11R6/lib/X11 /usr/lib/X11 &&
ln -v -s ../X11R6/include/X11 /usr/include/X11

The Xorg fonts have been installed outside of Fontconfig's default search path of /usr/share/fonts. In order for Fontconfig to find the installed TrueType fonts, you should make symlinks to their directories. Assuming you've installed Xorg in the default prefix, run the following commands as the root user:

install -v -d -m755 /usr/share/fonts &&
ln -svn /usr/X11R6/lib/X11/fonts/TTF /usr/share/fonts/X11-TTF

You should now continue on to the X Window System Components section to complete the configuration of Xorg.

Command Explanations

sed -i -e "s@^#include <linux/config.h>@...: The Linux-Libc-Headers package installed in LFS installs a /usr/include/linux/config.h file which is not compatible with userspace applications. The recommended fix for applications including this file is to remove it (see linux-libc-headers FAQ). The sed uses grep -lr to replace all occurrences. If you desire, just remove (comment) the line in the appropriate video driver file if you customized host.def.

( make World 2>&1 | tee xorg-compile.log && exit $PIPESTATUS ): This command runs multiple Makefiles to completely rebuild the system. 2>&1 redirects error messages to the same location as standard output. The tee command allows viewing of the output while logging the results to a file. The parentheses around the command runs the entire command in a subshell and finally the exit $PIPESTATUS ensures the result of the make is returned as the result and not the result of the tee command.

Note

When rebuilding Xorg, a separate command that may be used if only minor changes are made to the sources is make Everything. This does not automatically remove generated files and only rebuilds those files or programs that are out of date.

ln -v -s ...: These commands are present to enable other (broken) packages to build against Xorg, even though the Filesystem Hierarchy Standard says: “In general, software must not be installed or managed via the above symbolic links. They are intended for utilization by users only.

For a list of the package contents, see the sections in the XFree86 Contents and Descriptions.

XFree86-4.6.0

Introduction to XFree86

XFree86 is a freely redistributable open-source implementation of the X Window System. XFree86 provides a client/server interface between display hardware (the mouse, keyboard, and video displays) and the desktop environment, while also providing both the windowing infrastructure and a standardized application interface (API).

Package Information

XFree86 Dependencies

Required

libpng-1.2.12

Optional

Linux-PAM-0.99.4.0; the following packages are included in the XFree86 package, however they are updated more often than the XFree86 package and are highly recommended: expat-2.0.0, FreeType-2.1.10, Fontconfig-2.3.2.

Note

If you choose not to install expat, FreeType2, and Fontconfig, the host.def file below will have to be modified to instruct XFree86 to build them.

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/XFree86

Download Instructions

There are several files that need to be fetched from the download location:

  • XFree86-4.6.0-src-1.tgz

  • XFree86-4.6.0-src-2.tgz

  • XFree86-4.6.0-src-3.tgz

  • XFree86-4.6.0-src-4.tgz

  • XFree86-4.6.0-src-5.tgz

  • XFree86-4.6.0-src-6.tgz

  • XFree86-4.6.0-src-7.tgz

The first three packages are the XFree86 programs, the fourth and fifth are fonts, the sixth is normal documentation, and the seventh is hardcopy documentation.

To check your downloads for integrity, download the SUMS.md5sum file. Then:

md5sum -c SUMS.md5sum

The only errors you should see are for README, doctools-1.3.x.tgz, utils-1.1.x.tgz and XFree86-xtest-4.0.x.tar.bz2 files if you did not download them.

Kernel Configuration

If you have an Intel P6 (Pentium Pro, Pentium II and later), it is recommended that you compile MTRR (Memory Type Range Registers) support into the kernel. The kernel can map Cyrix and AMD CPUs to the MTRR interface, so selecting this option is useful for those processors also. This option is found in the "Processor type and features" menu. It can increase performance of image write operations 2.5 times or more on PCI or AGP video cards.

In the "Character Devices" section, enable AGP Support and select the chipset support on your motherboard. If you do not know the chipset, you may select all the chip types at the expense of extra kernel size. You can usually determine your motherboard's chipset by running the command lspci, a program from the PCI Utilities-2.2.3 package.

In the "Character Devices" section, disable Direct Rendering Manager unless you have a Direct Rendering Infrastructure (DRI) supported video card. A complete list of DRI supported video cards can be found at http://dri.sourceforge.net in the Status section. Currently, supported cards include those from 3dfx (Voodoo, Banshee), 3Dlabs, ATI (Rage Pro, Rage 128, Radeon 7X00, Radeon 2), Intel (i810, i815), and Matrox (G200, G400, G450).

Additionally NVidia provides their own closed source binary drivers, which do not make use of DRI. If you intend to use these drivers, do not enable DRI.

If you made any changes to the kernel configuration, recompile and install the new kernel.

Installation of XFree86

Glibc build fix

Xfree86 may have a problem with sys/kd.h installed with some recent versions of Glibc. This has recently been fixed in LFS SVN. Execute the following commands to work around a broken kd.h file. The grep command is to ensure the modification is only made if it is needed. Run these commands from within the xc folder:

grep "__undef_LINUX" \
    /usr/include/sys/kd.h 2>&1 > /dev/null || \
    sed -i.bak '/X.h/i #include <linux/types.h>' \
    programs/Xserver/hw/xfree86/os-support/linux/lnx_agp.c

Setting Up a Shadow Directory

When building XFree86, you should create a shadow directory of symbolic links for the compiled code. To do that, first make lndir. Starting from the xc directory:

make -C config/util -f Makefile.ini lndir

Now create the shadow tree:

mkdir ../xcbuild &&
cd ../xcbuild &&
../xc/config/util/lndir ../xc

Creating 'host.def'

Although XFree86 will compile without a host.def file, the following file is recommended for customizing the installation. Start from the xcbuild directory.

Note

The host.def file is a C file, not the usual configuration file. If you make any changes, be sure the comment characters (/* and */) are balanced. Most of the entries in the file below are commented out with the default settings shown.

cat > config/cf/host.def << "EOF"
/* Begin XFree86 host.def file */

/* This setting reduces compile time a little by omitting rarely used
 * input devices.  You can find the complete list in
 * config/cf/xfree86.cf *********************************************/

#define XInputDrivers                 mouse void

/* VIDEO DRIVERS ****************************************************
 * If you are sure you only want the drivers for one or a few video
 * cards, you can delete the drivers you do not want. ***************/

#define XF86CardDrivers  mga glint nv tga s3 s3virge sis rendition \
                         neomagic i740 tdfx savage \
                         cirrus vmware tseng trident chips apm \
                         GlideDriver fbdev i128 nsc \
                         ati i810 DevelDrivers ark \
                         cyrix siliconmotion \
                         v4l vesa vga \
                         dummy XF86OSCardDrivers XF86ExtraCardDrivers

/* These settings ensure we use our libraries ************************/
#define HasFreetype2             YES
#define HasFontconfig            YES
#define HasExpat                 YES
#define HasLibpng                YES
#define HasZlib                  YES

/* Uncomment the following define if you'd like
 * xdm to use Linux-PAM
#define HasPam                  YES
 */

/* GENERAL SETTINGS */

#define SystemManDirectory        /usr/share/man
#define DocDir                    /usr/share/doc/xfree86-4.6.0

/* Installation prefix. The default is to install into /usr/X11R6. If you
 * would like to install into /usr, uncomment these options. */

/* #define ProjectRoot            /usr */
/* #define LinkGLToUsrLib         NO   */
/* #define LinkGLToUsrInclude     NO   */

/* End XFree86 host.def file */
EOF

Edit the file for your hardware and desires. You can find more options by reading the other files in xc/config/cf and on the wiki. http://wiki.linuxfromscratch.org/blfs/wiki/XFree86-4.6.0

Build Commands

Install XFree86 by running the following commands:

sed -i 's:^.*asm.*$:# define PAGE_MASK   (~(getpagesize() - 1)):' \
    ../xc/programs/Xserver/hw/xfree86/fbdevhw/fbdevhw.c &&
sed -i -e "s@^#include <linux/config.h>@/* & */@" \
    `grep -lr linux/config.h ../xc` &&
( make World 2>&1 | tee xfree-compile.log && exit $PIPESTATUS )

This package does not come with a test suite.

Now, as the root user:

make install &&
make install.man

If you installed XFree86 into the default prefix, /usr/X11R6, make these symlinks to work around some applications which look for things in the wrong place. As root:

ln -v -s ../X11R6/bin /usr/bin/X11 &&
ln -v -s ../X11R6/lib/X11 /usr/lib/X11 &&
ln -v -s ../X11R6/include/X11 /usr/include/X11

The XFree86 fonts have been installed outside of Fontconfig's default search path of /usr/share/fonts. In order for Fontconfig to find the installed TrueType fonts, you should make symlinks to their directories. If you installed XFree86 with the prefix /usr, omit /X11R6 from the following commands. As root:

install -d -m755 /usr/share/fonts &&
ln -svn /usr/X11R6/lib/X11/fonts/OTF /usr/share/fonts/X11-OTF &&
ln -svn /usr/X11R6/lib/X11/fonts/TTF /usr/share/fonts/X11-TTF

XFree86 installs the XRender and XExtensions extension libraries but does not install the corresponding pkg-config files. Create the files with these commands. If you installed XFree86 with the prefix /usr, omit /X11R6 from the paths. As root:

cat > /usr/X11R6/lib/pkgconfig/xrender.pc << "EOF"
prefix=/usr/X11R6
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

Name: Xrender
Description: X Render Library
Version: 0.8.3
Cflags: -I${includedir} -I/usr/X11R6/include
Libs: -L${libdir} -lXrender  -L/usr/X11R6/lib -lX11

EOF

cat > /usr/X11R6/lib/pkgconfig/xextensions.pc << "EOF"
prefix=/usr/X11R6
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

Name: XExtensions
Description: Sundry X extension headers
Version: 1.0.1
Cflags: -I${includedir}

EOF

You should now continue on to the X Window System Components section to complete the configuration of XFree86.

Command Explanations

sed -i 's:^.*asm.* ... fbdevhw.c: This sed fixes a problem compiling against headers from kernels newer than linux-2.6.8.

sed -i -e "s@^#include <linux/config.h>@...: The Linux-Libc-Headers package installed in LFS installs a /usr/include/linux/config.h file which is not compatible with userspace applications. The recommended fix for applications including this file is to remove it (see linux-libc-headers FAQ). The sed uses grep -lr to replace all occurrences. If you desire, just remove (comment) the line in the appropriate video driver file if you customized host.def.

( make World 2>&1 | tee xfree-compile.log && exit $PIPESTATUS ): This command runs multiple Makefiles to completely rebuild the system. 2>&1 redirects error messages to the same location as standard output. The tee command allows viewing of the output while logging the results to a file. The parentheses around the command runs the entire command in a subshell and finally the exit $PIPESTATUS ensures the result of the make is returned as the result and not the result of the tee command.

Note

When rebuilding XFree86, a separate command that may be used if only minor changes are made to the sources is make Everything. This does not automatically remove generated files and only rebuilds those files or programs that are out of date.

ln -v -s ...: These commands are present to enable other (broken) packages to build against XFree86, even though the Filesystem Hierarchy Standard says: “In general, software must not be installed or managed via the above symbolic links. They are intended for utilization by users only.

Contents

The XFree86 package contains the X Window System for Linux (and other operating systems). It includes the X server, fonts, xterm, a simple window manager (twm), various utilities, video output drivers, and various input drivers including the mouse and keyboard.

XFree86 also contains libraries and header files for development of the X Window System programs.

Note

The following lists are not comprehensive. The full list of programs is (if you install into /usr/X11R6) in /usr/X11R6/bin. For additional information about these programs, see the respective man page.

Installed Programs: XFree86, xf86config, xf86cfg, startx, xinit, twm, xterm, xwininfo, x11perf, xlsfonts, xvidtune, xload, xcalc, xclock, oclock, and xmodmap
Installed Libraries: libGL.so, libGLU.so, libSM.so, libXi.so, libXrender.so, libXt.so, and libXfont.so
Installed Directories: /usr/X11R6/ and /etc/X11/

Short Descriptions

XFree86

is the X11R6 implementation of the X Window System server.

xf86config

is an interactive program for generating an XF86Config file for use with XFree86 X servers.

xf86cfg

is a tool to configure XFree86 that can be used to either write the initial configuration file or make customizations to the current configuration.

startx

is a script to initialize the X session. It runs xinit.

xinit

is used to start the X Window System server.

twm

(Tab Window Manager) is a window manager included with the X Window System.

xterm

is a terminal emulator for X.

xwininfo

is a window information utility for X.

x11perf

is an X11 server performance test program.

xlsfonts

is a program to list fonts available to the X server.

xvidtune

is a video mode tuner for XFree86.

xload

is a system load average display for X.

xcalc

is a scientific calculator for X.

xclock

is a clock programs for X.

oclock

is a clock programs for X.

xmodmap

is a utility for modifying keymaps and pointer button mappings in X.

Modular X Window System

Introduction to Xorg-7.1

Xorg is a freely redistributable, open-source implementation of the X Window System. This system provides a client/server interface between display hardware (the mouse, keyboard, and video displays) and the desktop environment, while also providing both the windowing infrastructure and a standardized application interface (API).

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/Xorg7

Xorg Download and Installation Instructions

Xorg-7.0.0 introduced a completely auto-tooled, modular build system. With the new modular build system, it is no longer possible to download the entire package in a single file. In fact, there may be as many as 293 files that need to be fetched from the download location. To assist with such a large task, installing Wget-1.10.2 is strongly recommended for downloading the needed files. A complete wget file list is provided for each section that includes multiple packages.

Given the number of packages available, deciding which packages you need to install for your particular setup may seem a bit overwhelming at first. Take a look at this thread to get an idea of what you will need. If you are unsure, you should install all packages at the cost of extra disk space.

Note

Even if you intend to download only the necessary packages, you should download the wget file lists. The list of files are ordered by dependency, and the package versions listed in the files are known to work well with each other. Newer packages are likely intended for the next release of Xorg and have already proved to be incompatible with current versions of software installed in BLFS. The installed size of Xorg can be reduced considerably by installing only the packages that you will need and use, however, the BLFS book cannot account for all dependencies and build options for the individual Xorg packages. The instructions assume that all packages have been built. A wiki page containing dependency information is under development. You are encouraged to add to these pages if you discover additional information that may be helpful to other users who selectively install individual packages.

Additionally, because of the large number of repetitive commands, you are encouraged to script the build. For most sections, you can use a script with commands similar to the following, to compile and install all packages in a wget file list:

bash -e #exit on all errors
for package in $(cat ../wgetlist.wget)
do
  packagedir=$(echo $package | sed 's/.tar.bz2//')
  tar -xf $package
  cd $packagedir
  ./configure $XORG_CONFIG
  make
  make install
  cd ..
  rm -rf $packagedir
  rm -f $package
done 2>&1 | tee -a ../xorg-compile.log #log the entire loop

The above shell will exit immediately on error. If it runs to completion, you should manually exit the shell before continuing on to the next set of instructions.

Setting up the Xorg Build Environment

First, you'll need to create a working directory:

mkdir xc &&
cd xc

As with previous releases of the X Window System, it may be desirable to install Xorg into an alternate prefix. This is no longer common practice among Linux distributions. The common installation prefix for Xorg on Linux is /usr. There is no standard alternate prefix, nor is there any exception in the current revision of the Filesystem Hierarchy Standard for Release 7 of the X Window System. Alan Coopersmith of Sun Microsystems, has recently stated "At Sun, we were using /usr/X11 and plan to stick with it." Only the /opt/* prefix or the /usr prefix adhere to the current FHS guidelines.

Choose your installation prefix, and set the XORG_PREFIX variable with the following command:

export XORG_PREFIX="<PREFIX>"

Throughout these instructions, you will use the following configure switches for all of the packages. Create the XORG_CONFIG variable to use for this parameter substitution:

export XORG_CONFIG="--prefix=$XORG_PREFIX --sysconfdir=/etc \
    --mandir=$XORG_PREFIX/share/man --localstatedir=/var"

If you've decided to use an alternate prefix, be sure to add <PREFIX>/bin to your PATH environment variable and <PREFIX>/lib/pkgconfig to your PKG_CONFIG_PATH variable. For detailed instructions, see The Bash Shell Startup Files. You should also add <PREFIX>/lib to the /etc/ld.so.conf file and <PREFIX>/share/man as a MANDATORY_MANPATH in /etc/man_db.conf.

Xorg Protocol Headers

Introduction to Xorg Protocol Headers

The Xorg protocol headers provide the header files required to build the system, and to allow other applications to build against the installed X Window system.

Package Information

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/Xorg7ProtocolHeaders

Downloading Xorg Protocol Headers

To download the needed files using wget, use the following commands:

wget http://anduin.linuxfromscratch.org/files/BLFS/xorg/proto-7.1.wget &&
mkdir proto &&
cd proto &&
wget -B http://xorg.freedesktop.org/releases/individual/proto/ \
     -i ../proto-7.1.wget

Installation of Xorg Protocol Headers

Install the Xorg protocol headers by running the following commands for each package to be installed.

./configure $XORG_CONFIG

These packages do not provide test suites.

Now as the root user:

make install

Contents

Installed Programs: None
Installed Libraries: None
Installed Directories: The following subdirectories of $XORG_PREFIX/: include/X11, include/GL, and lib/pkgconfig

Xorg Utilities

Introduction to Xorg Utilities

The Xorg utility packages provide needed utilities, not for the Xorg installation itself, but for other applications that make use of legacy X11R6 installation methods.

Package Information

Xorg Utilities Dependencies

Required

pkg-config-0.20 and Xorg Protocol Headers

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/Xorg7Utilities

Downloading Xorg Utilities

To download the needed files using wget, use the following commands:

wget http://anduin.linuxfromscratch.org/files/BLFS/xorg/util-7.1.wget &&
mkdir util &&
cd util &&
wget -B http://xorg.freedesktop.org/releases/individual/util/ \
     -i ../util-7.1.wget

Installation of Xorg Utilities

First install the xorg-cf-files package with the following commands:

sed -i "s@/usr/X11R6@$XORG_PREFIX@" X11.tmpl &&
./configure $XORG_CONFIG --with-config-dir=$XORG_PREFIX/lib/X11/config

This package does not come with a test suite.

Now as the root user:

make install

Next, install the Imake package with these commands:

./configure $XORG_CONFIG --with-config-dir=$XORG_PREFIX/lib/X11/config &&
make

This package does not come with a test suite.

Now as the root user:

make install

Finally, build the four remaining packages with the standard build commands:

./configure $XORG_CONFIG &&
make

These packages do not provide test suites.

Now as the root user:

make install

Contents

Installed Programs: ccmakedep, cleanlinks, gccmakedep, imake, lndir, makedepend, makeg, mergelib, mkdirhier, mkhtmlindex, revpath, xmkmf
Installed Libraries: None
Installed Directories: The following subdirectories of $XORG_PREFIX/: bin, lib/X11/config, share/aclocal, and share/man

Short Descriptions

ccmakedep

creates dependencies in makefiles using a C compiler.

cleanlinks

removes dangling symbolic links and empty directories.

gccmakedep

creates dependencies in makefiles using gcc -M.

imake

is a C preprocessor interface to the make utility.

lndir

creates a shadow directory of symbolic links to another directory tree.

makedepend

creates dependencies in makefiles.

makeg

makes a debuggable executable.

mergelib

merges one library into another.

mkdirhier

makes a directory hierarchy.

mkhtmlindex

generates index files for HTML man pages.

revpath

generates a relative path that can be used to undo a changedirectory.

xmkmf

creates a Makefile from an Imakefile.

Xorg Libraries

Introduction to Xorg Libraries

The Xorg libraries provide library routines that are used within all X Window applications.

Package Information

Additional Downloads

Xorg Libraries Dependencies

Required

Ed-0.2, Fontconfig-2.3.2, pkg-config-0.20, and Xorg Protocol Headers

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/Xorg7Libraries

Downloading Xorg Libraries

To download the needed files using wget, use the following commands:

wget http://anduin.linuxfromscratch.org/files/BLFS/xorg/lib-7.1.wget &&
mkdir lib &&
cd lib &&
wget -B http://xorg.freedesktop.org/releases/individual/lib/ \
     -i ../lib-7.1.wget

Installation of Xorg Libraries

Security vulnerabilities have been identified in the libXfont package. Before building this package with the commands shown below, be sure to apply the supplied patch by issuing the following command:

patch -Np1 -i ../libXfont-1.1.0-cidfonts-1.patch

Install the libraries by running the following commands for each of the chosen packages:

./configure $XORG_CONFIG &&
make

These packages do not provide test suites.

Now as the root user:

make install &&
ldconfig

Configuration of Xorg Libraries

If you've chosen to install Xorg into /usr, then no further configuration is necessary and you can skip the rest of this section. If you've opted for an alternate prefix, you should create two symlinks to satisfy the expected environment of several packages. Execute the following commands as the root user:

ln -sv $XORG_PREFIX/lib/X11 /usr/lib/X11 &&
ln -sv $XORG_PREFIX/include/X11 /usr/include/X11

Contents

Installed Programs: cxpm, makestrs, sxpm, xft-config
Installed Libraries: libAppleWM.{so,a}, libdmx.{so,a}, libfontenc.{so,a}, libFS.{so,a}, libICE.{so,a}, liblbxutil.{so,a}, liboldX.{so,a}, libSM.{so,a}, libWindowsWM.{so,a}, libX11.{so,a}, libXau.{so,a}, libXaw6.{so,a}, libXaw7.{so,a}, libXaw8.{so,a}, libXaw.{so,a}, libXcomposite.{so,a}, libXcursor.{so,a}, libXdamage.{so,a}, libXdmcp.{so,a}, libXevie.{so,a}, libXext.{so,a}, libXfixes.{so,a}, libXfontcache.{so,a}, libXfont.{so,a}, libXft.{so,a}, libXinerama.{so,a}, libXi.{so,a}, libxkbfile.{so,a}, libxkbui.{so,a}, libXmu.{so,a}, libXmuu.{so,a}, libXpm.{so,a}, libXprintAppUtil.{so,a}, libXprintUtil.{so,a}, libXp.{so,a}, libXrandr.{so,a}, libXrender.{so,a}, libXRes.{so,a}, libXss.{so,a}, libXTrap.{so,a}, libXt.{so,a}, libXtst.{so,a}, libXvMC.{so,a}, libXvMCW.{so,a}, libXv.{so,a}, libXxf86dga.{so,a}, libXxf86misc.{so,a}, and libXxf86vm.{so,a}
Installed Directory: $XORG_PREFIX/share/X11

Short Descriptions

cxpm

checks the format of an XPM file.

makestrs

makes string table C source and header(s).

sxpm

shows an XPM file and/or converts XPM 1 or 2 files to XPM 3.

xft-config

reports Xft version, compiler, linker, and/or installation directory information.

libAppleWM.{so,a}

is the Apple rootless window management extension.

libdmx.{so,a}

is the X Window System DMX (Distributed Multihead X) extension library.

libfontenc.{so,a}

is the X11 font encoding library.

libFS.{so,a}

is the library interface to the X Font Server.

libICE.{so,a}

is the X Inter Client Exchange Library.

liblbxutil.{so,a}

is the library of LBX utilities.

liboldX.{so,a}

is the interface library to X10 routines.

libSM.{so,a}

is the X Session Management Library.

libWindowsWM.{so,a}

is the WindowsWM Library based on AppleWM.

libX11.{so,a}

is the Xlib Library.

libXau.{so,a}

is the library of X authority database routines.

libXaw6.{so,a}

is the X Athena Widgets Library, version 6.

libXaw7.{so,a}

is the X Athena Widgets Library, version 7.

libXaw8.{so,a}

is the X Athena Widgets Library, version 8.

libXaw.{so,a}

are symbolic links to the current X Athena Widgets Library, version 8.

libXcomposite.{so,a}

is the X Composite Library.

libXcursor.{so,a}

is the X Cursor management library.

libXdamage.{so,a}

is the X Damage Library.

libXdmcp.{so,a}

is the X Display Manager Control Protocol library.

libXevie.{so,a}

is the X Event Interception Extension (XEvIE) Library.

libXext.{so,a}

is the Misc X Extension Library.

libXfixes.{so,a}

a library to provide augmented versions of core protocol requests.

libXfontcache.{so,a}

is the X-TrueType font cache extension client library.

libXfont.{so,a}

is the X font library.

libXft.{so,a}

is the X FreeType interface library.

libXinerama.{so,a}

is the Xinerama Library.

libXi.{so,a}

is the X Input Extension Library.

libxkbfile.{so,a}

is the xkbfile Library.

libxkbui.{so,a}

is the xkbui Library.

libXmu.{so,a}

is the X interface library for miscellaneous utilities not part of the Xlib standard.

libXmuu.{so,a}

is the Mini Xmu Library.

libXpm.{so,a}

is the X Pixmap Library.

libXprintAppUtil.{so,a}

is the XprintAppUtil Library.

libXprintUtil.{so,a}

is the XprintUtil Library.

libXp.{so,a}

is the X Print Client Library.

libXrandr.{so,a}

is the X Resize, Rotate and Reflection extension library.

libXrender.{so,a}

is the X Render Library.

libXRes.{so,a}

is the X-Resource extension client library.

libXss.{so,a}

is the X11 Screen Saver extension client library.

libXTrap.{so,a}

is the X Trap Library.

libXt.{so,a}

is the X Toolkit Library.

libXtst.{so,a}

is the Xtst Library.

libXvMC.{so,a}

is the X-Video Motion Compensation Library.

libXvMCW.{so,a}

is the XvMC Wrapper including the Nonstandard VLD extension.

libXv.{so,a}

is the X Window System video extension library.

libXxf86dga.{so,a}

is the client library for the XFree86-DGA extension.

libXxf86misc.{so,a}

is the client library for the XFree86-Misc X extension.

libXxf86vm.{so,a}

is the client library for the XFree86-VidMode X extension.

Xbitmaps-1.0.1

Introduction to Xbitmaps

Xbitmaps provides static graphics needed by Xorg applications to draw screen elements.

Package Information

Xbitmaps Dependencies

Required

Xorg Utilities

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/xbitmaps

Installation of Xbitmaps

First, configure the Xbitmaps package by running the following command:

./configure $XORG_CONFIG

This package does not come with a test suite.

Now install as the root user:

make install

Contents

Installed Programs: None
Installed Libraries: None
Installed Directory: $XORG_PREFIX/include/X11/bitmaps

Xorg Applications

Introduction to Xorg Applications

The Xorg applications provide the expected applications available in previous X Window implementations.

Package Information

Additional Downloads

Xorg Applications Dependencies

Required

xbitmaps-1.0.1, libpng-1.2.12, and Xorg Libraries

Recommended

Optional

Linux-PAM-0.99.4.0 (only used by XDM)

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/Xorg7Applications

Downloading Xorg Applications

To download the needed files using wget, use the following commands:

wget http://anduin.linuxfromscratch.org/files/BLFS/xorg/app-7.1.wget &&
mkdir app &&
cd app &&
wget -B http://xorg.freedesktop.org/releases/individual/app/ \
     -i ../app-7.1.wget

Installation of Xorg Applications

A security vulnerability has been identified in the xload package. Before building this package with the commands shown below, be sure to apply the supplied patches. The patch can be applied with with the following command:

patch -Np1 -i ../xload-1.0.1-setuid-1.patch

Install the applications by running the following commands for each chosen package:

./configure $XORG_CONFIG &&
make

These packages do not provide test suites.

Now as the root user:

make install

Contents

Installed Programs: appres, atobm, bdftopcf, beforelight, bitmap, bmtoa, dga, editres, fontname.sh, fontprop.sh, fonttosfnt, fslsfonts, fstobdf, iceauth, ico, lbxproxy, listres, mkcfm, mkfontdir, mkfontscale, oclock, proxymngr, rstart, rstartd, sessreg, setxkbmap, showfont, showrgb, smproxy, startx, twm, viewres, x11perf, x11perfcomp, xauth, xauth_switch_to_sun-des-1, xbiff, xcalc, xclipboard, xclock, xcmsdb, xconsole, xcursorgen, xcutsel, xdbedizzy, xditview, xdm, xdmshell, xdpr, xdpyinfo, xdriinfo, xedit, xev, xeyes, xfd, xfindproxy, xfontsel, xfs, xfsinfo, xfwp, xgamma, xgc, xhost, xinit, xkbbell, xkbcomp, xkbevd, xkbprint, xkbvleds, xkbwatch, xkill, xload, xlogo, xlsatoms, xlsclients, xlsfonts, xmag, xman, xmessage, xmh, xmodmap, xmore, xon, xphelloworld, xplsprinters, xpr, xprehashprinterlist, xprop, xpsimplehelloworld, xpxthelloworld, xrandr, xrdb, xrefresh, xrx, xset, xsetmode, xsetpointer, xsetroot, xsm, xstdcmap, xtrapchar, xtrapin, xtrapinfo, xtrapout, xtrapproto, xtrapreset, xtrapstats, xvidtune, xvinfo, xwd, xwininfo, and xwud
Installed Libraries: libxrx.{so,a} and libxrxnest.{so,a}
Installed Directories: The following subdirectories of $XORG_PREFIX/: lib/X11/{fs,lbxproxy,proxymgr,rstart,x11perfcomp,xdm,xedit,xinit,xsm} and share/X11/{app-defaults,twm}

Short Descriptions

appres

lists the X application resource database.

atobm

is a bitmap converter utility for the X Window System.

bdftopcf

converts an X font from Bitmap Distribution Format to Portable Compiled Format.

beforelight

is a screensaver.

bitmap

is a bitmap editor utility for the X Window System.

bmtoa

is a bitmap converter utility for the X Window System.

dga

is a test program for the XFree86-DGA extension.

editres

is a dynamic resource editor for X Toolkit applications.

fontname.sh

is a script used to generate the FONT properties.

fontprop.sh

is a script used to generate the various XLFD font properties given an XLFD-style font name.

fonttosfnt

wraps a bitmap font in a sfnt (TrueType) wrapper.

fslsfonts

lists fonts served by X font server.

fstobdf

generates a BDF font from X font server.

iceauth

is the ICE authority file utility.

ico

animates an icosahedron or other polyhedron.

lbxproxy

is the Low Bandwidth X proxy.

listres

lists resources in widgets.

mkcfm

creates summaries of font metric files in CID font directories.

mkfontdir

creates an index of X font files in a directory.

mkfontscale

creates an index of scalable font files for X.

oclock

is a round X clock.

proxymngr

is the X proxy manager service.

rstart

is a sample implementation of a Remote Start client.

rstartd

is a sample implementation of a Remote Start rsh helper.

sessreg

manages utmp/wtmp entries for non-init clients.

setxkbmap

sets the keyboard using the X Keyboard Extension.

showfont

is a font dumper for X font server.

showrgb

uncompiles an rgb color-name database.

smproxy

is the Session Manager Proxy.

startx

initializes an X session.

twm

is the Tab Window Manager for the X Window System.

viewres

is a graphical class browser for Xt.

x11perf

is an X11 server performance test program.

x11perfcomp

is an X11 server performance comparison program.

xauth

is the X authority file utility.

xauth_switch_to_sun-des-1

switches the current Xserver's authentification to SUN-DES-1.

xbiff

is a mailbox flag for X.

xcalc

is a scientific calculator for X.

xclipboard

is an X clipboard client.

xclock

is an analog/digital clock for X.

xcmsdb

is the Device Color Characterization utility for the X Color Management System.

xconsole

monitors system console messages with X.

xcursorgen

creates an X cursor file from a collection of PNG images.

xcutsel

interchanges between cut buffer and selection.

xdbedizzy

is a demo of DBE creating a double buffered spinning scene.

xditview

displays ditroff output.

xdm

is the X Display Manager with support for XDMCP and a host chooser.

xdmshell

is a simple program for running xdm from login.

xdpr

dumps an X window directly to a printer.

xdpyinfo

is a display information utility for X.

xdriinfo

queries configuration information of DRI drivers.

xedit

is a simple text editor for X.

xev

prints contents of X events.

xeyes

is a a follow the mouse X demo.

xfd

displays all the characters in an X font.

xfindproxy

locates proxy services.

xfontsel

provides point and click selection of X11 font names.

xfs

is the X font server.

xfsinfo

is the X font server information utility.

xfwp

is the X firewall proxy.

xgamma

alters a monitor's gamma correction through the X server.

xgc

is an X graphics demo.

xhost

is a server access control program for X.

xinit

is the X Window System initializer.

xkbbell

is an XKB utility program that raises a bell event.

xkbcomp

compiles an XKB keyboard description.

xkbevd

is the XKB event daemon.

xkbprint

prints an XKB keyboard description.

xkbvleds

shows the XKB status of keyboard LEDs.

xkbwatch

monitors modifier keys and LEDs.

xkill

kills a client by its X resource.

xload

is a system load average display for X.

xlogo

is the X Window System logo.

xlsatoms

lists interned atoms defined on the server.

xlsclients

lists client applications running on a display.

xlsfonts

is a server font list displayer for X.

xmag

magnifies parts of the screen.

xman

is a manual page display program for the X Window System.

xmessage

displays a message or query in a window.

xmh

sends and reads mail with an X interface to MH.

xmodmap

is a utility for modifying keymaps and pointer button mappings in X.

xmore

is a plain text display program for the X Window System.

xon

starts an X program on a remote machine.

xphelloworld

sends a test page to an Xprint printer.

xplsprinters

shows a list of Xprint printers and their attributes.

xpr

prints an X window dump.

xprehashprinterlist

recomputes the list of available printers.

xprop

is a property displayer for X.

xpsimplehelloworld

is a "Hello World"-like Xprint sample utility based on plain X11 rendering calls.

xpxthelloworld

is a "Hello World"-like Xprint sample utility based on the Xt toolkit.

xrandr

is a primitive command line interface to RandR extension.

xrdb

is the X server resource database utility.

xrefresh

refreshes all or part of an X screen.

xrx

is an RX MIME type helper program.

xset

is the user preference utility for X.

xsetmode

sets the mode for an X Input device.

xsetpointer

sets an X Input device as the main pointer.

xsetroot

is the root window parameter setting utility for X.

xsm

is the X Session Manager.

xstdcmap

is the X standard colormap utility.

xtrapchar

parses ANSI character sequences to synthesize input events to X Window servers using the XTrap server extension.

xtrapin

tests the input transport to the XTrap server extension.

xtrapinfo

displays general XTrap configuration information.

xtrapout

tests the output transport from the XTrap extension to the XTrap client library.

xtrapproto

tests the XTrap protocol between a client and server.

xtrapreset

queries the XTrap extension.

xtrapstats

configures XTrap to collect usage statistics on all core input events and requests.

xvidtune

is the video mode tuner for Xorg.

xvinfo

prints out X-Video extension adaptor information.

xwd

dumps an image of an X window.

xwininfo

is a window information utility for X.

xwud

is an image displayer for X.

libxrx.{so,a}

is the RX MIME type Netscape Navigator Plug-in.

libxrxnest.{so,a}

is the RX MIME type Netscape Navigator Plug-in using Xnest.

Xorg Data

Introduction to Xorg Data

The Xorg data packages provide static data such as images and keymaps to the Xorg applications.

Package Information

Xorg Data Dependencies

Required

Xorg Applications

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/Xorg7Data

Downloading Xorg Data

To download the needed files using wget, use the following commands:

wget http://anduin.linuxfromscratch.org/files/BLFS/xorg/data-7.1.wget &&
mkdir data &&
cd data &&
wget -B http://xorg.freedesktop.org/releases/individual/data/ \
     -i ../data-7.1.wget

Installation of Xorg Data

Compile the selected packages with the following commands:

./configure $XORG_CONFIG &&
make

These packages do not provide test suites.

Install the packages as the root user:

make install

Contents

Installed Programs: None
Installed Libraries: None
Installed Directories: The following subdirectories of $XORG_PREFIX/: share/X11/xkb and share/icons/{handhelds,redglass,whiteglass}/cursors

Xorg Fonts

Introduction to Xorg Fonts

The Xorg font packages provide needed fonts to the Xorg applications.

Package Information

Required

Xorg Data and Xorg Applications

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/Xorg7Fonts

Downloading Xorg Fonts

To download the needed files using wget, use the following commands:

wget http://anduin.linuxfromscratch.org/files/BLFS/xorg/font-7.1.wget &&
mkdir font &&
cd font &&
wget -B http://xorg.freedesktop.org/releases/individual/font/ \
     -i ../font-7.1.wget

Installation of Xorg Fonts

Run the following commands for each package:

./configure $XORG_CONFIG &&
make

These packages do not provide test suites.

Now as the root user:

make install

When all of the fonts have been installed, the system must be configured so that Fontconfig can find the TrueType fonts since they are outside of the default search path of /usr/share/fonts. Make symlinks to the Xorg TrueType font directories by running the following commands as the root user:

install -v -d -m755 /usr/share/fonts &&
ln -svn $XORG_PREFIX/lib/X11/fonts/OTF /usr/share/fonts/X11-OTF &&
ln -svn $XORG_PREFIX/lib/X11/fonts/TTF /usr/share/fonts/X11-TTF

Contents

Installed Programs: bdftruncate and ucs2any
Installed Libraries: None
Installed Directories: $XORG_PREFIX/fonts and /usr/share/fonts/X11-{TTF,OTF}

Short Descriptions

bdftruncate

generates a truncated BDF font from an ISO 10646-1-encoded BDF font.

ucs2any

generates BDF fonts containing subsets of ISO 10646-1 codepoints.

Luit-1.0.2

Introduction to Luit

Luit provides a filter for displaying and converting UTF-8 characters in text console windows.

Package Information

Luit Dependencies

Required

Xorg Fonts

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/Luit

Installation of Luit

Note

This package should only be built if you are installing Xorg-7.1. If you have installed or will be installing Xorg-6.9.0 or XFree86, it is provided by those packages and should not be installed here. Ensure that you have the XORG_CONFIG and XORG_PREFIX variables set as described in the Xorg-7.1 page.

Install luit with the following commands:

./configure $XORG_CONFIG &&
make

This package does not come with a test suite.

Now as the root user:

make install

Contents

Installed Program: luit
Installed Libraries: None
Installed Directories: None

Short Description

luit

provides locale and ISO 2022 support for Unicode terminals.

Xorg-Server-1.1.1

Introduction to Xorg-Server

The Xorg Server is the core of the X Window system.

Package Information

Additional Downloads

Xorg Server Dependencies

Required

Xorg Fonts

Optional

MesaLib-6.5 and luit-1.0.2

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/Xorg7Server

Installation of Xorg Server

Note

If you intend to build with Mesa, you must have the Mesa source directory available when building the Xorg-server.

A security vulnerability have been identified in the xorg-server package. Apply a patch to fix this vulnerability with the following command:

patch -Np1 -i ../xorg-server-1.1.1-security-1.patch

Install the server by running the following commands:

sed -i \
    's@-I$(top_builddir)/include@-I$(top_builddir)/GL/mesa/main@8' \
    GL/glx/Makefile.in &&
sed -i \
    's@-I$(top_builddir)/include@-I$(top_builddir)/GL/mesa/glapi@7' \
    GL/glx/Makefile.in &&
./configure $XORG_CONFIG \
    --with-mesa-source='</path/to>/Mesa-6.5' \
    --with-fontdir=$XORG_PREFIX/lib/X11/fonts \
    --with-module-dir=$XORG_PREFIX/lib/X11/modules \
    --with-dri-driver-path=$XORG_PREFIX/lib/X11/modules/dri \
    --enable-install-setuid &&
make

This package does not come with a test suite.

Now as the root user:

make install

Command Explanations

sed -i '...' GL/glx/Makefile.in: These commands correct the search path for the Mesa headers. The 8th and 7th instance of '-I$(top_builddir)' in the existing search search path are replaced with Mesa paths.

--with-mesa-source=...: This switch directs the build system to the location of the Mesa source directory. If you wish to build without Mesa, omit this switch.

--with-module-dir=...: This parameter sets the destination for the installed modules.

--with-dri-driver-path=...: This is the location of the Mesa DRI drivers.

--enable-install-setuid: The Xorg binary must run as the root user. This switch ensures that the binary is installed setuid when make is run by an unprivileged user.

--disable-glx: Disable building of the GLX extension. This parameter is required if building without Mesa.

--disable-dri: Disable building of the DRI extension. This parameter is required if building without Mesa.

--disable-xprint: Disable building of the Xprint extension and server. This parameter is required if building without Mesa.

Contents

Installed Programs: cvt, dmxaddinput, dmxaddscreen, dmxreconfig, dmxresize, dmxrminput, dmxrmscreen, dmxtodmx, dmxwininfo, getconfig, getconfig.pl, gtf, inb, inl, inw, ioport, outb, outl, outw, pcitweak, scanpci, vdltodmx, X, Xdmx, xdmx, xdmxconfig, Xnest, Xorg, xorgcfg, xorgconfig and Xvfb
Installed Libraries: None
Installed Directories: /var/lib/xkb and the following subdirectories of $XORG_PREFIX/: include/xorg, include/X11/pixmaps, lib/X11/{getconfig,modules} and lib/xserver

Short Descriptions

cvt

calculates VESA CVT mode lines.

dmxaddinput

adds an input device to an Xdmx server.

dmxaddscreen

adds a screen to an Xdmx server.

dmxreconfig

refreshes the screen attributes in an Xdmx server.

dmxresize

resizes an Xdmx desktop.

dmxrminput

removes an input device from an Xdmx server.

dmxrmscreen

removes a screen from an Xdmx server.

dmxtodmx

is a dmx configuration file parser and printer.

dmxwininfo

queries a window's attributes on an Xdmx server.

getconfig

a wrapper script around getconfig.pl.

getconfig.pl

gets configuration information for the Xorg server.

gtf

calculates VESA GTF mode lines.

inb

is a symbolic link to ioport.

inl

is a symbolic link to ioport.

inw

is a symbolic link to ioport.

ioport

sets input and output ports for the X server.

outb

is a symbolic link to ioport.

outl

is a symbolic link to ioport.

outw

is a symbolic link to ioport.

pcitweak

reads or writes the PCI config space.

scanpci

scans and probes the PCI buses.

vdltodmx

is a VDL format dmx configuration file parser and printer.

X

is a symbolic link to Xorg.

Xdmx

is the Distributed Multi-head X server.

xdmx

prints information about the Xdmx server.

xdmxconfig

is a graphical configuration tool for Xdmx configuration files.

Xnest

is a nested X server.

Xorg

is the X11R7 X Server.

xorgcfg

is a graphical configuration tool for Xorg.

xorgconfig

generates an xorg.conf file.

Xvfb

is the virtual framebuffer X server for X Version 11.

Xorg Drivers

Introduction to Xorg Drivers

The Xorg drivers provide the means for the xserver to take advantage of installed hardware.

Package Information

Xorg Drivers Dependencies

Required

Xorg-Server-1.1.1

Optional

MesaLib-6.5

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/Xorg7Drivers

Downloading Xorg Drivers

To download the needed files using wget, use the following commands:

wget http://anduin.linuxfromscratch.org/files/BLFS/xorg/driver-7.1.wget &&
mkdir driver &&
cd driver &&
wget -B http://xorg.freedesktop.org/releases/individual/driver/ \
     -i ../driver-7.1.wget

Installation of Xorg Drivers

The xf86-input-evdev, xf86-video-ati, xf86-video-fbdev, xf86-video-glint, and xf86-video-newport packages install man pages in UTF-8 encoding, and they will not display correctly using Man-DB. Issue the following command before building these packages to replace the offending characters with ones that man can properly display.

sed -i -e "s/\xc3\xb8/\\\\[\/o]/" \
       -e "s/\xc3\xa4/\\\\[:a]/" \
       -e "s/\xc3\x9c/\\\\[:U]/" man/*.man

Warning

It is very important not to build display drivers that cannot be used with your hardware. For instance, do not build Sun drivers for an x86 PC as the Sun drivers will expect to see SPARC symbols exported from the kernel. Failure to follow this warning will result in a display lockup, which requires a hard reboot, when configuring Xorg for the first time.

Install the drivers by running the following commands for each package:

./configure $XORG_CONFIG \
    --with-xorg-module-dir=$XORG_PREFIX/lib/X11/modules &&
make

These packages do not provide test suites.

Now as the root user:

make install

Command Explanations

--with-xorg-module-dir=...: This switch ensures that the drivers are installed into the correct directory.

Contents

Installed Programs: None
Installed Libraries: libI810XvMC.so, libviaXvMC.so, and libviaXvMCPro.so
Installed Directories: $XORG_PREFIX/lib/X11/modules/{drivers,input}

Short Descriptions

libI810XvMC.so

is the X-Video Motion Compensation client library for the Intel i810 video driver.

libviaXvMC.so

is the X-Video Motion Compensation client library for the VIA Unichrome video driver.

libviaXvMCPro.so

is the X-Video Motion Compensation client library for the VIA Unichrome Pro video driver.

Configuring X Window System

X Window System Components

Configuring The X Window System

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/XWindowSystemComponents

If you've installed the X Window System in any prefix other than /usr, as the root user, add </usr/X11R6>/lib to the /etc/ld.so.conf file and run ldconfig. Additionally, while still the root user, ensure </usr/X11R6>/bin and </usr/X11R6>/lib/pkgconfig are added to your PATH and PKG_CONFIG_PATH environment variables, respectively. Instructions for doing this are described in the section The Bash Shell Startup Files.

As the root user create a basic X Window System configuration file with the following commands:

For Xorg:

cd ~ &&
Xorg -configure

For XFree86:

cd ~ &&
XFree86 -configure

The screen will go black and you may hear some clicking of the monitor. This command will create a file in your home directory, xorg.conf.new for Xorg, or XF86Config.new for XFree86.

Edit the newly created configuration file to suit your system. The details of the files are located in the xorg.conf.5x and XF86Config.5x man pages. Some things you may want to do are:

  • Section "Files". Change the order of the font paths searched. You may want to put 100dpi fonts ahead of 75dpi fonts if your system normally comes up closer to 100 dots per inch. You may want to remove some font directories completely.

  • Section "Module". If you are going to install NVIDIA drivers, remove the "dri" line.

  • Sections "InputDevice". You may want to change the keyboard autorepeat rate by adding Option "Autorepeat" "250 30".

  • Section "Monitor". Specify the VertRefresh and HorizSync values if the system does not automatically detect the monitor and its values.

  • Section "Device". You may want to set some of the options available for your selected video driver. A description of the driver parameters is in the man page for your driver.

  • Section "Screen". Add a DefaultDepth statement such as: DefaultDepth 24. In the SubSection for your default depth, add a modes line such as: Modes "1600x1200" "1280x1024" "1024x768". The first mode listed will normally be the starting resolution.

Test the system with one of the following commands:

For Xorg:

X -config ~/xorg.conf.new

For XFree86:

XFree86 -xf86config ~/XF86Config.new

You will only get a gray background with an X-shaped mouse cursor, but it confirms the system is working. Exit with Control+Alt+Backspace. If the system does not work, take a look at /var/log/Xorg.0.log or /var/log/XFree86.0.log to see what went wrong.

As the root user, create the configuration directory and move the configuration file to the new directory:

For Xorg:

install -v -m755 -D ~/xorg.conf.new /etc/X11/xorg.conf

For XFree86:

install -v -m755 -D ~/XF86Config.new /etc/X11/XF86Config

As a convenience, Xorg-7.1 users should populate the /etc/X11 directory with symlinks to various configuration directories that were located in /etc/X11 with previous versions of Xorg. This step is not needed for users of Xorg-6.9.0 or XFree86. Execute the following commands as the root user:

mkdir $XORG_PREFIX/lib/X11/twm &&
ln -svt /etc/X11 \
    $XORG_PREFIX/lib/X11/{twm,xkb,fs,lbxproxy,proxymngr} \
    $XORG_PREFIX/lib/X11/{rstart,xdm,xinit,xserver,xsm} \
    $XORG_PREFIX/share/X11/app-defaults

As the root user, create .xinitrc:

cat > ~/.xinitrc << "EOF"
# Begin .xinitrc file
xterm  -g 80x40+0+0   &
xclock -g 100x100-0+0 &
twm
EOF

This provides an initial screen with a small clock that is managed by a simple window manager, Tab Window Manager. For details of twm, see the man page.

Note

Both the default, and the BLFS configuration for Xorg include xterm. Xorg's modular distribution no longer includes xterm, and as a result, the startx command will fail if you have not installed xterm-223 when using the modular X Window System. You can remove the xterm line in the above config file to test the xserver, or install one of the other terminal emulators and make appropriate changes.

When needed, the X Window System creates the directory /tmp/.ICE-unix if it does not exist. If this directory is not owned by root, the X Window System delays startup by a few seconds and also appends a warning to the logfile. This also affects startup of other applications. To improve performance, it is advisable to manually create the directory before the X Window System uses it. Add the file creation to /etc/sysconfig/createfiles that is sourced by the /etc/rc.d/init.d/cleanfs startup script.

cat >> /etc/sysconfig/createfiles << "EOF"
/tmp/.ICE-unix dir 1777 root root
EOF

Start X with:

startx

and a basic functional X Window System should be displayed.

For a list of the package contents and a description of the commands, see the sections in the XFree86 Contents and Descriptions.

Checking Direct Rendering Infrastructure (DRI) Installation

DRI is a framework for allowing software to access graphics hardware in a safe and efficient manner. It is installed in X by default if you have a supported video card. To enable direct rendering using the OpenGL implementation from MesaLib-6.5 (built separately with Xorg-7.1 or included with Xorg-6.9.0 and XFree86), the "glx" and "dri" modules must be loaded. Additionally, the created device nodes in /dev/dri must have proper permissions for your users. A sample XF86config or xorg.conf file might look like this:

Section "Module"
    ...
    Load  "glx"
    Load  "dri"
    ...
EndSection
...
Section "DRI"
    Group "video"
    Mode  0660
EndSection

Note

DRI configuration may differ if you are using alternate drivers, such as those from NVIDIA or ATI.

To check if DRI is installed properly, check the log file /var/log/XFree86.0.log or /var/log/Xorg.0.log for statements like:

(II) R128(0): Direct rendering enabled

From an xterm, run glxinfo and look for the phrase:

direct rendering: Yes

If direct rendering is not enabled, you can add verbosity by running LIBGL_DEBUG=verbose glxinfo. This will show the drivers, device nodes and files used by the DRI system.

You can also run the test program glxgears. This program brings up a window with three gears turning. The xterm will display how many frames were drawn every five seconds, so this is a reasonable benchmark. The window is scalable, and the frames drawn per second is highly dependent on the size of the window.

For troubleshooting problems, check the DRI Users Guide at http://dri.sourceforge.net/doc/DRIuserguide.html.

Setting up Fonts

There are two font systems in the X Window System. The first is the core X font protocol, and the second is Xft. Toolkits that use the core X font protocol include Xt, Xaw, Motif clones and GTK+-1.2. Toolkits that use Xft include GTK+-2 and Qt and use Fontconfig for control. Both font systems should be configured for proper font coverage in the X Window System.

Core X Font Protocol

The core X font protocol finds fonts from the server configuration file (xorg.conf or XF86Config). If no font paths exist in the configuration file, the server will fall back to an internal hard-coded path. Assuming the prefix for your X installation is /usr/X11R6, the core fonts will reside in subdirectories of /usr/X11R6/lib/X11/fonts. For each directory in the path, the server reads three files:

  • fonts.dir - maps font files to font names; updated with mkfontdir

  • fonts.alias - defines aliases (such as "9x18") for existing fonts

  • fonts.scale - lists scalable fonts; updated with mkfontscale

The core X fonts protocol uses names such as -misc-fixed-medium-r-normal--13-120-75-75-c-80-iso8859-1. These fonts are rendered by the X server without antialiasing. The server itself uses the "cursor" font for painting the mouse cursor, and the protocol specification requires the font "fixed" to be available.

Scalable fonts, such as Type1 and TrueType, are read from fonts.scale files by the server. The core X font system uses the "freetype" module for non-antialiased rendering of these fonts. Ensure that the "freetype" module is loaded in the XF86config or xorg.conf file by adding it to the "Module" section:

Section "Module"
    ...
    Load  "freetype"
    ...
EndSection

The character set used is part of the font name, e.g. "-iso8859-1". It is important that applications which support a non-English interface specify the character set correctly so that the proper glyphs are used. This can be controlled through the X resources, which will be described later.

In some cases, applications rely upon the fonts named "fixed" or something like "9x18". In these cases, it is important that the fonts.alias file specifies the correct character set. Users of ISO-8859-X encodings where X != 1 should modify the /usr/lib/X11/fonts/misc/fonts.alias file by replacing the "iso8859-1" string with the proper encoding name. This is accomplished by running the following command as the root user, substituting the proper value for <X>:

sed -i 's,iso8859-1\( \|$\),iso8859-<X>\1,g' \
    /usr/lib/X11/fonts/{75dpi,100dpi,misc}/fonts.alias

Users of Cyrillic fonts have properly defined aliases in /usr/lib/X11/fonts/cyrillic/fonts.alias. However, this file will not be used unless the /usr/lib/X11/fonts/cyrillic directory is first in the font search path. Otherwise, the /usr/lib/X11/fonts/misc/fonts.alias file will be used.

Xft Font Protocol

Xft provides antialiased font rendering through Freetype, and fonts are controlled from the client side using Fontconfig. The default search path is /usr/share/fonts and ~/.fonts. Fontconfig searches directories in its path recursively and maintains a cache of the font characteristics in fonts.cache-1 files in each directory. If the cache appears to be out of date, it is ignored, and information is (slowly) fetched from the fonts themselves. This cache can be regenerated using the fc-cache command at any time. You can see the list of fonts known by Fontconfig by running the command fc-list.

The X fonts were not installed in a location known to Fontconfig. This prevents Fontconfig from using the poorly rendered Type 1 fonts or the non-scalable bitmapped fonts. Symlinks were created from the OTF and TTF X font directories to /usr/share/fonts/X11-{OTF,TTF}. This allows Fontconfig to use the OpenType and TrueType fonts provided by X (which are scalable and of higher quality).

Fontconfig uses names such as "Monospace 12" to define fonts. Applications generally use generic font names such as "Monospace", "Sans" and "Serif". Fontconfig resolves these names to a font that has all characters that cover the orthography of the language indicated by the locale settings. Knowledge of these font names is included in /etc/fonts/fonts.conf. Fonts that are not listed in this file are still usable by Fontconfig, but they will not be accessible by the generic family names.

Standard scalable fonts that come with X provide very poor Unicode coverage. You may notice in applications that use Xft that some characters appear as a box with four binary digits inside. In this case, a font set with the available glyphs has not been found. Other times, applications that don't use other font families by default and don't accept substitutions from Fontconfig will display blank lines when the default font doesn't cover the orthography of the user's language. This happens, e.g., with Fluxbox in the ru_RU.KOI8-R locale.

In order to provide greater Unicode coverage, it is recommended that you install these fonts:

  • DejaVu fonts - These fonts are replacements for the Bitstream Vera fonts and provide Latin-based scripts with accents and Cyrillic glyphs. The DejaVu fonts by are not aliased to the generic family names by default, so /etc/fonts/fonts.conf will have to be edited for it to be recognized by the generic names such as "Sans". This will be described below.

  • FreeFont - This set of fonts covers nearly every non-CJK character, but is not visually pleasing. Fontconfig will use it as a last resort to substitute generic font family names.

  • Microsoft Core fonts - These fonts provide slightly worse Unicode coverage than FreeFont, but are better hinted. Be sure to read the license before using them. These fonts are listed in the /etc/fonts/fonts.conf aliases by default.

  • Firefly New Sung font - This font provides Chinese coverage. This font is not listed in the /etc/fonts/fonts.conf aliases by default.

  • Arphic fonts - A similar set of Chinese fonts to the Firefly New Sung font. These fonts are listed in the /etc/fonts/fonts.conf aliases by default.

  • Kochi fonts - These provide Japanese characters, and they are listed in the aliases in /etc/fonts/fonts.conf by default.

  • Baekmuk fonts - These fonts provide Korean coverage, and they are listed in the aliases in /etc/fonts/fonts.conf by default.

The list above will not provide complete Unicode coverage. For more information, please visit the Unicode Font Guide.

As an example, consider the installation of the DejaVu fonts. From the unpacked source directory, run the following commands as the root user:

install -v -d -m755 /usr/share/fonts/dejavu &&
install -v -m644 *.ttf /usr/share/fonts/dejavu &&
fc-cache -v /usr/share/fonts/dejavu

Earlier it was mentioned that /etc/fonts/fonts.conf could be modified to use DejaVu using the default family names. Since DejaVu is a replacement for Bitstream Vera fonts, it can be substituted for that family. Visually inspect the fonts.conf to see how fonts are grouped together under the generic family names within <alias> tags and a preference list is created within <prefer> tags. To replace Bitstream Vera with DejaVu, run the following command as the root user:

sed -i 's/<family>Bitstream Vera/<family>DejaVu/' /etc/fonts/fonts.conf

To see which fonts will be used as the generic fonts in your locale, run the command fc-match monospace. Substitute "sans" or "serif" to see the fonts that will be used for those aliases.

Setting up Keyboards

In this version of X, non-Latin keyboard layouts do not include Latin configurations as was previous practice. To set up a keyboard for Latin and non-Latin input, change the XkbLayout keyboard driver option in the InputDevice section of the XF86Config or xorg.conf file. For example:

Section "InputDevice"
    Identifier          "Keyboard0"
    Driver              "Keyboard"
    Option "XkbModel"   "pc105"
    Option "XkbLayout"  "en_US,ru"
    Option "XkbOptions" "grp:switch,grp:alt_shift_toggle,grp_led:scroll"
EndSection

In this example, you can use the Alt+Shift combination to switch between keyboard layouts and use the Scroll Lock LED to indicate when the second layout is active.

Setting up XDM

xdm provides a graphical logon capability and is normally set up in /etc/inittab. Most of the information you need to customize xdm is found in its man page. To execute xdm during bootup, change the initdefault level to 5 and add the following lines to /etc/inittab:

# Run xdm as a separate service
x:5:respawn:/usr/X11R6/bin/xdm -nodaemon

If Linux-PAM is installed on your system, you should create a PAM entry for xdm by duplicating the login entry using the following command:

cp -v /etc/pam.d/login /etc/pam.d/xdm

Using X Resources

There are many options that can be set in X and X clients via resources. Typically resources are set in the ~/.Xresources file.

The layout of the ~/.Xresources file consists of a list of specifications in the form of

object.subobject[.subobject...].attribute: value

Components of a resource specification are linked together by either tight, represented by a dot (.), or loose, represented by an asterisk (*), bindings. A tight binding indicates that the components on either side of the dot must be directly next to each other as defined in a specific implementation. An asterisk is a wildcard character that means that any number of levels in a defined hierarchy can be between the components. For example, X offers two special cursors: redglass and whiteglass. To use one of these resources, you need to add the following line:

Xcursor.theme: whiteglass

However, you can specify the background for all clients with:

*background: blue

More specific resource variables will override less specific names.

Resource definitions can be found in the man pages for each respective client.

In order to load your resources, the xrdb program must be called with the appropriate parameters. Typically, the first time resources are loaded, you use:

xrdb -load <filename>

To add resources to X's database in memory, use:

xrdb -merge <filename>

The xrdb instruction is usually placed in ~/.xinitrc or ~/.xsession. To get more information, see the xrdb man page.

Additional X Window System Configuration

Below you will find information on fine tuning the components of both variants of the X Window System. The documentation links are specifically for XFree86, however, the information contained in those documents usually pertains to Xorg as well. Detailed descriptions are also located in the xorg.conf or XF86Config man pages.

Setting up X Input Devices

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/XInputDevices

Keyboards

The following external links provide a good introduction to setting up various keyboards.

The XKB Configuration Guide

How to further enhance XKB configuration

Mice

Multi-button mice can be used to their full potential by mapping the additional buttons to X button events. Wheel mice are a common example. The ordinary ones contain two buttons, and a scroll wheel that doubles as a third button. As far as X is concerned, there are 5 buttons as it counts the 'scroll up' and 'scroll down' functions (internally they are buttons). Here is an example 'InputDevice' section for a typical PS/2 wheel mouse:

Section "InputDevice"
  Identifier  "Mouse 0"
  Driver      "mouse"
  Option      "Device"        "/dev/input/mice"
  Option      "Protocol"      "IMPS/2"
  Option      "ZAxisMapping"  "4 5"
  Option      "Buttons"       "5"
EndSection

Button assignments differ for every mouse type. On more exotic mice, you may find that the rocker wheel buttons are 6 and 7. Simply add those values to the ZAxisMapping option, and set the Buttons option appropriately to enable side to side scrolling. Additional information on button assignment can be found in the following XFree86 document:

Mouse Support in XFree86

Fine Tuning Display Settings

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/xdisplay

The 'Monitor' Section

One or more monitor sections specify the characteristics of your monitor(s). Usually, the setup program can probe your monitor and setup a monitor properly, however, this does not always work. The most common entries that need to be updated are HorizSync and VertRefresh. If the configuration program does not set these properly, you will notice a resolution much lower than desired. The default HorizSync setting is 28-33kHz which is very conservative. The default VertRefresh is 43-72Hz. Consult your monitor documentation or search on line for the proper settings for your monitor.

It is also possible to control many detailed timing characteristics of a monitor with a Modeline setting. Most users will not need to do this, but details are in the man page referenced above.

Warning

Incorrect monitor settings can destroy your monitor or even set it on fire! For most newer monitors, the result of overly aggressive settings is a blank screen, but older monitors do not all have built in safeguards.

Other items that may be of interest in this section is the DPMS and associated StandbyTime, SuspendTime, and OffTime options. These parameters control the energy saving features of your monitor. They may also be controlled at runtime with the xset command or via a graphical interface such as KDE's Control Center.

A typical monitor sections will normally look like:

Section "Monitor"
    DisplaySize   400   300 # mm
    Identifier   "Monitor0"
    VendorName   "VSC"
    ModelName    "G810-2"
    HorizSync     30.0 - 92.0
    VertRefresh   50.0 - 180.0
    Option       "DPMS"
    Option       "StandbyTime" "10"
    Option       "SuspendTime" "20"
    Option       "OffTime"     "30"
EndSection

The 'Device' Section

This section basically controls your video card. The key entry is the Driver setting. This can be a driver from the X distribution you are using, from the kernel source, or a proprietary driver for devices such as a Nvidia graphics adaptor. The driver often is a kernel module or built into the kernel itself, but there are also separate non-kernel components usually found in the /usr/X11R6/lib/modules/drivers/ directory. These were either built with the X server or installed via external (i.e., proprietary) programs.

There are many options for device drivers and most are specific to the driver being used. Documentation for many drivers can be found at the XFree86 Driver Manual Pages.

A typical Device section will look like:

Section "Device"
    Identifier  "Videocard0"
    Driver      "radeon"
    VendorName  "Videocard vendor"
    BoardName   "ATI Radeon 7500"
EndSection

Display Layouts

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/xlayouts

Within the X Window System configuration file there may be multiple layout sections like:

Section "ServerLayout"
    Identifier     "X.org Configured"
    Screen      0  "Screen0" 0 0
    InputDevice    "Mouse0" "CorePointer"
    InputDevice    "Keyboard0" "CoreKeyboard"
EndSection

The default layout is the first, but if you have special needs, you can create others with different configurations. The Identifier line in each section is the key. Different layouts can be created using different Screen and InputDevice sections.

After the configuration file is updated, an alternate configuration can be specified on the startx line. For instance, to start X with an alternate layout with an Identifier of "layout2", use the following command line:

startx -- -layout layout2

Chapter 26. X Libraries

This chapter does not contain libraries that are required to run X. It does contain libraries that enhance X. In some cases the enhancement is as simple as font support. In others it is as complex as libraries that sit between X and applications that run on X whose purpose is to standardize the look and feel and inter-process communications for different applications. They also assist programmers by supplying common elements.

Qt-3.3.7

Introduction to Qt

The Qt package contains a C++ GUI library. This is useful for creating graphical applications or executing graphical applications that are dynamically linked to the Qt library. One of the major users of Qt is KDE.

Package Information

Additional Downloads

Qt Dependencies

Required

X Window System

Recommended

Note: if for whatever reason you do not have the recommended libraries installed on your system, you must remove the corresponding -system-<library> and -plugin-imgfmt-<library> parameters from the configure commands shown in the instructions below.

Optional

NAS-1.7, CUPS-1.2.7, MySQL-5.0.21, PostgreSQL-8.1.3, unixODBC-2.2.11, SQLite and Firebird

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/qt

Installation of Qt

The Qt source hard codes the location of the X Window System installtion to /usr/X11R6. If you've installed the X Window System in any prefix other than /usr/X11R6, then you should correct the qmake configuration files with the following commands, replacing <PREFIX> with the installation prefix of the X Window System:

for file in $(grep -lr "X11R6" *)
do
    sed -i "s@/usr/X11R6@<PREFIX>@g" $file
done

There are several ways to install a complicated package such as Qt. The files are not completely position independent. Installation procedures execute the program pkg-config to determine the location of package executables, libraries, headers, and other files. For Qt, pkg-config will look for the file lib/pkgconfig/qt-mt.pc which must be modified if relocating the package. This file is set up correctly by the build process.

The default installation places the files in /usr/local/qt/. Many commercial distributions place the files in the system's /usr hierarchy. The package can also be installed in an arbitrary directory.

This section will demonstrate two different methods.

Warning

Building Qt in a chroot environment may fail.

Note

The build time for Qt is quite long. If you want to save some time and don't want the tutorials and examples, change the first make command to:

make sub-tools

Method 1 - Installing in the '/usr' Hierarchy

The advantage of this method is that no updates to the /etc/ld.so.conf or /etc/man_db.conf files are required. The package files are distributed within several subdirectories of the /usr hierarchy. This is the method that most commercial distributions use.

Note

If Qt is being reinstalled, run the following commands from a console or non-Qt based window manager. It overwrites Qt libraries that should not be in use during the install process.

sed -i -e 's:$(QTDIR)/include:&/qt:' \
       -e 's:$(QTDIR)/lib:&/qt:' \
    mkspecs/linux*/qmake.conf &&

bash
export PATH=$PWD/bin:$PATH &&
export LD_LIBRARY_PATH=$PWD/lib:$LD_LIBRARY_PATH &&

./configure -prefix /usr \
            -docdir /usr/share/doc/qt \
            -headerdir /usr/include/qt \
            -plugindir /usr/lib/qt/plugins \
            -datadir /usr/share/qt \
            -translationdir /usr/share/qt/translations \
            -sysconfdir /etc/qt \
            -qt-gif \
            -system-zlib \
            -system-libpng \
            -system-libjpeg \
            -system-libmng \
            -plugin-imgfmt-png \
            -plugin-imgfmt-jpeg \
            -plugin-imgfmt-mng \
            -no-exceptions \
            -thread \
            -tablet &&

find -type f -name Makefile | xargs sed -i "s@-Wl,-rpath,/usr/lib@@g" &&
make &&
exit

This package does not come with a test suite.

Now, as the root user:

make install &&
ln -v -sf libqt-mt.so /usr/lib/libqt.so &&
cp -v -r doc/man /usr/share &&
cp -v -r examples /usr/share/doc/qt

Method 2 - Installing in '/opt'

This is the method recommended by the Qt developers. It has the advantage of keeping all the package files consolidated in a dedicated directory hierarchy. By using this method, an update can be made without overwriting a previous installation and users can easily revert to a previous version by changing one symbolic link.

The Qt developers use a default location of /usr/local/qt/, however this procedure puts the files in /opt/qt-3.3.7/ and then creates a symbolic link to /opt/qt/.

bash
export QTDIR=$PWD &&
export LD_LIBRARY_PATH=$PWD/lib:$LD_LIBRARY_PATH &&
export PATH=$PWD/bin:$PATH &&

./configure -prefix /opt/qt-3.3.7 \
            -sysconfdir /etc/qt \
            -qt-gif \
            -system-zlib \
            -system-libpng \
            -system-libjpeg \
            -system-libmng \
            -plugin-imgfmt-png \
            -plugin-imgfmt-jpeg \
            -plugin-imgfmt-mng \
            -no-exceptions \
            -thread \
            -tablet &&

make &&
exit

This package does not come with a test suite.

Now, as the root user:

make install &&
ln -v -sfn qt-3.3.7 /opt/qt &&
ln -v -s libqt-mt.so /opt/qt/lib/libqt.so &&
cp -v -r doc/man /opt/qt/doc &&
cp -v -r examples /opt/qt/doc

Note

If you pass the -plugin-sql-<driver> switch to the configure command, you must also pass -I</path/to/sql/headers> so make can find the appropriate header files.

Command Explanations

sed -i -e ... mkspecs/linux*/qmake.conf: Directories in qmake.conf need to be adjusted to match the BLFS Method 1 installation directories.

bash: This command enters a sub-shell to isolate environment changes.

export QTDIR=$PWD: This command defines where the root of the Qt directory is located.

export LD_LIBRARY_PATH=$PWD/lib:$LD_LIBRARY_PATH: This command allows the not yet installed Qt libraries to be used by the not yet installed Qt programs.

export PATH=$PWD/bin:$PATH: This command allows the build process to find supporting executables.

-qt-gif: This switch adds support for gif files to the libraries.

-system-zlib -system-libpng -system-libjpeg -system-mng: These switches force the build instructions to use the shared libraries that are on your system instead of creating a custom set of support libraries for these functions.

-plugin-imgfmt-png -plugin-imgfmt-jpeg -plugin-imgfmt-mng: These switches enable run-time linking of the referenced libraries.

-no-exceptions: This switch disables the exceptions coding generated by the C++ compiler.

-thread: This switch adds support for multi-threading.

find -type f -name Makefile | xargs sed -i "s@-Wl,-rpath,/usr/lib@@g": This command removes hardcoded run-time paths. Otherwise, uic always tries to run with Qt libraries in /usr/lib.

ln -v -s libqt-mt.so /usr/lib/libqt.so: This command allows configure scripts to find a working Qt installation.

cp -v -r doc/man /usr/share (or /opt/qt/doc): This command installs the man pages which are missed by make install.

cp -v -r examples /usr/share/doc/qt (or /opt/qt/doc): This command installs the examples which are missed by make install.

exit: This command returns to the parent shell and eliminates environment variables set earlier.

Configuring Qt

Configuration Information

The QTDIR environment variable needs to be set when building packages that depend on Qt. Add the following to the .bash_profile initialization script for each user that builds packages using the Qt libraries. Alternatively, the variable can be set in the system wide /etc/profile file.

For Method 1 (This is optional, only set this if an application is unable to find the installed libraries):

export QTDIR=/usr

or for Method 2:

export QTDIR=/opt/qt

If you installed Qt using Method 2, you also need to update the following configuration files so that Qt is correctly found by other packages and system processes.

Update the /etc/ld.so.conf and /etc/man_db.conf files:

cat >> /etc/ld.so.conf << "EOF" &&
# Begin qt addition to /etc/ld.so.conf

/opt/qt/lib

# End qt addition
EOF
ldconfig &&
cat >> /etc/man_db.conf << "EOF"
# Begin qt addition to man_db.conf

MANDATORY_MANPATH /opt/qt/doc/man

# End qt addition to man_db.conf
EOF

Update the PKG_CONFIG_PATH environment variable in your ~/.bash_profile or /etc/profile with the following:

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/opt/qt/lib/pkgconfig

If you want the Qt executables in your shell search path, update the PATH environment variable in your ~/.bash_profile or /etc/profile to include /opt/qt/bin.

As with most libraries, there is no explicit configuration to do. After updating /etc/ld.so.conf as explained above, run /sbin/ldconfig so that ldd can find the shared libraries.

Contents

Installed Programs: assistant, designer, linguist, lrelease, lupdate, moc, qm2ts, qmake, qtconfig, and uic
Installed Libraries: libqt-mt.so, libqt.so libqui.so, libdesignercore.a, libeditor.a, and libqassistantclient.a
Installed Directories: /opt/qt-3.3.7 or /usr/lib/qt, /usr/share/qt, /usr/share/doc/qt, /usr/include/qt, and /etc/qt

Short Descriptions

assistant

is a tool for presenting on-line documentation.

designer

is a full-fledged GUI builder. It includes powerful features such as preview mode, automatic widget layout, support for custom widgets, and an advanced property editor.

linguist

provides support for translating applications into local languages.

lrelease

is a simple command line tool. It reads a Qt project file and produces message files used by the application.

lupdate

reads a Qt project file, finds the translatable strings in the specified source, header and Qt Designer interface files, and produces or updates the translation files listed in the project file.

moc

generates Qt meta object support code.

qm2ts

is a tool for converting Qt message file formats.

qmake

qmake uses information stored in project files to determine what should go in the makefiles it generates.

qtconfig

is used to customize the appearance of Qt applications.

uic

is a Qt user interface compiler.

GTK+-1.2.10

Introduction to GTK+

The GTK+ package contains GTK+ Libraries. This is useful for creating graphical user interfaces for applications.

Package Information

GTK+ Dependencies

Required

GLib-1.2.10, and X Window System

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gtk+

Installation of GTK+

Install GTK+ by running the following commands:

./configure --prefix=/usr --sysconfdir=/etc &&
make

This package does not come with a test suite.

Now, as the root user:

make install &&
install -v -m755 -d /usr/share/doc/gtk+-1.2.10/{html,text} &&
install -v -m644 docs/html/* /usr/share/doc/gtk+-1.2.10/html &&
install -v -m644 docs/text/* /usr/share/doc/gtk+-1.2.10/text

Command Explanations

--sysconfdir=/etc: This installs the configuration files into /etc instead of /usr/etc.

--with-xinput=xfree: This configuration flag is necessary to utilize alternative input devices.

Contents

Installed Program: gtk-config
Installed Libraries: libgdk.{so,a} and libgtk.{so,a}
Installed Directories: /etc/gtk, /usr/include/gtk-1.2, and /usr/share/themes

Short Descriptions

gtk-config

is a tool used by configure scripts to determine the compiler and linker flags that should be used to compile and link programs that use GTK+.

libgtk.{so,a}

(GIMP Tool Kit) is a library for creating graphical user interfaces similar to the Motif “look and feel”.

libgdk.{so,a}

is designed as a wrapper library that lies on top of Xlib. It performs many common and desired operations for a programmer instead of the programmer having to explicitly ask for such functionality from Xlib directly.

cairo-1.2.4

Introduction to cairo

cairo is a 2D graphics library with support for multiple output devices. Currently supported output targets include the X Window System, win32, image buffers, PostScript, PDF and SVG. Experimental backends include OpenGL (through glitz), Quartz and XCB file output. cairo is designed to produce consistent output on all output media while taking advantage of display hardware acceleration when available (e.g., through the X Render Extension). The cairo API provides operations similar to the drawing operators of PostScript and PDF. Operations in cairo include stroking and filling cubic Bézier splines, transforming and compositing translucent images, and antialiased text rendering. All drawing operations can be transformed by any affine transformation (scale, rotation, shear, etc.).

Package Information

  • Download (HTTP): http://cairographics.org/releases/cairo-1.2.4.tar.gz

  • Download (FTP):

  • Download MD5 sum: 1222b2bfdf113e2c92f66b3389659f2d

  • Download size: 2.8 MB

  • Estimated disk space required: 56.7 MB

  • Estimated build time: 0.5 SBU (additional 0.9 SBU to run the test suite)

cairo Dependencies

Required

X Window System and pkg-config-0.20

Optional

glitz, DirectFB, XCB, and GTK-Doc-1.6

Optional (to provide extended test suite coverage)

GTK+-2.8.20 (for testing the PDF backend), Poppler-0.4.5 (for testing the PDF backend), librsvg-2.14.4 (for testing the SVG backend), and LTP

Note that the GTK, Poppler and librsvg packages are circular in that using them for test suite coverage requires installing cairo first, then installing the desired package(s), then installing cairo again.

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/cairo

Installation of cairo

cairo will look for an X Render pkg-config file. If you use XFree86 as your X Window system, ensure this file exists (/usr/X11R6/lib/pkgconfig/xrender.pc) before beginning the installation.

Install cairo by running the following commands:

./configure --prefix=/usr &&
make

To test the results, issue: make check.

Now, as the root user:

make install

Command Explanations

--enable-gtk-doc: Use this parameter if GTK-Doc is installed and you wish to rebuild the API documentation.

Contents

Installed Programs: None
Installed Libraries: libcairo.{so,a}
Installed Directories: /usr/include/cairo and /usr/share/gtk-doc/html/cairo

Short Descriptions

libcairo.{so,a}

contains the 2D graphics functions required for rendering to the various output targets.

Pango-1.12.3

Introduction to Pango

The Pango package contains the libpango libraries. These are useful for the layout and rendering of text.

Package Information

Pango Dependencies

Required

GLib-2.10.3 and one of cairo-1.2.4 or X Window System or Fontconfig-2.3.2

cairo is not required to build Pango, but it is highly recommended that you install cairo before building Pango. If you don't build Pango with a cairo backend, then GTK+-2 will not build.

Optional (If cairo is Not Installed)

X Window System

Optional (To Rebuild the API Documentation)

GTK-Doc-1.6

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/pango

Installation of Pango

Install Pango by running the following commands:

./configure --prefix=/usr --sysconfdir=/etc &&
make

To test the results, issue: make check.

Now, as the root user:

make install

Command Explanations

--sysconfdir=/etc: This switch installs the configuration files into /etc instead of /usr/etc.

--enable-gtk-doc: Use this parameter if GTK-Doc is installed and you wish to rebuild the API documentation.

Configuring Pango

Config Files

/etc/pango/pangorc, ~/.pangorc, and the file specified in the environment variable PANGO_RC_FILE

Configuration Information

The Pango module path is specified by the key Pango/ModulesPath in the Pango config database, which is read from the config files listed above.

Contents

Installed Programs: pango-querymodules and pango-view
Installed Libraries: libpango*-1.0.so and Pango loadable modules.
Installed Directories: /etc/pango, /usr/include/pango-1.0, /usr/lib/pango, and /usr/share/gtk-doc/html/pango

Short Descriptions

pango-querymodules

is a module registration utility that collects information about Pango loadable modules.

Pango libraries

contain low level layout rendering routines, a high level driver for laying out entire blocks of text, and routines to assist in editing internationalized text.

ATK-1.11.4

Introduction to ATK

The ATK package contains the ATK libraries. They are useful for allowing accessibility solutions to be available for all GTK2 applications.

Package Information

ATK Dependencies

Required

GLib-2.10.3

Optional

GTK-Doc-1.6

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/atk

Installation of ATK

Install ATK by running the following commands:

./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--enable-gtk-doc: Use this parameter if GTK-Doc is installed and you wish to rebuild the API documentation.

Contents

Installed Programs: None
Installed Library: libatk-1.0.so
Installed Directories: /usr/include/atk-1.0 and /usr/share/gtk-doc/html/atk

Short Descriptions

atklib-1.0.so

contains functions that are used by assistive technologies in order to interact with the desktop and applications.

GTK+-2.8.20

Introduction to GTK+

The GTK+ package contains GTK+ libraries. These are useful for creating graphical user interfaces for applications.

Package Information

GTK+ Dependencies

Required

cairo-1.2.4, Pango-1.12.3, and ATK-1.11.4

Recommended

Though not required, the GTK developers expect libtiff and libjpeg to be installed. Other packages also expect GTK+-2 to be built with support for these graphics packages as well.

Optional

GTK-Doc-1.6 and DocBook-utils-0.6.14

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gtk+2

Installation of GTK+

Install GTK+ by running the following commands:

./configure --prefix=/usr --sysconfdir=/etc &&
make

To test the results, issue: make check. Note that you must run the tests from a session with X Window Display capability (i.e., not a text-based terminal/console) as the tests attempt to open an X window.

Now, as the root user:

make install &&
install -v -m755 -d /usr/share/doc/gtk+-2.8.20/{faq,tutorial} &&
cp -v -R docs/faq/html/* /usr/share/doc/gtk+-2.8.20/faq &&
cp -v -R docs/tutorial/html/* /usr/share/doc/gtk+-2.8.20/tutorial

Command Explanations

--sysconfdir=/etc: This switch installs the configuration files into /etc instead of /usr/etc.

--enable-gtk-doc: This switch will rebuild the API documentation during the make command. Ensure you really want to rebuild this documentation (and end up with what is already shipped in the source tree) as it takes a very long time.

--without-libtiff: Use this switch if you don't have libtiff installed.

--without-libjpeg: Use this switch if you don't have libjpeg installed.

Contents

Installed Programs: gdk-pixbuf-csource, gdk-pixbuf-query-loaders, gtk-demo, gtk-query-immodules-2.0, and gtk-update-icon-cache
Installed Libraries: libgdk_pixbuf-2.0.so, libgdk-x11-2.0.so, libgtk-x11-2.0.so, libgdk_pixbuf_xlib-2.0.so, and numerous engine, module, and loader plugins
Installed Directories: /etc/gtk-2.0, /usr/include/gtk-2.0, /usr/lib/gtk-2.0, /usr/share/doc/gtk+-2.8.20, /usr/share/gtk-2.0, /usr/share/gtk-doc/html/{gdk,gdk-pixbuf,gtk}, /usr/share/themes/Default/gtk*, /usr/share/themes/Emacs and /usr/share/themes/Raleigh

Short Descriptions

gdk-pixbuf-csource

generates C code containing images, useful for compiling images directly into programs.

gdk-pixbuf-query-loaders

collects information about loadable modules for gdk-pixbuf and writes it to standard output.

gtk-query-immodules-2.0

collects information about loadable input method modules for GTK+ and writes it to standard output.

gtk-update-icon-cache

creates mmap()able cache files for icon themes.

GTK+ Libraries

provide an API to implement graphical user interfaces.

LessTif-0.94.4

Introduction to LessTif

The LessTif package contains an Open Source version of OSF/Motif®.

Package Information

  • Download (HTTP): http://downloads.sourceforge.net/lesstif/lesstif-0.94.4.tar.bz2

  • Download (FTP):

  • Download MD5 sum: 3096ca456c0bc299d895974d307c82d8

  • Download size: 2.4 MB

  • Estimated disk space required: 160 MB (includes building and running the test suite)

  • Estimated build time: 2.89 SBU (includes building the test suite)

Additional Downloads

LessTif Dependencies

Required

X Window System

Optional

Lynx-2.8.6 or Links-2.1pre23 (used to generate the INSTALL documentation file) and Dmalloc

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/lesstif

Installation of LessTif

Install LessTif by running the following commands:

patch -Np1 -i ../lesstif-0.94.4-testsuite_fix-1.patch &&
./configure --prefix=/usr --disable-debug \
    --enable-production --with-xdnd &&
make rootdir=/usr/share/doc/lesstif-0.94.4

This package requires that it be installed before the test suite is run. The commands to run the tests are located a bit later in the instructions.

Now, as the root user:

make rootdir=/usr/share/doc/lesstif-0.94.4 install

If your X Window System is XFree86 or Xorg-6.9 issue the following commands:

mv -v /usr/X11R6/lib/X11/mwm /etc/X11 &&
ln -v -s ../../../../etc/X11/mwm /usr/X11R6/lib/X11 &&
ldconfig

If your X Window System is Xorg-7.x issue these commands instead:

mv -v /usr/lib/X11/mwm /etc/X11 &&
ln -v -s ../../../etc/X11/mwm /usr/lib/X11 &&
ldconfig

Command Explanations

--disable-debug: Do not generate debugging information.

--enable-production: Build the release version of the LessTif libraries.

--with-xdnd: Enable XDND GNOME compatibility support.

rootdir=/usr/share/doc/lesstif-0.94.4: This installs the documentation into an appropriate directory instead of the non-FHS compliant /usr/LessTif directory.

mv -v /usr/X11R6/lib/X11/mwm /etc/X11: The mwm configuration directory is moved to its proper FHS location in /etc/X11.

ln -v -s ../../../../etc/X11/mwm /usr/X11R6/lib/X11: A symlink required by some legacy applications is created pointing to the mwm configuration directory moved in the previous command.

Testing LessTif

It is advisable to test the installation of LessTif using the included test suite. It is not required to install any of the resulting binaries to validate the installation. Issue the following commands to build the test suite:

cd test &&
./configure &&
make

To run the tests, issue the following commands:

cd Xm &&
./testall *

You'll need to manually close three of the test windows. The first one is from test28 in the list directory. The second one is from test10 in the menushell directory. You should click on the button in the window and choose “exit” (do it twice) to finish the test. The third test is from test24 in the scrolledwindow directory.

As many as 100 tests are known to fail. The patch applied at the beginning of the installation created a file used to compare known failures to the failures from the test run. This file was created from an installation using the current LFS book and should be a fairly accurate representation of the failures you'll encounter. You could see some minor variances, however.

Configuring LessTif

Config Files

/etc/X11/mwm/system.mwmrc and ~/.mwmrc

Configuration Information

The config files are used to customize the behavior of the mwm window manager. Information about customizing these files can be found in the mwmrc(5) man page.

Contents

Installed Programs: motif-config, mwm, mxmkmf, uil, and xmbind
Installed Libraries: libDtPrints.so, libMrm.so, libUil.so, and libXm.so
Installed Directories: /etc/X11/mwm, /usr/include/Xm, /usr/include/Mrm, /usr/include/uil, /usr/include/Dt, /usr/lib/LessTif, and /usr/share/doc/lesstif-0.94.4

Short Descriptions

motif-config

is used to find out configuration information for packages needing to link to the LessTif libraries.

mwm

is a window manager that adheres largely to the Motif mwm specification.

mxmkmf

is the LessTif version of xmkmf which creates a Makefile from an Imakefile.

uil

is a user interface language compiler which translates a plain text description of the user interface of a Motif application into a machine-readable form.

xmbind

configures the virtual key bindings of LessTif applications.

libXm.so

is an OSF/Motif® source code compatible library for the X Window System. You can download an excellent reference guide (mainly for programmers) for the Motif-2.1 specification from http://unc.dl.sourceforge.net/lesstif/6B_book.pdf.

startup-notification-0.8

Introduction to startup-notification

The startup-notification package contains startup-notification libraries. These are useful for building a consistent manner to notify the user through the cursor that the application is loading.

Package Information

startup-notification Dependencies

Required

X Window System

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/startup-notification

Installation of startup-notification

Install startup-notification by running the following commands:

./configure --prefix=/usr &&
make

Now, as the root user:

make install &&
install -v -m644 -D doc/startup-notification.txt \
    /usr/share/doc/startup-notification-0.8/startup-notification.txt

Contents

Installed Programs: None
Installed Library: libstartup-notification-1.{so,a}
Installed Directories: /usr/include/startup-notification-1.0 and /usr/share/doc/startup-notification-0.8

Short Descriptions

libstartup-notification-1.{so,a}

provides the functions to assist applications in communicating with the cursor system to provide feedback to the user that the application is loading.

libwnck-2.14.3

Introduction to libwnck

The libwnck package contains a Window Navigator Construction Kit.

Package Information

libwnck Dependencies

Required

GTK+-2.8.20 and XML::Parser-2.34

Optional

startup-notification-0.8, intltool-0.34.2, and GTK-Doc-1.6

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libwnck

Installation of libwnck

Install libwnck by running the following commands:

./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--enable-gtk-doc: Use this parameter if GTK-Doc is installed and you wish to rebuild the API documentation.

Contents

Installed Programs: None
Installed Library: libwnck-1.{so,a}
Installed Directories: /usr/include/libwnck-1.0 and /usr/share/gtk-doc/html/libwnck

Short Descriptions

libwnck-1.{so,a}

contains functions for writing pagers and task lists.

shared-mime-info-0.17

Introduction to shared-mime-info

The shared-mime-info package contains a MIME database. This allows central updates of MIME information for all supporting applications.

Package Information

shared-mime-info Dependencies

Required

GLib-2.10.3, libxml2-2.6.26, and XML::Parser-2.34

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/shared-mime-info

Installation of shared-mime-info

Install shared-mime-info by running the following commands:

./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Configuring shared-mime-info

Configuration Information

Some applications (including GNOME-2) require a properly set environment variable to locate the MIME database. Satisfy this requirement by setting the following variable in your local shell profile, or the system-wide profile:

XDG_DATA_DIRS=/usr/share
export XDG_DATA_DIRS

Contents

Installed Program: update-mime-database
Installed Libraries: None
Installed Directory: /usr/share/mime

Short Descriptions

update-mime-database

assists in adding MIME data to the database.

hicolor-icon-theme-0.9

Introduction to hicolor-icon-theme

The hicolor-icon-theme package contains a default fallback theme for implementations of the icon theme specification.

Package Information

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/hicolor-icon-theme

Installation of hicolor-icon-theme

Install hicolor-icon-theme by running the following commands:

./configure --prefix=/usr

This package does not come with a test suite.

Now, as the root user:

make install

Contents

Installed Programs: None
Installed Libraries: None
Installed Directories: /usr/share/icons/hicolor

Short Descriptions

/usr/share/icons/hicolor/*

contains icon definitions used as defaults.

libxklavier-2.2

Introduction to libxklavier

The libxklavier package contains a utility library for X keyboard.

Package Information

libxklavier Dependencies

Required

X Window System, pkg-config-0.20, and libxml2-2.6.26

Optional

Doxygen-1.4.6

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libxklavier

Installation of libxklavier

Install libxklavier by running the following commands:

./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Contents

Installed Programs: None
Installed Library: libxklavier.{so,a}
Installed Directories: /usr/include/libxklavier and /usr/share/libxklavier

Short Descriptions

libxklavier.{so,a}

contains XKB utility functions.

freeglut-2.4.0

Introduction to freeglut

freeglut is intended to be a 100% compatible, completely opensourced clone of the GLUT library. GLUT is a window system independent toolkit for writing OpenGL programs, implementing a simple windowing API, which makes learning about and exploring OpenGL programming very easy.

Package Information

freeglut Dependencies

Required

X Window System

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/freeglut

Installation of freeglut

Install freeglut by running the following commands:

./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install &&
install -v -d -m755 /usr/share/doc/freeglut-2.4.0 &&
install -v -m644 doc/freeglut_user_interface.html \
    /usr/share/doc/freeglut-2.4.0

Contents

Installed Programs: None
Installed Libraries: libglut.{so,a}
Installed Directories: /usr/share/doc/freeglut-2.4.0

Short Descriptions

libglut.{so,a}

contains functions that implement the OpenGL Utility Toolkit.

GOffice-0.2.1

Introduction to GOffice

The GOffice package contains a library of GLib/GTK document centric objects and utilities. This is useful for performing common operations for document centric applications that are conceptually simple, but complex to implement fully. Some of the operations provided by the GOffice library include support for plugins, load/save routines for application documents and undo/redo functions.

Package Information

GOffice Dependencies

Required

libgsf-1.14.1 and Pango-1.12.3

Recommended (for the User Interface functionality)

Note: not installing the recommended dependencies can render the GOffice package incapable of supporting applications which depend on it. If, for whatever reason, you elect not to install the recommended dependencies, you must add the --without-gtk parameter to the configure command in the instructions below.

Optional

cairo-1.2.4 (already installed if you installed the recommended dependencies) and libgnomeui-2.14.1 (with libgsf built to support GNOME by creating the libgsf-gnome-1 library)

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/goffice

Installation of GOffice

Install GOffice by running the following commands:

./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Contents

Installed Programs: None
Installed Libraries: libgoffice-1.so and numerous support plugins
Installed Directories: /usr/include/libgoffice-1, /usr/lib/goffice, /usr/share/{,pixmaps/}goffice

Short Descriptions

libgoffice-1.so

contains API functions to provide support for document centric objects and utilities.

MesaLib-6.5

Introduction to MesaLib

Mesa is an OpenGL compatible 3-D graphics library.

Package Information

  • Download (HTTP): http://downloads.sourceforge.net/mesa3d/MesaLib-6.5.tar.bz2

  • Download (FTP):

  • Download MD5 sum: 61beda590bfc5b4a12e979d5f2d70d7a

  • Download size (including recommended download): 3.3 MB

  • Estimated disk space required (including recommended download): 157 MB

  • Estimated build time (including recommended download): 1.7 SBU

MesaLib Dependencies

Required

Xorg Libraries, Xorg Utilities, and libdrm-2.0.1

Note

This package should only be built if you are installing Xorg-7.1. If you have installed or will be installing Xorg-6.9.0 or XFree86, it is provided by those packages and should not be installed here. Ensure that you have the XORG_CONFIG and XORG_PREFIX variables set as described in the Xorg-7.1 page.

Recommended Download

Optional Download

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/mesalib

Installation of MesaLib

Extract all three tarballs from the same top-level directory as they all will extract to the Mesa-6.5 directory.

Fix an error with output redirection if /bin/sh is not the Bash shell on your system:

sed -i 's%>& /dev/null%>/dev/null%' src/mesa/drivers/dri/Makefile.template

Install MesaLib by running the following commands:

find . -type f -exec sed -i "s@/usr/X11R6@$XORG_PREFIX@g" {} \; &&
sed -i 's@lib/modules@lib/X11/modules@' \
    src/glx/x11/dri_glx.c \
    src/mesa/drivers/dri/Makefile.template &&
make OPT_FLAGS="-O2 -fno-strict-aliasing" linux-dri-x86

If you downloaded and extracted the Demos package, build the programs with the following commands:

sed -i 's@-l$(GLUT_LIB)@@g' configs/default &&
make -C progs/xdemos PROGS='glxinfo glxgears'

This package does not come with a test suite.

Now, as the root user:

bin/installmesa $XORG_PREFIX &&
install -v -m755 -d $XORG_PREFIX/lib/X11/modules/dri &&
install -v -m755 lib/*dri* $XORG_PREFIX/lib/X11/modules/dri

If you built the demo programs, install them using the following command as the root user:

install -v -m755 progs/xdemos/glx{info,gears} $XORG_PREFIX/bin

Finally, if installing to any prefix other than /usr, you should create symlinks to the GL headers in /usr/include. Execute the following command as the root user:

ln -s -v $XORG_PREFIX/include/GL /usr/include

Tip

Do not remove the Mesa source tree yet, it will be required to build the Xorg-Server-1.1.1.

Command Explanations

find ... sed -i "s@/usr/X11R6@$XORG_PREFIX@" ...: This command corrects several hard coded references to the X11R6 default installation path.

sed -i 's@lib/modules@lib/X11/modules@' ...: This command corrects a hard coded reference to the module directory.

make OPT_FLAGS=... linux-dri-x86: A bug where OpenGL applications are shifted to the left by 50% can be worked around by adding -fno-strict-aliasing to the compiler flags. Also, the linux-dri-x86 target is specified to use a few other helpful flags in addition to the defaults. See the other targets in the configs directory if your architecture is not x86.

sed -i 's@-l$(GLUT_LIB)@@g' configs/default: Disables linking against the GLUT libraries for the demo programs, omit this command if you downloaded and extracted the GLUT tarball.

make ... PROGS='glxinfo glxgears': Only builds the glxinfo and glxgears programs.

bin/installmesa: Mesa uses a custom installation script as opposed to the normal install make target.

install -v -m755 lib/*dri* $XORG_PREFIX/lib/X11/modules/dri: installs the DRI modules.

Contents

Installed Programs (optional): glxgears and glxinfo
Installed Libraries: libGL.{so,a}, libGLU.{so,a}, libGLw.{so,a}, *_dri.so and optionally, libglut.{so,a}
Installed Directory: $XORG_PREFIX/lib/modules/dri

Short Descriptions

glxgears

is a GL demo useful for troubleshooting graphics problems.

glxinfo

is a diagnostic program that displays information about the graphics hardware and installed GL libraries.

Chapter 27. Window Managers

Introduction

Window Managers and Desktop Environments are the primary user interfaces into the X Window System. A window manager is a program that controls the appearance of windows and provides the means by which the user can interact with them. A Desktop Environment provides a more complete interface to the operating system, and provides a range of integrated utilities and applications.

There are many Window Managers available. Some of the more well known ones include fvwm2, Window Maker, AfterStep, Enlightenment, Sawfish, and Blackbox.

The Desktop Environments available for Linux are GNOME, KDE, and XFce.

Choosing a Window Manager or Desktop Environment is highly subjective. The choice depends on the look and feel of the packages, the resources (RAM, disk space) required, and the utilities included. One web site that provides a very good summary of what is available, screenshots, and their respective features is Window Managers for X.

In this chapter, the installation instructions of several Window Managers and one lightweight Desktop Environment are presented. Later in the book, both KDE and GNOME have their own sections.

sawfish-1.3

Introduction to sawfish

The sawfish package contains a window manager. This is useful for organizing and displaying windows where all window decorations are configurable and all user-interface policy is controlled through the extension language.

Package Information

sawfish Dependencies

Required

rep-gtk-0.18 and EsounD-0.2.36

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/sawfish

Installation of sawfish

Install sawfish by running the following commands:

./configure --prefix=/usr --libexec=/usr/sbin \
    --infodir=/usr/share/info --disable-themer &&
make

Now, as the root user:

make install

Command Explanations

--disable-themer: This option prevents building the sawfish themer. This program was not migrated to GTK-2.

--with-audiofile: This command directs sawfish to use libaudiofile for sound manipulation.

--with-esd: This command directs sawfish to use the Enlightened Sound Daemon.

Configuring sawfish

Configuration Information

Be sure to backup your current .xinitrc before proceeding.

cat >> ~/.xinitrc << "EOF"
exec sawfish
EOF

Contents

Installed Programs: sawfish, sawfish-client, and sawfish-ui
Installed Libraries: None
Installed Directory: /usr/share/sawfish, /usr/sbin/sawfish, and /usr/lib/rep/*/

Short Descriptions

sawfish

is the extensible window manager using a Lisp-based scripting language.

sawfish-client

allows you to connect to a window manager process and evaluate arbitrary Lisp forms.

sawfish-ui

is the sawfish configurator.

Fluxbox-0.9.15.1

Introduction to Fluxbox

The Fluxbox package contains a window manager.

Package Information

Fluxbox Dependencies

Required

X Window System

Optional

Imlib2-1.2.2 Image display library

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/fluxbox

Installation of Fluxbox

Install Fluxbox by running the following commands:

./configure --prefix=/usr &&
make

To test the results, issue: make check.

Now, as the root user:

make install

Command Explanations

--enable-imlib2: Use this option if you wish to use other image formats in addition to xpm.

Configuring Fluxbox

Config Files

~/.fluxbox/init, ~/.fluxbox/keys, and ~/.fluxbox/menu

Configuration Information

If Fluxbox is the only Window Manager you want to use, you can start it with an .xinitrc file in your home folder. Be sure to backup your current .xinitrc before proceeding.

echo startfluxbox > ~/.xinitrc

Or alternatively, if you use a login manager like GDM-2.14.10 or kdm and would like to be able to choose Fluxbox at the login prompt, create a fluxbox.desktop file like this.

As root:

cat > /usr/share/xsessions/fluxbox.desktop << "EOF"
[Desktop Entry]
Encoding=UTF-8
Name=Fluxbox
Comment=This session logs you into Fluxbox
Exec=startfluxbox
Type=Application
EOF

If you didn't install GDM-2.14.10 or kdm in /usr, then change that command to fit the prefix you chose.

Now create the Fluxbox configuration files:

mkdir -v ~/.fluxbox &&
cp -v /usr/share/fluxbox/init ~/.fluxbox/init &&
cp -v /usr/share/fluxbox/keys ~/.fluxbox/keys

Now if you have which-2.16 installed:

cd ~/.fluxbox &&
fluxbox-generate_menu

otherwise:

cp -v /usr/share/fluxbox/menu ~/.fluxbox/menu

Menu items are added by editing ~/.fluxbox/menu. The syntax is explained on the fluxbox man page.

If you want to use an image as your desktop background, copy the theme you like into ~/.fluxbox. Then add a line to make it use the correct image. In the following command, change <theme> for the name of the theme you want and change </path/to/nice/image.xpm> to point to the actual image you want to use.

cp /usr/share/fluxbox/styles/<theme> ~/.fluxbox/theme &&
sed -i 's,\(session.styleFile:\).*,\1 ~/.fluxbox/theme,' \
 ~/.fluxbox/init &&
echo "background.pixmap: </path/to/nice/image.xpm>" >> ~/.fluxbox/theme

In some locales the font specified in the theme may not contain the needed characters. This results in menus with blank items. You can fix this by editing ~/.fluxbox/theme with a text editor and altering it so that it names a suitable font.

Contents

Installed Programs: fluxbox, fbsetbg, fbsetroot, fluxbox-generate_menu, startfluxbox, and fbrun
Installed Libraries: None
Installed Directory: /usr/share/fluxbox and ~/.fluxbox

Short Descriptions

fluxbox

is a window manager for X11 based on Blackbox 0.61.0.

fbsetbg

is a utility that sets the background image. It requires which to find one of: display, Esetroot, wmsetbg, xv, qiv or xsri.

fbsetroot

is a utility to change root window appearance based on the Blackbox application bsetroot.

fluxbox-generate_menu

is a utility that generates a menu by scanning your PATH. It requires which to function properly.

startfluxbox

is a session startup script that allows for command executions prior to fluxbox starting.

fbrun

displays a run dialog window.

Metacity-2.14.5

Introduction to Metacity

The Metacity package contains a window manager. This is useful for organizing and displaying windows.

Package Information

Metacity Dependencies

Required

GTK+-2.8.20 and XML::Parser-2.34

Optional

startup-notification-0.8 (recommended if you are installing GNOME-2), GConf-2.14.0 (recommended if you are installing GNOME-2), intltool-0.34.2, and libXcomposite*

* libXcomposite can optionally be used, but here's what the Metacity package maintainer has to say about it in the configure script if the package is found: “Not building compositing manager by default now, must enable explicitly to get it. And it doesn't work, so don't bother unless you want to hack on it...

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/metacity

Installation of Metacity

Metacity will look for an X Render pkg-config file. If you use XFree86 as your X Window system, ensure this file exists (/usr/X11R6/lib/pkgconfig/xrender.pc).

Install Metacity by running the following commands:

./configure --prefix=/usr \
            --libexecdir=/usr/lib/metacity \
            --sysconfdir=/etc &&
make

This package does not come with a test suite.

Now, as the root user:

make install &&
install -v -m755 -d /usr/share/doc/metacity-2.14.5 &&
install -v -m644 README rationales.txt doc/*.txt \
    /usr/share/doc/metacity-2.14.5

Command Explanations

--with-gconf-schema-file-dir=/etc/gnome/2.14.3/gconf/schemas: Use this option if you are installing Metacity for a GNOME-2 installation.

Configuring Metacity

Configuration Information

To automatically start the Metacity window manager when you issue the startx command, append to (or create) .xinitrc using the command below (not required if you are installing Metacity for a GNOME-2 installation). Ensure you backup your current ~/.xinitrc before proceeding:

cat >> ~/.xinitrc << "EOF"
xterm &
exec metacity
EOF

Contents

Installed Programs: metacity, metacity-message, metacity-theme-viewer and metacity-window-demo
Installed Library: libmetacity-private.{so,a}
Installed Directories: /usr/include/metacity-1, /usr/lib/metacity, /usr/share/doc/metacity-2.14.5, /usr/share/gnome/wm-properties, /usr/share/metacity and /usr/share/themes/{AgingGorilla,Atlanta,Bright,Crux,Esco,Metabox,Simple}

Short Descriptions

metacity

is a window manager used mainly by GNOME.

metacity-theme-viewer

allows you to preview any installed Metacity theme. When designing a new Metacity theme, you can use metacity-theme-viewer to measure the performance of a window frame option, and to preview the option.

metacity-window-demo

demonstrates various kinds of windows that window managers and window manager themes should handle.

XFce-4.2.3.2

Introduction to XFce

The XFce package contains a lightweight desktop environment.

Package Information

XFce Dependencies

Required

GTK+-2.8.20 and libxml2-2.6.26

Optional

GDM-2.14.10, librsvg-2.14.4 (xffm links to librsvg automatically if librsvg is installed), libgtkhtml-2.11.0, startup-notification-0.8, and a2ps-4.13b (required to build xfprint).

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/xfce

Installation of XFce

A bare minimum XFce setup requires installation of the following packages:

  • libxfce4util-4.2.3.2.2

  • dbh-1.0.24

  • libxfcegui4-4.2.3.2

  • libxfce4mcs-4.2.3.2

  • xfce-mcs-manager-4.2.3.2

  • xfwm4-4.2.3.2.2

  • xfce4-panel-4.2.3.2

  • xfdesktop-4.2.3.2

  • xfce-utils-4.2.3.2

Install the minimum applications by issuing the following commands:

./configure --prefix=/usr --sysconfdir=/etc &&
make

If you use GDM-2.14.10 as your display manager and would like to be able to log into an XFce session from the login prompt, pass the --enable-gdm option to the xfce-utils-4.2.3.2 configure script (requires which-2.16 to be installed at run time).

Now, as the root user:

make install

In addition, you may choose to install:

  • gtk-xfce-engine-2.2.8

  • xfcalendar-4.2.3.2

  • xfce-mcs-plugins-4.2.3.2

  • xfce4-appfinder-4.2.3.2

  • xfce4-icon-theme-4.2.3.2

  • xfce4-iconbox-4.2.3.2

  • xfce4-mixer-4.2.3.2

  • xfce4-session-4.2.3.2

  • xfce4-systray-4.2.3.2

  • xfce4-toys-4.2.3.2

  • xfce4-trigger-launcher-4.2.3.2

  • xffm-4.2.3.2

  • xfprint-4.2.3.2

  • xfwm4-themes-4.2.3.2

Install the remaining applications using the following commands:

./configure --prefix=/usr --sysconfdir=/etc \
     --libexecdir=/usr/lib/xfce4 &&
make

Also, xfprint can be configured with --enable-cups if you have CUPS-1.2.7 installed.

And then as root:

make install

As the root user, move the help documentation to the standard BLFS location and modify the help script to look for it there:

mv -vf /usr/share/xfce4/doc /usr/share/doc/xfce4 &&
sed -i 's@xfce4/doc@doc/xfce4@' /usr/bin/xfhelp4

Command Explanations

--sysconfdir=/etc: libxfce4util, xfce4-panel, xfdesktop, xfce-utils and xfce4-session require this parameter because the path is built into the library or they install configuration files in /etc/xdg.

--libexecdir=/usr/lib/xfce4: xfce4-session requires this parameter to install some utility programs to the correct location.

Configuring XFce

Configuration Information

XFce will look for the theme index from hicolor-icon-theme-0.9 at run-time. Ensure you install the package before launching XFce.

Issue the command below to create an .xinitrc file which will automatically run the appropriate XFce programs when the X Window system is launched. Be sure to backup your existing .xinitrc file before proceeding.

cat > ~/.xinitrc << "EOF"
xfce-mcs-manager
xfwm4 --daemon
xftaskbar4 &
xfdesktop &
exec xfce4-panel
EOF

Contents

Installed Programs: fgr, scramble, startxfce4, xfbook, xfbook4, xfcalendar, xfce-mcs-manager, xfce-setting-show, xfce4-about, xfce4-appfinder, xfce4-iconbox, xfce4-kiosk-query, xfce4-menueditor, xfce4-mixer, xfce4-panel, xfce4-session, xfce4-session-logout, xfce4-tips, xfdesktop, xfdiff4, xffm, xffrequent, xffrequent4, xffstab, xffstab4, xfglob4, xfhelp4, xflock4, xfmime-edit, xfmountdev4, xfrecent, xfrecent4, xfprint-manager, xfprint4, xfrun4, xfsamba4, xftaskbar4, xfterm4, xftrash4, xftree4, and xfwm4
Installed Libraries: libxfce4util.{a,so}, libdbh.{a,so}, libxfcegui4.{a,so}, libxfce4mcs.{a,so}, libxffm_actions.so, libxffm_basic.so, libxffm_calls.so, libxffm_cpy.so, libxffm_on_demand.so, libxffm_secondary.so, libxffm_tubo.so, libxfsm-4.2.{a,so}
Installed Directories: /usr/lib/xfce4, /usr/share/doc/xfce4, /usr/share/xfce4, /usr/share/xffm and /usr/share/xfwm4

Short Descriptions

fgr

is a file content search engine for xffm.

startxfce4

is a script which starts up the XFce Desktop Environment.

xfce-mcs-manager

is the settings manager for XFce.

xfce4-about

displays the about box.

xfce4-session

saves the state of your desktop and restores it when you next start XFce.

xfce-setting-show

displays the settings for XFce.

xfce4-panel

is the panel manager for XFce. It contains the launcher, clock, mail check, desktop switcher and separator programs.

xfdesktop

is the desktop manager for XFce.

xfhelp4

is script that launches a HTML browser to display online documentation. It requires which to run.

xflock4

is a script used to lock the current screen during drag and drop actions.

xfmountdev4

mounts a device on the specified mount point and launches xftree4, then unmounts the device when xftree4 finishes.

xfrun4

is the program launcher for XFce.

xfsamba4

is the Samba front end for XFce.

xftaskbar4

is the taskbar manager for XFce.

xfterm4

is a small terminal wrapper to be used as a drag and drop action for the XFce front panel. It requires which to run.

xftrash4

is a small binary to be used as a drag and drop action for the XFce front panel.

xffm

is the file manager for XFce.

xfwm4

is an X11 window manager for XFce.

Other Window Managers

twm is the Tab Window Manager. This is the default window manager installed by the X Window System packages.

mwm is the Motif® Window Manager. It is an OSF/Motif® clone packaged and installed with LessTif-0.94.4.

Part VIII. KDE

Introduction to KDE

KDE is a comprehensive desktop environment that builds on an X Window System and Qt to provide a window manager and many user tools, including a browser, word processor, spreadsheet, presentation package, games, and numerous other utilities. It provides extensive capabilities for customization.

The KDE instructions are divided into three parts. The first part, the core packages, are needed for the rest of KDE to work. The second part presents additional packages which provide functionality in various areas (multimedia, graphics, etc.) The third part provides resources for software and web developers.

There are two alternatives for installing KDE. Option one, that is used by most of the commercial distributions, is to install KDE in the standard system prefix: /usr. This option allows the use of KDE without the need for any additional configuration such as modification of various environment variables or configuration files. Option two is to install it in a unique prefix such as /opt/kde or /opt/kde-3.5.6. This option allows for easy removal of the KDE version or maintenance of multiple versions for testing.

Tip

All the KDE packages are comprised of various components. The default is to install most of the components. If specific components are to be eliminated, the official way is to set the variable DO_NOT_COMPILE. This comes in handy when there are problems compiling a particular component.

DO_NOT_COMPILE="component1 component2" \
    ./configure --prefix=$KDE_PREFIX ...

The core KDE packages also honor this variable, but omitting components from the core packages is not advisable since it may result in an incomplete KDE installation.

Note

In each of the packages, one other option to configure can be added: --enable-final. This option can speed up the build process, but requires a lot of memory. If you have less than 256MB of RAM, this option may cause swapping and significantly slow compilation.

Chapter 28. KDE Core Packages

KDE Pre-installation Configuration

Based on your preference, set KDE_PREFIX.

One option is to put KDE into the /usr hierarchy. This creates a simpler setup but is more difficult to try multiple versions of KDE.

export KDE_PREFIX=/usr

A method of building multiple versions installs KDE in the /opt hierarchy:

export KDE_PREFIX=/opt/kde-3.5.6

Remember to execute ldconfig after installation of libraries to update the library cache.

If you are not installing KDE in /usr, you will need to make some configuration changes:

You should consider installing the desktop-file-utils-0.11 package. Though not required, this package will allow you to easily use existing .desktop files in /usr/share/applications (and any other locations identified by XDG_DATA_DIRS), and automatically add these applications to the KDE menu system.

Add to your system or personal profile:

export PATH=$PATH:/opt/kde-3.5.6/bin
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/opt/kde-3.5.6/lib/pkgconfig

Add to your /etc/ld.so.conf:

cat >> /etc/ld.so.conf << "EOF"
# Begin kde addition to /etc/ld.so.conf

/opt/kde-3.5.6/lib

# End kde addition
EOF

Add to your /etc/man_db.conf:

cat >> /etc/man_db.conf << "EOF"
# Begin kde addition to man_db.conf

MANDATORY_MANPATH /opt/kde-3.5.6/man

# End kde addition to man_db.conf
EOF

Tip

If you prefer installing KDE in /opt, one trick to avoid the above configuration changes every time you install a new version is to replace /opt/kde-3.5.6 with /opt/kde and to create a symlink from /opt/kde-3.5.6 to /opt/kde.

ln -v -sf kde-3.5.6 /opt/kde

aRts-1.5.6

Introduction to aRts

The Analog Real-time Synthesizer (aRts) provides sound support for KDE and necessary libraries for kdelibs.

Package Information

aRts Dependencies

Required

Qt-3.3.7 and GLib-2.10.3

Recommended

Optional

libvorbis-1.1.2, ALSA-1.0.13, Audio File-0.2.6, libmad-0.15.1b, EsounD-0.2.36, NAS-1.7, MAS, and JACK

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/arts

Installation of aRts

Install aRts by running the following commands:

./configure --prefix=$KDE_PREFIX --disable-debug \
    --disable-dependency-tracking &&
make

This package does not come with a test suite that works with GCC-4.0.3.

Now, as the root user:

make install

Command Explanations

--prefix=$KDE_PREFIX: This option tells the process to install the package in $KDE_PREFIX. aRts is installed here as it's required before installing KDE.

--disable-debug: This option causes the package to be compiled without debugging code.

--disable-dependency-tracking: This option speeds up one time builds.

Contents

Installed Programs: artsd, artswrapper, artsshell, artsplay, artsdsp, artscat, arts-control, artsc-config, and mcopidl
Installed Libraries: aRts libraries
Installed Directories: The following subdirectories of $KDE_PREFIX/: bin, include/arts, include/artsc, and lib/mcop

Short Descriptions

artsd

is a daemon that provides access to the sound hardware resources.

artswrapper

is a small wrapper program which simply sets real-time priority (running as root) and then executes artsd as a non-root user.

artsshell

is intended as a utility to perform miscellaneous functions related to the sound server.

artsplay

is a simple utility to play a sound file.

artsdsp

provides an interim solution that allows most of legacy sound applications to run unchanged.

artscat

is a simple utility to send raw audio data to the sound server.

artscontrol

is a graphical utility for performing a number of tasks related to the sound server.

artsc-config

is a utility to assist developers using the aRts C API.

mcopidl

is the Interface Definition Language (IDL) file compiler for MCOP, the Multimedia Communication Protocol used by aRts.

aRts Libraries

contains functions that support aRts programs.

To find out information about aRts and the various programs included in the package, see The aRts Handbook. For information in languages other then English, see the KDE Documentation and navigate to the aRts documentation in your language.

Kdelibs-3.5.6

Introduction to Kdelibs

This package includes programs and libraries that are central to the development and execution of a KDE program, as well as internationalization files for these libraries, miscellaneous HTML documentation, theme modules and regression tests.

Package Information

Kdelibs Dependencies

Required

aRts-1.5.6

Recommended

Optional

LibTIFF-3.8.2, Aspell-0.60.4, CUPS-1.2.7, OpenLDAP-2.3.27, ALSA-1.0.13, Heimdal-0.7.2 or MIT Kerberos V5-1.6, OpenEXR, JasPer, Lua (version < 5.1), mDNSResponder, LibThai, Hspell, libacl (requires libattr), Graphviz-2.8, and Doxygen-1.4.6

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/kdelibs

Installation of Kdelibs

Install kdelibs with:

./configure --prefix=$KDE_PREFIX \
            --sysconfdir=/etc/kde \
            --disable-debug \
            --disable-dependency-tracking &&
make

Note

If you wish to create the API documentation and you have Doxygen and Graphviz installed, make apidox must be done before make install. This applies to all packages which can utilize Doxygen.

The make apidox command generates a lot of errors and warnings. In some cases it complains that Helvetica fonts are missing and substitutes a font that does not fit boxes properly. You can add the font by downloading the URW Fonts and unpacking them into ~/.fonts. fc-cache should also be run to update the font properties on your system.

The documents generated are HTML and are found in $KDE_PREFIX/share/doc/HTML/en/kdelibs-apidocs.

This package does not come with a test suite that works with GCC-4.0.3.

Now, as the root user:

make install

Command Explanations

--prefix=$KDE_PREFIX: This option tells the process to install the package in $KDE_PREFIX.

--disable-debug: This option causes the package to be compiled without debugging code.

--disable-dependency-tracking: This option speeds up one time builds.

--sysconfdir=/etc/kde: This option places configuration files in compliance with the Filesystem Hierarchy Standard. If you omit this parameter, the configuration files will be placed in $KDE_PREFIX/etc which may be desirable if you have multiple versions of KDE installed.

Run-Time Dependencies

The KDE libraries access other programs at run time. One additional package that has not been mentioned already is pmount. This enables auto-mounting of hotplugged devices at /media/[device_name] for any user without any fstab modification. It is needed to enable the full integration of KDE with HAL-0.5.7.1.

Contents

Installed Programs: Numerous KDE support programs: artsmessage, checkXML, cupsdconf, cupsdoprint, dcop, dcopclient, dcopfind, dcopidl, dcopidl2cpp, dcopidlng, dcopobject, dcopquit, dcopref, dcopserver, dcopserver_shutdown, dcopstart, filesharelist, fileshareset, imagetops, kab2kabc, kaddprinterwizard, kbuildsycoca, kcmshell, kconf_update, kconfig_compiler, kcookiejar, kde-config, kde-menu, kded, kdeinit, kdeinit_shutdown, kdeinit_wrapper, kdesu_stub, kdontchangethehostname, kdostartupconfig, kfile, kfmexec, kgrantpty, khotnewstuff, kinstalltheme, kio_http_cache_cleaner, kio_uiserver, kioexec, kioslave, klauncher, kmailservice, kpac_dhcp_helper, ksendbugmail, kshell, kstartupconfig, ksvgtopng, ktelnetservice, ktradertest, kunittestmodrunner, kwrapper, lnusertemp, make_driver_db_cups, make_driver_db_lpr, makekdewidgets, meinproc, and preparetips
Installed Libraries: Numerous KDE libraries and helper modules
Installed Directories: /etc/kde and the following subdirectories of $KDE_PREFIX/: include/{dnssd, dom, kabc, kate, kdeprint, kdesu, khexedit, kio, kjs, kmdi, kmediaplayer, knewstuff, kparts, kresources, ksettings, kspell2, ktexteditor, kunittest, libkmid}, lib/kde3, and share/{applications, apps, autostart, config, doc, emoticons, icons, mimelnk, services}

Short Descriptions

KDE Support Programs

are essential support programs needed by other KDE applications.

KDE Libraries

contain essential functions that are needed by KDE applications.

The number of programs and libraries installed by kdelibs prohibits an explanation of each one in this section. Instead, see the KDE Documentation.

Kdebase-3.5.6

Introduction to Kdebase

kdebase is the last mandatory package required for the K Desktop Environment. It provides various applications, infrastructure files and libraries.

Package Information

Kdebase Dependencies

Required

kdelibs-3.5.6

Recommended

Optional

libusb-0.1.12, Linux-PAM-0.99.4.0, OpenLDAP-2.3.27, Cyrus SASL-2.1.21, Samba-3.0.23d, HAL-0.5.7.1, Heimdal-0.7.2 or MIT Kerberos V5-1.6, krb4, OpenEXR, libraw1394, lm_sensors (requires Sysfs Utilities), mDNSResponder, Graphviz-2.8, and Doxygen-1.4.6

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/kdebase

Installation of Kdebase

Note

You should ensure a nogroup group exists on your system before performing the configure command, as kdebase installs a program ($KDE_PREFIX/bin/kdesud) with group ownership of nogroup.

This package does not come with a test suite.

Install kdebase with:

Note

The --sysconfdir parameter must be the same as the command used in the installation of kdelibs.

./configure --prefix=$KDE_PREFIX --sysconfdir=/etc/kde \
    --disable-debug --disable-dependency-tracking &&
make

Note

If you wish to create the API documentation and you have Doxygen and Graphviz installed, make apidox must be done before make install.

Now, as the root user:

make install

Configuring Kdebase

Configuration Information

There is no real configuration necessary for this package other than to ensure you follow the steps outlined in the last section of this chapter, the section called “Configuring the Core KDE Packages”.

Run-Time Dependencies

Note that there are two additional packages you can install that are used at run-time for konqueror ioslave protocols. You can install the Mtools package to enable the “floppy” ioslave protocol. This will allow easy access to the floppy disk drives on your system. The hfsplus package can be installed to access HFS+ partitions on a Mac OS system using the “mac” ioslave.

One additional package that can be used at run time is PCI Utilities-2.2.3. This enables the KDE Info Center to use lspci for its "pci" info section.

Contents

Installed Programs: appletproxy, drkonqi, extensionproxy, genkdmconf, kaccess, kappfinder, kapplymousetheme, kasbar, kate, kblankscrn.kss, kbookmarkmerger, kcheckpass, kcheckrunning, kcminit, kcontrol, kcontroledit, kdcop, kdebugdialog, kdeeject, kdeinstallktheme, kdepasswd, kdeprintfax, kdesktop, kdesktop_lock, kdesu, kdesud, kdialog, kdm, kdm_config, kdm_greet, kdmctl, keditbookmarks, keditfiletype, kfind, kfmclient, kfontinst, kfontview, khc_docbookdig.pl, khc_htdig.pl, khc_htsearch.pl, khc_indexbuilder, khc_mansearch.pl, khelpcenter, khotkeys, kicker, kinfocenter, kio_media_mounthelper, kio_system_documenthelper, kjobviewer, klipper, klocaldomainurifilterhelper, kmenuedit, knetattach, kompmgr, konqueror, konsole, kpager, kpersonalizer, kpm, kprinter, krandom.kss, krandrtray, krdb, kreadconfig, krootimage, ksmserver, ksplash, ksplashsimple, kstart, ksysguard, ksysguardd, ksystraycmd, ktip, ktrash, kwebdesktop, kwin, kwin_killer_helper, kwin_rules_dialog, kwrite, kwriteconfig, kxkb, nspluginscan, nspluginviewer, and startkde
Installed Libraries: Numerous KDE support libraries, helper modules, and kioslaves
Installed Directories: /etc/xdg/menus/applications-merged and the following subdirectories of $KDE_PREFIX/: include/{kate, ksgrd, ksplash, kwin}, lib/kconf_update_bin, share/{applnk, apps/{too many to list}, config, config.kcfg, desktop-directories, doc/kdm, fonts, /mimelnk/{fonts, media, print}, services/{searchproviders, useragentstrings}, sounds, templates, wallpapers, and /var/lib/kdm

Short Descriptions

kate

is a programmer's text editor for KDE.

kcontrol

is the KDE Control Center.

kdebugdialog

is a dialog box for managing diagnostic messages at runtime.

kdesu

is a graphical front end for the Unix su command.

kdm

is the KDE display manager (a replacement for xdm).

kfind

is a utility to find files.

khelpcenter

is the KDE help tool.

kicker

is the KDE control panel.

kinfocenter

provides a centralized and convenient overview of your KDE and system settings.

kioslaves

are support modules designed to be intimately familiar with a certain protocol, so that a standard interface (most often these are used by konqueror) can be used to get at data from any number of places. Examples are the http and ftp kioslaves, which will retrieve data from an http or ftp server respectively.

klipper

is a clipboard utility.

kmenuedit

is a utility to rearrange or add items to the K-menu.

konqueror

is a filesystem and web browser.

konsole

is a highly configurable X terminal emulator.

kpager

provides a thumbnail view of all virtual desktops.

kprinter

is the printing module in KDE. It manages the actual printing from KDE applications. It handles print job administration and handles printer and print system management.

ksplash

is a splash screen that shows the progress of an application that is loading.

ksysguard

is a network enabled task manager and system monitor application, with the additional functionality of top.

kwrite

is a text editor for KDE.

kxkb

is a keyboard layout switching utility based on the X11 xkb extension.

Configuring the Core KDE Packages

Back up your existing ~/.xinitrc file and create a new .xinitrc file to start KDE:

echo "exec startkde" > ~/.xinitrc

If you have D-BUS-0.62 installed, you can start the D-BUS session daemon here as well. Starting the session daemon here has the added bonus that it will exit when you log out of your KDE session. If you wish to start the daemon here, use the following command instead of the one shown above:

echo "exec dbus-launch --exit-with-session startkde" >> ~/.xinitrc

Note

Check the ~/.xinitrc file and ensure you have no other window managers or other X applications mentioned before KDE.

If you installed the desktop-file-utils-0.11 package, ensure the XDG_DATA_DIRS and XDG_CONFIG_DIRS environment variables are configured properly as explained in that package and update the MIME-type application database (as root):

update-desktop-database

Ensure all libraries can be found with (as root):

ldconfig

At this point you can bring up KDE with:

startx

Chapter 29. KDE Additional Packages

Each of the packages in this chapter depend on the base KDE installation procedures, but each is an independent group of programs that can be optionally installed. Few users will want to install every package, but instead review and install only the ones desired.

Kdeadmin-3.5.6

Introduction to Kdeadmin

Kdeadmin provides several KDE clients useful for managing a system. Clients include programs for managing users, initialization files, cron, and network connections.

Package Information

Kdeadmin Dependencies

Required

kdebase-3.5.6

Recommended

Optional

Linux-PAM-0.99.4.0 and LILO

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/kdeadmin

Installation of Kdeadmin

Install kdeadmin with:

./configure --prefix=$KDE_PREFIX --disable-debug \
    --disable-dependency-tracking &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Contents

Installed Programs: kcron, kdat, kpackage, ksysv, and kuser
Installed Libraries: None
Installed Directories: None

Short Descriptions

kcron

is a task scheduler.

kdat

is a tar-based tape archiver.

kpackage

is a package manager.

ksysv

is a Sys V-Init editor.

kuser

is a graphical user manager.

Kdenetwork-3.5.6

Introduction to Kdenetwork

Kdenetwork provides several KDE applications useful in a networking environment. Applications include clients for chat, PPP, news, instant messages, and similar programs.

Package Information

Kdenetwork Dependencies

Required

kdebase-3.5.6

Recommended

Optional

PPP-2.4.4, XMMS-1.2.10, Graphviz-2.8, Doxygen-1.4.6, Wireless Tools-28, OpenSLP, libgadu, and Valgrind

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/kdenetwork

Installation of Kdenetwork

Install kdenetwork with:

./configure --prefix=$KDE_PREFIX --disable-debug \
    --disable-dependency-tracking &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Configuring Kdenetwork

Config Files

/etc/lisarc and ~/.lisarc

Configuration Information

To utilize the LAN Browser of konqueror you will need to create the /etc/lisarc file and start the lisa daemon. Create /etc/lisarc by filling out the information in the “Guided LISa Setup” section of the “LISa Daemon” tab on the “Control Center” — “Internet & Network” — “Local Network Browsing” dialog box.

Install the /etc/rc.d/init.d/lisa init script included in the blfs-bootscripts-20060910 package.

make install-lisa

There is no explicit configuration for the rest of the kdenetwork package, however some individual programs need to be set up with user information.

Contents

Installed Programs: kdict, kget, knewsticker, kopete, kpf, kppp, krdc, krfb, ksirc, ktalkd, kwifimanager, and lisa
Installed Libraries: None
Installed Directories: None

Short Descriptions

kdict

is a graphical client for the Dictionary Server Protocol (DICT).

kget

allows you to group downloads.

knewsticker

is a news applet for the KDE Application Launcher Panel.

kopete

is KDE's multi-protocol instant messenger client.

kpf

allows you to share files over a network.

kppp

is a dial-up utility.

krdc

is a client application that allows you to view or even control the desktop session on another machine that is running a compatible (VNC) server.

krfb

is a server application that allows you to share your current session with a user on another machine, who can use a VNC client to view or even control the desktop.

ksirc

is a chat client.

ktalkd

is an enhanced talk daemon—a program to handle incoming talk requests, announce them and allow you to respond to them using a talk client.

kwifimanager

is used to configure and monitor wireless LAN cards.

lisa

is intended to provide a kind of network neighborhood, but only relying on the TCP/IP protocol stack.

Kdepim-3.5.6

Introduction to Kdepim

Kdepim provides several KDE programs for managing personal information. Programs include a contact manager, calendar, mail utilities, newsreader, X.509 certificat manager, and sticky notes.

Package Information

Kdepim Dependencies

Required

kdebase-3.5.6

Recommended

Optional

pilot-link-0.11.8, GPGME (requires Libgpg-error then Libgcrypt then Libassuan then Libksba, pinentry, Pth, OpenSC and then GnuPG-1.9.x), libmal, gnokii, Bluetooth hardware and driver libraries, Graphviz-2.8, and Doxygen-1.4.6

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/kdepim

Installation of Kdepim

Install kdepim with:

./configure --prefix=$KDE_PREFIX --disable-debug \
    --disable-dependency-tracking &&
make

Note

If you wish to create the API documentation and you have Doxygen and Graphviz installed, make apidox must be done before make install.

This package does not come with a test suite.

Now, as the root user:

make install

Contents

Installed Programs: akregator, kaddressbook, kalarm, kandy, karm, kitchensync, kleopatra, kmail, knode, knotes, konsolekalendar, kontact, korganizer, korn, kpilot, ktnef, kwatchgnupg, and supporting programs
Installed Libraries: Numerous kdepim specific libraries
Installed Directories: Numerous subdirectories in $KDE_PREFIX/{include,share}

Short Descriptions

akregator

is a program to read RSS and other online news feeds.

kaddressbook

is the KDE address book.

kalarm

is a system to provide reminder messages.

kandy

is a program to synchronize mobile phone numbers.

karm

is a personal time tracker.

kitchensync

is the universal syncing tool and framework for kde.

kleopatra

is a tool for managing X.509 certificates in a GpgSM keybox and for retrieving certificates from LDAP servers.

kmail

is KDE's email client.

knode

is the KDE newsreader.

knotes

is a popup notes utility.

konsolekalendar

is a command line interface to KDE calendars.

kontact

is the integrated solution to personal information management (PIM) needs.

korganizer

is a personal calendar/todo system.

korn

is a KDE mail checker that has the capabilities to dock itself to kicker.

kpilot

is a program to synchronize a Palm-Pilot.

ktnef

allows handling mail attachments using the TNEF format. Those attachments are usually found in mails coming from Microsoft® mail servers and embed the mail properties as well as the actual attachments.

kwatchgnupg

is simpleGnuPG log viewer.

Kdemultimedia-3.5.6

Introduction to Kdemultimedia

Kdemultimedia provides several KDE programs to work with sound. Programs include applications for a Jukebox, a soundcard mixer, a midi and karaoke player, and a recording application for aRts.

In this version of Kdemultimedia, some of the functionality provided by the package has been moved off into a separate project named Akode. In order for Kdemultimedia to provide the removed functionality, you must install the Akode package first. Instructions to install Akode follow. If you wish to skip the Akode installation, go straight to the Kdemultimedia Instructions.

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/kdemultimedia

Akode-2.0.1

Package Information

Akode Dependencies

Optional

pkg-config-0.20, FLAC-1.1.2, Speex-1.0.5, libmad-0.15.1b, ALSA-1.0.13, libvorbis-1.1.2, Secret Rabbit Code (a.k.a. libsamplerate), PulseAudio, JACK, and FFmpeg (must be a CVS version, and support is experimental)

Installation of Akode

Install Akode by issuing the following commands:

./configure --prefix=$KDE_PREFIX \
    --disable-debug --disable-dependency-tracking &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Resuming the Kdemultimedia Instructions

Package Information

Kdemultimedia Dependencies

Required

kdebase-3.5.6

Recommended

Optional

Akode-2.0.1, CDParanoia-III-9.8, LAME-3.96.1, Audio File-0.2.6, libvorbis-1.1.2, xine Libraries-1.1.1, FLAC-1.1.2 (built with libogg-1.1.3 support), GStreamer-0.10.11, Theora, TagLib, and TunePimp (requires libmusicbrainz-2.1.4)

Installation of Kdemultimedia

Install kdemultimedia with:

Note

The --sysconfdir parameter must be the same as the command used in the installation of kdelibs.

./configure --prefix=$KDE_PREFIX --sysconfdir=/etc/kde \
    --disable-debug --disable-dependency-tracking &&
make

Now, as the root user:

make install

Contents

Installed Programs: artsbuilder, artscontrol, juk, kaboodle, kaudiocreator, kmid, kmix, kmixctrl, krec, kscd, midisend, mpeglibartsplay, noatun, workman2cddb.pl, yaf-cdda, yaf-mpgplay, yaf-splay, yaf-tplay, yaf-vorbis, and yaf-yuv
Installed Libraries: Numerous kdemultimedia specific libraries
Installed Directories: The following subdirectories in $KDE_PREFIX: include/{libkcddb, mpeglib, noatun}, lib/mcop/Noatun, and share/apps/{too many to list}

Short Descriptions

artsbuilder

is a tool to create new structures of small connected aRts modules.

juk

is a jukebox, tagger, and music collection manager.

kaboodle

is a multimedia player.

kaudiocreator

is a front-end tool for ripping audio CDs and encoding the wav files.

kmid

is a midi/karaoke player.

kmix

is a sound mixer.

krec

is a recording frontend for aRts.

kscd

is a CD player.

noatun

is another multimedia player.

Kdegraphics-3.5.6

Introduction to Kdegraphics

Kdegraphics provides KDE programs to manage the video display and graphical output. Applications include PDF, DVI, and Postscript viewers, an application to adjust monitor gamma correction, a 3D modeling application to generate POV-Ray scenes, and a scanner application.

Package Information

Kdegraphics Dependencies

Required

kdebase-3.5.6

Recommended

Optional

LibTIFF-3.8.2, Imlib-1.9.15, little cms-1.15, Poppler-0.4.5 (libpoppler-qt.so must have been built), SANE-1.0.17, teTeX-3.0, FriBidi-0.10.7, libgphoto2, t1lib, OpenEXR, libpaper, KADMOS (a commercial OCR engine), Graphviz-2.8, and Doxygen-1.4.6

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/kdegraphics

Installation of Kdegraphics

Install kdegraphics with:

./configure --prefix=$KDE_PREFIX --disable-debug \
    --disable-dependency-tracking &&
make

Note

If you wish to create the API documentation and you have Doxygen and Graphviz installed, make apidox must be done before make install.

This package does not come with a test suite.

Now, as the root user:

make install

The kooka utility is a scanning and OCR program. In order for kooka to utilize the OCR capabilities, you must install an OCR engine. kooka provides full OCR support using the KADMOS and GOCR engines and partial support using the Ocrad engine.

Contents

Installed Programs: kcolorchooser, kcoloredit, kdvi, kfax, kfaxview, kghostview, kiconedit, kolourpaint, kooka, kpdf, kpovmodeler, kruler, ksnapshot, kuickshow, kview, kviewshell, mrmlsearch, printnodetest, svgdisplay, and xf86gammacfg
Installed Libraries: kio_kamera and several other kdegraphics specific libraries and support modules
Installed Directories: The following subdirectories in $KDE_PREFIX: include/{svg, kviewshell, libtext2path-0.1}, share/applnk/Graphics, share/apps/{too many to list}, and share/config/magic

Short Descriptions

kcolorchooser

is a color chooser for a given pallette.

kcoloredit

is a color pallette editor.

kdvi

is a DVI viewer.

kfax

is a FAX viewer.

kfaxview

is a FAX previewer used with kviewshell.

kghostview

is a PS/PDF viewer.

kiconedit

is an icon editor.

kolourpaint

is a paint program.

kooka

is a raster image scan program.

kpdf

is a PDF viewer.

kpovmodeler

is a graphical 3D modeler, which can generate scenes for POV-Ray.

kruler

is a screen ruler.

ksnapshot

is a screen capture program.

kuickshow

is an image viewer.

kview

is another image viewer.

kviewshell

is a generic framework for the KDE viewer applications.

xf86gammacfg

is a simple tool for monitor gamma correction.

kio_kamera

is an ioslave that allows you to view and download images from a digital camera using the kamera:/ URL in konqueror.

Kdeutils-3.5.6

Introduction to Kdeutils

Kdeutils provides KDE programs for miscellaneous tasks. Programs include a calculator, a note taker, a basic editor, a floppy disk manager, and a binary editor.

Package Information

Kdeutils Dependencies

Required

kdebase-3.5.6

Recommended

Optional

Net-SNMP, tpctl (for Thinkpad support)

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/kdeutils

Installation of Kdeutils

Install kdeutils with:

./configure --prefix=$KDE_PREFIX --disable-debug \
    --disable-dependency-tracking &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Contents

Installed Programs: ark, irkick, kcalc, kcharselect, kdf, kedit, kfloppy, kgpg, khexedit, kjots, kregexpeditor, ktimer, kwalletmanager, and superkaramba
Installed Libraries: Several kdeutils specific libraries
Installed Directories: Several subdirectories in $KDE_PREFIX/share

Short Descriptions

ark

is an archiving tool.

irkick

is the infrastructure for KDE's Infrared Remote Control functionality; irkick is the server component of that infrastructure.

kcalc

is a scientific calculator.

kcharselect

is a character selector applet.

kdf

is a disk usage viewer.

kedit

is a text editor.

kfloppy

is a floppy formatter.

kgpg

a simple graphical interface for GnuPG-1.4.3.

khexedit

is a binary editor.

kjots

is a note taker.

kregexpeditor

is an editor for editing regular expressions in a graphical style (in contrast to the ASCII syntax).

ktimer

is a task scheduler.

kwalletmanager

provides a secure way to manage passwords.

superkaramba

is a tool to create interactive widgets on a KDE desktop.

Kdeedu-3.5.6

Introduction to Kdeedu

Kdeedu provides KDE programs useful in learning. Programs include a touch typing tutor, a program to help revise/teach Latin, a desktop planetarium, an application to study Spanish verbforms, and the classic hangman game for children.

Package Information

Kdeedu Dependencies

Required

kdebase-3.5.6

Recommended

Optional

Boost.Python, OCaml, and FaCiLe module for OCaml.

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/kdeedu

Installation of Kdeedu

Install kdeedu with:

./configure --prefix=$KDE_PREFIX --disable-debug \
    --disable-dependency-tracking &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Contents

Installed Programs: flashkard, kalzium, kbruch, keduca, khangman, kig, kiten, klettres, kmathtool, kmessedwords, kmplot, kpercentage, kstars, ktouch, kverbos, and kvoctrain
Installed Libraries: Several kdeedu specific libraries
Installed Directories: Several subdirectories of $KDE_PREFIX/share

Short Descriptions

kalzium

is a program which shows you the Periodic System of Elements.

kbruch

is a small program to generate tasks with fractions.

keduca

is flash card application, which allows you to make interactive form based tests..

khangman

is the classical hangman game for children, adapted for KDE.

kig

is a KDE application for Interactive Geometry.

kiten

is a Japanese reference/study tool for KDE.

klettres

is an alphabet tutor (French).

kmessedwords

is a simple mind-training word game.

kmplot

is a mathematical function plotter for KDE.

kpercentage

is a small math application that will help pupils to improve their skills in calculating percentages.

kstars

is a desktop planetarium.

ktouch

is a touch typing tutor.

kverbos

is an application specially designed to study Spanish verb forms.

kvoctrain

is a vocabulary trainer.

Kdeaccessibility-3.5.6

Introduction to Kdeaccessibility

Kdeaccessibility provides KDE programs to aid handicapped users. Programs include a screen magnifier, a text to speech plugin service to allow an application to speak using the DCOP interface, and an application for computer speech for mute users.

Package Information

Kdeaccessibility Dependencies

Required

kdebase-3.5.6

Recommended

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/kdeaccessibility

Installation of Kdeaccessibility

Install kdeaccessibility with:

./configure --prefix=$KDE_PREFIX --disable-debug \
    --disable-dependency-tracking &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Run-Time Dependencies

Several KDE accessibility programs access other programs at run time for rendering speech from text. These include FreeTTS-1.2.1, Festival, Festival Lite, Epos, or MBROLA with optionally Txt2pho.

Contents

Installed Programs: kmag, kmousetool, and kmouth
Installed Libraries: kdeaccessibility support libraries
Installed Directories: None

Short Descriptions

kmag

is a screen magnifier for KDE.

kmousetool

is a utility which clicks the mouse whenever the mouse cursor pauses briefly.

kmouth

is an application that enables persons that cannot speak to let their computers speak.

Kdetoys-3.5.6

Introduction to Kdetoys

Kdetoys includes KDE applications for a world clock, an applet showing the phases of the moon, and the ability to track weather stations.

Package Information

Kdetoys Dependencies

Required

kdebase-3.5.6

Recommended

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/kdetoys

Installation of Kdetoys

Install kdetoys with:

./configure --prefix=$KDE_PREFIX --disable-debug \
    --disable-dependency-tracking &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Contents

Installed Programs: amor, kmoon, kodo, kteatime, ktux, kweather, and kworldclock
Installed Libraries: kdetoys support libraries
Installed Directories: Support subdirectories in $KDE_PREFIX/share

Short Descriptions

amor

Amusing Misuse of Resources.

kmoon

is a Moon phase indicator.

kodo

measures your desktop mileage.

kteatime

times your tea brewing.

ktux

small Tux crossing stars.

kworldclock

shows which parts of the world are currently experiencing daylight, and which parts are currently in night. It also shows the current time in a range of cities around the world.

Kdegames-3.5.6

Introduction to Kdegames

Kdegames provides many interesting games.

Package Information

Kdegames Dependencies

Required

kdebase-3.5.6

Recommended

Optional

Graphviz-2.8 and Doxygen-1.4.6

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/kdegames

Installation of Kdegames

Install kdegames with:

./configure --prefix=$KDE_PREFIX --disable-debug \
    --disable-dependency-tracking &&
make

Note

If you wish to create the API documentation and you have Doxygen and Graphviz installed, make apidox must be done before make install.

This package does not come with a test suite.

Now, as the root user:

make install

Contents

Installed Programs: a compilation of various games
Installed Libraries: Support libraries for kdegames
Installed Directories: Subdirectories of $KDE_PREFIX/{include,share}

Kdeartwork-3.5.6

Introduction to Kdeartwork

Kdeartwork provides additional KDE themes, screensavers, sounds, wallpapers, widget styles, and window styles.

Package Information

Kdeartwork Dependencies

Required

kdebase-3.5.6

Recommended

Optional

XScreenSaver-4.24

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/kdeartwork

Installation of Kdeartwork

Install kdeartwork with:

./configure --prefix=$KDE_PREFIX --disable-debug \
    --disable-dependency-tracking &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Contents

Installed Objects: additional themes, screensavers, sounds, backgrounds, and widget styles for KDE
Installed Programs: None
Installed Libraries: None
Installed Directories: None

Kdeaddons-3.5.6

Introduction to Kdeaddons

Kdeaddons provides additional plugins for konqueror, kate, and kicker.

Package Information

Kdeaddons Dependencies

Required

kdebase-3.5.6

Recommended

Optional

kdenetwork-3.5.6, kdemultimedia-3.5.6, kdepim-3.5.6, kdegames-3.5.6, XMMS-1.2.10, and SDL-1.2.11

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/kdeaddons

Installation of Kdeaddons

Install kdeaddons with:

./configure --prefix=$KDE_PREFIX --disable-debug \
    --disable-dependency-tracking &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Contents

Installed Programs: Miscellaneous KDE support programs
Installed Libraries: Additional plugins, libraries, and scripts for KDE applications
Installed Directories: None

Kde-i18n-3.5.6

Introduction to Kde-i18n

Kde-i18n is a set of internationalization packages to customize KDE for different languages and locales around the world.

Package Information

Download Details

KDE has 52 separate internationalization packages in the form of:

kde-i18n-<xx>-3.5.6.tar.bz2

where the <xx> is a two to five letter code for the country covered. Download the package(s) you need from the directories above.

Kde-i18n Dependencies

Required

kdebase-3.5.6

Recommended

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/kde-i18n

Installation of Kde-i18n

Install kde-i18n with:

./configure --prefix=$KDE_PREFIX &&
make

Now, as the root user:

make install

Configuring Kde-i18n

Configuration Information

To use translated programs, select Control Center —> Personalization —> Country & Language —> Language in your K Desktop Environment.

Contents

Installed Programs: None
Installed Libraries: Internationalization support for KDE
Installed Directories: None

Chapter 30. KDE Software and WEB Development Packages

These KDE applications are generally of interest to software or WEB developers. General users can skip them without a loss of functionality.

Kdesdk-3.5.6

Introduction to Kdesdk

Kdesdk provides several applications useful for developers. Programs include a version control system front-end for CVS, a program to view the differences between files, a UML Modeller, and a profile data visualization tool.

Package Information

Kdesdk Dependencies

Required

kdebase-3.5.6

Recommended

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/kdesdk

Installation of Kdesdk

Install kdesdk with:

./configure --prefix=$KDE_PREFIX --disable-debug \
    --disable-dependency-tracking &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Contents

Installed Programs: cervisia, kbabel, kcachegrind, kompare, and umbrello
Installed Libraries: Several kdesdk specific libraries
Installed Directories: Several subdirectories in $KDE_PREFIX/{include,share}

Short Descriptions

cervisia

provides a graphical view of CVS.

kbabel

is a suite of an advanced PO file editor comprising kbabel, a multi functional catalogmanager and a dictionary for translators kbabeldict.

kcachegrind

is a KDE frontend for cachegrind, part of Valgrind.

kompare

is a program to view the differences between files.

umbrello

is a UML modelling diagram tool.

Kdevelop-3.3.6

Introduction to Kdevelop

Kdevelop provides an Integrated Development Environment (IDE) to be used for a wide variety of programming tasks.

Package Information

Kdevelop Dependencies

Required

kdebase-3.5.6

Recommended

Optional

Python-2.4.4, DocBase, Graphviz-2.8, and Doxygen-1.4.6

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/kdevelop

Installation of Kdevelop

Install kdevelop with:

sed -i -e 's/ kdevutil$//' buildtools/lib/widgets/Makefile.in &&
./configure --prefix=$KDE_PREFIX --disable-debug \
    --disable-dependency-tracking &&
make

Note

If you wish to create the API documentation and you have Doxygen and Graphviz installed, make apidox must be done before make install.

This package does not come with a test suite.

Now, as the root user:

make install &&
chown -v -R root:root $KDE_PREFIX/kdevbdb

If you created the API documentation, install it with:

make install-apidox

Command Explanations

sed -i -e 's/ kdevutil$//' buildtools/lib/widgets/Makefile.in: Remove a duplicate entry on a line in the Makefile that causes the build of the API documentation to fail.

chown -v -R root:root $KDE_PREFIX/kdevbdb: If kdevelop is built by any user other than root the installed Berkeley-DB files will have incorrect ownership. This command changes the ownership to root:root.

Contents

Installed Programs: kdevelop and supporting programs
Installed Libraries: Supporting kdevelop libraries
Installed Directories: $KDE_PREFIX/kdevbdb and supporting subdirectoies in $KDE_PREFIX/{include,share}

Short Descriptions

kdevelop

is an Integrated Development Environment to be used for a wide variety of programming tasks in many programming languages.

Kdewebdev-3.5.6

Introduction to Kdewebdev

Kdewebdev includes KDE based programmers' utilities to generate GUI dialogs, a Web IDE, a stylesheet debugger, and a utility to search and replace strings.

Package Information

Kdewebdev Dependencies

Required

kdebase-3.5.6

Recommended

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/kdewebdev

Installation of Kdewebdev

Install kdewebdev with:

./configure --prefix=$KDE_PREFIX --disable-debug \
    --disable-dependency-tracking &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Contents

Installed Programs: kxsldbg and quanta
Installed Libraries: kdewebdev specific libraries
Installed Directories: Several subdirectories in $KDE_PREFIX/share

Short Descriptions

kxsldbg

is a GUI front-end to xsldbg, the XSLT debugger.

quanta

is a web development tool that strives to be neutral and transparent to all markup languages, while supporting popular web-based scripting languages, CSS, and other emerging W3C recommendations.

Kdebindings-3.5.6

Introduction to Kdebindings

The kdebindings provides the ability to write KDE applications in a variety of languages including Ruby, Perl, Python, Java, JavaScript, C#, and Smoke. For details see http://developer.kde.org/language-bindings/

Package Information

Kdebindings Dependencies

Required

kdebase-3.5.6

Recommended

Optional

GLib-1.2.10, GTK+-1.2.10, Python-2.4.4, Ruby-1.8.5, JDK-1.5.0_10, SeaMonkey-1.1, Mono, DotGNU Portable.NET, and Rotor

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/kdebindings

Installation of Kdebindings

Note: If KDE is installed in /opt/kde-3.5.6, you'll need to make a modification before the build using the following command:

sed -i -e 's@/usr@/opt/kde-3.5.6@' \
    python/pykde/configure.py

Install kdebindings with:

sed -i -e '/configure.*pyqt/s/-c//' \
    -e '/configure.*pykde/s/-c/-i/' python/Makefile.in
./configure --prefix=$KDE_PREFIX --disable-debug \
    --disable-dependency-tracking &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

sed -i -e '/configure.*pyqt/s/-c//' -e '/configure.*pykde/s/-c/-i/' python/Makefile.in : Remove a switch that causes concatenation of multiple files for compilation. This fix reduces build time by a factor of five.

Contents

Installed Programs: Several support programs for software development
Installed Libraries: KDE bindings for various programming languages
Installed Directories: Subdirectories of /usr/lib and $KDE_PREFIX/share

Part IX. GNOME

Introduction to GNOME

This chapter presents the instructions to install a complete GNOME-2.14.3 desktop environment; and a limited GNOME 1.4 library environment that is sufficient to run GNOME 1.4 applications included in this book. The order of the pages follows the build order defined by the GNOME development team and documented in the Release Notes.

The installation of GNOME-2.14.3 is a large undertaking and one we would like to see you complete with the least amount of stress. One of the first goals in this installation is to protect your previously installed software, especially if you are testing GNOME on your machine. GNOME-2.14 packages utilize the --prefix=option passed to configure, so you will use that and an environment variable (GNOME_PREFIX) to add flexibility to the installation.

To install GNOME as your desktop of choice, it is recommended that you install using --prefix=/usr. If you are not sure that you are going to keep the GNOME installation, or you think you will update to the newest releases as they become available, you should install with --prefix=/opt/gnome-2.14.3. Setting the environment variable and the additional edits required by the second option are covered in the Pre-Installation Configuration section.

If you choose the second option, removal of GNOME-2.14.3 is as easy as removing the edits from the pre-installation page and issuing the following command (you may need to become the root user):

rm -rf /opt/gnome-2.14.3

If your system was completely built per LFS and BLFS instructions, you have a very good chance of using GNOME-2.14.3 after your first installation. If you are a typical LFS user, you have made modifications to the instructions along the way knowing that you have to take those modifications into account on future installations. You should have no problems integrating GNOME-2.14.3 into your unique setup, but you will have to install well over 50 packages before you can run GNOME through any testing (assuming your windowing system is preinstalled and tested). You should anticipate that you will be rebuilding GNOME at least once to make adjustments for your setup.

If you are building a GNOME 1.4 library environment, you would install only those libraries in the GNOME 1.4 chapter and any dependencies listed on those pages, whether labeled or not. GNOME packages without pages in the book are simply installed with:

./configure --prefix=/opt/gnome-1.4 &&
make

Now, as the root user:

make install

These instructions are simplistic to facilitate removal of GNOME 1.4 from BLFS systems when it is no longer necessary. These instructions may be refined later to comply with BLFS standards for file locations, specifically /opt/gnome/etc to /etc and /opt/gnome/var to /var. You should consider using the GNOME 1.4 hint located at http://www.linuxfromscratch.org/hints if you have no interest in GNOME-2.14.3.

Alternate Installation Methods

As was previously mentioned, building a GNOME desktop from sources is a significant project. Some may find it too tedious or time-consuming to perform a full installation following the BLFS book. You may wish to review the automated methods mentioned in the GNOME-2.14 Release Notes. Note that using any other method to install GNOME-2.14.3 other than using the BLFS instructions cannot be supported by the BLFS team. Alternate methods are only mentioned as a courtesy to builders who would like to build GNOME from sources but do not have the time/desire/patience/whatever to follow the BLFS book.

Table of Contents

Chapter 31. GNOME Core Packages

This section contains required elements of the GNOME environment to display a functional desktop.

Caution

The BLFS team recommends that you carefully evaluate the optional dependencies listed for each of the core GNOME packages. You may lose desired functionality if you don't install an optional dependency before the package that lists the dependency, even if you later install it.

Pre-installation Configuration

Set an environment variable to resolve the prefix destination.

If GNOME is your desktop of choice:

export GNOME_PREFIX=/usr

If you want to try-out GNOME, or install it in an easy-to-remove location:

Note

You may wish to create a symbolic link to the actual versioned directory using a non-versioned name. This has the advantage of an easier path to type in all the changes below and also makes it easy to point to a different/newer version of GNOME without changing all the edits below. If you wish to use a non-versioned name in the changes below, issue the following commands as the root user:

install -v -m755 -d /opt/gnome-2.14.3 &&
ln -v -s gnome-2.14.3 /opt/gnome

If you created the symbolic link, change all instances of /opt/gnome-2.14.3 to /opt/gnome in the instructions below.

export GNOME_PREFIX=/opt/gnome-2.14.3

The try-out group will also need to make all the following configuration changes:

Add to your system or personal profile:

export PATH=$PATH:/opt/gnome-2.14.3/bin
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/opt/gnome-2.14.3/lib/pkgconfig
export GNOME_LIBCONFIG_PATH=/usr/lib:/opt/gnome-2.14.3/lib

Add to your /etc/ld.so.conf:

cat >> /etc/ld.so.conf << "EOF"
# Begin gnome addition to /etc/ld.so.conf

/opt/gnome-2.14.3/lib

# End gnome addition
EOF

Add to your /etc/man_db.conf:

cat >> /etc/man_db.conf << "EOF"
# Begin gnome addition to man_db.conf

MANDATORY_MANPATH /opt/gnome-2.14.3/share/man

# End gnome addition to man_db.conf
EOF

Tip

Remember to execute ldconfig as the root user after installation of libraries to update the linker's library cache.

ORBit2-2.14.2

Introduction to ORBit2

The ORBit2 package contains a high-performance CORBA Object Request Broker. This allows programs to send requests and receive replies from other programs.

Package Information

ORBit2 Dependencies

Required

libIDL-0.8.7

Optional

GTK-Doc-1.6 and OpenSSL-0.9.8d

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/orbit2

Installation of ORBit2

Install ORBit2 by running the following commands:

./configure --prefix=$GNOME_PREFIX \
            --sysconfdir=/etc/gnome/2.14.3 &&
make

To test the results, issue: make check.

Now, as the root user:

make install

Command Explanations

--prefix=$GNOME_PREFIX: This is the base installation for GNOME-2 from which all future package installations will receive their prefix parameter. Be sure that $GNOME_PREFIX is set for this install or globally to your install directory as described in the introduction of this Chapter.

--sysconfdir=/etc/gnome/2.14.3: This parameter causes the configuration files to be installed in /etc/gnome/2.14.3 instead of $GNOME_PREFIX/etc. Additionally (if applicable), the parameter ensures that the GConf-2 database is correctly updated.

--enable-gtk-doc: Use this parameter if GTK-Doc is installed and you wish to rebuild the API documentation.

Contents

Installed Programs: ior-decode-2, linc-cleanup-sockets, orbit-idl-2, orbit2-config and typelib-dump
Installed Libraries: libname-server-2.a, libORBit-2.{so,a}, libORBit-imodule-2.{so,a}, libORBitCosNaming-2.{so,a}, and Everything_module.{so,a}
Installed Directories: The following subdirectories of $GNOME_PREFIX/: include/orbit-2.0, lib/orbit-2.0 and share/{gtk-doc/html/ORBit2, idl/orbit-2.0}

Short Descriptions

libORBit-2.{so,a}

is the CORBA API.

libbonobo-2.14.0

Introduction to libbonobo

The libbonobo package contains libbonobo libraries. This is a component and compound document system for GNOME-2.

Package Information

libbonobo Dependencies

Required

ORBit2-2.14.2, libxml2-2.6.26, popt-1.10.4, and XML::Parser-2.34

Optional

X Window System and GTK-Doc-1.6

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libbonobo

Installation of libbonobo

Install libbonobo by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --sysconfdir=/etc/gnome/2.14.3 \
            --libexecdir=$(pkg-config \
                --variable=prefix ORBit-2.0)/lib/bonobo \
            --mandir=$(pkg-config \
                --variable=prefix ORBit-2.0)/share/man &&
make

To test the results, issue: make check.

Now, as the root user:

make install

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--sysconfdir=/etc/gnome/2.14.3: This parameter causes the configuration files to be installed in /etc/gnome/2.14.3 instead of $GNOME_PREFIX/etc. Additionally (if applicable), the parameter ensures that the GConf-2 database is correctly updated.

--libexecdir=$(pkg-config --variable=prefix ORBit-2.0)/lib/bonobo: This parameter causes the libexec files to be installed in the preferred location of $GNOME_PREFIX/lib/bonobo instead of $GNOME_PREFIX/libexec.

--mandir=$(pkg-config --variable=prefix ORBit-2.0)/share/man: This parameter causes the man.(X) files to be installed in $GNOME_PREFIX/share/man/man(X) instead of $GNOME_PREFIX/man/man(X).

--enable-gtk-doc: Use this parameter if GTK-Doc is installed and you wish to rebuild the API documentation.

Contents

Installed Programs: activation-client, bonobo-slay, echo-client-2, bonobo-activation-run-query, bonobo-activation-server, and bonobo-activation-sysconf
Installed Libraries: libbonobo-2.{so,a}, libbonobo-activation.{so,a}, ORBit-2 bonobo module, bonobo servers, and libmoniker_std_2.{so,a} bonobo library
Installed Directories: /etc/gnome/2.14.3/bonobo-activation and the following subdirectories of $GNOME_PREFIX/: include/{bonobo-activation-2.0,libbonobo-2.0}, lib/{bonobo{,-2.0},libbonobo}, and share/{gtk-doc/html/{bonobo-activation,libbonobo}, idl/bonobo-{,activation-}2.0}

Short Descriptions

libbonobo-2.{so,a}

are a set of language and system independent CORBA interfaces for creating reusable components and compound documents.

GConf-2.14.0

Introduction to GConf

The GConf package contains a configuration database system.

Package Information

GConf Dependencies

Required

ORBit2-2.14.2 and libxml2-2.6.26

Optional

GTK+-2.8.20, OpenLDAP-2.3.27, GTK-Doc-1.6, and DocBook-utils-0.6.14

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gconf

Installation of GConf

Install GConf by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --sysconfdir=/etc/gnome/2.14.3 \
            --libexecdir=$(pkg-config \
                --variable=prefix ORBit-2.0)/lib/GConf \
            --mandir=$(pkg-config \
                --variable=prefix ORBit-2.0)/share/man &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--sysconfdir=/etc/gnome/2.14.3: This parameter causes the GConf-2 configuration database to be built in /etc/gnome/2.14.3 instead of $GNOME_PREFIX/etc. This installation controls all future installations of GConf-2 schemas. If you change the location (which includes eliminating this parameter), it must be consistent for every subsequent package installation that updates the GConf-2 configuration database.

--libexecdir=$(pkg-config --variable=prefix ORBit-2.0)/lib/GConf: This parameter causes the libexec files to be installed in the preferred location of $GNOME_PREFIX/lib/GConf instead of $GNOME_PREFIX/libexec.

--mandir=$(pkg-config --variable=prefix ORBit-2.0)/share/man: This parameter causes the man.(X) files to be installed in $GNOME_PREFIX/share/man/man(X) instead of $GNOME_PREFIX/man/man(X).

--enable-gtk-doc: Use this parameter if GTK-Doc is installed and you wish to rebuild the API documentation.

Contents

Installed Programs: gconf-merge-tree and gconftool-2
Installed Library: libgconf-2.{so,a}
Installed Directories: /etc/gnome/2.14.3/gconf and the following subdirectories of $GNOME_PREFIX/: include/gconf, lib/GConf and share/{GConf, gtk-doc/html/gconf, sgml/gconf}

Short Descriptions

gconf-merge-tree

merges an xml filesystem hierarchy.

gconftool-2

is a command line tool for manipulating the GConf database.

libgconf-2.{so,a}

provide the functions necessary to maintain the configuration database.

desktop-file-utils-0.11

The desktop-file-utils-0.11 package is located in Chapter 10 — General Utilities and is required by GNOME-2 but is not a direct dependency of any GNOME-2 package, therefore the package is mentioned within the GNOME-2 Core Packages chapter to ensure it is installed.

GNOME MIME Data-2.4.2

Introduction to GNOME MIME Data

The GNOME MIME Data package contains the base set of file types and applications for GNOME-2.

Package Information

GNOME MIME Data Dependencies

Required

XML::Parser-2.34

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gnome-mime-data

Installation of GNOME MIME Data

Note

The instructions below are based on installing the package into a GNOME-2 environment. If, for whatever reason, you're installing this package without having ORBit2 and the core GNOME-2 libraries installed, you'll need to modify the --prefix= parameter on the configure script to point to your desired installation path (e.g., --prefix=/usr).

Install GNOME MIME Data by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --sysconfdir=/etc/gnome/2.14.3 \
            --mandir=$(pkg-config \
                --variable=prefix ORBit-2.0)/share/man &&
make

This package does not come with a test suite.

Now, as the root user:

make install &&
install -v -m644 -D man/gnome-vfs-mime.5 \
    $(pkg-config \
        --variable=prefix ORBit-2.0)/share/man/man5/gnome-vfs-mime.5

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--sysconfdir=/etc/gnome/2.14.3: This parameter causes the configuration files to be installed in /etc/gnome/2.14.3 instead of $GNOME_PREFIX/etc. Additionally (if applicable), the parameter ensures that the GConf-2 database is correctly updated.

--mandir=$(pkg-config --variable=prefix ORBit-2.0)/share/man: This parameter causes the man.(X) files to be installed in $GNOME_PREFIX/share/man/man(X) instead of $GNOME_PREFIX/man/man(X).

Contents

Installed Programs: None
Installed Libraries: None
Installed Directories: $GNOME_PREFIX/share/{application-registry, share/mime-info}

Short Descriptions

application-registry

contains the application mime database.

mime-info

contains the mime description database.

shared-mime-info-0.17

The shared-mime-info-0.17 package is located in Chapter 26 — X Libraries and is required by GNOME-2 but is not a direct dependency of any GNOME-2 package, therefore the package is mentioned within the GNOME-2 Core Packages chapter to ensure it is installed.

GNOME Virtual File System-2.14.2

Introduction to GNOME Virtual File System

The GNOME Virtual File System package contains virtual file system libraries. This is used as one of the foundations of the Nautilus file manager.

Package Information

GNOME Virtual File System Dependencies

Required

GConf-2.14.0, libbonobo-2.14.0, and GNOME MIME Data-2.4.2

Optional

Samba-3.0.23d, CDParanoia-III-9.8, Gamin-0.1.7, HAL-0.5.7.1, GTK-Doc-1.6, intltool-0.34.2, OpenSSH-4.5p1, OpenSSL-0.9.8d or GnuTLS (which needs libgpg-error then libgcrypt), Heimdal-0.7.2 or MIT Kerberos V5-1.6, OpenAFS, and Avahi

If you run ./configure --help for the complete list of dependency requirements and available parameters, you may notice a message about the gnome-mount-0.4 package. This package is not required at build-time, and is only a run-time dependency. If gnome-mount is available at run-time, GNOME-VFS will use it. If it is not available, GNOME-VFS will fall back to using other mounting mechanisms.

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gnome-vfs

Installation of GNOME Virtual File System

Install GNOME Virtual File System by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --sysconfdir=/etc/gnome/2.14.3 \
            --libexecdir=$(pkg-config \
                --variable=prefix ORBit-2.0)/lib/gnome-vfs-2.0 &&
make

To test the results, issue: make check.

Now, as the root user:

make install

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--sysconfdir=/etc/gnome/2.14.3: This parameter causes the configuration files to be installed in /etc/gnome/2.14.3 instead of $GNOME_PREFIX/etc. Additionally (if applicable), the parameter ensures that the GConf-2 database is correctly updated.

--libexecdir=$(pkg-config --variable=prefix ORBit-2.0)/lib/gnome-vfs-2.0: This parameter causes the libexec files to be installed in the preferred location of $GNOME_PREFIX/lib/gnome-vfs-2.0 instead of $GNOME_PREFIX/libexec.

--with-hal-eject=PROGRAM: This parameter does not need to be passed if you have Eject or gnome-mount-0.4 installed, as the eject program is used if gnome-mount is not installed.

--enable-gtk-doc: Use this parameter if GTK-Doc is installed and you wish to rebuild the API documentation.

Contents

Installed Programs: gnomevfs-cat, gnomevfs-copy, gnomevfs-info, gnomevfs-ls, gnomevfs-mkdir, gnomevfs-mv, gnomevfs-rm, and gnome-vfs-daemon
Installed Libraries: libgnomevfs-2.{so,a} and modules
Installed Directories: The following subdirectories of /etc/gnome/2.14.3/: gconf/{schemas, gconf.xml.defaults/{desktop, schemas, system}, gnome-vfs-2.0} and the following subdirectories of $GNOME_PREFIX/: include/gnome-vfs-{,module-}2.0, lib/gnome-vfs{,-2.0}, share/gtk-doc/html/gnome-vfs-2.0

libgnome-2.14.1

Introduction to libgnome

The libgnome package contains the libgnome library.

Package Information

libgnome Dependencies

Required

GNOME Virtual File System-2.14.2

Optional

EsounD-0.2.36, GTK-Doc-1.6, and intltool-0.34.2

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libgnome

Installation of libgnome

Install libgnome by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --sysconfdir=/etc/gnome/2.14.3 \
            --localstatedir=/var/lib \
            --mandir=$(pkg-config \
                --variable=prefix ORBit-2.0)/share/man &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--sysconfdir=/etc/gnome/2.14.3: This parameter causes the configuration files to be installed in /etc/gnome/2.14.3 instead of $GNOME_PREFIX/etc. Additionally (if applicable), the parameter ensures that the GConf-2 database is correctly updated.

--localstatedir=/var/lib: This parameter sets LIBGNOME_LOCALSTATEDIR to /var/lib instead of $GNOME_PREFIX/var to synchronize with the GNOME Games installation and properly record high scores in /var/lib/games.

--mandir=$(pkg-config --variable=prefix ORBit-2.0)/share/man: This parameter causes the man.(X) files to be installed in $GNOME_PREFIX/share/man/man(X) instead of $GNOME_PREFIX/man/man(X).

--enable-gtk-doc: Use this parameter if GTK-Doc is installed and you wish to rebuild the API documentation.

Contents

Installed Program: gnome-open
Installed Libraries: libgnome-2.{so,a} and the libmoniker_extra_2.{so,a} bonobo library
Installed Directories: /etc/gnome/2.14.3/sound, and the following subdirectories of $GNOME_PREFIX/: include/libgnome-2.0, share/gtk-doc/html/libgnome

Short Descriptions

libgnome-2.{so,a}

are the non-GUI portion of the GNOME libraries.

libgnomecanvas-2.14.0

Introduction to libgnomecanvas

The libgnomecanvas package contains the GNOME canvas library. It is an engine for structured graphics and one of the essential GNOME libraries.

Package Information

libgnomecanvas Dependencies

Required

libglade-2.6.0 and libart_lgpl-2.3.17

Optional

GTK-Doc-1.6

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libgnomecanvas

Installation of libgnomecanvas

Note

The instructions below are based on installing the package into a GNOME-2 environment. If, for whatever reason, you're installing this package without having ORBit2 and the core GNOME-2 libraries installed, you'll need to modify the --prefix= parameter on the configure script to point to your desired installation path (e.g., --prefix=/usr).

Install libgnomecanvas by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) &&
make

To test the results, issue: make check.

Now, as the root user:

make install

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--enable-gtk-doc: Use this parameter if GTK-Doc is installed and you wish to rebuild the API documentation.

Contents

Installed Programs: None
Installed Libraries: libgnomecanvas-2.{so,a} and the libcanvas.{so,a} Glade library
Installed Directories: The following subdirectories of $GNOME_PREFIX/: include/libgnomecanvas-2.0, lib/libglade and share/gtk-doc/html/libgnomecanvas

libbonoboui-2.14.0

Introduction to libbonoboui

The libbonoboui package contains libbonoboui libraries.

Package Information

libbonoboui Dependencies

Required

libgnome-2.14.1 and libgnomecanvas-2.14.0

Optional

GTK-Doc-1.6

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libbonoboui

Installation of libbonoboui

Install libbonoboui by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) &&
make

To test the results, issue: make check.

Now, as the root user:

make install &&
install -v -m755 -d $(pkg-config \
        --variable=prefix ORBit-2.0)/share/doc/libbonoboui-2.14.0 &&
install -v -m644 doc/*.{dtd,txt,xml,html} $(pkg-config \
        --variable=prefix ORBit-2.0)/share/doc/libbonoboui-2.14.0

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--enable-gtk-doc: Use this parameter if GTK-Doc is installed and you wish to rebuild the API documentation.

Contents

Installed Programs: bonobo-browser and test-moniker
Installed Libraries: libbonoboui-2.{so,a} and libbonobo.{so,a} Glade library
Installed Directories: The following subdirectories of $GNOME_PREFIX/: include/libbonoboui-2.0, share/{doc/libbonoboui-2.14.0, gnome-2.0, gtk-doc/html/libbonoboui}

Short Descriptions

libbonoboui-2.{so,a}

are the GUI portion of the Bonobo libraries.

GNOME Icon Theme-2.14.2

Introduction to GNOME Icon Theme

The GNOME Icon Theme package contains an assortment of scalable and non-scalable icons of different sizes and themes.

Package Information

GNOME Icon Theme Dependencies

Required

XML::Parser-2.34

Optional

hicolor-icon-theme-0.9 and pkg-config-0.20

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gnome-icon-theme

Installation of GNOME Icon Theme

Install GNOME Icon Theme by running the following commands:

./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Contents

Installed Programs: None
Installed Libraries: None
Installed Directory: /usr/share/icons/gnome
Installed Icons: Several icons under the /usr/share/icons/gnome and /usr/share/icons/hicolor hierarchies.

gnome-keyring-0.4.9

Introduction to gnome-keyring

The gnome-keyring package contains a daemon that keeps passwords and other secrets for users.

Package Information

gnome-keyring Dependencies

Required

GTK+-2.8.20

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gnome-keyring

Installation of gnome-keyring

Note

The instructions below are based on installing the package into a GNOME-2 environment. If, for whatever reason, you're installing this package without having ORBit2 and the core GNOME-2 libraries installed, you'll need to modify the --prefix= parameter on the configure script to point to your desired installation path (e.g., --prefix=/usr).

Install gnome-keyring by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --libexecdir=$(pkg-config \
                --variable=prefix ORBit-2.0)/lib/gnome-keyring &&
make

This package does not come with a test suite.

Now, as the root user:

make install &&
install -v -m755 -d $(pkg-config \
        --variable=prefix ORBit-2.0)/share/doc/gnome-keyring-0.4.9 &&
install -v -m644 *.txt $(pkg-config \
        --variable=prefix ORBit-2.0)/share/doc/gnome-keyring-0.4.9

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--libexecdir=$(pkg-config --variable=prefix ORBit-2.0)/lib/gnome-keyring: This parameter causes the libexec files to be installed in the preferred location of $GNOME_PREFIX/lib/gnome-keyring instead of $GNOME_PREFIX/libexec.

Contents

Installed Program: gnome-keyring-daemon
Installed Library: libgnome-keyring.so
Installed Directories: The following subdirectories of $GNOME_PREFIX/: include/gnome-keyring-1, lib/gnome-keyring and share/doc/gnome-keyring-0.4.9

Short Descriptions

gnome-keyring-daemon

is a session daemon that keeps passwords for users.

libgnome-keyring.so

let other applications utilize gnome-keyring-daemon.

libgnomeui-2.14.1

Introduction to libgnomeui

The libgnomeui package contains libgnomeui libraries.

Package Information

libgnomeui Dependencies

Required

libbonoboui-2.14.0 and gnome-keyring-0.4.9

Optional

libjpeg-6b, EsounD-0.2.36, and GTK-Doc-1.6

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libgnomeui

Installation of libgnomeui

Install libgnomeui by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --libexecdir=$(pkg-config \
                --variable=prefix ORBit-2.0)/lib/libgnomeui &&
make

This package does not come with a test suite.

Now, as the root user:

make install

If your GNOME installation prefix is anything other than /usr, create the following symbolic link as the root user:

ln -v -s $(pkg-config \
      --variable=prefix ORBit-2.0)/lib/gtk-2.0/2.4.0/filesystems \
      /usr/lib/gtk-2.0/2.4.0

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--libexecdir=$(pkg-config --variable=prefix ORBit-2.0)/lib/libgnomeui: This parameter causes the libexec files to be installed in the preferred location of $GNOME_PREFIX/lib/libgnomeui instead of $GNOME_PREFIX/libexec.

--with-kde-datadir=$KDE_PREFIX/share: Use this parameter if you have KDE installed in any prefix other than /usr.

--enable-gtk-doc: Use this parameter if GTK-Doc is installed and you wish to rebuild the API documentation.

Configuring libgnomeui

Configuration Information

Some applications cannot properly discover the libglade interface library installed by libgnomeui. Get around this problem by initializing an environment variable which identifies the location of the library. Add the following line to the system-wide /etc/profile file, or to individual user's ~/.profile or ~/.bashrc files:

export LIBGLADE_MODULE_PATH=$GNOME_PREFIX/lib/libglade/2.0

Contents

Installed Programs:
Installed Libraries: libgnomeui-2.{so,a}, the libgnome.{so,a} Glade library, and the libgnome-vfs.{so,a} GTK+ library
Installed Directories: The following subdirectories of $GNOME_PREFIX/: include/libgnomeui-2.0, lib/{gtk-2.0/2.4.0/filesystems, libgnomeui} and share/gtk-doc/html/libgnomeui

Short Descriptions

libgnomeui-2.{so,a}

are the GUI portion of the GNOME libraries.

GTK Engines-2.6.10

Introduction to GTK Engines

The GTK Engines package contains eight themes/engines and two additional engines for GTK2.

Package Information

GTK Engines Dependencies

Required

GTK+-2.8.20

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gtk-engines

Installation of GTK Engines

Install GTK Engines by running the following commands:

./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Contents

Installed Programs: None
Installed Libraries: GTK-2 engines libraries
Installed Directories: /usr/lib/gtk-2.0/engines and /usr/share/themes/{theme names}
Installed Themes: Clearlooks, Crux, Industrial, LighthouseBlue, Metal, Mist, Redmond and ThinIce

Short Descriptions

engines libraries

are manager systems for specific themes.

GNOME Themes-2.14.3

Introduction to GNOME Themes

The GNOME Themes package contains several more theme sets.

Package Information

GNOME Themes Dependencies

Required

XML::Parser-2.34 and GTK Engines-2.6.10

Optional

intltool-0.34.2

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gnome-themes

Installation of GNOME Themes

Install GNOME Themes by running the following commands:

./configure --prefix=/usr --enable-all-themes &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--enable-all-themes: Using this parameter enables the installation of additional accessibility themes. Omit this parameter if you have no desire for additional accessibility themes.

Contents

Installed Programs: None
Installed Libraries: None
Installed Directories: Several directories under /usr/share/{icons,themes}
Installed Themes: Several themes in the /usr/share/themes hierarchy and icons in the /usr/share/icons hierarchy

GNOME Doc Utils-0.6.1

Introduction to GNOME Doc Utils

The GNOME Doc Utils package is a collection of documentation utilities for the GNOME project. Notably, it contains utilities for building documentation and all auxiliary files in your source tree, and it contains the DocBook XSLT stylesheets that were once distributed with Yelp. Starting with GNOME 2.8, Yelp requires GNOME Doc Utils for the XSLT. Starting with GNOME 2.12, many of the core GNOME packages require GNOME Doc Utils.

Package Information

GNOME Doc Utils Dependencies

Required

libxslt-1.1.17

Recommended

Python-2.4.4 and ScrollKeeper-0.3.14

The packages are listed as recommended even though GNOME Doc Utils will build fine without them. If you don't install the recommended packages (and you pass the appropriate flags to the configure command so that it will build without them), functionality will be missing that is expected later in other GNOME packages.

Optional

pkg-config-0.20

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gnome-doc-utils

Installation of GNOME Doc Utils

Note

The instructions below are based on installing the package into a GNOME-2 environment. If, for whatever reason, you're installing this package without having ORBit2 and the core GNOME-2 libraries installed, you'll need to modify the --prefix= parameter on the configure script to point to your desired installation path (e.g., --prefix=/usr).

Install GNOME Doc Utils by running the following commands:

sed -i 's/@.*@pkgconfig/pkgconfig/' Makefile.in &&
./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --mandir=$(pkg-config \
                --variable=prefix ORBit-2.0)/share/man &&
make

To test the results, issue: make check.

Now, as the root user:

make install

Command Explanations

sed -i 's/@.*@pkgconfig/pkgconfig/' Makefile.in: If you build GNOME Doc Utils without Python, the pkg-config support files will not be installed. This command ensures that they are always installed.

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--mandir=$(pkg-config --variable=prefix ORBit-2.0)/share/man: This parameter causes the man.(X) files to be installed in $GNOME_PREFIX/share/man/man(X) instead of $GNOME_PREFIX/man/man(X).

Contents

Installed Programs: gnome-doc-prepare and xml2po
Installed Libraries: None
Installed Directories: The following subdirectories of $GNOME_PREFIX/share/: gnome-doc-utils, gnome/help/gnome-doc-{make,xslt}, omf/gnome-doc-{make,xslt}, xml/gnome and xml2po}
Installed Stylesheets: Custom DocBook XSLT stylesheets

Short Descriptions

gnome-doc-prepare

prepares a package to use gnome-doc-utils.

xml2po

is a Python script used to translate XML documents.

GNOME Desktop-2.14.3

Introduction to GNOME Desktop

The GNOME Desktop package contains the gnome-about program, the libgnome-desktop-2 library and GNOME's core graphics files and icons.

Package Information

GNOME Desktop Dependencies

Required

libgnomeui-2.14.1 and GNOME Doc Utils-0.6.1

Recommended

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gnome-desktop

Installation of GNOME Desktop

Install GNOME Desktop by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --sysconfdir=/etc/gnome/2.14.3 \
            --localstatedir=/var/lib \
            --mandir=$(pkg-config \
                --variable=prefix ORBit-2.0)/share/man &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--sysconfdir=/etc/gnome/2.14.3: This parameter causes the configuration files to be installed in /etc/gnome/2.14.3 instead of $GNOME_PREFIX/etc. Additionally (if applicable), the parameter ensures that the GConf-2 database is correctly updated.

--localstatedir=/var/lib: This parameter is used so that all ScrollKeeper files are installed in, and the ScrollKeeper database is properly updated in /var/lib/scrollkeeper instead of some files being installed in $GNOME_PREFIX/var/scrollkeeper.

--with-gnome-distributor="Some Name": Use this parameter to supply a custom name in the “Distributor:” field of the “GNOME About” display window.

--with-kde-datadir=$KDE_PREFIX/share: Use this parameter if KDE is installed in any prefix other than /usr.

--mandir=$(pkg-config --variable=prefix ORBit-2.0)/share/man: This parameter causes the man.(X) files to be installed in $GNOME_PREFIX/share/man/man(X) instead of $GNOME_PREFIX/man/man(X).

--enable-gtk-doc: Use this parameter if GTK-Doc is installed and you wish to rebuild the API documentation.

Contents

Installed Program: gnome-about
Installed Library: libgnome-desktop-2.{so,a}
Installed Directory: The following subdirectories of $GNOME_PREFIX/: include/gnome-desktop-2.0, share/{gnome-about, {gnome/help,omf}/{fdl,gnome-feedback,gpl,lgpl}, gtk-doc/html/gnome-desktop}

Short Descriptions

gnome-about

produces the about screen.

libgnome-desktop-2.{so,a}

contains APIs being tested for inclusion in libgnome or libgnomeui.

gnome-backgrounds-2.14.2.1

Introduction to gnome-backgrounds

The gnome-backgrounds package contains a collection of graphics files which can be used as backgrounds in the GNOME desktop environment. Additionally, the package creates the proper framework and directory structure so that you can add your own files to the collection.

Package Information

gnome-backgrounds Dependencies

Required

XML::Parser-2.34

Optional

intltool-0.34.2

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gnome-backgrounds

Installation of gnome-backgrounds

Note

The instructions below are based on installing the package into a GNOME-2 environment. If, for whatever reason, you're installing this package without having ORBit2 and the core GNOME-2 libraries installed, you'll need to modify the --prefix= parameter on the configure script to point to your desired installation path (e.g., --prefix=/usr).

Install gnome-backgrounds by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

Contents

Installed Programs: None
Installed Libraries: None
Installed Directories: $GNOME_PREFIX/share/{gnome-background-properties, pixmaps/backgrounds}

Short Descriptions

GNOME backgrounds

are backgrounds for the GNOME desktop.

gnome-menus-2.14.3

Introduction to gnome-menus

The gnome-menus package contains an implementation of the draft “Desktop Menu Specification” from freedesktop.org (http://www.freedesktop.org/Standards/menu-spec). Also contained are the GNOME menu layout configuration files, .directory files and a menu related utility program.

Package Information

gnome-menus Dependencies

Required

GLib-2.10.3 and XML::Parser-2.34

Optional

Python-2.4.4, Gamin-0.1.7, and intltool-0.34.2

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gnome-menus

Installation of gnome-menus

Note

The instructions below are based on installing the package into a GNOME-2 environment. If, for whatever reason, you're installing this package without having ORBit2 and the core GNOME-2 libraries installed, you'll need to modify the --prefix= parameter on the configure script to point to your desired installation path (e.g., --prefix=/usr).

Install gnome-menus by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --sysconfdir=/etc/gnome/2.14.3 &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--sysconfdir=/etc/gnome/2.14.3: This parameter causes the configuration files to be installed in /etc/gnome/2.14.3 instead of $GNOME_PREFIX/etc. Additionally (if applicable), the parameter ensures that the GConf-2 database is correctly updated.

Configuring gnome-menus

Configuration Information

XDG_CONFIG_DIRS Variable

So that GNOME can find the desktop configuration files, ensure you set the XDG_CONFIG_DIRS environment variable in the system profile, or in individual user's profiles as shown below (you may add additional directories, separated with colons, if desired):

export XDG_CONFIG_DIRS=/etc/gnome/2.14.3/xdg:/etc/xdg
XDG_DATA_DIRS Variable

So that GNOME can find the data to populate the menus, ensure you set the XDG_DATA_DIRS environment variable in the system profile, or in individual user's profiles as shown below (you may add additional directories, separated with colons, if desired):

export XDG_DATA_DIRS=$GNOME_PREFIX/share:/usr/share
PYTHONPATH Variable

If your GNOME-2 installation prefix is anything other than /usr and you have Python installed, you need to update the PYTHONPATH environment variable so that the gmenu module can be located by Python. Set the variable in the system profile, or in individual user's profiles as shown below:

export PYTHONPATH=$PYTHONPATH:$(pkg-config --variable=prefix \
       ORBit-2.0)/lib/python2.4/site-packages:$(pkg-config \
       --variable=prefix \
       ORBit-2.0)/lib/python2.4/site-packages/GMenuSimpleEditor

Contents

Installed Programs: gmenu-simple-editor and gnome-menu-spec-test
Installed Library: libgnome-menu.{so,a}
Installed Directories: /etc/gnome/2.14.3/xdg and the following subdirectories of $GNOME_PREFIX/: include/gnome-menus, lib/python2.4/site-packages/GMenuSimpleEditor, share/{desktop-directories, gnome-menus}

Short Descriptions

gmenu-simple-editor

is a simple front-end script to the Python Gmenu Simple Editor module

gnome-menu-spec-test

is used to test GNOME's implementation of the Desktop Menu Specification.

libgnome-menu.{so,a}

contains functions required to support GNOME's implementation of the Desktop Menu Specification.

GNOME Panel-2.14.3

Introduction to GNOME Panel

The GNOME Panel package contains hooks to the menu sub-system and the applet sub-system.

Package Information

GNOME Panel Dependencies

Required

GNOME Desktop-2.14.3, libwnck-2.14.3, and gnome-menus-2.14.3

Optional

Evolution Data Server-1.6.3 (required if you plan to install Evolution-2.6.3 or Ekiga-2.0.2), intltool-0.34.2, and GTK-Doc-1.6

Note

The libxml2 Python module must have been built during the installation of libxml2 else the GNOME Panel build will fail.

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gnome-panel

Installation of GNOME Panel

Install GNOME Panel by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --sysconfdir=/etc/gnome/2.14.3 \
            --localstatedir=/var/lib \
            --libexecdir=$(pkg-config \
                --variable=prefix ORBit-2.0)/lib/gnome-panel \
            --mandir=$(pkg-config \
                --variable=prefix ORBit-2.0)/share/man &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--sysconfdir=/etc/gnome/2.14.3: This parameter causes the configuration files to be installed in /etc/gnome/2.14.3 instead of $GNOME_PREFIX/etc. Additionally (if applicable), the parameter ensures that the GConf-2 database is correctly updated.

--localstatedir=/var/lib: This parameter is used so that all ScrollKeeper files are installed in, and the ScrollKeeper database is properly updated in /var/lib/scrollkeeper instead of some files being installed in $GNOME_PREFIX/var/scrollkeeper.

--libexecdir=$(pkg-config --variable=prefix ORBit-2.0)/lib/gnome-panel: This parameter causes the libexec files to be installed in the preferred location of $GNOME_PREFIX/lib/gnome-panel instead of $GNOME_PREFIX/libexec.

--mandir=$(pkg-config --variable=prefix ORBit-2.0)/share/man: This parameter causes the man.(X) files to be installed in $GNOME_PREFIX/share/man/man(X) instead of $GNOME_PREFIX/man/man(X).

--enable-gtk-doc: Use this parameter if GTK-Doc is installed and you wish to rebuild the API documentation.

Contents

Installed Programs: gnome-desktop-item-edit, gnome-panel and panel-test-applets
Installed Library: libpanel-applet-2.{so,a}
Installed Directories: The following subdirectories of $GNOME_PREFIX/: include/panel-2.0, lib/gnome-panel, share/{gnome/{help/{too many to list}, panel}, gtk-doc/html/panel-applet, icons, idl/gnome-panel-2.0, omf/{too many too list}}

Short Descriptions

libpanel-applet-2.{so,a}

allow development of small applications (applets) which may be embedded in the panel.

GNOME Session-2.14.3

Introduction to GNOME Session

The GNOME Session package contains the GNOME session manager.

Package Information

GNOME Session Dependencies

Required

GNOME Desktop-2.14.3 and EsounD-0.2.36

Optional

TCP Wrapper-7.6 and libnotify

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gnome-session

Installation of GNOME Session

Install GNOME Session by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --sysconfdir=/etc/gnome/2.14.3 \
            --mandir=$(pkg-config \
                --variable=prefix ORBit-2.0)/share/man &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--sysconfdir=/etc/gnome/2.14.3: This parameter causes the configuration files to be installed in /etc/gnome/2.14.3 instead of $GNOME_PREFIX/etc. Additionally (if applicable), the parameter ensures that the GConf-2 database is correctly updated.

--mandir=$(pkg-config --variable=prefix ORBit-2.0)/share/man: This parameter causes the man.(X) files to be installed in $GNOME_PREFIX/share/man/man(X) instead of $GNOME_PREFIX/man/man(X).

Contents

Installed Programs: gnome-session, gnome-session-properties, gnome-session-remove, gnome-session-save, and gnome-wm
Installed Libraries: None
Installed Directory: $GNOME_PREFIX/share/pixmaps/splash

Short Descriptions

gnome-session

starts up the GNOME desktop.

gnome-session-*

session utilities includes a configuration program and other session management related utilities.

gnome-wm

uses the $WINDOW_MANAGER environment variable to allow a user to define a window manager of choice. If no $WINDOW_MANAGER is defined, gnome-wm defaults to metacity as the default window manager.

VTE-0.12.2

Introduction to VTE

The VTE package contains a termcap file implementation for terminal emulators.

Package Information

VTE Dependencies

Required

GTK+-2.8.20 and XML::Parser-2.34

Optional

GTK-Doc-1.6, intltool-0.34.2, and PyGTK (requires Python-2.4.4)

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/vte

Installation of VTE

Install VTE by running the following commands:

sed -i 's%\\177:%&kh=\\EOH:@7=\\EOF:%' termcaps/xterm &&
sed -i 's/FT2_LIBS $LIBS/& $X_LIBS/' configure &&
sed -i -e 's/^ssfe_LDADD =.*$/& -lncurses/' \
       -e 's/^LDFLAGS =.*$/& @X_LIBS@/' \
    src/Makefile.in &&

./configure --prefix=/usr \
            --libexecdir=/usr/lib/vte &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

sed -i ... termcaps/xterm: The Home and End keys are broken in the xterm termcap file. This sed command fixes them.

sed -i ... configure: If you pass the --with-glX parameter to the configure script, configure will fail because it doesn't include the X Window System library directory in the LDFLAGS in one of the checks. This command adds the required directory. This command is not required if your X Window System libraries are located in /usr/lib.

sed -i ... src/Makefile.in: For the same reason the previous sed command is used, this one does a similar modification to fix the Makefile used to build the programs and library. This sed also fixes an issue by adding the libncurses library to the LDFLAGS for building the ssfe program. This issue is also caused by passing the additional parameters to the configure script.

--libexecdir=/usr/lib/vte: This parameter causes the libexec files to be installed in the preferred location of /usr/lib/vte instead of /usr/libexec.

--with-xft2 --with-pangox --with-glX: These parameters can be passed to the configure script to enable additional drawing methods in the VTE library.

--enable-gtk-doc: Use this parameter if GTK-Doc is installed and you wish to rebuild the API documentation.

Contents

Installed Program: vte
Installed Libraries: libvte.{so,a} and the vtemodule.{so,a} Python module
Installed Directories: /usr/include/vte, /usr/lib/vte, /usr/share/gtk-doc/html/vte, and /usr/share/vte

Short Descriptions

vte

is a test application for the VTE libraries.

libvte.{so,a}

provide the functions necessary to implement a “termcap file” for terminal emulators.

GNOME Terminal-2.14.2

Introduction to GNOME Terminal

The GNOME Terminal package contains the console. This is useful for executing programs from a command prompt.

Package Information

GNOME Terminal Dependencies

Required

libgnomeui-2.14.1, ScrollKeeper-0.3.14, VTE-0.12.2, and startup-notification-0.8

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gnome-terminal

Installation of GNOME Terminal

Install GNOME Terminal by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --sysconfdir=/etc/gnome/2.14.3 \
            --localstatedir=/var/lib &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--sysconfdir=/etc/gnome/2.14.3: This parameter causes the configuration files to be installed in /etc/gnome/2.14.3 instead of $GNOME_PREFIX/etc. Additionally (if applicable), the parameter ensures that the GConf-2 database is correctly updated.

--localstatedir=/var/lib: This parameter is used so that all ScrollKeeper files are installed in, and the ScrollKeeper database is properly updated in /var/lib/scrollkeeper instead of some files being installed in $GNOME_PREFIX/var/scrollkeeper.

Contents

Installed Program: gnome-terminal
Installed Libraries: None
Installed Directories: $GNOME_PREFIX/share/{,gnome/help/,omf/}gnome-terminal

Short Descriptions

gnome-terminal

provides the command prompt in the GNOME environment.

LibGTop-2.14.2

Introduction to LibGTop

The LibGTop package contains the GNOME top libraries.

Package Information

LibGTop Dependencies

Required

GLib-2.10.3

Optional

popt-1.10.4, GDBM-1.8.3, and X Window System

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libgtop

Installation of LibGTop

Note

The instructions below are based on installing the package into a GNOME-2 environment. If, for whatever reason, you're installing this package without having ORBit2 and the core GNOME-2 libraries installed, you'll need to modify the --prefix= parameter on the configure script to point to your desired installation path (e.g., --prefix=/usr).

Install LibGTop by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --infodir=$(pkg-config \
                --variable=prefix ORBit-2.0)/share/info &&
make

This package does not come with a test suite.

Now, as the root user:

make install

If you passed --with-libgtop-examples to the configure script to build the example programs, install them using the following commands as the root user:

install -v -m755 -d $(pkg-config \
        --variable=prefix ORBit-2.0)/lib/libgtop/examples &&
install -v -m755 examples/.libs/* \
        $(pkg-config --variable=prefix ORBit-2.0)/lib/libgtop/examples

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--infodir=$(pkg-config --variable=prefix ORBit-2.0)/share/info: This switch installs the info documentation in $GNOME_PREFIX/share/info instead of $GNOME_PREFIX/info. You may need to add this directory to your $INFOPATH environment variable if your GNOME installation prefix is anything other than /usr.

--with-libgtop-examples: Adding this parameter to the configure script will build numerous example programs.

--with-libgtop-inodedb: Add this parameter to the configure script if you have GDBM installed and wish to build the inodedb programs.

Configuring LibGTop

Configuration Information

If $GNOME_PREFIX is anything other than /usr, update the INFOPATH environment variable by adding the following to your system-wide or personal profile:

export INFOPATH=/usr/share/info:$(pkg-config \
       --variable=prefix ORBit-2.0)/share/info

Contents

Installed Programs: file_by_inode2 and mkinodedb2
Installed Library: libgtop-2.0.{so,a}
Installed Directories: The following subdirectories of $GNOME_PREFIX/: include/libgtop-2.0 and lib/libgtop/examples

Short Descriptions

libgtop-2.0.{so,a}

contains the functions that allow access to system performance data.

GAIL-1.8.11

Introduction to GAIL

The GAIL package contains the GNOME Accessibility Implementation Libraries.

Package Information

GAIL Dependencies

Required

libgnomecanvas-2.14.0

Optional

GTK-Doc-1.6

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gail

Installation of GAIL

Note

The instructions below are based on installing the package into a GNOME-2 environment. If, for whatever reason, you're installing this package without having ORBit2 and the core GNOME-2 libraries installed, you'll need to modify the --prefix= parameter on the configure script to point to your desired installation path (e.g., --prefix=/usr).

Install GAIL by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) &&
make

This package does not come with a test suite.

Now, as the root user:

make install

GTK+ will look for the GAIL modules in /usr/lib even if $GNOME_PREFIX is NOT /usr. If $GNOME_PREFIX is anything other than /usr, create a symlink to $GNOME_PREFIX to satisfy this requirement:

ln -v -s $(pkg-config --variable=prefix ORBit-2.0)/lib/gtk-2.0/modules \
         /usr/lib/gtk-2.0

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--enable-gtk-doc: Use this parameter if GTK-Doc is installed and you wish to rebuild the API documentation.

Contents

Installed Programs: None
Installed Libraries: libgailutil.so and GAIL GTK+ modules
Installed Directories: The following subdirectories of $GNOME_PREFIX/: include/gail-1.0, lib/gtk-2.0/modules and share/gtk-doc/html/gail-libgail-util

Short Descriptions

libgailutil.so

provides the functions that solve accessibility problems in a consistent manner across GNOME.

GNOME Applets-2.14.3

Introduction to GNOME Applets

The GNOME Applets package contains small applications which generally run in the background and display their output to the GNOME panel.

Package Information

GNOME Applets Dependencies

Required

GAIL-1.8.11, GNOME Panel-2.14.3, and libxklavier-2.2

Optional

LibGTop-2.14.2, GStreamer Base Plug-ins-0.10.11, HAL-0.5.7.1, gucharmap-1.6.0, system-tools-backends-1.4.2, DocBook-utils-0.6.14, libapm, and libnotify

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gnome-applets

Installation of GNOME Applets

Install GNOME Applets by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --sysconfdir=/etc/gnome/2.14.3 \
            --localstatedir=/var/lib \
            --libexecdir=$(pkg-config \
                --variable=prefix ORBit-2.0)/lib/gnome-applets \
            --mandir=$(pkg-config \
                --variable=prefix ORBit-2.0)/share/man &&
make

This package does not come with a test suite.

Now, as the root user:

make install &&
make -C man install-man

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--sysconfdir=/etc/gnome/2.14.3: This parameter causes the configuration files to be installed in /etc/gnome/2.14.3 instead of $GNOME_PREFIX/etc. Additionally (if applicable), the parameter ensures that the GConf-2 database is correctly updated.

--localstatedir=/var/lib: This parameter is used so that all ScrollKeeper files are installed in, and the ScrollKeeper database is properly updated in /var/lib/scrollkeeper instead of some files being installed in $GNOME_PREFIX/var/scrollkeeper.

--libexecdir=$(pkg-config --variable=prefix ORBit-2.0)/lib/gnome-applets: This parameter causes the libexec files to be installed in the preferred location of in $GNOME_PREFIX/lib/gnome-applets instead of $GNOME_PREFIX/libexec.

--mandir=$(pkg-config --variable=prefix ORBit-2.0)/share/man: This parameter causes the man.(X) files to be installed in $GNOME_PREFIX/share/man/man(X) instead of $GNOME_PREFIX/man/man(X).

make -C man install-man: This command installs the man-pages that are not installed during make install.

Contents

Installed Programs: cpufreq-selector and gswitchit-plugins-capplet
Installed Libraries: None
Installed Directories: The following subdirectories of $GNOME_PREFIX/: include/libg{switchit,weather}, lib/gnome-applets, share/{gnome-applets, {gnome/help,omf}/{too many to list}, pixmaps/{accessx-status-applet, cpufreq-applet, stickynotes}, xmodmap}

EEL-2.14.3

Introduction to EEL

The EEL package contains the Eazel Extensions Library. This is a collection of widgets and extensions to the GNOME platform.

Package Information

EEL Dependencies

Required

GNOME Desktop-2.14.3, gnome-menus-2.14.3, and GAIL-1.8.11

Optional

intltool-0.34.2

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/eel

Installation of EEL

Install EEL by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) &&
make

To test the results, first modify the permissions of the test script by issuing chmod 755 eel/check-eel, then issue: make check.

Now, as the root user:

make install

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

Contents

Installed Programs: None
Installed Library: libeel-2.{so,a}
Installed Directory: $GNOME_PREFIX/include/eel-2

Short Descriptions

libeel-2.{so,a}

is a collection of widgets developed by the Nautilus project.

Nautilus-2.14.3

Introduction to Nautilus

The Nautilus package contains the GNOME shell and file manager.

Package Information

Nautilus Dependencies

Required

EEL-2.14.3, EsounD-0.2.36, libexif-0.6.13, and librsvg-2.14.4

Optional

startup-notification-0.8, Tracker (requires MySQL-5.0.21 and D-BUS-0.62, and can use Gamin-0.1.7 and inotify.h capability), Beagle (uses inotify.h capability), and DocBook-utils-0.6.14

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/nautilus

Installation of Nautilus

Install Nautilus by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --sysconfdir=/etc/gnome/2.14.3 &&
make

To test the results, issue: make check.

Now, as the root user:

make install &&
install -v -m755 -d $(pkg-config \
    --variable=prefix ORBit-2.0)/share/doc/nautilus-2.14.3 &&
install -v -m644 docs/*.{txt,dia,pdf,sxw,faq,html} $(pkg-config \
    --variable=prefix ORBit-2.0)/share/doc/nautilus-2.14.3

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--sysconfdir=/etc/gnome/2.14.3: This parameter causes the configuration files to be installed in /etc/gnome/2.14.3 instead of $GNOME_PREFIX/etc. Additionally (if applicable), the parameter ensures that the GConf-2 database is correctly updated.

Contents

Installed Programs: nautilus, nautilus-connect-server and nautilus-file-management-properties
Installed Library: libnautilus-extension.so
Installed Directories: The following subdirectories of $GNOME_PREFIX/: include/nautilus, share/{doc/nautilus-2.14.3, {,pixmaps}nautilus}

Short Descriptions

nautilus

is the GNOME file manager.

libnautilus-extension.so

supplies the functions needed by the file manager.

Control Center-2.14.2

Introduction to Control Center

The Control Center package contains the GNOME settings managers.

Package Information

Control Center Dependencies

Required

libxklavier-2.2, Metacity-2.14.5, GNOME Icon Theme-2.14.2, and Nautilus-2.14.3

Optional

Evolution Data Server-1.6.3, ALSA-1.0.13, and GStreamer Base Plug-ins-0.10.11

Though they are only run-time dependencies and Control Center will compile just fine without them installed, there are two screen saver packages that can be installed which will provide a robust collection of screen savers and screen locking capability. GNOME ScreenSaver (BLFS page is forthcoming) is looked for first, with a fallback to XScreenSaver-4.24 if necessary.

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/control-center

Installation of Control Center

Install Control Center by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --sysconfdir=/etc/gnome/2.14.3 \
            --localstatedir=/var/lib \
            --libexecdir=$(pkg-config \
                --variable=prefix ORBit-2.0)/lib/control-center &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--sysconfdir=/etc/gnome/2.14.3: This parameter causes the configuration files to be installed in /etc/gnome/2.14.3 instead of $GNOME_PREFIX/etc. Additionally (if applicable), the parameter ensures that the GConf-2 database is correctly updated.

--localstatedir=/var/lib: This parameter is used so that all ScrollKeeper files are installed in, and the ScrollKeeper database is properly updated in /var/lib/scrollkeeper instead of some files being installed in $GNOME_PREFIX/var/scrollkeeper.

--libexecdir=$(pkg-config --variable=prefix ORBit-2.0)/lib/control-center: This parameter causes the libexec files to be installed in the preferred location of $GNOME_PREFIX/lib/control-center instead of $GNOME_PREFIX/libexec.

--enable-aboutme: Enables building the gnome-about-me capplet. Evolution Data Server must be installed to use this parameter.

Contents

Installed Programs: gnome-about-me,gnome-accessibility-keyboard-properties, gnome-at-properties, gnome-background-properties, gnome-control-center, gnome-default-applications-properties, gnome-display-properties, gnome-font-properties, gnome-font-viewer, gnome-keybinding-properties, gnome-keyboard-properties, gnome-mouse-properties, gnome-network-preferences, gnome-sound-properties, gnome-theme-manager, gnome-theme-thumbnailer, gnome-thumbnail-font, gnome-typing-monitor, gnome-ui-properties, gnome-window-properties, and themus-theme-applier
Installed Libraries: libgnome-window-settings.{so,a}, GNOME VFS and window manager settings library modules and Nautilus library module extensions
Installed Directories: The following subdirectories of $GNOME_PREFIX/: include/gnome-window-settings-2.0, lib/{control-center, nautilus, window-manager-settings}, share/{{,gnome/help/,omf/}control-center-2.0, gnome/{default-applications,cursor-fonts}}

Yelp-2.14.3

Introduction to Yelp

The Yelp package contains the help browser. This is useful for viewing help files.

Package Information

Yelp Dependencies

Required

libgnomeui-2.14.1, libgnomeprintui-2.12.1, startup-notification-0.8, GNOME Doc Utils-0.6.1, and a mozilla.org Gecko layout engine (SeaMonkey-1.1 or Firefox-1.5.0.9 or Thunderbird-1.5.0.9 or Mozilla)

Optional

Beagle

Note

The Yelp package is not required for a functional GNOME desktop. Note, however, that without Yelp you will not be able to view the built-in Help provided by core GNOME and many of the support applications. This is mentioned here because you may not wish to install a Gecko layout engine. Without a Gecko layout engine you will have no graphical browser capability as the default GNOME browser, Epiphany-2.14.2.1, also requires a Gecko layout engine.

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/yelp

Installation of Yelp

Install Yelp by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --sysconfdir=/etc/gnome/2.14.3 \
            --localstatedir=/var/lib &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--sysconfdir=/etc/gnome/2.14.3: This parameter causes the configuration files to be installed in /etc/gnome/2.14.3 instead of $GNOME_PREFIX/etc. Additionally (if applicable), the parameter ensures that the GConf-2 database is correctly updated.

--localstatedir=/var/lib: This parameter is used so that all ScrollKeeper files are installed in, and the ScrollKeeper database is properly updated in /var/lib/scrollkeeper instead of some files being installed in $GNOME_PREFIX/var/scrollkeeper.

Contents

Installed Programs: gnome-help and yelp
Installed Libraries: None
Installed Directory: $GNOME_PREFIX/share/yelp

Short Descriptions

gnome-help

is a symbolic link to yelp.

yelp

is the GNOME help browser.

GNOME User Docs-2.14.2

Introduction to GNOME User Docs

The GNOME User Docs package contains documentation for GNOME.

Package Information

GNOME User Docs Dependencies

Required

GNOME Doc Utils-0.6.1 and which-2.16

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gnome-user-docs

Installation of GNOME User Docs

Note

The instructions below are based on installing the package into a GNOME-2 environment. If, for whatever reason, you're installing this package without having ORBit2 and the core GNOME-2 libraries installed, you'll need to modify the --prefix= parameter on the configure script to point to your desired installation path (e.g., --prefix=/usr).

Install GNOME User Docs by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --localstatedir=/var/lib &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--localstatedir=/var/lib: This parameter is used so that all ScrollKeeper files are installed in, and the ScrollKeeper database is properly updated in /var/lib/scrollkeeper instead of some files being installed in $GNOME_PREFIX/var/scrollkeeper.

Contents

Installed Programs: None
Installed Libraries: None
Installed Directories: $GNOME_PREFIX/share/{gnome/help/{gnome-access-guide, system-admin-guide, user-guide}, omf/{gnome-user-docs,user-guide}}

Short Descriptions

OMF files

contain user documentation. These include introductions and help on the core packages.

Configuring the Core GNOME Packages

Create (or append to) a ~/.xinitrc file to start GNOME:

echo "exec gnome-session" >> ~/.xinitrc

If you have D-BUS-0.62 installed, you can start the D-BUS session daemon here as well. Starting the session daemon here has the added bonus that it will exit when you log out of your GNOME session. If you wish to start the daemon here, use the following command instead of the one shown above:

echo "exec dbus-launch --exit-with-session gnome-session" >> ~/.xinitrc

Note

Check the ~/.xinitrc file and ensure you have no other window managers or other X applications mentioned before GNOME.

Ensure all libraries can be found with (as root):

ldconfig

Update the MIME-type application database (as root):

update-desktop-database

At this point you can bring up GNOME with startx.

Chapter 32. GNOME Additional Packages

These packages are modular and add desktop applications and assorted utilities to the GNOME environment. Feel free to install them on an as needed or as desired basis.

Libraries

libgnomecups-0.2.2

Introduction to libgnomecups

The libgnomecups package contains a library used to wrap the CUPS API in a GLib fashion, so CUPS code can be cleanly integrated with GLib code.

Package Information

libgnomecups Dependencies

Required

CUPS-1.2.7, GLib-2.10.3, and XML::Parser-2.34

Optional

intltool-0.34.2

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libgnomecups

Installation of libgnomecups

Note

The instructions below are based on installing the package into a GNOME-2 environment. If, for whatever reason, you're installing this package without having ORBit2 and the core GNOME-2 libraries installed, you'll need to modify the --prefix= parameter on the configure script to point to your desired installation path (e.g., --prefix=/usr).

Install libgnomecups by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

Contents

Installed Programs: None
Installed Library: libgnomecups-1.0.{so,a}
Installed Directory: $GNOME_PREFIX/include/libgnomecups-1

Short Descriptions

libgnomecups-1.0.{so,a}

libraries are used to wrap the CUPS API in a GLib type interface.

libgnomeprint-2.12.1

Introduction to libgnomeprint

The libgnomeprint package contains libgnomeprint libraries.

Package Information

libgnomeprint Dependencies

Required

Pango-1.12.3, libart_lgpl-2.3.17, Fontconfig-2.3.2, popt-1.10.4, libxml2-2.6.26, and XML::Parser-2.34

Optional

libgnomecups-0.2.2, GTK-Doc-1.6, and DocBook-utils-0.6.14

If you have CUPS-1.2.7 installed, you must also have libgnomecups-0.2.2 installed or pass --without-cups to the configure command in the instructions below.

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libgnomeprint

Installation of libgnomeprint

Note

The instructions below are based on installing the package into a GNOME-2 environment. If, for whatever reason, you're installing this package without having ORBit2 and the core GNOME-2 libraries installed, you'll need to modify the --prefix= parameter on the configure script to point to your desired installation path (e.g., --prefix=/usr).

Install libgnomeprint by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --disable-gtk-doc &&
make

The test suite requires Acroread-4 to be installed and passing --with-metadata-printer to the configure script. If the previous requirements are met and you wish to run the regression tests, change directories to the tests directory and issue: ./run-test.pl.

Now, as the root user:

make install

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--disable-gtk-doc: This switch prevents rebuilding the documentation during the make command. Remove this parameter if you have GTK-Doc installed and wish to rebuild the documentation.

Contents

Installed Programs: None
Installed Libraries: libgnomeprint-2-2.{so,a} and numerous filters and modules
Installed Directories: The following subdirectories of $GNOME_PREFIX/: include/libgnomeprint-2.2, lib/libgnomeprint, share/{,gtk-doc/html/}libgnomeprint

Short Descriptions

libgnomeprint-2-2.{so,a}

implements the GNOME Printing Architecture.

libgnomeprintui-2.12.1

Introduction to libgnomeprintui

The libgnomeprintui package contains the libgnomeprintui library.

Package Information

libgnomeprintui Dependencies

Required

libgnomecanvas-2.14.0, GNOME Icon Theme-2.14.2, and libgnomeprint-2.12.1

Optional

GTK-Doc-1.6

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libgnomeprintui

Installation of libgnomeprintui

Note

The instructions below are based on installing the package into a GNOME-2 environment. If, for whatever reason, you're installing this package without having ORBit2 and the core GNOME-2 libraries installed, you'll need to modify the --prefix= parameter on the configure script to point to your desired installation path (e.g., --prefix=/usr).

Install libgnomeprintui by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--enable-gtk-doc: Use this option if you have GTK-Doc installed and wish to build the API documentation, as the source tarball does not contain any pre-built docs.

Contents

Installed Programs: None
Installed Library: libgnomeprintui-2-2.{so,a}
Installed Directories: The following subdirectories of $GNOME_PREFIX/: include/libgnomeprintui-2.2 and share/{,gtk-doc/html/}libgnomeprintui

Short Descriptions

libgnomeprintui-2-2.{so,a}

is the GUI portion of the GNOME Printing Architecture implementation.

GtkHTML-3.10.3

Introduction to GtkHTML

The GtkHTML package contains a lightweight HTML rendering/printing/editing engine.

Package Information

GtkHTML Dependencies

Required

libgnomeui-2.14.1, GAIL-1.8.11, GNOME Icon Theme-2.14.2, and libgnomeprintui-2.12.1

Optional

libsoup-2.2.96 and intltool-0.34.2

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gtkhtml

Installation of GtkHTML

Install GtkHTML by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --libexecdir=$(pkg-config \
                --variable=prefix ORBit-2.0)/lib/gtkhtml &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--libexecdir=$(pkg-config --variable=prefix ORBit-2.0)/lib/gtkhtml: This parameter causes the libexec files to be installed in the preferred location of $GNOME_PREFIX/lib/gtkhtml instead of $GNOME_PREFIX/libexec.

Contents

Installed Programs: None
Installed Libraries: libgtkhtml-3.8.{so,a} and libgnome-gtkhtml-editor-3.8.{so,a}
Installed Directories: The following subdirectories of $GNOME_PREFIX/: include/libgtkhtml-3.8, lib/gtkhtml, and share/gtkhtml-3.8

Short Descriptions

libgtkhtml-3.8.{so,a}

provide the functions to render HTML within applications.

Evolution Data Server-1.6.3

Introduction to Evolution Data Server

The Evolution Data Server package provides a unified backend for programs that work with contacts, tasks, and calendar information. It was originally developed for Evolution (hence the name), but is now used by other packages as well.

Package Information

Evolution Data Server Dependencies

Required

libgnomeui-2.14.1 and libsoup-2.2.96

Recommended (For SSL and S/MIME support)

The NSS package is not required if you have Firefox-1.5.0.9, Thunderbird-1.5.0.9, SeaMonkey-1.1 or Mozilla installed. These packages contain internal copies of NSS (or they used a system-installed copy). If any of the four packages are installed, one way or another you will already have NSS/NSPR libraries on your system.

Optional

OpenLDAP-2.3.27, an MTA (that provides a sendmail command), Heimdal-0.7.2 or MIT Kerberos V5-1.6, krb4, GTK-Doc-1.6, and DocBook-utils-0.6.14

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/evolution-data-server

Installation of Evolution Data Server

Install Evolution Data Server by running the following commands:

Note

The instructions below assume you have the NSS/NSPR libraries installed on your system. If you elected not to install NSS (or one of the other packages mentioned above), you'll need to remove the following two parameter settings from the configure command below:

            --enable-nss
            --enable-smime

The Evolution configure script only looks for the stand-alone NSS package and the Mozilla and Firefox browsers for the NSS/NSPR libraries. If you are using Thunderbird as your source for the NSS/NSPR libraries, you will have to add the following two parameter settings to the configure command below:

            --with-nspr-includes=/usr/include/nspr
            --with-nss-includes=/usr/include/nss

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --libexecdir=$(pkg-config --variable=prefix \
                ORBit-2.0)/lib/evolution-data-server-1.2 \
            --enable-nntp \
            --enable-nss \
            --enable-smime &&
make

To test the results, issue: make -k check. At least one test is known to fail and 18 are known to pass.

Now, as the root user:

make install

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--libexecdir=$(pkg-config --variable=prefix ORBit-2.0)/lib/evolution-data-server-1.2: This parameter causes the libexec files to be installed in the preferred location of $GNOME_PREFIX/lib/evolution-data-server-1.2 instead of $GNOME_PREFIX/libexec.

--enable-nntp: This parameter is used to build the Usenet news (NNTP) backend.

--enable-nss: This parameter is used to pull in the Mozilla Network Security Services libraries for SSL support.

--enable-smime: This parameter is used to pull in the Mozilla Network Security Services libraries for S/MIME support.

Note

To enable many of the optional dependencies, review the information from ./configure --help for the necessary parameters you must pass to the configure script.

Contents

Installed Programs: None
Installed Libraries: libcamel-1.2.so, libcamel-provider-1.2.so, libebook-1.2.so, libecal-1.2.so, libedata-book-1.2.so, libedata-cal-1.2.so, libedataserver-1.2.so, libedataserverui-1.2.so, libegroupwise-1.2.so, libexchange-storage-1.2.so and numerous provider and extension modules.
Installed Directories: The following subdirectories of $GNOME_PREFIX/: include/evolution-data-server-1.6, lib/evolution-data-server-1.2, share/{evolution-data-server-1.6, gtk-doc/html/libe{book,cal,data{,server}}, idl/evolution-data-server-1.2, pixmaps/evolution-data-server-1.6}

Short Descriptions

libe*.so

libraries are client, backend and utility libraries for the Evolution address books, calendar and data servers.

gtksourceview-1.6.2

Introduction to gtksourceview

The gtksourceview package contains libgtksourceview libraries. This is useful for extending the GTK text functions to include syntax highlighting.

Package Information

gtksourceview Dependencies

Required

GNOME Virtual File System-2.14.2 and libgnomeprintui-2.12.1

Optional

GTK-Doc-1.6 and intltool-0.34.2

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gtksourceview

Installation of gtksourceview

Install gtksourceview by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) &&
make

This package does not come with a test suite, however, after the package is installed you can change to the tests directory in the source tree and issue ./test-widget to test the functionality of the libgtksourceview-1.0 library.

Now, as the root user:

make install

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--enable-gtk-doc: Use this parameter if GTK-Doc is installed and you wish to rebuild the API documentation.

Contents

Installed Programs: None
Installed Library: libgtksourceview-1.0.{so,a}
Installed Directories: The following subdirectories of $GNOME_PREFIX/: include/gtksourceview-1.0, share/{gtk-doc/html/gtksourceview, gtksourceview-1.0}

Short Descriptions

libgtksourceview-1.0.{so,a}

contains function extensions for the GtkTextView widget.

system-tools-backends-1.4.2

Introduction to system-tools-backends

The system-tools-backends are a set of cross-platform scripts for Linux and other Unix systems. The backends provide a standard XML interface for modifying the configuration regardless of the distribution being used.

Package Information

system-tools-backends Dependencies

Required

XML::Parser-2.34

Optional

intltool-0.34.2

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/system-tools-backends

Installation of system-tools-backends

Note

The instructions below are based on installing the package into a GNOME-2 environment. If, for whatever reason, you're installing this package without having ORBit2 and the core GNOME-2 libraries installed, you'll need to modify the --prefix= parameter on the configure script to point to your desired installation path (e.g., --prefix=/usr).

Install system-tools-backends by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

Contents

Installed Programs: None
Installed Libraries: None
Installed Directories: $GNOME_PREFIX/share/setup-tool-backends

Short Descriptions

System tools backend scripts

are configuration files, Perl and shell scripts used to perform setup of various desktop frontend processes and services.

gnome-audio-2.0.0

Introduction to gnome-audio

The gnome-audio package contains a set of default sounds for the GNOME GUI desktop. Sound files for startup, shutdown and many GTK+ events are included. These sounds compliment the GNOME Media package.

Package Information

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gnome-audio

Installation of gnome-audio

Note

The instructions below are based on installing the package into a GNOME-2 environment. If, for whatever reason, you're installing this package without having ORBit2 and the core GNOME-2 libraries installed, you'll need to modify the --prefix= parameter on the configure script to point to your desired installation path (e.g., --prefix=/usr).

Install gnome-audio by running the following command as the root user:

make prefix=$(pkg-config --variable=prefix ORBit-2.0) install

Command Explanations

prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

Contents

Installed Programs: None
Installed Libraries: None
Installed Directory: $GNOME_PREFIX/share/sounds

Utilities

bug-buddy-2.14.0

Introduction to bug-buddy

The bug-buddy package contains a graphical bug reporting tool. This can extract debugging information from a core file or crashed application.

Package Information

bug-buddy Dependencies

Required

GNOME Desktop-2.14.3 and gnome-menus-2.14.3

Optional

intltool-0.34.2

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/bug-buddy

Installation of bug-buddy

Install bug-buddy by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --sysconfdir=/etc/gnome/2.14.3 \
            --localstatedir=/var/lib \
            --mandir=$(pkg-config \
                --variable=prefix ORBit-2.0)/share/man &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--sysconfdir=/etc/gnome/2.14.3: This parameter causes the configuration files to be installed in /etc/gnome/2.14.3 instead of $GNOME_PREFIX/etc. Additionally (if applicable), the parameter ensures that the GConf-2 database is correctly updated.

--localstatedir=/var/lib: This parameter is used so that all ScrollKeeper files are installed in, and the ScrollKeeper database is properly updated in /var/lib/scrollkeeper instead of some files being installed in $GNOME_PREFIX/var/scrollkeeper.

--mandir=$(pkg-config --variable=prefix ORBit-2.0)/share/man: This parameter causes the man.(X) files to be installed in $GNOME_PREFIX/share/man/man(X) instead of $GNOME_PREFIX/man/man(X).

Contents

Installed Program: bug-buddy
Installed Libraries: None
Installed Directories: $GNOME_PREFIX/share/{,gnome/help/ ,omf/}bug-buddy

Short Descriptions

bug-buddy

is a graphical bug reporting system.

gedit-2.14.4

Introduction to gedit

The gedit package contains a lightweight UTF-8 text editor for the GNOME desktop.

Package Information

gedit Dependencies

Required

libgnomeui-2.14.1, GNOME Doc Utils-0.6.1, gtksourceview-1.6.2, and which-2.16

Optional

intltool-0.34.2, Aspell-0.60.4, PyXML-0.8.4, and gnome-python-desktop (requires PyGTK and can use GNOME-Python and PyORBit)

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gedit

Installation of gedit

Install gedit by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --sysconfdir=/etc/gnome/2.14.3 \
            --localstatedir=/var/lib \
            --mandir=$(pkg-config \
                --variable=prefix ORBit-2.0)/share/man &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--sysconfdir=/etc/gnome/2.14.3: This parameter causes the configuration files to be installed in /etc/gnome/2.14.3 instead of $GNOME_PREFIX/etc. Additionally (if applicable), the parameter ensures that the GConf-2 database is correctly updated.

--localstatedir=/var/lib: This parameter is used so that all ScrollKeeper files are installed in, and the ScrollKeeper database is properly updated in /var/lib/scrollkeeper instead of some files being installed in $GNOME_PREFIX/var/scrollkeeper.

--mandir=$(pkg-config --variable=prefix ORBit-2.0)/share/man: This parameter causes the man.(X) files to be installed in $GNOME_PREFIX/share/man/man(X) instead of $GNOME_PREFIX/man/man(X).

Configuring gedit

Configuration Information

There is no way in the preferences to change the color of highlighted (such as when you search for text and it is found) text. If you wish to change the color, issue the following command as the root user (substitute your color of choice):

sed -i 's/FFFF78/<some-color-you-like>/' gedit/gedit-document.c

Contents

Installed Programs: gedit and gnome-text-editor
Installed Libraries: gedit plugin modules
Installed Directories: The following subdirectories of $GNOME_PREFIX/: include/gedit-2.14, lib/gedit-2, share/{gedit-2, {gnome/help, omf}/gedit}

Short Descriptions

gedit

is a lightweight text editor.

gnome-text-editor

is a symlink to gedit.

EOG-2.14.3

Introduction to EOG

The EOG package contains Eye of GNOME. This is useful for viewing and cataloging image files.

Package Information

EOG Dependencies

Required

GNOME Desktop-2.14.3 and libgnomeprintui-2.12.1

Recommended

Optional

libexif-0.6.13 and little cms-1.15

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/eog

Installation of EOG

Install EOG by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --sysconfdir=/etc/gnome/2.14.3 \
            --localstatedir=/var/lib &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--sysconfdir=/etc/gnome/2.14.3: This parameter causes the configuration files to be installed in /etc/gnome/2.14.3 instead of $GNOME_PREFIX/etc. Additionally (if applicable), the parameter ensures that the GConf-2 database is correctly updated.

--localstatedir=/var/lib: This parameter is used so that all ScrollKeeper files are installed in, and the ScrollKeeper database is properly updated in /var/lib/scrollkeeper instead of some files being installed in $GNOME_PREFIX/var/scrollkeeper.

Contents

Installed Program: eog
Installed Libraries: None
Installed Directories: $GNOME_PREFIX/share/{,gnome/help/ ,omf/ ,pixmaps/}eog

Short Descriptions

eog

is a fast and functional image viewer as well as an image cataloging program.

Evince-0.5.3

Introduction to Evince

The Evince package contains a document viewer for multiple document formats. It currently supports PDF, Postscript, DjVu, TIFF and DVI. This is useful for viewing documents of various types using one simple application instead of the multiple document viewers that once existed on the GNOME Desktop.

Package Information

Evince Dependencies

Required

libgnomeui-2.14.1, GNOME Doc Utils-0.6.1, and Poppler-0.4.5 (must be a version >= 5.1 and built with GTK+ support)

Run-Time Requirement

shared-mime-info-0.17

Optional

intltool-0.34.2, D-BUS-0.62, LibTIFF-3.8.2, teTeX-3.0 (required to build the DVI viewer), libgnomeprintui-2.12.1 (required to print from Evince), Nautilus-2.14.3 (required to build the Nautilus plugin), ESP Ghostscript-8.15.2 or AFPL Ghostscript-8.53 (required for Postscript ability from Evince), DjVuLibre (required for DjVu graphics from Evince), and t1lib (required for Type1 font support in the DVI viewer)

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/evince

Installation of Evince

Install Evince by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --sysconfdir=/etc/gnome/2.14.3 \
            --localstatedir=/var/lib \
            --disable-ps \
            --enable-pixbuf &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--sysconfdir=/etc/gnome/2.14.3: This parameter causes the configuration files to be installed in /etc/gnome/2.14.3 instead of $GNOME_PREFIX/etc. Additionally (if applicable), the parameter ensures that the GConf-2 database is correctly updated.

--localstatedir=/var/lib: This parameter is used so that all ScrollKeeper files are installed in, and the ScrollKeeper database is properly updated in /var/lib/scrollkeeper instead of some files being installed in $GNOME_PREFIX/var/scrollkeeper.

--disable-ps: This parameter is required if you don't have a Ghostscript package installed. Remove the parameter if you do have a Ghostscript package installed and wish to build the DVI viewer.

--enable-djvu: Use this parameter if you have the DjVuLibre package installed and you wish to build support to view DjVu files.

--enable-dvi: Use this parameter if you have the teTeX package installed and you wish to build support to view DVI files.

--enable-t1lib: Use this parameter if you have the t1lib package installed and you wish to build support for Type1 fonts in the DVI viewer.

Contents

Installed Programs: evince and evince-thumbnailer
Installed Library: libevince-properties-page.{so,a} Nautilus extension
Installed Directories: $GNOME_PREFIX/share/{,gnome/help/ ,omf/}evince

Short Descriptions

evince

is a multiple format document viewer.

evince-thumbnailer

is a simple program used to create thumbnail images of supported documents.

File Roller-2.14.4

Introduction to File Roller

File Roller is an archive manager for GNOME with support for tar, bzip2, gzip, zip, jar, compress, lzop and many other archive formats.

Package Information

File Roller Dependencies

Required

libgnomeui-2.14.1 and GNOME Doc Utils-0.6.1

Optional

intltool-0.34.2 and Nautilus-2.14.3

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/file-roller

Installation of File Roller

Install File Roller by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --sysconfdir=/etc/gnome/2.14.3 \
            --localstatedir=/var/lib \
            --disable-nautilus-actions &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--sysconfdir=/etc/gnome/2.14.3: This parameter causes the configuration files to be installed in /etc/gnome/2.14.3 instead of $GNOME_PREFIX/etc. Additionally (if applicable), the parameter ensures that the GConf-2 database is correctly updated.

--localstatedir=/var/lib: This parameter is used so that all ScrollKeeper files are installed in, and the ScrollKeeper database is properly updated in /var/lib/scrollkeeper instead of some files being installed in $GNOME_PREFIX/var/scrollkeeper.

--disable-nautilus-actions: This parameter is required if Nautilus is not installed. Remove the parameter if Nautilus is installed.

Contents

Installed Program: file-roller
Installed Libraries: A Nautilus extension
Installed Directories: $GNOME_PREFIX/share/{,gnome/help/ ,omf/}file-roller

Short Descriptions

file-roller

is an archiver for GNOME.

GConf Editor-2.14.0

Introduction to GConf Editor

The GConf Editor package contains a GUI editor for the GConf configuration database.

Package Information

GConf Editor Dependencies

Required

libgnomeui-2.14.1

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gconf-editor

Installation of GConf Editor

Install GConf Editor by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --sysconfdir=/etc/gnome/2.14.3 \
            --localstatedir=/var/lib \
            --mandir=$(pkg-config \
                --variable=prefix ORBit-2.0)/share/man &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--sysconfdir=/etc/gnome/2.14.3: This parameter causes the configuration files to be installed in /etc/gnome/2.14.3 instead of $GNOME_PREFIX/etc. Additionally (if applicable), the parameter ensures that the GConf-2 database is correctly updated.

--localstatedir=/var/lib: This parameter is used so that all ScrollKeeper files are installed in, and the ScrollKeeper database is properly updated in /var/lib/scrollkeeper instead of some files being installed in $GNOME_PREFIX/var/scrollkeeper.

--mandir=$(pkg-config --variable=prefix ORBit-2.0)/share/man: This parameter causes the man.(X) files to be installed in $GNOME_PREFIX/share/man/man(X) instead of $GNOME_PREFIX/man/man(X).

Contents

Installed Program: gconf-editor
Installed Libraries: None
Installed Directories: $GNOME_PREFIX/share/{gnome/help, omf, pixmaps}/gconf-editor

Short Descriptions

gconf-editor

allows direct modification of the GConf configuration database.

GNOME Utilities-2.14.0

Introduction to GNOME Utilities

The GNOME Utilities package contains a collection of small applications designed to make your life a little easier.

Package Information

GNOME Utilities Dependencies

Required

GNOME Panel-2.14.3 and libgnomeprintui-2.12.1

Optional

intltool-0.34.2, Linux-PAM-0.99.4.0 (only if consolehelper is also installed), and HAL-0.5.7.1

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gnome-utils

Installation of GNOME Utilities

Install GNOME Utilities by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --sysconfdir=/etc/gnome/2.14.3 \
            --localstatedir=/var/lib \
            --libexecdir=$(pkg-config \
                --variable=prefix ORBit-2.0)/lib/gnome-utils \
            --mandir=$(pkg-config \
                --variable=prefix ORBit-2.0)/share/man &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--sysconfdir=/etc/gnome/2.14.3: This parameter causes the configuration files to be installed in /etc/gnome/2.14.3 instead of $GNOME_PREFIX/etc. Additionally (if applicable), the parameter ensures that the GConf-2 database is correctly updated.

--localstatedir=/var/lib: This parameter is used so that all ScrollKeeper files are installed in, and the ScrollKeeper database is properly updated in /var/lib/scrollkeeper instead of some files being installed in $GNOME_PREFIX/var/scrollkeeper.

--libexecdir=$(pkg-config --variable=prefix ORBit-2.0)/lib/bonobo: This parameter causes the libexec files to be installed in the preferred location of $GNOME_PREFIX/lib/gnome-utils instead of $GNOME_PREFIX/libexec.

--mandir=$(pkg-config --variable=prefix ORBit-2.0)/share/man: This parameter causes the man.(X) files to be installed in $GNOME_PREFIX/share/man/man(X) instead of $GNOME_PREFIX/man/man(X).

--enable-gtk-doc: Use this parameter if GTK-Doc is installed and you wish to rebuild the API documentation.

--with-pam-prefix=/etc/pam.d: This parameter causes the PAM files to be installed in the correct location of /etc/pam.d instead of /etc/gnome/2.14.3.

Contents

Installed Programs: gfloppy, gnome-dictionary, gnome-panel-screenshot, gnome-screenshot, gnome-search-tool, and gnome-system-log
Installed Libraries: libgdict-1.0.{so,a}
Installed Directories: The following subdirectories of $GNOME_PREFIX/: include/gdict-1.0, lib/gnome-utils, share/{gnome-{screenshot, system-log, utils}, gnome/help/{gfloppy, gnome-dictionary, gnome-search-tool, gnome-system-log} omf/gnome-utils, pixmaps/gsearchtool}

Short Descriptions

gfloppy

formats floppy disks under Linux.

gnome-dictionary

allows you to look up definitions and spelling of words.

gnome-screenshot

is used to capture the contents of the current desktop as a graphics formatted file.

gnome-search-tool

allows you to search for files on your system using simple and advanced search options.

gnome-system-log

allows you to monitor and view system log files.

GNOME System Monitor-2.14.5

Introduction to GNOME System Monitor

The GNOME System Monitor package contains gnome-system-monitor, GNOME's replacement for gtop.

Package Information

GNOME System Monitor Dependencies

Required

libgnomeui-2.14.1, libwnck-2.14.3, and LibGTop-2.14.2

Optional

intltool-0.34.2, and libgksu1.2 and libgksuui1.0

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gnome-system-monitor

Installation of GNOME System Monitor

Install GNOME System Monitor by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --sysconfdir=/etc/gnome/2.14.3 \
            --localstatedir=/var/lib &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--sysconfdir=/etc/gnome/2.14.3: This parameter causes the configuration files to be installed in /etc/gnome/2.14.3 instead of $GNOME_PREFIX/etc. Additionally (if applicable), the parameter ensures that the GConf-2 database is correctly updated.

--localstatedir=/var/lib: This parameter is used so that all ScrollKeeper files are installed in, and the ScrollKeeper database is properly updated in /var/lib/scrollkeeper instead of some files being installed in $GNOME_PREFIX/var/scrollkeeper.

Contents

Installed Program: gnome-system-monitor
Installed Libraries: None
Installed Directories: $GNOME_PREFIX/share/{gnome/help, omf}/gnome-system-monitor

Short Descriptions

gnome-system-monitor

displays the process tree and hardware meters.

gnome-mount-0.4

Introduction to gnome-mount

The gnome-mount package contains programs for mounting, unmounting and ejecting storage devices. The goal for gnome-mount is to get the appropriate GNOME software (such as gnome-volume-manager and GNOME-VFS) to use this instead of invoking mount/umount/eject or direct HAL invoking methods.

All the gnome-mount programs utilize the methods on HAL and as such run unprivileged. The rationale for gnome-mount is to have a centralized place (in GConf) where settings (e.g., mount options and mount locations) are maintained.

Package Information

gnome-mount Dependencies

Required

gnome-keyring-0.4.9, libgnomeui-2.14.1, and HAL-0.5.7.1

Optional

intltool-0.34.2 and Nautilus-2.14.3

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gnome-mount

Installation of gnome-mount

Install gnome-mount by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --sysconfdir=/etc/gnome/2.14.3 &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--sysconfdir=/etc/gnome/2.14.3: This parameter causes the configuration files to be installed in /etc/gnome/2.14.3 instead of $GNOME_PREFIX/etc. Additionally (if applicable), the parameter ensures that the GConf-2 database is correctly updated.

Contents

Installed Programs: gnome-eject, gnome-mount and gnome-umount
Installed Libraries: libgnome-mount.{so,a} Nautilus extention
Installed Directories: $GNOME_PREFIX/share/gnome-mount

Short Descriptions

gnome-mount

is used to automatically mount storage media and other removable media.

gnome-umount

is a symbolic link to gnome-mount used to automatically unmount storage media and other removable media.

gnome-eject

is a symbolic link to gnome-mount used to automatically open and close (if supported by the drive) the drive door and tray in CD/DVD drives.

Nautilus CD Burner-2.14.3

Introduction to Nautilus CD Burner

The Nautilus CD Burner package provides an easy method to write files to a CD or DVD burner with GNOME; by drag-and-dropping files using the GNOME file manager, Nautilus.

Package Information

Nautilus CD Burner Dependencies

Required

Nautilus-2.14.3

Optional

intltool-0.34.2, HAL-0.5.7.1, and gnome-mount-0.4

Though Nautilus CD Burner happily passes all the configure script checks and then builds successfully without them, the Cdrtools-2.01 and dvd+rw-tools-6.1 packages are required to be installed or you won't be able to create ISO filesystems or burn CDs and DVDs.

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/NautilusCdBurner

Installation of Nautilus CD Burner

Install Nautilus CD Burner by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --sysconfdir=/etc/gnome/2.14.3 \
            --libexecdir=$(pkg-config \
                --variable=prefix ORBit-2.0)/lib/nautilus-cd-burner &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--sysconfdir=/etc/gnome/2.14.3: This parameter causes the configuration files to be installed in /etc/gnome/2.14.3 instead of $GNOME_PREFIX/etc. Additionally (if applicable), the parameter ensures that the GConf-2 database is correctly updated.

--libexecdir=`pkg-config --variable=prefix ORBit-2.0`/lib/nautilus-cd-burner: This parameter causes the libexec files to be installed in the preferred location of $GNOME_PREFIX/lib/nautilus-cd-burner instead of $GNOME_PREFIX/libexec.

Contents

Installed Programs: nautilus-cd-burner
Installed Libraries: libnautilus-burn.so and gnome-vfs and nautilus modules
Installed Directories: The following subdirectories of $GNOME_PREFIX/: include/libnautilus-burn, lib/nautilus-cd-burner and share/nautilus-cd-burner

Short Descriptions

nautilus-cd-burner

is an extension to Nautilus that lets you burn CDs easily.

GNOME Media-2.14.2

Introduction to GNOME Media

The GNOME Media package contains GNOME's media applications.

Package Information

GNOME Media Dependencies

Required

Nautilus CD Burner-2.14.3

Recommended

Optional

intltool-0.34.2, an MTA (that provides a sendmail command), and DocBook-utils-0.6.14

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gnome-media

Installation of GNOME Media

Install GNOME Media by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --sysconfdir=/etc/gnome/2.14.3 \
            --localstatedir=/var/lib \
            --libexecdir=$(pkg-config \
                --variable=prefix ORBit-2.0)/lib/gnome-media &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--sysconfdir=/etc/gnome/2.14.3: This parameter causes the configuration files to be installed in /etc/gnome/2.14.3 instead of $GNOME_PREFIX/etc. Additionally (if applicable), the parameter ensures that the GConf-2 database is correctly updated.

--localstatedir=/var/lib: This parameter is used so that all ScrollKeeper files are installed in, and the ScrollKeeper database is properly updated in /var/lib/scrollkeeper instead of some files being installed in $GNOME_PREFIX/var/scrollkeeper.

--libexecdir=$(pkg-config --variable=prefix ORBit-2.0)/lib/gnome-media: This parameter causes the libexec files to be installed in the preferred location of $GNOME_PREFIX/lib/gnome-media instead of $GNOME_PREFIX/libexec.

Contents

Installed Programs: CDDBSlave2, cddb-slave2-properties, cddb-track-editor, gnome-audio-profiles-properties, gnome-cd, gnome-sound-recorder, gnome-volume-control, gstreamer-properties and vumeter
Installed Libraries: libcddb-slave2.{so,a}, libgnome-media-profiles.{so,a} and a libgnome-media-profiles.{so,a} Glade library
Installed Directories: The following subdirectories of $GNOME_PREFIX/: include/{cddb-slave2,gnome-media}, lib/gnome-media, share/{gnome-{media,sound-recorder}, gnome/help/{gnome-{cd, sound-recorder, volume-control}, grecord, gstreamer-properties}, gstreamer-properties, omf/gnome-media, pixmaps/gnome-{cd, media}}

Short Descriptions

gnome-cd

is GNOME's CD Player.

gnome-sound-recorder

is GNOME's recorder.

gnome-volume-control

is GNOME's mixer with volume applet.

gstreamer-properties

is a GUI front-end to GStreamer's audio/video input/output parameters.

vumeter

is a visual volume meter.

GNOME Netstatus-2.12.0

Introduction to GNOME Netstatus

The GNOME Netstatus package contains a panel applet that monitors network interfaces. It provides indicators for incoming and outgoing data, packets received and transmitted, and information about the network interface such as IP information and Ethernet address.

Package Information

GNOME Netstatus Dependencies

Required

GNOME Panel-2.14.3

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gnome-netstatus

Installation of GNOME Netstatus

Install GNOME Netstatus by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --sysconfdir=/etc/gnome/2.14.3 \
            --localstatedir=/var/lib \
            --libexecdir=$(pkg-config \
                --variable=prefix ORBit-2.0)/lib/gnome-netstatus &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--sysconfdir=/etc/gnome/2.14.3: This parameter causes the configuration files to be installed in /etc/gnome/2.14.3 instead of $GNOME_PREFIX/etc. Additionally (if applicable), the parameter ensures that the GConf-2 database is correctly updated.

--localstatedir=/var/lib: This parameter is used so that all ScrollKeeper files are installed in, and the ScrollKeeper database is properly updated in /var/lib/scrollkeeper instead of some files being installed in $GNOME_PREFIX/var/scrollkeeper.

--libexecdir=$(pkg-config --variable=prefix ORBit-2.0)/lib/gnome-netstatus: This parameter causes the libexec files to be installed in the preferred location of in $GNOME_PREFIX/lib/gnome-netstatus instead of $GNOME_PREFIX/libexec.

Contents

Installed Programs: None
Installed Libraries: None
Installed Applet: gnome-netstatus-applet
Installed Directories: $GNOME_PREFIX/share/{,gnome/help/ ,omf/}gnome-netstatus

Short Descriptions

gnome-netstatus-applet

displays information about a network interface on your panel.

gcalctool-5.8.19

Introduction to gcalctool

gcalctool is a powerful graphical calculator with financial, logical and scientific modes. It uses a multiple precision package to do its arithmetic to give a high degree of accuracy.

Package Information

gcalctool Dependencies

Required

libgnomeui-2.14.1 and GNOME Doc Utils-0.6.1

Optional

intltool-0.34.2

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gcalctool

Installation of gcalctool

Install gcalctool by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --sysconfdir=/etc/gnome/2.14.3 \
            --localstatedir=/var/lib \
            --mandir=$(pkg-config \
                --variable=prefix ORBit-2.0)/share/man &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--sysconfdir=/etc/gnome/2.14.3: This parameter causes the configuration files to be installed in /etc/gnome/2.14.3 instead of $GNOME_PREFIX/etc. Additionally (if applicable), the parameter ensures that the GConf-2 database is correctly updated.

--localstatedir=/var/lib: This parameter is used so that all ScrollKeeper files are installed in, and the ScrollKeeper database is properly updated in /var/lib/scrollkeeper instead of some files being installed in $GNOME_PREFIX/var/scrollkeeper.

--mandir=$(pkg-config --variable=prefix ORBit-2.0)/share/man: This parameter causes the man.(X) files to be installed in $GNOME_PREFIX/share/man/man(X) instead of $GNOME_PREFIX/man/man(X).

Contents

Installed Programs: gcalctool and gnome-calculator
Installed Libraries: None
Installed Directories: $GNOME_PREFIX/share/{gnome/help/, omf/}gcalctool

Short Descriptions

gcalctool

is a desktop calculator for GNOME.

gnome-calculator

is a symlink to the gcalctool program.

gucharmap-1.6.0

Introduction to gucharmap

gucharmap is a Unicode character map and font viewer. It allows you to browse through all the available Unicode characters and categories for the installed fonts, and to examine their detailed properties. It is an easy way to find the character you might only know by its Unicode name or code point.

Package Information

gucharmap Dependencies

Required

GTK+-2.8.20, GNOME Doc Utils-0.6.1, and XML::Parser-2.34

Optional

libgnomeui-2.14.1 and intltool-0.34.2

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gucharmap

Installation of gucharmap

Note

The instructions below are based on installing the package into a GNOME-2 environment. If, for whatever reason, you're installing this package without having ORBit2 and the core GNOME-2 libraries installed, you'll need to modify the --prefix= parameter on the configure script to point to your desired installation path (e.g., --prefix=/usr).

Install gucharmap by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --localstatedir=/var/lib &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--localstatedir=/var/lib: This parameter is used so that all ScrollKeeper files are installed in, and the ScrollKeeper database is properly updated in /var/lib/scrollkeeper instead of some files being installed in $GNOME_PREFIX/var/scrollkeeper.

Contents

Installed Programs: charmap, gnome-character-map, and gucharmap
Installed Library: libgucharmap.so
Installed Directories: The following subdirectories $GNOME_PREFIX/: include/gucharmap and share/{gnome/help/,omf/}/gucharmap

Short Descriptions

gucharmap

is a Unicode character map and font viewer.

Zenity-2.14.3

Introduction to Zenity

Zenity is a rewrite of gdialog, the GNOME port of dialog which allows you to display GTK+ dialog boxes from the command line and shell scripts.

Package Information

Zenity Dependencies

Required

libgnomecanvas-2.14.0 and GNOME Doc Utils-0.6.1

Optional

intltool-0.34.2

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/zenity

Installation of Zenity

Install Zenity by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --localstatedir=/var/lib \
            --mandir=$(pkg-config \
                --variable=prefix ORBit-2.0)/share/man &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--localstatedir=/var/lib: This parameter is used so that all ScrollKeeper files are installed in, and the ScrollKeeper database is properly updated in /var/lib/scrollkeeper instead of some files being installed in $GNOME_PREFIX/var/scrollkeeper.

--mandir=$(pkg-config --variable=prefix ORBit-2.0)/share/man: This parameter causes the man.(X) files to be installed in $GNOME_PREFIX/share/man/man(X) instead of $GNOME_PREFIX/man/man(X).

Contents

Installed Programs: gdialog and zenity
Installed Libraries: None
Installed Directories: $GNOME_PREFIX/share/{,gnome/help/ ,omf/}zenity

Short Descriptions

gdialog

is a Perl wrapper script which can be used with legacy scripts.

zenity

is a program that will display GTK+ dialogs, and return the user's input.

Epiphany-2.14.2.1

Introduction to Epiphany

Epiphany is a simple yet powerful GNOME web browser targeted at non-technical users. Its principles are simplicity and standards compliance.

Package Information

Epiphany Dependencies

Required

GNOME Desktop-2.14.3, libgnomeprintui-2.12.1, startup-notification-0.8, D-BUS-0.62, which-2.16, ISO Codes-0.58-1, and a mozilla.org Gecko layout engine (SeaMonkey-1.1 or Firefox-1.5.0.9 or Thunderbird-1.5.0.9 or Mozilla)

Optional

intltool-0.34.2, GNOME-Python (requires PyGTK and can use PyORBit, see GNOME-Python), and GTK-Doc-1.6

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/epiphany

Installation of Epiphany

Install Epiphany by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --sysconfdir=/etc/gnome/2.14.3 \
            --localstatedir=/var/lib \
            --mandir=$(pkg-config \
                --variable=prefix ORBit-2.0)/share/man &&
make

This package does not come with a test suite.

Now, as the root user:

make install

A D-BUS service script was installed in the previous step. If the $GNOME_PREFIX is anything other than /usr, as the root user you should add the $GNOME_PREFIX/share/dbus-1/services directory to the local session configuration as described in the D-BUS-0.62 configuration section.

If you have GNOME-Python installed, the Epiphany Python extension is automatically built. If your $GNOME_PREFIX is anything but /usr and you have GNOME-Python installed, as the root user create the following symbolic link in the PyGTK extensions directory of /usr/share:

ln -v -s $GNOME_PREFIX/share/pygtk/2.0/defs/epiphany.defs \
    /usr/share/pygtk/2.0/defs

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--sysconfdir=/etc/gnome/2.14.3: This parameter causes the configuration files to be installed in /etc/gnome/2.14.3 instead of $GNOME_PREFIX/etc. Additionally (if applicable), the parameter ensures that the GConf-2 database is correctly updated.

--localstatedir=/var/lib: This parameter is used so that all ScrollKeeper files are installed in, and the ScrollKeeper database is properly updated in /var/lib/scrollkeeper instead of some files being installed in $GNOME_PREFIX/var/scrollkeeper.

--mandir=$(pkg-config --variable=prefix ORBit-2.0)/share/man: This parameter causes the man.(X) files to be installed in $GNOME_PREFIX/share/man/man(X) instead of $GNOME_PREFIX/man/man(X).

Contents

Installed Program: epiphany
Installed Libraries: None
Installed Directories: The following subdirectories of $GNOME_PREFIX/: include/epiphany-2.14, lib/epiphany, share/{,gnome/help/, gtk-doc/html/, omf/}epiphany

Short Descriptions

epiphany

is a GNOME web browser based on the Mozilla rendering engine.

Ekiga-2.0.2

Introduction to Ekiga

Ekiga is an H.323 and SIP compatible videoconferencing and VOIP/IP-Telephony application that allows you to make audio and video calls to remote users with H.323 hardware or software (such as Microsoft Netmeeting) and SIP compatible software. It supports all modern videoconferencing features, such as registering to an ILS directory, gatekeeper support, making multi-user conference calls using an external MCU, using modern Quicknet telephony cards, and making PC-To-Phone calls.

Package Information

Ekiga Dependencies

Required

ScrollKeeper-0.3.14, EsounD-0.2.36, Evolution Data Server-1.6.3, PWLib-1.10.1 (compiled with OpenLDAP-2.3.27 support), and OPAL-2.2.2

Optional

intltool-0.34.2, GNOME Doc Utils-0.6.1, SDL-1.2.11 (required for full-screen video), D-BUS-0.62, and Avahi

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/ekiga

Installation of Ekiga

Install Ekiga by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --sysconfdir=/etc/gnome/2.14.3 \
            --localstatedir=/var/lib &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--sysconfdir=/etc/gnome/2.14.3: This parameter causes the configuration files to be installed in /etc/gnome/2.14.3 instead of $GNOME_PREFIX/etc. Additionally (if applicable), the parameter ensures that the GConf-2 database is correctly updated.

--localstatedir=/var/lib: This parameter is used so that all ScrollKeeper files are installed in, and the ScrollKeeper database is properly updated in /var/lib/scrollkeeper instead of some files being installed in $GNOME_PREFIX/var/scrollkeeper.

Contents

Installed Programs: ekiga, ekiga-config-tool and ekiga-helper
Installed Libraries: None
Installed Directories: $GNOME_PREFIX/share/{gnome/help/, omf/, pixmaps/, sounds/}ekiga

Short Descriptions

ekiga

is a H.323 and SIP VOIP, telephony and video conferencing application which uses the H.323 and SIP protocols.

GNOME Keyring Manager-2.14.0

Introduction to GNOME Keyring Manager

The GNOME Keyring Manager package contains a keyring management program for the GNOME Desktop. This is useful for maintenance of a keyring database using a graphical user interface.

Package Information

GNOME Keyring Manager Dependencies

Required

libgnomeui-2.14.1 and GNOME Doc Utils-0.6.1

Optional

intltool-0.34.2

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gnome-keyring-manager

Installation of GNOME Keyring Manager

Install GNOME Keyring Manager by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --sysconfdir=/etc/gnome/2.14.3 \
            --localstatedir=/var/lib \
            --mandir=$(pkg-config \
                --variable=prefix ORBit-2.0)/share/man &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--sysconfdir=/etc/gnome/2.14.3: This parameter causes the configuration files to be installed in /etc/gnome/2.14.3 instead of $GNOME_PREFIX/etc. Additionally (if applicable), the parameter ensures that the GConf-2 database is correctly updated.

--localstatedir=/var/lib: This parameter is used so that all ScrollKeeper files are installed in, and the ScrollKeeper database is properly updated in /var/lib/scrollkeeper instead of some files being installed in $GNOME_PREFIX/var/scrollkeeper.

--mandir=$(pkg-config --variable=prefix ORBit-2.0)/share/man: This parameter causes the man.(X) files to be installed in $GNOME_PREFIX/share/man/man(X) instead of $GNOME_PREFIX/man/man(X).

Contents

Installed Program: gnome-keyring-manager
Installed Libraries: None
Installed Directories: $GNOME_PREFIX/share/{,gnome/help/ ,omf/}gnome-keyring-manager

Short Descriptions

gnome-keyring-manager

is a graphical key management tool for GNOME. It allows the user to create, delete, and otherwise manipulate keys and keyrings which can be used to store passwords.

gnome-volume-manager-1.5.15

Introduction to gnome-volume-manager

The gnome-volume-manager package contains a volume manager for GNOME. It is a desktop-level daemon that enforces volume-related policy in response to events received from HAL. This is useful for automatic mounting of floppy diskettes, CDROMs and removable storage devices. It can also be used to automatically run a program in response to other hotplug events such as plugging in USB printers or cameras, or inserting DVDs and music CDs. The goal of gnome-volume-manager is to implement all functionality as a state-machine in response to asynchronous events from HAL. It is one component in a larger plan to fully integrate all levels of the Linux system, from the kernel on up through the desktop and its applications.

Package Information

gnome-volume-manager Dependencies

Required

libgnomeui-2.14.1 and HAL-0.5.7.1

Optional

intltool-0.34.2, Nautilus-2.14.3, and libnotify

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gnome-volume-manager

Installation of gnome-volume-manager

Install gnome-volume-manager by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --sysconfdir=/etc/gnome/2.14.3 \
            --disable-multiuser &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--sysconfdir=/etc/gnome/2.14.3: This parameter causes the configuration files to be installed in /etc/gnome/2.14.3 instead of $GNOME_PREFIX/etc. Additionally (if applicable), the parameter ensures that the GConf-2 database is correctly updated.

--disable-multiuser: Without this parameter, gnome-volume-manager will only allow the user who is at the active console to manage volumes. This is determined through the Linux-PAM-0.99.4.0 module pam_console. If your system is configured to use pam_console, you can drop this parameter.

Configuring gnome-volume-manager

Configuration Information

Proper operation of this package is dependant upon the hald daemon running on the system. Ensure the hald daemon is running before attempting to start or configure gnome-volume-manager. Configuration is accomplished using the “Removable Drives and Media” graphical interface found on the “Desktop”—“Preferences” drop-down menu. You can also run the gnome-volume-properties command from the command line to bring up the configuration interface.

Note that the gnome-volume-manager daemon program should be started when your GNOME desktop environment is started. This should be automatically configured during the installation of gnome-volume-manager.

The “Disk Mounter” applet can be installed in the control panel for visual display status of removable media. Installing this applet in the panel is accomplished using conventional methods.

Contents

Installed Programs: gnome-volume-manager and gnome-volume-properties
Installed Libraries: None
Installed Directories: $GNOME_PREFIX/share/gnome-volume-manager

Short Descriptions

gnome-volume-manager

is the manager daemon, designed to be run at the desktop level. It is a simple policy engine that implements a state machine in response to events from HAL. Responding to these events, it implements automount, autorun, autoplay, automatic photo management, and so on.

gnome-volume-properties

is a control panel applet for gnome-volume-manager. It is also provides a graphical configuration interface.

GNOME Games-2.14.3

Introduction to GNOME Games

The GNOME Games package contains games. Starting with GNOME-2.8, the background graphics, artwork and themes for the games are supplied in a separate package. You can download the GNOME Games Extra Data package from http://ftp.gnome.org/pub/gnome/sources/gnome-games-extra-data/2.14/.

Package Information

GNOME Games Dependencies

Required

libgnomeui-2.14.1, ScrollKeeper-0.3.14, and librsvg-2.14.4

Optional

intltool-0.34.2, EsounD-0.2.36, Guile-1.6.7 (required to build the AisleRiot solitaire games), Avahi or Bonjour, and GOB2

The gnibbles game will attempt to start the network game server daemon games-server.py, which requires Python-2.4.4.

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gnome-games

Installation of GNOME Games

Some of the GNOME Games game binaries need to be setgid to track high scores. Create a separate user and group for games. See the README file in the source directory for more information:

install -v -m755 -d /var/lib/games &&
groupadd -g 60 games &&
useradd -c 'Games High Score Owner' -d /var/lib/games \
        -g games -s /bin/false -u 60 games &&
chown -v games:games /var/lib/games

Install GNOME Games by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --sysconfdir=/etc/gnome/2.14.3 \
            --localstatedir=/var/lib &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--sysconfdir=/etc/gnome/2.14.3: This parameter causes the configuration files to be installed in /etc/gnome/2.14.3 instead of $GNOME_PREFIX/etc. Additionally (if applicable), the parameter ensures that the GConf-2 database is correctly updated.

--localstatedir=/var/lib: This parameter is used so that all ScrollKeeper files are installed in, and the ScrollKeeper database is properly updated in /var/lib/scrollkeeper instead of $GNOME_PREFIX/var/scrollkeeper and also causes the game programs to use /var/lib/games as the directory holding the high score files.

--disable-setgid: This will prevent the setgid bit on the executables from being set. It provides system administrators with the option to disable setgid binaries, though it also means that the functionality to save high game scores will be disabled.

Contents

Installed Programs: blackjack, games-server.py, gataxx, glines, gnect, gnibbles, gnobots2, gnometris, gnomine, gnotravex, gnotski, gtali, iagno, mahjongg, same-gnome, and sol
Installed Libraries: None
Installed Directories: The following subdirectories of $GNOME_PREFIX/: share/{{many game names}, {,omf/}gnome-games, {,help,pixmaps,sound}/{game names}, /var/lib/games

Short Descriptions

See the README file in the source tree for a description of each game.

Sound Juicer-2.14.5

Introduction to Sound Juicer

The Sound Juicer package contains the sound-juicer program, a simple and clean CD ripping tool. This is useful for extracting the audio tracks from audio compact discs and converting them into audio files. It can also play the audio tracks directly from the CD, allowing you to preview the CD before ripping it. Sound Juicer is designed to be easy to use, and to work with little user intervention. When you start sound-juicer it will examine the CD in the drive and try to locate information about the audio tracks using the MusicBrainz service.

Package Information

Sound Juicer Dependencies

Required

GNOME Media-2.14.2, GStreamer Base Plug-ins-0.10.11 (for the cdparanoiasrc, gnomevfssink and vorbisenc plugins), and libmusicbrainz-2.1.4

Optional

intltool-0.34.2, GStreamer Good Plug-ins-0.10.4 (for the flacenc and wavenc plugins), GStreamer Ugly Plug-ins-0.10.4 (for the lame plugin), libcdio (which can use CDParanoia-III-9.8, libcddb, and VCDImager), and TagLib

Note

At a minimum you should have the following plugins configured into the GStreamer installation: cdparanoiasrc and gnomevfssink. If either of these plugins are not configured into the GStreamer setup, Sound Juicer will fail at run-time. Additionally, if you need to encode in Ogg Vorbis, FLAC, Wave or MP3 formats, you should ensure the vorbisenc, flacenc, wavenc and lame plugins are configured into GStreamer. You can easily determine if you have the necessary plugins configured by using the gst-inspect program. Here is an example:

gst-inspect | grep cdparanoiasrc

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/sound-juicer

Installation of Sound Juicer

Install Sound_Juicer by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --sysconfdir=/etc/gnome/2.14.3 \
            --localstatedir=/var/lib &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--sysconfdir=/etc/gnome/2.14.3: This parameter causes the configuration files to be installed in /etc/gnome/2.14.3 instead of $GNOME_PREFIX/etc. Additionally (if applicable), the parameter ensures that the GConf-2 database is correctly updated.

--localstatedir=/var/lib: This parameter is used so that all ScrollKeeper files are installed in, and the ScrollKeeper database is properly updated in /var/lib/scrollkeeper instead of some files being installed in $GNOME_PREFIX/var/scrollkeeper.

Configuring Sound Juicer

Configuration Information

Configuration is accomplished by using the “Preferences” drop-down menu option. For information on how to configure sound-juicer to use LAME as the default encoding method (creating MP3 files as the default) see the Sound Juicer Help section.

Contents

Installed Program: sound-juicer
Installed Libraries: none
Installed Directories: $GNOME_PREFIX/share/{,gnome/help/ ,omf/}sound-juicer

Short Descriptions

sound-juicer

is a graphical CD extraction (ripping) tool based on GNOME-2 and GStreamer.

Totem-1.4.3

Introduction to Totem

The Totem package contains the official movie player of the GNOME desktop environment based on xine-lib or GStreamer. It features a playlist, a full-screen mode, seek and volume controls, as well as keyboard navigation. This is useful for playing any xine-lib or GStreamer supported file, DVD, VCD or digital CD.

Package Information

Totem Dependencies

Required

GNOME Icon Theme-2.14.2, GNOME Desktop-2.14.3, ISO Codes-0.58-1, and xine Libraries-1.1.1 (default back-end) or GStreamer Good Plug-ins-0.10.4 (secondary back-end)

Optional

intltool-0.34.2, Nautilus-2.14.3, D-BUS-0.62, SeaMonkey-1.1 or Firefox-1.5.0.9 (to build the browser plug-in, requires D-BUS-0.62 also), libirman, LIRC, Gromit (required for the telestrator mode), and NvTv Simple

Note: libdvdcss-1.2.9 is a run-time requirement if you wish to play encrypted DVDs

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/totem

Installation of Totem

Install Totem by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --sysconfdir=/etc/gnome/2.14.3 \
            --localstatedir=/var/lib \
            --libexecdir=$(pkg-config \
                --variable=prefix ORBit-2.0)/lib/totem \
            --mandir=$(pkg-config \
                --variable=prefix ORBit-2.0)/share/man &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--sysconfdir=/etc/gnome/2.14.3: This parameter causes the configuration files to be installed in /etc/gnome/2.14.3 instead of $GNOME_PREFIX/etc. Additionally (if applicable), the parameter ensures that the GConf-2 database is correctly updated.

--localstatedir=/var/lib: This parameter is used so that all ScrollKeeper files are installed in, and the ScrollKeeper database is properly updated in /var/lib/scrollkeeper instead of some files being installed in $GNOME_PREFIX/var/scrollkeeper.

--libexecdir=$(pkg-config --variable=prefix ORBit-2.0)/lib/totem: This parameter is used so that the movie player browser plugin is installed in the preferred location of $GNOME_PREFIX/lib/totem instead of $GNOME_PREFIX/libexec.

--mandir=$(pkg-config --variable=prefix ORBit-2.0)/share/man: This parameter causes the man.(X) files to be installed in $GNOME_PREFIX/share/man/man(X) instead of $GNOME_PREFIX/man/man(X).

Configuring Totem

Configuration Information

There are no configuration files that need to be directly edited. Configuration is accomplished by setting the desired values in the various menu options accessed via the totem graphical interface.

Contents

Installed Programs: totem, totem-video-thumbnailer and optionally, vanity
Installed Libraries: libtotem-plparser.{so,a}, a Nautilus extension plugin and optionally, a Mozilla video plugin
Installed Directories: The following subdirectories of $GNOME_PREFIX/: include/totem, lib/totem, share/{,gnome/help/ ,omf/}totem

Short Descriptions

totem

is a GNOME-desktop movie player.

totem-video-thumbnailer

is a video thumbnailer for the GNOME desktop used internally by GNOME applications such as Nautilus to generate PNG thumbnails of video files. While it is possible to invoke it manually, it is usually done automatically by Nautilus.

GDM-2.14.10

Introduction to GDM

The GDM package contains GNOME's Display Manager daemon. This is useful for allowing configurable graphical logins.

Package Information

GDM Dependencies

Required

libgnomecanvas-2.14.0, GNOME Doc Utils-0.6.1, and librsvg-2.14.4

Optional

intltool-0.34.2, Zenity-2.14.3, Linux-PAM-0.99.4.0, TCP Wrapper-7.6, and OpenAFS

If you configure GDM to offer secure connections to remote machines, you will need to have Zenity-2.14.3, OpenSSH-4.5p1 and which-2.16 installed.

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gdm

Installation of GDM

It is recommended to have a dedicated user and group to take control of the gdm-binary daemon after it is started. Issue the following commands as the root user:

groupadd -g 21 gdm &&
useradd -c "GDM Daemon Owner" -d /dev/null \
        -g gdm -s /bin/bash -u 21 gdm

Install GDM by running the following commands as an unprivileged user:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --sysconfdir=/etc/gnome/2.14.3 \
            --localstatedir=/var/lib \
            --libexecdir=$(pkg-config \
                --variable=prefix ORBit-2.0)/lib/gdm \
            --mandir=$(pkg-config \
                --variable=prefix ORBit-2.0)/share/man \
            --with-pam-prefix=/etc &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--sysconfdir=/etc/gnome/2.14.3: This parameter causes the configuration files to be installed in /etc/gnome/2.14.3 instead of $GNOME_PREFIX/etc. Additionally (if applicable), the parameter ensures that the GConf-2 database is correctly updated.

--localstatedir=/var/lib: This command puts files in /var/lib instead of $GNOME_PREFIX/var. This also has the downside affect of using /var/lib/log/gdm as the log directory. See the “Configuration Information” section below for instructions on relocating the log file directory.

--libexecdir=$(pkg-config --variable=prefix ORBit-2.0)/lib/gdm: This parameter is used so that the GDM internal support programs are installed in the preferred location of $GNOME_PREFIX/lib/gdm instead of $GNOME_PREFIX/libexec.

--mandir=$(pkg-config --variable=prefix ORBit-2.0)/share/man: This parameter causes the man.(X) files to be installed in $GNOME_PREFIX/share/man/man(X) instead of $GNOME_PREFIX/man/man(X).

--with-pam-prefix=/etc: This command puts PAM configuration files in /etc/pam.d instead of /etc/gnome/2.14.3.

Configuring GDM

Config Files

/etc/gnome/2.14.3/gdm/custom.conf, $GNOME_PREFIX/share/gdm/defaults.conf

Configuration Information

Starting with the 2.14.x version of GNOME, the default configuration parameters are stored in a static file ($GNOME_PREFIX/share/gdm/defaults.conf). This file is not intended to be edited. If modification of the configuration is necessary, you should add parameters to the /etc/gnome/2.14.3/gdm/custom.conf file. The settings in this file will override the settings in the static file. The same parameters in the static file are used in the configuration file.

Change the directory containing the GDM log files to the /var/log hierarchy by creating a directory and modifying the /etc/gnome/2.14.3/gdm/custom.conf configuration file. Issue the following commands as the root user:

install -v -m755 -d /var/log/gdm &&
sed -i.orig "/\[daemon\]/ a LogDir=/var/log/gdm" \
    /etc/gnome/2.14.3/gdm/custom.conf &&
rmdir -v /var/lib/log/gdm &&
rmdir -v /var/lib/log

The GDM PAM configuration files contain modules not present in a BLFS installation. If you have PAM installed, issue the following commands as the root user to replace those files with files containing correctly specified modules:

cat > /etc/pam.d/gdm << "EOF"
auth        required    pam_unix.so
auth        required    pam_nologin.so
account     required    pam_unix.so
password    required    pam_unix.so
session     required    pam_unix.so

EOF
cat > /etc/pam.d/gdm-autologin << "EOF"
auth        required    pam_env.so
auth        required    pam_nologin.so
auth        required    pam_permit.so
account     required    pam_unix.so
password    required    pam_unix.so
session     required    pam_unix.so

EOF

If you have D-BUS installed and you want to start the session D-BUS daemon when you start the GNOME desktop environment using gdm, you'll need to create a new Xsession file. Create the file using the following command as the root user.

cat > $GNOME_PREFIX/share/xsessions/gnome-dbus.desktop << "EOF"
[Desktop Entry]
Encoding=UTF-8
Name=GNOME with D-BUS
Comment=GNOME Desktop with D-BUS support
Exec=dbus-launch --exit-with-session gnome-session
TryExec=/usr/bin/dbus-launch
Icon=
Type=Application

EOF
chmod -v 644 $GNOME_PREFIX/share/xsessions/gnome-dbus.desktop

Choose this session using the session selection dialog on the display manager login screen. You also have the opportunity to make this your default session.

Note

You may use the .desktop file created above as an example to create additional .desktop files and add any other desired items to the GDM display manager session selection menu.

gdm can be tested by executing it as the root user. Use the gdm-stop command if you wish to stop the display manager.

Boot Script

To start a graphical login when the system is booted, install the /etc/rc.d/init.d/gdm init script included in the blfs-bootscripts-20060910 package. If your GNOME_PREFIX environment variable is anything other than /usr or /opt/gnome-2.14.3, you will need to modify the PATH statement in the script to include the path where you have GNOME installed.

make install-gdm

Now edit /etc/inittab so that the line containing:

id:3:initdefault:

is changed to:

id:5:initdefault:

Contents

Installed Programs: gdm, gdm-binary, gdm-dmx-reconnect-proxy, gdm-restart, gdm-safe-restart, gdm-stop, gdmXnest, gdmXnestchooser, gdmdynamic, gdmflexiserver, gdmphotosetup, gdmsetup, and gdmthemetester
Installed Libraries: lib*mouselistener.{so,a} GTK+ modules
Installed Directories: /etc/gnome/2.14.3/{,g}dm, /var/lib/gdm, /var/log/gdm and the following directories in $GNOME_PREFIX/: share/{,gnome/help/ ,omf/}gdm

Short Descriptions

gdm

is a wrapper script to execute the GDM binary, the configurable GNOME based login prompt.

gdm-restart

sends the HUP signal to the GDM daemon so that it restarts. It's used after the config file is edited

gdm-safe-restart

sends the USR1 signal to the GDM daemon so that it restarts. It's used after the config file is edited.

gdmsetup

is a graphical interface to edit the gdm.conf file.

gnome-screensaver-2.14.3

Introduction to gnome-screensaver

The gnome-screensaver package contains a screen saver and locker designed to have simple, sane, secure defaults and be well integrated with the desktop. It supports locking down of configuration settings, has translations into many languages and convenient user switching.

Package Information

gnome-screensaver Dependencies

Required

D-BUS-0.62, libgnomeui-2.14.1, and gnome-menus-2.14.3

Optional

intltool-0.34.2, libexif-0.6.13, Linux-PAM-0.99.4.0, XScreenSaver-4.24 (and libxslt-1.1.17), and GDM-2.14.10

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gnome-screensaver

Installation of gnome-screensaver

Note

Optional Features

1. If you have XScreenSaver installed and wish to import any or all of the “hacks” into gnome-screensaver themes, set the following environment variable (modify it if XScreenSaver is installed in a non-standard location):

XSAVERDIR=/usr/share/xscreensaver/config

Also add the following parameter to the configure script below:

            --with-xscreensaverdir=$XSAVERDIR

2. If you have GDM installed and wish to provide user-switching from the gnome-screensaver unlock-screen dialog box, add the following parameter to the configure script below:

            --with-gdm-config=/etc/gnome/2.14.3/gdm/custom.conf

Install gnome-screensaver by running the following commands:

sed -i 's|etc/pam\.d"|etc"|' data/Makefile.in &&
./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --sysconfdir=/etc/gnome/2.14.3 \
            --libexecdir=$(pkg-config \
                --variable=prefix ORBit-2.0)/lib/gnome-screensaver \
            --with-pam-prefix=/etc &&
make

If you have XScreenSaver installed and wish to import any or all of the “hacks” into gnome-screensaver themes, you'll need to identify which “hacks” you wish to import. The commands below will import all of them. If you want to import less than all of them, modify the setting of the XSAVERLIST environment variable below (listing the desired hacks by filename without the extension, space delimited) and issue the following commands:

mkdir xscreensavers &&
cd xscreensavers &&

XSAVERLIST="*" &&

for SAVERLIST in $(ls ${XSAVERDIR}/${XSAVERLIST}.xml); do
    ../data/migrate-xscreensaver-config.sh $SAVERLIST
done &&

unset XSAVERDIR
unset XSAVERLIST
unset SAVERLIST

cd ..

This package does not come with a test suite.

Now, as the root user:

make install &&
install -v -m644 -D doc/DBUS-API.txt \
    $(pkg-config --variable=prefix \
        ORBit-2.0)/share/doc/gnome-screensaver-2.14.3/DBUS-API.txt

If you identified some, or all, XScreenSaver hacks to be imported into gnome-screensaver, install them by issuing the following commands as the root user:

install -v -m755 -d $(pkg-config --variable=prefix \
        ORBit-2.0)/share/gnome-screensaver/themes/xscreensaver &&
install -v -m644 xscreensavers/*.desktop \
        $(pkg-config --variable=prefix \
            ORBit-2.0)/share/gnome-screensaver/themes/xscreensaver

Command Explanations

sed -i 's|etc/pam\.d"|etc|' data/Makefile.in: This command is used so that an erroneous message to copy the PAM configuration file is not displayed.

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--sysconfdir=/etc/gnome/2.14.3: This parameter causes the configuration files to be installed in /etc/gnome/2.14.3 instead of $GNOME_PREFIX/etc. Additionally (if applicable), the parameter ensures that the GConf-2 database is correctly updated.

--libexecdir=$(pkg-config --variable=prefix ORBit-2.0)/lib/gnome-screensaver: This parameter causes the libexec files to be installed in the preferred location of $GNOME_PREFIX/lib/gnome-screensaver instead of $GNOME_PREFIX/libexec.

--with-pam-prefix=/etc: This parameter is used so that the Linux-PAM configuration file for the gnome-screensaver application is installed in the correct location. You may omit this parameter if you don't have Linux-PAM installed, though it won't affect the build if you don't.

Configuring gnome-screensaver

Config Files

/etc/pam.d/gnome-screensaver, /etc/gnome/2.14.3/gdm/custom.conf

Configuration Information

General Configuration

Most of the gnome-screensaver configuration parameters can be modified using the Screensaver menu item from the DesktopPreferences drop-down menu. Some of the fine-tuning parameters are only available using GConf Editor-2.14.0.

Linux-PAM Configuration

If you have Linux-PAM installed, the just-installed gnome-screensaver configuration file does not work with a BLFS system. Replace the existing file with one that can be used on a BLFS system by issuing the following command as the root user:

cat > /etc/pam.d/gnome-screensaver << "EOF"
# File: /etc/pam.d/gnome-screensaver

auth         required      pam_unix.so
account      required      pam_unix.so
session      required      pam_unix.so
password     required      pam_unix.so

EOF
chmod -v 644 /etc/pam.d/gnome-screensaver
User-Switching Configuration

If you have GDM installed and you passed the --with-gdm-config= option to the configure script, the screen-unlocking dialog box will contain an option to “Switch Users”. This user switching option uses the same configuration as GDM to determine what users are displayed in this dialog. You can use the GDM configuration option from the GDM login screen, or you can directly edit the /etc/gnome/2.14.3/gdm/custom.conf file to modify the settings.

Contents

Installed Programs: gnome-screensaver, gnome-screensaver-command and gnome-screensaver-preferences
Installed Libraries: None
Installed Directories: $GNOME_PREFIX/share/{doc/gnome-screensaver-2.14.2, gnome-screensaver, pixmaps/backgrounds/cosmos}

Short Descriptions

gnome-screensaver

is a screensaver and screen-locking program designed to work seamlessly with the GNOME desktop.

Accessibility

AT SPI-1.7.7

Introduction to AT SPI

The AT SPI package contains the Assistive Technology Service Provider Interface. This is useful for redirecting UI events to accessible applications and adaptive/assistive technologies.

Package Information

AT SPI Dependencies

Required

GAIL-1.8.11 and libbonobo-2.14.0

Optional

intltool-0.34.2 and GTK-Doc-1.6

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/at-spi

Installation of AT SPI

Install AT SPI by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --libexecdir=$(pkg-config \
            --variable=prefix ORBit-2.0)/lib/at-spi &&
make

The test suite cannot be run until after the package is installed. To run the test suite after installation, issue: make check.

Now, as the root user:

make install

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--libexecdir=$(pkg-config --variable=prefix ORBit-2.0)/lib/at-spi: This parameter causes the libexec files to be installed in the preferred location of $GNOME_PREFIX/lib/at-spi instead of $GNOME_PREFIX/libexec.

Contents

Installed Programs: None
Installed Libraries: libspi.{so,a}, libcspi.{so,a}, libloginhelper.{so,a}, the libatk-bridge.so GTK+ module, and ORBit-2.0 Accessibility modules
Installed Directories: The following subdirectories of $GNOME_PREFIX/: include/at-spi-1.0, lib/at-spi, share/{gtk-doc/html/at-spi-cspi, idl/at-spi-1.0}

Short Descriptions

at-spi-registryd

is the registry daemon that allows communication between the UI and assistance devices.

Java Access Bridge-1.5.0

Introduction to Java Access Bridge

The Java Access Bridge package contains Java components which connect the built-in accessibility support in Java Swing applications to the GNOME Accessibility framework, specifically the Assistive Technology Service Provider Interface (AT-SPI).

Package Information

Java Access Bridge Dependencies

Required

AT SPI-1.7.7 and JDK-1.5.0_10

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/java-access-bridge

Installation of Java Access Bridge

Install Java Access Bridge by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) &&
make

This package does not come with a test suite.

Now, as the root user:

make install &&

cat $(pkg-config --variable=prefix \
    ORBit-2.0)/share/jar/accessibility.properties \
    >> $JAVA_HOME/jre/lib/accessibility.properties &&
chmod -v 644 $JAVA_HOME/jre/lib/accessibility.properties &&

ln -v -sf $(pkg-config --variable=prefix \
    ORBit-2.0)/share/jar/gnome-java-bridge.jar \
    $JAVA_HOME/jre/lib/ext

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

cat $(pkg-config ...: This command appends to (or creates) the Java runtime accessibility.properties file required for Java Access Bridge.

ln -v -sf $(pkg-config ...: This command creates a link from the Access Bridge jar file to the Java runtime library extensions directory.

Configuring Java Access Bridge

Config Files

~/.orbitrc

Configuration Information

Before running a Java program with the Java Access Bridge, you should ensure that your GNOME 2 installation enables CORBA traffic over IP from the ORBit2 ORB. Do this by adding the following line to ~/.orbitrc using the following command:

cat >> ~/.orbitrc << "EOF"
ORBIIOPIPv4=1

EOF

Contents

Installed Programs: None
Installed Libraries: gnome-java-bridge.jar and JNav.jar
Installed Directories: $GNOME_PREFIX/share/jar

Short Descriptions

gnome-java-bridge.jar

is a Java runtime environment extension that connects the built-in accessibility support in Java Swing applications to the GNOME Accessibility framework.

libgail-gnome-1.1.3

Introduction to libgail-gnome

The libgail-gnome package contains the GNOME Accessibility Implementation library additions which implement ATK interfaces for libbonoboui and libgnomeui widgets.

Package Information

libgail-gnome Dependencies

Required

GNOME Panel-2.14.3 and AT SPI-1.7.7

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libgail-gnome

Installation of libgail-gnome

Install libgail-gnome by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

Contents

Installed Programs: None
Installed Library: libgail-gnome.so GTK+ module
Installed Directories: None

Short Descriptions

libgail-gnome.so

library module is a GAIL addition which implements ATK interfaces for libbonoboui and libgnomeui widgets.

GNOME Speech-0.4.2

Introduction to GNOME Speech

The GNOME Speech package provides a simple general API for producing text-to-speech output. Multiple backends are supported by the GNOME Speech library, but currently only the Festival backend is built by default; the other backends require either Java or proprietary software.

Package Information

GNOME Speech Dependencies

Required

libbonobo-2.14.0

Optional

Java Access Bridge-1.5.0, FreeTTS-1.2.1, Festival, ViaVoice, Eloquence, DECTalk, and Theta

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gnome-speech

Installation of GNOME Speech

Note

You must install at least one of the backend drivers for GNOME Speech to render speech through the audio hardware. You should test the installation of the backend driver and ensure it produces desired results before installing GNOME Speech.

Install GNOME Speech by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) &&
make

This package does not come with a test suite.

Now, as the root user:

make install &&
install -v -m644 -D doc/gnome-speech.html \
    $(pkg-config --variable=prefix \
    ORBit-2.0)/share/doc/gnome-speech-0.4.2/gnome-speech.html

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--with-jab-dir=$(pkg-config --variable=prefix ORBit-2.0)/share/jar: Use this option if you have installed the Java Access Bridge package and wish to have GNOME Speech build in Java support.

Note: see the README and INSTALL files in the package source tree for the correct parameters to pass to configure to enable the desired backends.

Testing the Installation

You can test all the available backend drivers, voices and audio hardware using the test-speech command. Invoking test-speech produces a menu allowing you to select a backend driver and the desired voice, then prompts you (with on-screen prompts and text-to-speech audio) for additional information.

If you are using the FreeTTS backend and you do not hear any audio, you may need to use the streaming audio method instead of the clip audio method. As the root user, modify the freetts-synthesis-driver script:

sed -i "s/clip/streaming/" $GNOME_PREFIX/bin/freetts-synthesis-driver

Contents

Installed Programs: festival-synthesis-driver, freetts-synthesis-driver, speechd-synthesis-driver and test-speech
Installed Library: libgnomespeech.{so,a}. Other drivers and libraries are also installed if you have enabled additional backends.
Installed Directories: The following subdirectories of $GNOME_PREFIX/: include/gnome-speech-1.0, share/{doc/gnome-speech-0.4.2, gnome-speech, idl/gnome-speech-1.0}

Short Descriptions

test-speech

is used to test the various backend drivers and voices installed on the system.

libgnomespeech.{so,a}

provides the API for programs to convert text into speech.

GNOME Magnifier-0.12.6

Introduction to GNOME Magnifier

The GNOME Magnifier includes a screen magnifier, which allows you to zoom in on portions of the desktop. It is expressly designed for users with low vision who wish to use the GNOME desktop.

Package Information

GNOME Magnifier Dependencies

Required

AT SPI-1.7.7

Optional

intltool-0.34.2

Optional (For XFree86 Only)

Xdamage (requires FixesExt* then Xfixes then DamageExt)

* Ensure you created the xextensions.pc file as shown in the XFree86 instructions.

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gnome-mag

Installation of GNOME Magnifier

Install GNOME Magnifier by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

Contents

Installed Program: magnifier
Installed Library: libgnome-mag.so
Installed Directories: The following subdirectories of $GNOME_PREFIX/: include/gnome-mag-1.0, share/{doc/gnome-mag-0.12.6,gnome-mag, idl/gnome-mag-1.0}

Short Descriptions

magnifier

is a screen zooming utility.

Gnopernicus-1.1.1

Introduction to Gnopernicus

Gnopernicus enables users with limited vision, or no vision, to use the GNOME desktop and applications effectively. It provides a number of features, including magnification, focus tracking, braille output, automatic screen reading and more.

Package Information

Gnopernicus Dependencies

Required

libgail-gnome-1.1.3, GNOME Speech-0.4.2, and GNOME Magnifier-0.12.6

Optional

intltool-0.34.2, GTK-Doc-1.6, and BRLTTY

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gnopernicus

Installation of Gnopernicus

Install Gnopernicus by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --sysconfdir=/etc/gnome/2.14.3 \
            --localstatedir=/var/lib \
            --libexecdir=$(pkg-config \
                --variable=prefix ORBit-2.0)/lib/gnopernicus-1.0 &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--sysconfdir=/etc/gnome/2.14.3: This parameter causes the configuration files to be installed in /etc/gnome/2.14.3 instead of $GNOME_PREFIX/etc. Additionally (if applicable), the parameter ensures that the GConf-2 database is correctly updated.

--localstatedir=/var/lib: This parameter is used so that all ScrollKeeper files are installed in, and the ScrollKeeper database is properly updated in /var/lib/scrollkeeper instead of some files being installed in $GNOME_PREFIX/var/scrollkeeper.

--libexecdir=$(pkg-config --variable=prefix ORBit-2.0)/lib/gnopernicus-1.0: This parameter causes the libexec files to be installed in the preferred location of $GNOME_PREFIX/lib/gnopernicus-1.0 instead of $GNOME_PREFIX/libexec.

Contents

Installed Programs: gnopernicus, gnopernicus-mag-config and srcore
Installed Libraries: Gnopernicus support libraries
Installed Directories: /etc/gnome/2.14.3/gnopernicus-1.0}, and the following subdirectories of $GNOME_PREFIX/: include/gnopernicus-1.0, lib/gnopernicus-1.0, share/{gnome/help/{brlmonitor,gnopernicus}, gnopernicus, omf/gnopernicus}

Short Descriptions

gnopernicus

is a GUI menu interface used to access and configure the various functionality parameters provided for users with limited vision.

GOK-1.0.10

Introduction to GOK

GOK is a dynamic onscreen keyboard. It features Direct Selection, Dwell Selection, Automatic Scanning and Inverse Scanning access methods and includes word completion.

Package Information

GOK Dependencies

Required

EsounD-0.2.36, libgnomeui-2.14.1, ScrollKeeper-0.3.14, libwnck-2.14.3, AT SPI-1.7.7, and GNOME Speech-0.4.2

Optional

intltool-0.34.2 and GTK-Doc-1.6

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gok

Installation of GOK

Install GOK by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --sysconfdir=/etc/gnome/2.14.3 \
            --localstatedir=/var/lib &&
make

To test the results, issue: make check.

Now, as the root user:

make install &&
chmod -v 644 $(pkg-config --variable=prefix
      ORBit-2.0)/share/gnome/help/gok/C/{gok,legal}.xml

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--sysconfdir=/etc/gnome/2.14.3: This parameter causes the configuration files to be installed in /etc/gnome/2.14.3 instead of $GNOME_PREFIX/etc. Additionally (if applicable), the parameter ensures that the GConf-2 database is correctly updated.

--localstatedir=/var/lib: This parameter is used so that all ScrollKeeper files are installed in, and the ScrollKeeper database is properly updated in /var/lib/scrollkeeper instead of some files being installed in $GNOME_PREFIX/var/scrollkeeper.

--enable-gtk-doc: Use this parameter if GTK-Doc is installed and you wish to rebuild the API documentation.

Configuring GOK

Configuration Information

It is recommended that you configure your input device as an “Extended” input device. Exact configuration methods depend on the type of hardware attached to your system. See the README file in the package source tree and GOK Help for information on how to configure your input device.

Contents

Installed Programs: gok and create-branching-keyboard
Installed Libraries: None
Installed Directories: The following subdirectories of $GNOME_PREFIX/: share/{,gnome/help/ ,gtk-doc/html ,omf}gok

Short Descriptions

gok

is a dynamic onscreen keyboard utility.

Chapter 33. GNOME 1.4 Libraries

This section contains GNOME 1.4 libraries, needed by some applications that have not yet been ported to GNOME 2.x. None of these libraries are needed for a GNOME desktop installation.

Pre-installation Configuration

Add to your system or personal profile:

export PATH=$PATH:/opt/gnome-1.4/bin
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/opt/gnome-1.4/lib/pkgconfig
export GNOME_LIBCONFIG_PATH=/usr/lib

if [ -z $INFOPATH ]
then
  export INFOPATH=/usr/share/info:/opt/gnome-1.4/info
else
  export INFOPATH=$INFOPATH:/opt/gnome-1.4/info
fi

Add to your /etc/ld.so.conf:

cat >> /etc/ld.so.conf << "EOF"
# Begin GNOME-1 addition to /etc/ld.so.conf

/opt/gnome-1.4/lib

# End GNOME-1 addition
EOF

Remember to execute ldconfig after installation of libraries to update the library cache.

Add to your /etc/man_db.conf:

cat >> /etc/man_db.conf << "EOF"
# Begin GNOME-1 addition to man_db.conf

MANDATORY_MANPATH /opt/gnome-1.4/man

# END GNOME-1 addition to man_db.conf
EOF

ORBit-0.5.17

Introduction to ORBit

The ORBit package contains a high-performance CORBA Object Request Broker. This allows programs to send requests and receive replies from other programs.

Package Information

ORBit Dependencies

Required

GLib-1.2.10

Optional

TCP Wrapper-7.6

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/orbit

Installation of ORBit

Install ORBit by running the following commands:

./configure --prefix=/opt/gnome-1.4 &&
make

To test the results, issue: make check.

Now, as the root user:

make install &&
install -v -m755 -d /opt/gnome-1.4/share/doc/ORBit-0.5.17 &&
cp -v -R docs/* /opt/gnome-1.4/share/doc/ORBit-0.5.17

Contents

Installed Programs: ior-decode, libIDL-config, name-client, old-name-server, orbit-config, orbit-idl, orbit-ird, orbit-event-server, and orbit-name-server
Installed Libraries: libIDL.{so,a}, libIIOP.{so,a}, libname-server.a, liborbit-c-backend.a, libORBit.{so,a}, libORBitCosNaming.{so,a}, and libORBitutil.{so,a}
Installed Directories: /opt/gnome-1.4, /opt/gnome-1.4/include/libIDL-1.0, /opt/gnome-1.4/include/orbit-1.0, /opt/gnome-1.4/share/doc/ORBit-0.5.17 and /opt/gnome-1.4/share/idl

Short Descriptions

libIDL.{so,a}

library is the Interface Definition Language mappings for CORBA.

libIIOP.{so,a}

is for low level CORBA communications.

libORBit.{so,a}

is the CORBA API.

libORBitutil.{so,a}

contains the convenience routines for ORBit.

OAF-0.6.10

Introduction to OAF

The OAF package contains the Object Activation Framework for GNOME.

Package Information

OAF Dependencies

Required

ORBit-0.5.17, libxml-1.8.17, and popt-1.10.4

Optional

GTK-Doc-1.6

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/oaf

Installation of OAF

Install OAF by running the following commands:

./configure --prefix=/opt/gnome-1.4 \
            --disable-gtk-doc &&
make

Now, as the root user:

make install &&
install -v -m755 -d /opt/gnome-1.4/share/gtk-doc/html/oaf-0.6.10 \
                    /opt/gnome-1.4/share/doc/oaf-0.6.10 &&
install -v -m644 api-docs/html/* \
    /opt/gnome-1.4/share/gtk-doc/html/oaf-0.6.10 &&
install -v -m644 docs/{INTERNALS,*.txt} \
    /opt/gnome-1.4/share/doc/oaf-0.6.10

To test the results, issue: make check as an unprivileged user (the package must be installed before running the tests, else many tests fail).

Contents

Installed Programs: oaf-client, oaf-config, oaf-empty-server, oaf-run-query, oaf-slay, oaf-sysconf and oafd
Installed Libraries: liboaf.so
Installed Directories: /opt/gnome-1.4/etc/oaf, /opt/gnome-1.4/include/liboaf, /opt/gnome-1.4/share/doc/oaf-0.6.10 and /opt/gnome-1.4/share/gtk-doc/html/oaf-0.6.10

GNOME Libraries-1.4.2

Introduction to GNOME Libraries

The GNOME Libraries package contains the GNOME libraries. This is useful as a foundation for the GNOME Desktop and applications.

Package Information

Additional Downloads

GNOME Libraries Dependencies

Required

ORBit-0.5.17, GTK+-1.2.10, and Imlib-1.9.15

Optional

Audio File-0.2.6, EsounD-0.2.36, and GTK-Doc-1.6

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gnome-libs

Installation of GNOME Libraries

The installation process expects a games group to exist on the system. If you have not previously created this group, issue the following command as the root user:

groupadd -g 60 games

Install GNOME Libraries by running the following commands:

patch -Np1 -i ../gnome-libs-1.4.2-gcc4-1.patch &&
./configure --prefix=/opt/gnome-1.4 --disable-gtk-doc &&
make

To test the results, issue: make check.

Now, as the root user:

make install

Configuring GNOME Libraries

Config Files

/opt/gnome-1.4/etc/mime-magic, /opt/gnome-1.4/etc/paper.config, /opt/gnome-1.4/etc/sound/events/gnome.soundlist and /opt/gnome-1.4/etc/sound/events/gtk-events.soundlist

Contents

Installed Programs: dns-helper, gconfigger, gnome-bug, gnome-config, gnome-dump-metadata, gnome-gen-mimedb, gnome-moz-remote, gnome-name-service, gnome-pty-helper, gnome_segv, goad-browser, libart-config, loadshlib and new-object
Installed Libraries: libart_lgpl.{so,a}, libgnome.{so,a}, libgnomeui.{so,a}, libgnomesupport.{so,a}, libgnorba.{so,a}, libgnorbagtk.{so,a}, libgtkxmhtml.{so,a}, and libzvt.{so,a}
Installed Directories: /opt/gnome-1.4/doc, /opt/gnome-1.4/etc/sound, /opt/gnome-1.4/include/gnome-1.0, /opt/gnome-1.4/lib/gnome-libs, /opt/gnome-1.4/share/gnome, /opt/gnome-1.4/share/gtk-doc/html/libart, /opt/gnome-1.4/share/mime-info, /opt/gnome-1.4/share/pixmaps, /opt/gnome-1.4/share/type-convert and /opt/gnome-1.4/var

Short Descriptions

libart_lgpl.{so,a}

is the LGPL component of libart.

libgnome.{so,a}

is the non-GUI part of the GNOME library.

libgnomeui.{so,a}

is the GUI part of the GNOME library.

libgnorbagtk.{so,a}

is the GNOME CORBA GTK framework.

libzvt.{so,a}

provides the functions necessary to emulate xterm.

GDK Pixel Buffer-0.22.0

Introduction to GDK Pixel Buffer

The GDK Pixel Buffer package is the GTK+ pixel buffer library.

Package Information

GDK Pixel Buffer Dependencies

Required

GTK+-1.2.10

Optional

GNOME Libraries-1.4.2, GTK-Doc-1.6 and DocBook-utils-0.6.14

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gdk

Installation of GDK Pixel Buffer

The make command attempts to open an X display during the compile, so an X server must be running during this process.

Install GDK Pixel Buffer by running the following commands:

./configure --prefix=/opt/gnome-1.4 --disable-gtk-doc &&
make

To test the results, issue: make check.

Now, as the root user:

make install

Contents

Installed Programs: gdk-pixbuf-config
Installed Libraries: libgdk_pixbuf.{so,a}, libgdk_pixbuf_xlib.{so,a}, libgnomecanvaspixbuf.{so,a}, and many gdk-pixbuf loader modules
Installed Directories: /opt/gnome-1.4/include/gdk-pixbuf-1.0, /opt/gnome-1.4/lib/gdk-pixbuf and /opt/gnome-1.4/share/gnome/html/gdk-pixbuf

Short Descriptions

libgdk_pixbuf.{so,a}

contains the GTK+ pixel buffer libraries for the GIMP Toolkit.

GNOME Print-0.37

Introduction to GNOME Print

The GNOME Print package contains the GNOME Printing Architecture, for GNOME 1.4.

Package Information

Additional Downloads

GNOME Print Dependencies

Required

GDK Pixel Buffer-0.22.0, GNOME Libraries-1.4.2 and libxml-1.8.17

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gnome-print

Installation of GNOME Print

Install GNOME Print by running the following commands:

patch -Np1 -i ../gnome-print-0.37-ft217_fixes-1.patch &&
./configure --prefix=/opt/gnome-1.4 &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Contents

Installed Programs: gnome-font-install
Installed Libraries: libgnomeprint.{so,a}
Installed Directories: /opt/gnome-1.4/etc/gnome, /opt/gnome-1.4/include/gnome-1.0/libgnomeprint, /opt/gnome-1.4/share/fonts, /opt/gnome-1.4/share/gnome-print and /opt/gnome-1.4/share/gnome/fonts

Bonobo-1.0.22

Introduction to Bonobo

The Bonobo package contains a set of language and system independent CORBA interfaces for creating reusable components, controls and compound documents.

Package Information

Bonobo Dependencies

Required

OAF-0.6.10 and GNOME Print-0.37

Optional

GTK-Doc-1.6 and DocBook-utils-0.6.14

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/bonobo14

Installation of Bonobo

Install Bonobo by running the following commands:

sed -i 's/static \(const struct CORBA\)/\1/' tests/test-any.c &&
./configure --prefix=/opt/gnome-1.4 &&
make

To test the results, issue: make check.

Now, as the root user:

make install &&
install -v -m755 -d /opt/gnome-1.4/share/doc/bonobo-1.0.22 &&
install -v -m644 doc/{FAQ,Monikers,*.txt} \
    /opt/gnome-1.4/share/doc/bonobo-1.0.22

Command Explanations

sed -i '...' tests/test-any.c: This command fixes a problem if the package is compiled using GCC-4.0.x.

--prefix=/opt/gnome-1.4: Installs Bonobo in the GNOME 1.4 directory structure.

Contents

Installed Programs: bonobo-application-x-mines, bonobo-audio-ulaw, bonobo-echo, bonobo-moniker-gunzip, bonobo-moniker-http, bonobo-sample-canvas-item, bonobo-sample-controls, bonobo-sample-hello, bonobo-sample-paint, bonobo-selector, bonobo-text-plain, echo-client, efstool, gshell, libefs-config, moniker-test, sample-container and sample-control-container
Installed Libraries: libbonobo.{so,a}, libbonobobox.{so,a}, libbonobo-print.{so,a}, libefs.{so,a} and Bonobo plugin and moniker modules
Installed Directories: /opt/gnome-1.4/include/gnome-1.0/bonobo, /opt/gnome-1.4/lib/bonobo, /opt/gnome-1.4/share/bonobo, /opt/gnome-1.4/share/doc/bonobo-1.0.22, /opt/gnome-1.4/share/gnome/bonobo, /opt/gnome-1.4/share/gnome/ui and /opt/gnome-1.4/share/libefs

GConf-1.0.9

Introduction to GConf

The GConf package contains a configuration database system.

Package Information

Additional Downloads

GConf Dependencies

Required

OAF-0.6.10 and popt-1.10.4

Optional

GTK+-1.2.10, Guile-1.6.7, and GTK-Doc-1.6

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gconf1

Installation of GConf

Install GConf by running the following commands:

patch -Np1 -i ../GConf-1.0.9-db43-2.patch &&
patch -Np1 -i ../GConf-1.0.9-gcc4-1.patch &&
./configure --prefix=/opt/gnome-1.4 &&
make

If you have GTK-Doc installed and wish to build the HTML documentation, issue the following commands:

cd doc/gconf &&
make templates &&
make sgml &&
make html &&
cd ../..

This package does not come with a test suite.

Now, as the root user:

make install

Contents

Installed Programs: gconf-config, gconf-config-1, gconf-sanity-check-1, gconfd-1, gconftool, gconftool-1
Installed Libraries: libgconf-1.{so,a}, libgconf-gtk-1.{so,a} and GConf backend modules
Installed Directories: /opt/gnome-1.4/etc/gconf, /opt/gnome-1.4/include/gconf, /opt/gnome-1.4/lib/GConf and /opt/gnome-1.4/share/gconf

Short Descriptions

libgconf-1.{so,a}

provide the functions necessary to maintain the configuration database.

GNOME Virtual File System-1.0.5

Introduction to GNOME Virtual File System

The GNOME Virtual File System package contains file system libraries.

Package Information

Additional Downloads

GNOME Virtual File System Dependencies

Required

GNOME MIME Data-2.4.2, GNOME Libraries-1.4.2, and GConf-1.0.9

Optional

pkg-config-0.20, OAF-0.6.10, libxml-1.8.17, Bonobo-1.0.22, OpenSSL-0.9.8d, CDParanoia-III-9.8, GTK-Doc-1.6, and DocBook-utils-0.6.14

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gnome-vfs1

Installation of GNOME Virtual File System

Install GNOME Virtual File System by running the following commands:

patch -Np1 -i ../gnome-vfs-1.0.5-gcc34-1.patch &&
./configure --prefix=/opt/gnome-1.4 --disable-gtk-doc &&
make

To test the results, issue: make check.

Now, as the root user:

make install

Contents

Installed Programs: gnome-vfs-config
Installed Libraries: libgnomevfs.{so,a}, libgnomevfs-pthread.{so,a} and GNOME VFS filesystem modules
Installed Directories: /opt/gnome-1.4/etc/vfs, /opt/gnome-1.4/include/gnome-vfs-1.0, /opt/gnome-1.4/lib/gnome-vfs-1.0, /opt/gnome-1.4/lib/vfs and /opt/gnome-1.4/share/gtk-doc/html/gnome-vfs

Libglade-0.17

Introduction to Libglade

The libglade package contains libraries which allow applications to load Glade interface files at runtime.

Package Information

Libglade Dependencies

Required

libxml-1.8.17 and GTK+-1.2.10

Optional

GNOME Libraries-1.4.2, Bonobo-1.0.22, Python-2.4.4 (to run the libglade-xgettext script) and GTK-Doc-1.6

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libglade14

Installation of Libglade

The make command attempts to open an X display during the compile, so an X server must be running during this process.

Install libglade by running the following commands:

./configure --prefix=/opt/gnome-1.4 --disable-gtk-doc &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--enable-bonobo: Enables Bonobo support.

Contents

Installed Programs: libglade-config and libglade-xgettext
Installed Libraries: libglade.{so,a} and optionally, libglade-bonobo.{so,a} and libglade-gnome.{so,a}
Installed Directories: /opt/gnome-1.4/include/libglade-1.0 and /opt/gnome-1.4/share/gnome/html/libglade

GAL-0.24

Introduction to GAL

The GAL package contains library functions that came from Gnumeric and Evolution. GAL is short for GNOME Application Libs.

Package Information

GAL Dependencies

Required

GNOME Print-0.37 and libglade-0.17

Optional

GNOME Virtual File System-1.0.5 and GTK-Doc-1.6

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gal1

Installation of GAL

Install GAL by running the following commands:

./configure --prefix=/opt/gnome-1.4 &&
make

If you have GTK-Doc installed and wish to build the HTML documentation, issue the following commands:

cd docs &&
make templates &&
make sgml &&
make html &&
cd ..

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--prefix=/opt/gnome-1.4: Installs GAL in the GNOME 1.4 directory structure.

Contents

Installed Programs: None
Installed Libraries: libgal.{so,a}
Installed Directories: /opt/gnome-1.4/include/gal-1.0, /opt/gnome-1.4/share/etable and /opt/gnome-1.4/share/gal

Guppi-0.40.3

Introduction to Guppi

The Guppi package contains a Guile scriptable plot library with integrated statistics capabilities.

Package Information

Additional Downloads

Guppi Dependencies

Required

GNOME Print-0.37 and libglade-0.17

Optional

Bonobo-1.0.22, GTK-Doc-1.6 and DocBook-utils-0.6.14

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/guppi

Installation of Guppi

Install Guppi by running the following commands:

patch -Np1 -i ../Guppi-0.40.3-gcc34-1.patch &&
patch -Np1 -i ../Guppi-0.40.3-legend_fix-1.patch &&
patch -Np1 -i ../Guppi-0.40.3-gcc4-1.patch &&
./configure --prefix=/opt/gnome-1.4 &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--prefix=/opt/gnome-1.4: Installs Guppi in the GNOME 1.4 directory structure.

Contents

Installed Programs: None
Installed Libraries: libguppi.so, libguppitank.so and numerous plotting plugin modules
Installed Directories: /opt/gnome-1.4/include/gnome-1.0/libguppi, /opt/gnome-1.4/lib/guppi, /opt/gnome-1.4/share/gnome/help/guppi, /opt/gnome-1.4/share/guppi and /opt/gnome-1.4/share/pixmaps/guppi

Libcapplet-1.5.11

Introduction to libcapplet

The libcapplet package contains a control panel applet library.

Package Information

Libcapplet Dependencies

Required

GNOME Libraries-1.4.2

Optional

pkg-config-0.20

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libcapplet

Installation of Libcapplet

Install libcapplet by running the following commands:

./configure --prefix=/opt/gnome-1.4 &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--prefix=/opt/gnome-1.4: Installs libcapplet in the GNOME 1.4 directory structure.

Contents

Installed Programs: None
Installed Library: libcapplet.{so,a}
Installed Directory: /opt/gnome-1.4/include/libcapplet-1.4

Soup-0.7.11

Introduction to Soup

The Soup package contains a SOAP (Simple Object Access Protocol) implementation in C.

Package Information

Additional Downloads

Soup Dependencies

Required

GLib-1.2.10 or GLib-2.10.3, libxml-1.8.17 or libxml2-2.6.26 and popt-1.10.4

Optional

Apache-2.2.2, OpenSSL-0.9.8d or NSS-3.11.3, GTK-Doc-1.6, and DocBook-utils-0.6.14

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/soup

Installation of Soup

Install Soup by running the following commands:

patch -Np1 -i ../soup-0.7.11-gcc_3.4-1.patch &&
patch -Np1 -i ../soup-0.7.11-gcc4-1.patch &&
./configure --prefix=/opt/gnome-1.4 --disable-gtk-doc &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--prefix=/opt/gnome-1.4: Installs Soup in the GNOME 1.4 directory structure.

--enable-apache=no: This command can be added to prevent building against Apache.

Contents

Installed Programs: soup-config, soup-httpd, soup-ssl-proxy and soup-wsdl
Installed Libraries: libsoup.{so,a}, libsoup-apache.{so,a} and libwsdl.{so,a}
Installed Directories: /opt/gnome-1.4/include/soup and /opt/gnome-1.4/share/gtk-doc/html/soup

Libghttp-1.0.9

Introduction to Libghttp

The libghttp package contains a GNOME 1.4 HTTP client library.

Package Information

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libghttp

Installation of Libghttp

Install libghttp by running the following commands:

./configure --prefix=/opt/gnome-1.4 &&
make

This package does not come with a test suite.

Now, as the root user:

make install &&
install -v -m644 -D doc/ghttp.html \
    /opt/gnome-1.4/share/doc/libghttp-1.0.9/ghttp.html

Command Explanations

--prefix=/opt/gnome-1.4: Installs libghttp in the GNOME 1.4 directory structure.

Contents

Installed Programs: None
Installed Library: libghttp.{so,a}
Installed Directory: /opt/gnome-1.4/share/doc/libghttp-1.0.9

GtkHTML-1.1.7

Introduction to GtkHTML

The GtkHTML package contains a lightweight HTML rendering/printing/editing engine.

Package Information

Additional Downloads

GtkHTML Dependencies

Required

GAL-0.24, libcapplet-1.5.11, and GConf-1.0.9

Optional

Soup-0.7.11, Bonobo-1.0.22, libghttp-1.0.9, and GTK-Doc-1.6

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gtkhtml1

Installation of GtkHTML

Install GtkHTML by running the following commands:

patch -Np1 -i ../gtkhtml-1.1.7-gcc34-1.patch &&
sed -i 's/static \(HTMLClueAlignedClass\)/\1/' src/htmlcluealigned.c &&
./configure --prefix=/opt/gnome-1.4 --disable-gtk-doc &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

sed -i '...' src/htmlcluealigned.c: This command fixes a build problem when compiling with GCC-4.0.x.

--prefix=/opt/gnome-1.4: Install GtkHTML in the GNOME 1.4 directory structure.

Contents

Installed Programs: ebrowser, gnome-gtkhtml-editor-1.1 and gtkhtml-properties-capplet
Installed Libraries: libgtkhtml-1.1.{so,a}, Bonobo plugin modules and Glade rendering components
Installed Directories: /opt/gnome-1.4/include/gtkhtml-1.1, /opt/gnome-1.4/share/control-center, /opt/gnome-1.4/share/gnome/apps, /opt/gnome-1.4/share/gnome/html/gtkhtml and /opt/gnome-1.4/share/gtkhtml-1.1

Part X. X Software

Chapter 34. Individual Office Programs

This chapter is a collection of independent projects that can be installed based on specific needs. Together, they create a respectable office suite. While they may be lacking in user interface consistency, they excel in doing one thing and doing it well.

AbiWord-2.4.4

Introduction to AbiWord

The AbiWord package contains a word processing application. This is useful for writing reports, letters and other formatted documents.

Package Information

AbiWord Dependencies

Required

FriBidi-0.10.7 and libgnomeprintui-2.12.1

Optional

Enchant (uses Aspell-0.60.4), gucharmap-1.6.0, ImageMagick-6.2.8-0 and wv (with libwmf installed first)

Optional for Plugins

libgsf-1.14.1 (needed to build the OpenDocument/OpenOffice plugin), Poppler-0.4.5 (for the pdf plugin), librsvg-2.14.4, GNOME Utilities-2.14.0, GOffice-0.2.1, Aiksaurus, libgda, libgnomedb, libwmf, libwpd, OTS and Psiconv

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/abiword

Installation of AbiWord

Install AbiWord by running the following commands:

cd abiword-plugins &&
./configure --prefix=/usr --without-inter7eps &&
make &&
cd ../abi &&
./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install &&
cp -v -R docs /usr/share/AbiSuite-2.4/AbiWord &&
cd ../abiword-plugins &&
make install

If you have a GNOME-2 installation, issue the following command as the root user to install the AbiWord Bonobo component description file:

cd .. &&
install -v -m644 abidistfiles/GNOME_AbiWord_Control_2_4.server \
    $GNOME_PREFIX/lib/bonobo/servers

Install The Help Documentation

Build the help files by issuing the following commands as an unprivileged user:

cd abiword-docs &&
sed -i 's@AbiWord-2.0@abiword@' make-gnome-html.sh &&
./make-gnome-html.sh &&
./make-html.sh

Then, as the root user, install the help files:

install -v -m644 man/abiword.1 /usr/share/man/man1 &&
install -v -m644 Manual/en/Abiword_Manual.abw \
    /usr/share/AbiSuite-2.4/AbiWord/docs  &&
cp -v -R help /usr/share/AbiSuite-2.4/AbiWord &&
find /usr/share/AbiSuite-2.4/AbiWord/help \
    -type d -exec chmod -v 755 {} \;

Command Explanations

--without-inter7eps: Some of the headers from the EPS package are not compatible with GCC-4.0.3. This parameter prevents linking to the package and incurring a build failure.

sed -i 's@AbiWord-2.0@abiword@' make-gnome-html.sh: This command alters the make-gnome-html.sh script to look for the current version of abiword.

Configuring AbiWord

Config File

~/.AbiSuite/templates/normal.awt

Configuration Information

Choose the right template for your language and locale from the list produced by the following command:

ls /usr/share/AbiSuite-2.4/templates

Create the folder ~/.AbiSuite/templates then copy the normal.awt you want into it:

mkdir -p -v ~/.AbiSuite/templates &&
cp -v /usr/share/AbiSuite-2.4/templates/normal.awt-<lang> \
      ~/.AbiSuite/templates/normal.awt

Change <lang> in the above command to fit the name of the file you want.

Contents

Installed Programs: abiword, AbiWord-2.4, ttfadmin.sh, and ttftool
Installed Libraries: Numerous plugin library support modules
Installed Directories: /usr/lib/AbiWord-2.4 and /usr/share/AbiSuite-2.4

Short Descriptions

abiword

is a symbolic link to the main AbiWord-2.4 executable.

AbiWord-2.4

is the word-processing program executable.

ttfadmin.sh

generates support files required by AbiWord for each TrueType font in a given directory.

ttftool

is a utility for processing TrueType fonts.

Gnumeric-1.6.3

Introduction to Gnumeric

The Gnumeric package contains a spreadsheet program. This is useful for financial analysis.

Package Information

Gnumeric Dependencies

Required

libgnomeprintui-2.12.1 and GOffice-0.2.1

Optional

Python-2.4.4, PyGTK, libgnomeui-2.14.1 (combined with the libgsf-gnome-1 library from the libgsf-1.14.1 package will provide GNOME-2 support), GNOME Doc Utils-0.6.1 (to convert the XML help documentation into HTML), libgnomedb (requires libgda), pxlib, Psiconv, Hildon, and Gnome Basic (this package is no longer under active development)

Note

Though only a run-time dependency, if you don't install the Yelp-2.14.3 package, the built-in help functionality in Gnumeric will not be available.

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gnumeric

Installation of Gnumeric

Install Gnumeric by running the following commands:

./configure --prefix=/usr \
            --sysconfdir=/etc/gnome/2.14.3 \
            --localstatedir=/var/lib &&
make

This package does not come with a test suite.

Now, as the root user:

make install

There is a bug in the program. The help system looks for the docs in one location, but they are actually installed in the wrong place. See http://bugzilla.gnome.org/show_bug.cgi?id=330339. If you have Yelp-2.14.3 installed and would like to be able to use it to view the help documentation from within Gnumeric, work around the problem by creating a symbolic link. As root:

ln -vsf /usr/share/gnome/help/gnumeric \
        /usr/share/gnumeric/1.6.3/doc

If you have GNOME installed in a prefix other than /usr, as the root user create the following symlink for the Gnumeric Bonobo server file:

ln -v -s /usr/lib/bonobo/servers/GNOME_Gnumeric.server \
    $(pkg-config --variable=prefix ORBit-2.0)/lib/bonobo/servers

If you have GNOME Doc Utils-0.6.1 installed you can convert the XML help files into HTML by issuing the following commands:

./configure \
    --prefix=$(pkg-config --variable=prefix gnome-doc-utils) &&
make -C doc html

Now, as the root user, install the documentation files:

install -v -m755 -d /usr/share/doc/gnumeric-1.6.3/figures &&
install -v -m644 doc/C/html/* /usr/share/doc/gnumeric-1.6.3 &&
install -v -m644 doc/C/figures/* \
    /usr/share/doc/gnumeric-1.6.3/figures &&
ln -v -s /usr/share/xml/docbook/xsl-stylesheets-1.69.1/images \
    /usr/share/doc/gnumeric-1.6.3/stylesheet

If you wish to install the Developer documentation, issue the following commands as the root user:

install -v -m755 -d /usr/share/doc/gnumeric-1.6.3/developer &&
install -v -m644 doc/developer/* \
    /usr/share/doc/gnumeric-1.6.3/developer &&
rm -v /usr/share/doc/gnumeric-1.6.3/developer/Makefile*

Command Explanations

--sysconfdir=/etc/gnome/2.14.3: This parameter causes the configuration files to be installed in /etc/gnome/2.14.3 instead of $GNOME_PREFIX/etc. Additionally (if applicable), the parameter ensures that the GConf-2 database is correctly updated.

--localstatedir=/var/lib: This parameter is used so that all ScrollKeeper files are installed in, and the ScrollKeeper database is properly updated in /var/lib/scrollkeeper instead of some files being installed in $GNOME_PREFIX/var/scrollkeeper.

--prefix=$(pkg-config --variable=prefix gnome-doc-utils): This rebuilds the Makefiles with the same prefix as GNOME Doc Utils

make -C doc html: This command runs make in the doc directory with html as the Makefile target.

Contents

Installed Programs: gnumeric, gnumeric-1.6.3, and ssconvert
Installed Libraries: numerous filters, plugins and GNOME components
Installed Directories: /usr/lib/gnumeric, /usr/share/doc/gnumeric-1.6.3, and /usr/share/{{,gnome/help/, omf/, pixmaps/}gnumeric,mc}

Short Descriptions

gnumeric

is a symlink to gnumeric-1.6.3

gnumeric-1.6.3

is GNOME's spreadsheet application.

ssconvert

is a command line utility to convert spreadsheet files between various spreadsheet file formats.

GnuCash-1.8.12

Introduction to GnuCash

GnuCash is a personal finance manager.

Package Information

Additional Downloads

GnuCash Dependencies

Required

GtkHTML-1.1.7, libghttp-1.0.9, G-Wrap-1.3.4, and XML::Parser-2.34

Optional

PostgreSQL-8.1.3, Guppi-0.40.3, ScrollKeeper-0.3.14, Doxygen-1.4.6, Graphviz-2.8, Guile-www, and Electric Fence

Optional (for On-Line Banking)

LibOFX (requires OpenSP-1.5.2 and cURL-7.15.3), KtoBlzCheck, and AqBanking (requires Gwenhywfar and also see libchipcard2)

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gnucash

Installation of GnuCash

Install GnuCash by running the following commands:

sed -i 's/^host_os=.*$/&-gnu/' configure &&
./configure --prefix=/opt/gnome-1.4 \
            --sysconfdir=/etc \
            --disable-guppi \
            --disable-error-on-warning &&
make

To test the results, issue make check. All tests should pass. An easy way to look at the results of the tests is to issue grep -A1 ============== check.log (this is assuming you redirected the output from the tests to the aforementioned filename).

Now, as the root user:

make install

If desired, create a symbolic link from the GnuCash documentation directory to the system-wide documentation directory using the following command as the root user:

ln -v -s /opt/gnome-1.4/share/gnucash/doc \
         /usr/share/doc/gnucash-1.8.12

If desired, create symbolic links to the GnuCash .desktop and icon files in the system-wide directories using the following commands as the root user:

install -v -m755 -d /usr/share/pixmaps/gnucash &&
ln -v -s /opt/gnome-1.4/share/pixmaps/gnucash/gnucash-icon.png \
         /usr/share/pixmaps/gnucash &&
ln -v -s /opt/gnome-1.4/share/gnome/apps/Applications/gnucash.desktop \
         /usr/share/applications

If you want to install the Help documentation (requires ScrollKeeper-0.3.14 to be installed), unpack the additional tarball, change into the gnucash-docs-1.8.5 source directory and issue the following commands as an unprivileged user:

./configure --prefix=/opt/gnome-1.4 \
            --localstatedir=/var/lib &&
make

Now, as the root user:

make install

Command Explanations

sed -i 's/^\(host_os=.*\)$/\1-gnu/' configure: This command is used to fix a broken configure script. Without it, no shared libraries are built, and the program will not function properly.

--prefix=/opt/gnome-1.4: GnuCash-1.8.12 is a GNOME-1.4 application.

--sysconfdir=/etc: This installs configuration files in /etc/gnucash instead of /opt/gnome-1.4/etc/gnucash.

--localstatedir=/var/lib: This parameter is used so that all ScrollKeeper files are installed in, and the ScrollKeeper database is properly updated in /var/lib/scrollkeeper instead of some files being installed in $GNOME_PREFIX/var/scrollkeeper.

--disable-guppi: This compiles GnuCash without support for creating GUI graphs and plots. Remove this option if you have Guppi installed.

-disable-error-on-warning: Without this parameter the build will fail because a warning is generated. This option forces the build to ignore the warning.

--enable-sql: This parameter is required if you want to build in SQL support using PostgreSQL.

--enable-ofx: This parameter is required if you want to build in on-line banking support using LibOFX.

--enable-hbci: This parameter is required if you want to build in on-line banking support using AqBanking. See doc/README.HBCI in the GnuCash source tree for complete information.

Configuring GnuCash

Configuration Information

If you wish to use GnuCash to retrieve stock price quotes and stock historical information, you'll need to install the following Perl modules: libwww-perl-5.805, Date::Manip-5.44, HTML::Parser-3.54, Finance::Quote-1.11 and Finance::QuoteHist-1.07.

Contents

Installed Programs: dump-finance-quote, gnc-prices, gnc-test-env, gnucash, gnucash-config, gnucash-env, gnucash-make-guids, gnucash-run-script and update-finance-quote
Installed Libraries: libcore-utils.so, libgnc-app-file-gnome.so, libgncgnome.so, libgncmodule.so, libgw-core-utils.so, libgw-gnc.so and numerous support libraries installed in /opt/gnome-1.4/lib/gnucash
Installed Directories: /etc/gnucash, /opt/gnome-1.4/include/gnucash, /opt/gnome-1.4/lib/gnucash, /opt/gnome-1.4/libexec/gnucash, /opt/gnome-1.4/share/gnome/apps/Applications, /opt/gnome-1.4/share/gnome/help/gnucash, /opt/gnome-1.4/share/gnucash, /opt/gnome-1.4/share/omf/gnucash-docs and /opt/gnome-1.4/share/pixmaps/gnucash

Short Descriptions

gnucash

is a personal finance manager.

GIMP-2.2.12

Introduction to GIMP

The GIMP package contains the GNU Image Manipulation Program. This is useful for photo retouching, image composition and image authoring.

Package Information

Additional Downloads

Help System

GIMP Dependencies

Required

GTK+-2.8.20, libart_lgpl-2.3.17, and XML::Parser-2.34

Recommended

Note

If the recommended dependencies are not installed, the configure switches below will need to be modified as explained in the section called “Command Explanations” below.

Optional

libmng-1.0.9, librsvg-2.14.4, AAlib-1.4rc5, little cms-1.15, libexif-0.6.13, libgtkhtml-2.11.0 (required to build the help system browser plugin), libxslt-1.1.17, PyGTK (requires Python-2.4.4), GTK-Doc-1.6, an MTA (that provides a sendmail program), ALSA-1.0.13, and libwmf

Optional (for Building Documentation from the Help Tarball)

libxslt-1.1.17, DocBook XML DTD-4.4, DocBook XSL Stylesheets-1.69.1, and ImageMagick-6.2.8-0 (only needed to optimize PNG images)

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gimp

Installation of GIMP

Install GIMP by running the following commands:

./configure --prefix=/usr \
            --sysconfdir=/etc \
            --datadir=/usr/share &&
make

To test the results, issue: make check.

Now, as the root user:

make install &&
install -v -m755 -d /usr/share/doc/gimp-2.2.12 &&
install -v -m644 docs/{Wilber*,keybindings.txt,quick_reference.ps} \
    /usr/share/doc/gimp-2.2.12

The gimp-help tarball contains a help system designed for use with external web browsers, the internal GIMP help browser, and HTML renderers. The tarball only contains the XML sources, so you will need the xsltproc program from libxslt-1.1.17 to build the HTML files.

If you downloaded the gimp-help tarball, change directories out of the GIMP source tree to the root of your build directory. Now unpack the gimp-help tarball and change directories to the root of the newly created source tree (as an unprivileged user). Issue the following commands to install the help files:

./configure &&
make

In order to use the --enable-convert parameter to the configure script, you must have the convert program from ImageMagick-6.2.8-0 installed.

Now, as the root user:

make install

Command Explanations

--datadir=/usr/share: This parameter is required because there is a subtle bug in Autoconf-2.59 which causes the configure script to mishandle the datarootdir variable. Fortunately, passing --datadir= works around the problem.

--disable-print: This option will disable print support and is necessary if Gimp-Print is not installed.

--without-libjpeg: This option is necessary if libjpeg is not installed.

--without-libtiff: This option is necessary if libtiff is not installed.

--enable-gtk-doc: Use this parameter if GTK-Doc is installed and you wish to rebuild the API documentation.

Configuring GIMP

Config Files

/etc/gimp/2.0/* and ~/.gimp-2.0/gimprc

Configuration Information

GIMP executes a configuration wizard for each user upon their initial use of the program.

GIMP executes the mozilla web browser by default to view the help files. If you do not have Mozilla, or prefer a different web browser, you can set a new system value in /etc/gimp/2.0/gimprc. Execute the following command as the root user, replacing <browser> with your preferred web browser:

echo '(web-browser "<browser> %s")' >> /etc/gimp/2.0/gimprc

Contents

Installed Programs: gimp, gimp-2.2, gimp-remote, gimp-remote-2.2, and gimptool-2.0
Installed Libraries: libgimp-2.0.so, libgimpbase-2.0.so, libgimpcolor-2.0.so, libgimpmath-2.0.so, libgimpmodule-2.0.so, libgimpthumb-2.0.so, libgimpui-2.0.so, libgimpwidgets-2.0.so, and many other modules and plugin libraries
Installed Directories: /etc/gimp, /usr/include/gimp-2.0, /usr/lib/gimp, /usr/share/doc/gimp-2.2.12, /usr/share/gimp and /usr/share/gtk-doc/html/libgimp{,base,color,math,module,thumb,widgets}

Short Descriptions

gimp

is a symbolic link to gimp-2.2.

gimp-2.2

is an image manipulation program. It works with a variety of image formats and provides a large selection of tools.

gimp-remote

is a symbolic link to gimp-remote-2.2.

gimp-remote-2.2

is a small utility that tells a running GIMP to open a local or remote image file.

gimptool-2.0

is a tool that can build plug-ins or scripts and install them if they are distributed in one source file. gimptool-2.0 can also be used by programs that need to know what libraries and include-paths GIMP was compiled with.

libgimp-2.0.so

provides C bindings for GIMP's Procedural Database (PDB) which offers an interface to core functions and to functionality provided by plug-ins.

libgimpbase-2.0.so

provides the C functions for basic GIMP functionality such as determining enumeration data types, gettext translation, determining GIMP's version number and capabilities, handling data files and accessing the environment.

libgimpcolor-2.0.so

provides the C functions relating to RGB, HSV and CMYK colors as well as converting colors between different color models and performing adaptive supersampling on an area.

libgimpmath-2.0.so

contains C functions which provide mathematical definitions and macros, manipulate 3x3 transformation matrices, set up and manipulate vectors and the MD5 message-digest algorithm.

libgimpmodule-2.0.so

provides the C functions which implements module loading using GModule and keeps a list of GimpModule's found in a given searchpath.

libgimpthumb-2.0.so

provides the C functions for handling GIMP's thumbnail objects.

libgimpui-2.0.so

contains the GIMP common user interface functions.

libgimpwidgets-2.0.so

contains GIMP and GTK widget creation and manipulation functions.

Evolution-2.6.3

Introduction to Evolution

The Evolution package contains an integrated mail, calendar and address book suite designed for the GNOME-2 environment.

Package Information

Evolution Dependencies

Required

GtkHTML-3.10.3 and Evolution Data Server-1.6.3

Recommended (For SSL and S/MIME support)

The NSS package is not required if you have Firefox-1.5.0.9, Thunderbird-1.5.0.9, SeaMonkey-1.1 or Mozilla installed. These packages contain internal copies of NSS (or they used a system-installed copy). If any of the four packages are installed, one way or another you will already have NSS/NSPR libraries on your system.

Optional

OpenLDAP-2.3.27, HAL-0.5.7.1, D-BUS-0.62, Heimdal-0.7.2 or MIT Kerberos V5-1.6, krb4, GNOME Pilot conduits (requires pilot-link-0.11.8 then GNOME Pilot), GNOME Spell, GStreamer-0.8.x, NetworkManager (download), libnotify, Mono, intltool-0.34.2, GTK-Doc-1.6, and DocBook-utils-0.6.14

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/evolution

Installation of Evolution

Install Evolution by running the following commands:

Note

The instructions below assume you have the NSS/NSPR libraries installed on your system. If you elected not to install NSS (or one of the other packages mentioned above), you'll need to remove the following two parameter settings from the configure command below:

            --enable-nss
            --enable-smime

The Evolution configure script only looks for the stand-alone NSS package and the Mozilla and Firefox browsers for the NSS/NSPR libraries. If you are using Thunderbird as your source for the NSS/NSPR libraries, you will have to add the following two parameter settings to the configure command below:

            --with-nspr-includes=/usr/include/nspr
            --with-nss-includes=/usr/include/nss

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --sysconfdir=/etc/gnome/2.14.3 \
            --localstatedir=/var/lib \
            --libexecdir=$(pkg-config \
                --variable=prefix ORBit-2.0)/lib \
            --enable-nntp \
            --enable-nss \
            --enable-smime &&
make

This package does not come with a test suite.

Now, as the root user:

make install &&
ln -v -s evolution-2.6 \
    $(pkg-config --variable=prefix ORBit-2.0)/bin/evolution

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--sysconfdir=/etc/gnome/2.14.3: This parameter causes the configuration files to be installed in /etc/gnome/2.14.3 instead of $GNOME_PREFIX/etc. Additionally (if applicable), the parameter ensures that the GConf-2 database is correctly updated.

--localstatedir=/var/lib: This parameter is used so that all ScrollKeeper files are installed in, and the ScrollKeeper database is properly updated in /var/lib/scrollkeeper instead of some files being installed in $GNOME_PREFIX/var/scrollkeeper.

--libexecdir=$(pkg-config --variable=prefix ORBit-2.0)/lib: This parameter causes the libexec files to be installed in the preferred location of $GNOME_PREFIX/lib/evolution instead of $GNOME_PREFIX/libexec/evolution.

--enable-nntp: This parameter is used to build the Usenet news (NNTP) backend.

--enable-nss: This parameter is used to pull in the Mozilla Network Security Services libraries for SSL support.

--enable-smime: This parameter is used to pull in the Mozilla Network Security Services libraries for S/MIME support.

--with-openldap: This parameter will compile LDAP support into Evolution.

--with-krb5: This parameter will compile Kerberos5 support into Evolution.

--with-pilot-conduits: This parameter will build the GNOME Pilot conduits allowing you to synchronize Evolution data on a Palm device.

ln -v -s evolution-2.6 $(pkg-config --variable=prefix ORBit-2.0)/bin/evolution: This optional command creates a convenience symlink to the evolution-2.6 binary.

Contents

Installed Programs: evolution and evolution-2.6
Installed Libraries: $GNOME_PREFIX/lib/evolution/2.6/* (contains support libraries, conduits, and other components)
Installed Directories: The following subdirectories of $GNOME_PREFIX/: include/evolution-2.6, lib/evolution, share/{{,omf/}evolution, {gnome/help,idl}/evolution-2.6}

Short Descriptions

evolution

is a symlink to the evolution-2.6 program.

evolution-2.6

is an email, calendar and address book suite.

Chapter 35. Office Suites

This chapter contains applications that bundle all the essential needs of everyday office workers into one neat 'little' package. The benefits are a consistent user interface and cooperation between applications.

KOffice-1.6.1

Introduction to KOffice

KOffice is the integrated office suite for KDE. It provides native OASIS OpenDocument format support.

Package Information

Additional Downloads

KOffice has many localization packages in the form of: koffice-l10n-<xx>-1.6.1.tar.bz2. The <xx> is a two to seven character code for the country covered. The sizes of these files range from about 0.4 MB to 4.6 MB.

KOffice Dependencies

Required

kdebase-3.5.6

Recommended

Optional

Aspell-0.60.4, Python-2.4.4, PostgreSQL-8.1.3 (for kexi), MySQL-5.0.21 (plugin), little cms-1.15 and ImageMagick-6.2.8-0 (required for krita), OpenEXR (for enhanced image processing), libwv2 (for MS Word filter), libwpd (for Wordperfect filter), libpaper, Graphviz-2.8, and Doxygen-1.4.6 (the last two to build API documentation)

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/koffice

Installation of KOffice

Install KOffice with the following commands:

./configure --prefix=$KDE_PREFIX --disable-debug \
    --disable-dependency-tracking &&
make

Note

If you wish to create the API documentation and you have Doxygen and Graphviz installed, make apidox must be done before make install.

This package does not come with a test suite.

Now, as the root user:

make install

Contents

Installed Programs: karbon, kchart, kexi, kformula, kivio, koconverter, koshell, kplato, kprconverter.pl, kpresenter, krita, krossrunner, kspread, ksqlite, ksqlite2, ksqlite2to3, kthesaurus, kudesigner, kugar, and kword
Installed Libraries: Numerous libraries (about 50) in $KDE_PREFIX/lib
Installed Directory: Numerous directories in $KDE_PREFIX/share

Short Descriptions

kchart

is a chart drawing application.

kexi

is an integrated data management application.

kformula

is a formula editor.

kivio

is a flowchart program.

kplato

is a project management application.

kpresenter

is a presentation builder/display program.

krita

is a painting and image editing application for KOffice..

kspread

is a scriptable spreadsheet program.

kugar

is a tool for creating reports.

kword

is a framemaker-like word processing and desktop publishing program.

OpenOffice-2.0.3

Introduction to OpenOffice

OpenOffice is an office suite, the open source sibling of StarOffice.

Package Information

Additional Downloads

OpenOffice Dependencies

Required

Apache Ant-1.6.5, GTK+-2.8.20, libIDL-0.8.7, libxml2-2.6.26, Perl Modules XML::Parser-2.34 and Archive::Zip-1.16, Tcsh-6.14.00, UnZip-5.52, which-2.16, and Zip-2.32

Recommended

Optional

ALTLinuxhyph, boost, CUPS-1.2.7, cURL-7.15.3, desktop-file-utils-0.11, EPM, Evolution-2.6.3, GNOME Virtual File System-2.14.2, GPC, KDE, libjpeg-6b, libsndfile, LibTIFF-3.8.2, libwpd, Linux-PAM-0.99.4.0, SeaMonkey-1.1 (must be built against the system NSS-3.11.3) or Firefox-1.5.0.9 (with ldap support), MySpell, MyThes, NAS-1.7, neon, OpenLDAP-2.3.27, PortAudio, Python-2.4.4, Sablotron, SANE-1.0.17, startup-notification-0.8, STLPort, and unixODBC-2.2.11

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/openoffice

Installation of OpenOffice

Apply all of the downloaded patches:

for PATCH in ../OOo_2.0.3-*.patch
    do patch -Np1 -i ${PATCH}
done

If you wish to build an in-tree Mozilla, as opposed to using a system wide installation, copy the Mozilla source tarball into the source tree:

cp ../mozilla-source-1.7.5.tar.gz moz/download/

If you want to optimize the build, edit the appropriate makefile in solenv/inc/ and add the desired optimization flags to the CFLAGSOPT variable. The makefiles are arch specific, for instance edit solenv/inc/unxlngi6.mk for i686. Some users have reported problems with -fomit-frame-pointer. The best option is to not use any custom optimizations. The following command removes an incorrect -mcpu option in several of the makefiles:

sed -i '/^ARCH_FLAGS\*=/d' solenv/inc/unx{lngi{4,5,6},fbsdi}.mk

Configure OpenOffice using the following commands:

Note

Because of the complexity of the OpenOffice build system, it is not possible to provide generic build instructions for all systems. You should review the output of config_office/configure --help and take advantage of any system installed programs and libraries available using the --enable, --disable, and --with-system-* parameters.

Warning

Do not use the --with-system-db or --disable-odk switches. Both are known to cause build failures.

cd config_office/ &&
autoreconf &&
./configure --prefix=/opt/openoffice-2.0.3 \
    --enable-libart --disable-fontooo --disable-gnome-vfs \
    --without-fonts --with-system-stdlibs --with-system-freetype \
    --with-system-expat --with-system-libxml --with-system-zlib \
    --enable-build-mozilla --with-build-version=BLFS \
    --with-package-format=native --disable-binfilter &&
cd ..

OpenOffice fails to compile if umask is set to something exotic. The build can also fail if the LANG or LC_ALL environment variables are set. Use the following commands to change your environment accordingly:

umask 0022 &&
unset LANG LC_ALL

Compile OpenOffice using the following commands:

./bootstrap &&
. LinuxIntelEnv.Set.sh &&
dmake

This package does not come with a test suite.

Install OpenOffice as the root user with the following commands:

cd instsetoo_native/unxlngi6.pro/OpenOffice/\
native/install/en-US/linux-2.6-intel/buildroot/opt &&
cp -r -v openoffice.org2.0 /opt/openoffice-2.0.3

Still as the root user:

for appl in sbase scalc sdraw simpress smath soffice spadmin swriter
do
    ln -v -sf /opt/openoffice-2.0.3/program/$appl /usr/bin/$appl
done

The icons are not installed by default. While still the root user, install the icons with the following commands:

cd ../../../../../../../../../sysui/desktop/icons &&
install -v -d /usr/share/icons/{HighContrast,hicolor,locolor} -m755 &&
cp -r -v HighContrast/*x* /usr/share/icons/HighContrast &&
cp -r -v hicolor/*x* /usr/share/icons/hicolor &&
cp -r -v locolor/*x* /usr/share/icons/locolor

If you have installed desktop-file-utils-0.11 and use KDE, there is no further configuration necessary. If you use Gnome, you should copy the *.desktop files to /usr/share/applications with the following commands as the root user:

install -v -d /usr/share/applications -m 755 &&
cd /opt/openoffice-2.0.3/share/xdg/ &&
for appl in *.desktop
do
    sed -i '/Exec/d' $appl
    echo "Exec=/usr/bin/s`echo $appl | sed 's/.desktop//'`" >> $appl
    sed -i '/Icon/d' $appl
    echo "Icon=`echo $appl | sed 's/.desktop//'`" >> $appl
done &&
sed -i 's@bin/sprinteradmin@bin/spadmin@' printeradmin.desktop &&
cp -v *.desktop /usr/share/applications

Finally, if you'd like to edit OpenOffice documents directly from Mozilla or Firefox, create a symbolic link in your plugins directory to /opt/openoffice-2.0.3/program/libnpsoplugin.so. Additionally, you must enable the plugin from the Internet Options within any OpenOffice application.

Command Explanations

--enable-libart: This switch forces the use of libart instead of gpc for polygon clipping.

--enable-libsn: This switch enables the use of startup-notification.

--disable-fontooo: Use Fontconfig instead of FontOOo.

--disable-gnome-vfs: Disable the use of Gnome Virtual File System libraries. Omit this switch if you have Gnome installed.

--without-fonts: Do not install Bitstream Vera fonts since they are already included in X Window System Environment.

--with-system-*: Use the system libraries and programs instead of building the source packages included in the build tree.

--enable-build-mozilla: Build the in-tree Mozilla suite.

--with-build-version=BLFS: Appends "BLFS" to the end of the version string.

--with-package-format=native: This switch disables the build of RPM packages.

--disable-binfilter: This switch disables the build of legacy StarOffice-5 import filters.

--with-firefox: Enables the use of Firefox in place of the full Mozilla suite. This will disable the use of a Thunderbird address book as a data source.

--disable-cups: Disable the use of CUPS for printing.

--with-lang=<LANG>: Makes an install set for the desired language. ENUS is the default.

--with-dict=<LANG>: This switch installs dictionaries for the desired languages. ENUS is the default.

./bootstrap: Build the dmake utility required to complete the build.

dmake: Compile the package.

for appl in *.desktop...: Edit the *.desktop files for use with a standard BLFS system.

Contents

Installed Programs: scalc, sdraw, simpress, smath, soffice, spadmin, and swriter.
Installed Libraries: OpenOffice libraries
Installed Directory: /opt/openoffice-2.0.3

Short Descriptions

sbase

is a database application.

scalc

is a spreadsheet application.

sdraw

is a drawing application.

simpress

is a presentation application.

smath

is a mathematical formula editor.

soffice

opens a base window with access to all OpenOffice applications.

spadmin

is the OpenOffice printer configuration utility.

swriter

is a word processing application.

Chapter 36. Graphical Web Browsers

This chapter contains a wonderful selection of browsers. We hope you can find one you enjoy using or give them each a trial run.

SeaMonkey-1.1

Introduction to SeaMonkey

SeaMonkey is a browser suite, the Open Source sibling of Netscape. It includes the browser, composer, mail and news clients, and an IRC client. It is the follow-on to the Mozilla browser suite.

The Mozilla project also hosts two subprojects that aim to satisfy the needs of users who don't need the complete browser suite or prefer to have separate applications for browsing and e-mail. These subprojects are Mozilla Firefox, (a stand-alone browser based on the Mozilla source code) and Mozilla Thunderbird, (a stand-alone mail/newsgroup client based on the Mozilla source code). The build instructions for these two applications are discussed in separate sections:

Package Information

To enable the Enigmail extension to the SeaMonkey mail client, you'll need to download the tarball listed below. The Enigmail extension allows users to access the authentication and encryption features provided by the GnuPG package. The Enigmail extension will not operate correctly unless you have GnuPG-1.4.3 installed.

SeaMonkey Dependencies

Required

GTK+-2.8.20, libIDL-0.8.7, and Zip-2.32

Note

libjpeg-6b should have been installed before GTK+ and should exist on your system. If for some reason you haven't installed libjpeg, you should remove the --with-system-jpeg option from the .mozconfig file created below.

Recommended

Optional

UnZip-5.52 and libgnomeui-2.14.1 (to build the gnomevfs extension)

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/seamonkey

Installation of SeaMonkey

The configuration of SeaMonkey is accomplished by creating a .mozconfig file containing the desired configuration options. A default .mozconfig file is created below. To see the entire list of available configuration options (and an abbreviated description of each one), issue ./configure --help. Additional information can also be found below in the section titled Additional .mozconfig Options. If you are going to use system-installed versions of the NSS and NSPR libraries, ensure you uncomment the two lines near the bottom of the file. If you would prefer to download the file instead of creating it by typing or cut-and-pasting, you can find it at http://anduin.linuxfromscratch.org/files/BLFS/seamonkey-1.1-mozconfig (the file must be installed in the root of the source tree mozilla directory, and named .mozconfig). Create the file by issuing the following command:

cat > .mozconfig << "EOF"
# This file contains the options used in the SeaMonkey build. You may
# need to specify additional options for your specific build needs.
# Use the information provided by running './configure --help' to
# help you determine if you need to add any additional options.
# Some additional options can be added by uncommenting the examples
# in this file or adding options by inserting a line containing
# 'ac_add_options --some-option-you-need'.


# Create an object directory and specify to build the package in that
# directory. If desired, modify the location of the object directory
# to a directory inside the source tree by removing '../' from the
# line below.
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/../seamonkey-build

# This option is used to specify that the SeaMonkey suite is
# being built and to use all the default options for SeaMonkey.
ac_add_options --enable-application=suite

# Specify the installation prefix. If you would prefer SeaMonkey
# installed in a different prefix, modify the line below to fit
# your needs. You'll also need to modify some of the instructions in
# the BLFS book to point to your desired prefix.
ac_add_options --prefix=/usr

# These options are used so that the SeaMonkey binaries are linked to
# the system-installed copies of the specified libraries instead of
# the source tree code which may not be the most recent versions.
ac_add_options --with-system-zlib
ac_add_options --with-system-png
ac_add_options --with-system-jpeg
ac_add_options --enable-system-cairo

# This option specifies to include support for rendering the HTML
# <canvas></canvas> tag in the SeaMonkey browser.
ac_add_options --enable-canvas

# This option is used so that the debugging symbols are removed from
# the installed binaries during the installation process. Comment out
# this option if you may have a need to retain the debugging symbols
# in the installed binaries. Note that this can substantially
# increase the size of the installed binaries.
ac_add_options --enable-strip

# This option is added so that test libraries and programs are not
# built. These would only be required for debugging purposes.
ac_add_options --disable-tests

# This option is added so that the Mozilla Installer program is not
# built or installed. The program is not required for a BLFS
# installation of SeaMonkey.
ac_add_options --disable-installer

# This option is used to disable the a11y support in the SeaMonkey
# binaries. Comment out this option if you require a11y support.
ac_add_options --disable-accessibility

# This option is used to enable support for rendering SVG files in the
# SeaMonkey browser.
ac_add_options --enable-svg

# This option is used to enable source tree included LDAP support in
# the SeaMonkey binaries.
ac_add_options --enable-ldap

# These two options enable support for building SeaMonkey with
# system-installed versions of the Network Security Services (NSS)
# and Netscape Portable Runtime (NSPR) libraries. Uncomment both
# lines to enable support for system-installed NSS/NSPR.
#ac_add_options --with-system-nspr
#ac_add_options --with-system-nss

# Uncomment this option if you desire support for dual-monitor
# display of SeaMonkey using the X-Window Xinerama libraries.
#ac_add_options --enable-xinerama

# Complex scripts such as Thai can only be rendered in SeaMonkey with the
# help of Pango. This option significantly slows rendering, so only use
# it if necessary.
#ac_add_options --enable-pango

# This option identifies the default binary directory of the SeaMonkey
# installation and is used to locate SeaMonkey's installed files. This
# option is not required for end-user browsing, and is only used for
# development purposes.
#ac_add_options --with-default-mozilla-five-home=/usr/lib/seamonkey-1.1

EOF

Now clean up one Makefile to add required libraries to a build step. Note that the command requires two separate lines as shown.

sed -i -e '/MOZ_JS_LIBS/a\
\t\t$(MOZ_XFT_LIBS) \\' layout/build/Makefile.in

Compile SeaMonkey by running the following command:

make -f client.mk build

If you're building the SeaMonkey mail/newsgroup client and plan to install the Enigmail extension, issue the following commands:

tar -xf ../enigmail-0.94.2.tar.gz -C mailnews/extensions &&

pushd mailnews/extensions/enigmail &&
./makemake -r &&
popd &&

make -C ../seamonkey-build/mailnews/extensions/enigmail &&
make -C ../seamonkey-build/mailnews/extensions/enigmail xpi

This package does not come with a test suite. However, it cn be launched fom the build directory before installing with the command line: ../seamonkey-build/dist/bin/seamonkey.

Install SeaMonkey by issuing the following commands as the root user:

make -f client.mk install &&

install -v -m644 ../seamonkey-build/dist/public/ldap-private/* \
    /usr/include/seamonkey-1.1/ldap &&

install -v -m755 -d /usr/lib/seamonkey-1.1/defaults/isp/US &&
install -v -m644 mailnews/base/ispdata/movemail.rdf \
    /usr/lib/seamonkey-1.1/defaults/isp &&
ln -v -s ../movemail.rdf /usr/lib/seamonkey-1.1/defaults/isp/US

If you built SeaMonkey utilizing system-installed NSS and NSPR libraries, the seamonkey-ns*.pc pkgconfig files are broken as they point to the wrong directories where the actual libraries and interface headers are located. Issue the following commands as the root user to replace the broken files with symbolic links to known good files:

ln -v -sf nss.pc /usr/lib/pkgconfig/seamonkey-nss.pc &&
ln -v -sf nspr.pc /usr/lib/pkgconfig/seamonkey-nspr.pc

If you did NOT build seamonkey utilizing system-installed NSS and NSPR libraries, issue the following commands as the root user to install the NSS interface headers:

install -v -m755 -d /usr/include/seamonkey-1.1/nss &&
cp -v -Lf ../seamonkey-build/dist/{private,public}/nss/*.h \
   /usr/include/seamonkey-1.1/nss

If you built the Enigmail extension, issue the following commands as the root user to install the .xpi file into the /usr/lib/seamonkey-1.1 directory:

install -v -m755 -d /usr/lib/seamonkey-1.1/xpi_store &&
install -v -m644 ../seamonkey-build/dist/bin/enigmail-0.94.2-*.xpi \
    /usr/lib/seamonkey-1.1/xpi_store

There are two methods you can use to install the Enigmail extension. Both are shown here and provide similar functionality with one major difference. The first method will install the extension system-wide and all users of SeaMonkey will have an Enigmail-enabled mail client. The method shown later only installs it on a per-user basis. The first method must be accomplished now (before the object directory is removed) and uses the conventional make install command to install the Enigmail files straight from the distribution directory of the object directory. The alternate method is shown as it installs using the .xpi file created earlier and can be done later (at any time you desire) as the file used to install Enigmail was copied into /usr/lib/seamonkey-1.1/xpi_store in the previous step. This method can be used to install any downloaded Mozilla extension distributed in a .xpi file. There are many extensions available for SeaMonkey. A list containing many of them can be found at http://extensionroom.mozdev.org/.

If you want to install the Enigmail extension now, which offers system-wide access, issue the following commands as the root user:

make -C ../seamonkey-build/mailnews/extensions/enigmail install

To install an extension from a created or download .xpi file, you simply need to “open” the .xpi file using the “Open File” option of the “File” menu of the browser window. You can browse to find the file (for example, the Enigmail .xpi file is located in /usr/lib/seamonkey-1.1/xpi_store), select it, then follow the prompts to install the extension.

Note

You should run /usr/bin/seamonkey once as the root user (or any user with write privileges) to create some necessary additional files in the /usr hierarchy. Also do this each time you install additional system-wide extensions.

Additional .mozconfig Options

Information about some of the additional options which can be added to the .mozconfig configuration file is shown below. Note that this is just a few of the options. You may wish to run ./configure --help and review each of the listed options to discover what affect they have on the build. Feel free to add or remove options to tailor the build to your desires. Listed below are some common options not in the default .mozconfig file but can be added in order to have the described effect on the SeaMonkey compile.

ac_add_options --enable-elf-dynstr-gc: Removes un-referenced strings from ELF shared objects generated during the build. Note that this option breaks the build on alpha.

ac_add_options --disable-mailnews: Disables the mail and news clients.

ac_add_options --disable-ldap: Disables LDAP support, recommended if mail is disabled.

ac_add_options --enable-xterm-updates: Displays the current command in the xterm window title during the compilation.

ac_add_options --enable-plaintext-editor-only: Disables support for HTML editing. Do not use this switch if you are building the mail-news component.

.mozconfig Option Explanations

To simplify reading the options below, they are labeled without ac_add_options inserted at the beginning of the option. These options are also described in the .mozconfig file created earlier.

mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/../seamonkey-build: Creates an object directory and specifies to build the package in that directory. If desired, modify the location of the object directory to a directory inside the source tree by removing “../” from the line.

--enable-application=suite: Identifies the build as a SeaMonkey suite build.

--with-system-zlib --with-system-png --with-system-jpeg --enable-system-cairo: Uses the system-installed versions of these packages.

--enable-xinerama --enable-reorder --enable-strip --enable-cpp-rtti --disable-accessibility --disable-tests --disable-logging --disable-pedantic --disable-installer: Various options that affect what components are built and some optimization options. You can pick and choose from these options. More information on them, and many other available options, can be found by running ./configure --help.

Command Explanations

make -f client.mk ...: Mozilla products are packaged to allow the use of a configuration file which can be used to pass the configuration settings to the configure command. make uses the client.mk file to get initial configuration and setup parameters, then depending on the target parameter (build or install), either runs the configure script and compiles the package or installs the package.

./makemake -r: This command is used to recursively create Makefiles in the appropriate subdirectory of seamonkey-build.

make -C ... xpi: This command builds the Enigmail .xpi file which can be used to install Enigmail.

install .../movemail.rdf ...: This command is used to install a file inadvertently left out of the installation script.

Configuring SeaMonkey

No specific configuration is required as long as the seamonkey script is in the user's path. If SeaMonkey is installed in a non-standard location, then make a symlink to the seamonkey script in the /usr/bin directory.

Many applications look for netscape when they need to open a browser. You may make the following symlink for convenience (as the root user).

ln -v -sf seamonkey /usr/bin/netscape

For installing various SeaMonkey plugins, refer to Mozdev's PluginDoc Project. If you have JDK-1.5.0_10 already installed, create the following link as the root user to utilize the JAVA plugin:

ln -v -s $JAVA_HOME/jre/plugin/i386/ns7/libjavaplugin_oji.so \
    /usr/lib/seamonkey-1.1/plugins

Some packages install SeaMonkey plugins into the default system-wide directory /usr/lib/mozilla/plugins. If desired, create symbolic links in the SeaMonkey plugin directory /usr/lib/seamonkey-1.1/plugins to the files in the default plugin directory (you should link to the actual files and not other links). Alternatively, you can move or copy the files in the default plugin directory to the SeaMonkey plugin directory. An example of creating a symbolic link is shown below. Create the links as the root user:

ln -v -s ../../seamonkey/plugins/<plugin.so> \
    /usr/lib/seamonkey-1.1/plugins

Along with using the “Preferences” menu to configure SeaMonkey's options and preferences to suit individual tastes, finer grain control of many options is only available using a tool not available from the general menu system. To access this tool, you'll need to open a browser window and enter about:config in the address bar. This will display a list of the configuration preferences and information related to each one. You can use the “Filter:” bar to enter search criteria and narrow down the listed items. Changing a preference can be done using two methods. One, if the preference has a boolean value (True/False), simply double-click on the preference to toggle the value and two, for other preferences simply right-click on the desired line, choose “Modify” from the menu and change the value. Creating new preference items is accomplished in the same way, except choose “New” from the menu and provide the desired data into the fields when prompted.

Tip

There is a multitude of configuration parameters you can tweak to customize SeaMonkey. A very extensive and up-to-date list of these parameters can be found at http://preferential.mozdev.org/preferences.html.

Contents

Installed Programs: seamonkey and seamonkey-config
Installed Libraries: Numerous libraries, browser, and email/newsgroup components, plugins, extensions, and helper modules installed in /usr/lib/seamonkey-1.1
Installed Directories: /usr/include/seamonkey-1.1, /usr/lib/seamonkey-1.1, and /usr/share/idl/seamonkey-1.1

Short Descriptions

seamonkey

is a browser/email/newsgroup/chat client suite. The various components such as the Composer, mail-news client, IRC chat client, and address book can be accessed from the menu after seamonkey starts or via command-line switches to the seamonkey script. Issue man seamonkey for additional information.

Firefox-1.5.0.9

Introduction to Firefox

Firefox is a stand-alone browser based on the Mozilla codebase.

Package Information

Additional Downloads

Firefox Dependencies

Required

GTK+-2.8.20, libIDL-0.8.7, and Zip-2.32

Note: libjpeg should have been installed before GTK+ and should exist on your system. If for some reason you haven't installed libjpeg, you should remove the --with-system-jpeg option from the .mozconfig file created below.

Recommended (if you will be installing any other package that utilizes NSS/NSPR, such as Thunderbird, Mozilla, Evolution, or OpenOffice)

Optional

UnZip-5.52 and libgnomeui-2.14.1 (to build the gnomevfs extension)

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/firefox

Installation of Firefox

The configuration of Firefox is accomplished by creating a .mozconfig file containing the desired configuration options. A default .mozconfig is created below. To see the entire list of available configuration options (and an abbreviated description of each one), issue ./configure --help. If you are going to use system-installed versions of the NSS and NSPR libraries, ensure you uncomment the two lines near the bottom of the file. If you are going to build the OpenOffice package and you want to use this Firefox installation as the default Mozilla source, ensure you uncomment the --enable-ldap option in the file created below. You may also wish to review the entire file and uncomment any other desired options. If you would prefer to download the file instead of creating it by typing or cut-and-pasting, you can find it at http://anduin.linuxfromscratch.org/files/BLFS/firefox-1.5.0.9-mozconfig (the file must be installed in the root of the source tree mozilla directory, and named .mozconfig). Create the file by issuing the following command:

cat > .mozconfig << "EOF"
# This file contains the options used in the Firefox build. You may
# need to specify additional options for your specific build needs.
# Use the information provided by running './configure --help' to
# help you determine if you need to add any additional options.
# Some additional options can be added by uncommenting the examples
# in this file or adding options by inserting a line containing
# 'ac_add_options --some-option-you-need'.


# Use the default settings specified in the source tree
. $topsrcdir/browser/config/mozconfig

# Create an object directory and specify to build the package in that
# directory. If desired, modify the location of the object directory
# to a directory inside the source tree by removing '../' from the
# line below.
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/../firefox-build

# Specify the installation prefix. If you would prefer Firefox
# installed in a different prefix, modify the line below to fit
# your needs. You'll also need to modify some of the instructions in
# the BLFS book to point to your desired prefix.
ac_add_options --prefix=/usr

# These options are used so that the Firefox binaries are linked to
# the system-installed copies of the specified libraries instead of
# the source tree code which may not be the most recent versions.
ac_add_options --with-system-zlib
ac_add_options --with-system-png
ac_add_options --with-system-jpeg
ac_add_options --enable-system-cairo

# This option causes the installed binaries to have the official
# Firefox name embedded in them. Due to license restrictions, you
# may not distribute binaries created using this option.
ac_add_options --enable-official-branding

# This option specifies to include support for rendering the HTML
# <canvas></canvas> tag in the Firefox browser.
ac_add_options --enable-canvas

# This option is used to enable support for rendering SVG files in the
# Firefox browser. Comment out the line to disable the option.
ac_add_options --enable-svg

# This option is used so that the debugging symbols are removed from
# the installed binaries during the installation process. Comment out
# this option if you may have a need to retain the debugging symbols
# in the installed binaries. Note that this can substantially
# increase the size of the installed binaries.
ac_add_options --enable-strip

# This option is added so that test libraries and programs are not
# built. These would only be required for debugging purposes.
ac_add_options --disable-tests

# This option is added so that the Mozilla Installer program is not
# built or installed. The program is not required for a BLFS
# installation of Firefox.
ac_add_options --disable-installer

# This option is used to disable the a11y support in the Firefox
# binaries. Comment out this option if you require a11y support.
ac_add_options --disable-accessibility

# This option is used to enable source tree included LDAP support in
# the Firefox binaries.
###################################################################
#
# NOTE: You must uncomment this option if there is any chance of
# compiling the OpenOffice package from source code using this copy
# of Firefox for your Mozilla support.
#
###################################################################
#ac_add_options --enable-ldap

# Uncomment this option if you desire support for dual-monitor
# display of Firefox using the X-Window Xinerama libraries.
#ac_add_options --enable-xinerama

# These two options enable support for building Firefox with
# system-installed versions of the Network Security Services (NSS)
# and Netscape Portable Runtime (NSPR) libraries. Uncomment both
# lines to enable support for system-installed NSS/NSPR.
#ac_add_options --with-system-nss
#ac_add_options --with-system-nspr

# Complex scripts such as Thai can only be rendered in Firefox with the
# help of Pango. This option significantly slows rendering, so only use
# it if necessary.
#ac_add_options --enable-pango

# This option identifies the default binary directory of the Firefox
# installation and is used to locate Firefox's installed files. This
# option is not required for end-user browsing, and is only used for
# development purposes.
#ac_add_options --with-default-mozilla-five-home=/usr/lib/firefox-1.5.0.9

EOF

If you wish to use Pango for font rendering and have uncommented the appropriate option in .mozconfig, apply the following patch:

patch -Np1 -i ../firefox-1.5.0.9-pangoxft-1.patch

If you have system-installed Network Security Services (NSS) and Netscape Portable Runtime (NSPR) libraries and you uncommented the appropriate lines in the .mozconfig file to utilize them, apply the following patch:

patch -Np1 -i ../firefox-1.5.0.9-system_nss-1.patch

Compile Firefox by issuing the following commands:

sed -i "s/^    enum$/& xptinfo_enum_1/" \
    xpcom/reflect/xptinfo/public/xptinfo.h &&
make -f client.mk build

This package does not come with a test suite.

Now, as the root user, install the package:

make -f client.mk install &&

install -v -m755 -d /usr/lib/firefox-1.5.0.9/chrome/icons/default &&
ln -v -s ../../../icons/default.xpm \
    /usr/lib/firefox-1.5.0.9/chrome/icons/default &&

chown -v -R root:root \
    /usr/lib/firefox-1.5.0.9/extensions/inspector@mozilla.org/*

If you enabled LDAP support in the Firefox build, install some additional interface headers as the root user:

install -v -m644 ../firefox-build/dist/public/ldap-private/* \
    /usr/include/firefox-1.5.0.9/ldap

If you built Firefox utilizing system-installed NSS and NSPR libraries, the firefox-ns*.pc pkgconfig files are broken as they point to the wrong directories where the actual libraries and interface headers are located. Issue the following commands as the root user to replace the broken files with symbolic links to known good files:

ln -v -sf nss.pc /usr/lib/pkgconfig/firefox-nss.pc &&
ln -v -sf nspr.pc /usr/lib/pkgconfig/firefox-nspr.pc

If you did NOT build Firefox utilizing system-installed NSS and NSPR libraries, issue the following commands as the root user to install the NSS interface headers:

install -v -m755 -d /usr/include/firefox-1.5.0.9/nss &&
cp -v -Lf ../firefox-build/dist/{private,public}/nss/*.h \
    /usr/include/firefox-1.5.0.9/nss

Note

You should run /usr/bin/firefox once as the root user (or any user with write privileges) to create some necessary additional files in the /usr hierarchy.

Command Explanations

sed -i "s/^ enum$/& xptinfo_enum_1/" ...: This command is used to fix an anonymous enum in an external/public interface header file.

make -f client.mk ...: Mozilla products are packaged to allow the use of a configuration file which can be used to pass the configuration settings to the configure command. make uses the client.mk file to get initial configuration and setup parameters, then depending on the target parameter (build or install), either runs the configure script and compiles the package or installs the package.

install -v -m755 -d .../chrome/icons/default and ln -v -s ../../../icons/default.xpm ...: These two commands are used to create a symlink in the required directory so that the proper icon is displayed in the taskbar and when Firefox windows are minimized.

chown -v -R root:root ...: This command changes the ownership of some installed files to more appropriate user:group names.

Configuring Firefox

No specific configuration is required as long as the firefox script is in the user's path. If Firefox is installed in a non-standard location, then make a symlink to the firefox script in the /usr/bin directory.

If your Window or Desktop Manager does not allow you to configure a default mail client, you can add a configuration parameter to Firefox so that an email client will start when you click on a mailto: URL. There are two parameters you need to check. The procedure to check or modify any of the configuration parameters is quite simple and the instructions here can be used to view or modify any of the parameters.

First, open the configuration dialog by entering about:config in the address bar. This will display a list of the configuration preferences and information related to each one. You can use the “Filter:” bar to enter search criteria and narrow down the listed items. Changing a preference can be done using two methods. One, if the preference has a boolean value (True/False), simply double-click on the preference to toggle the value and two, for other preferences simply right-click on the desired line, choose “Modify” from the menu and change the value. Creating new preference items is accomplished in the same way, except choose “New” from the menu and provide the desired data into the fields when prompted.

The two configuration preference items you need to check so that Firefox uses a specified default mail client are the network.protocol-handler.external.mailto which should be set to True and the network.protocol-handler.app.mailto which should be set to the path of the desired mail client, e.g., /usr/bin/thunderbird.

Tip

There is a multitude of configuration parameters you can tweak to customize Firefox. A very extensive and up-to-date list of these parameters can be found at http://preferential.mozdev.org/preferences.html.

Many applications look for netscape when they need to open a browser. You may wish to make the following symlink for convenience (as the root user).

ln -v -sf firefox /usr/bin/netscape

For installing various Firefox plugins, refer to Mozdev's PluginDoc Project. If you have the JDK-1.5.0_10 already installed, create the following link as the root user to utilize the installed Java plugin:

ln -v -s $JAVA_HOME/jre/plugin/i386/ns7/libjavaplugin_oji.so \
    /usr/lib/firefox-1.5.0.9/plugins

Some packages install Mozilla plugins into the default system-wide directory /usr/lib/mozilla/plugins. If desired, create symbolic links in the Firefox plugin directory /usr/lib/firefox-1.5.0.9/plugins to the files in the default plugin directory (you should link to the actual files and not other links). Alternatively, you can move or copy the files in the default plugin directory to the Firefox plugin directory. An example of creating a symbolic link is shown below. Create the links as the root user:

ln -v -s ../../mozilla/plugins/<plugin.so> \
    /usr/lib/firefox-1.5.0.9/plugins

Contents

Installed Programs: firefox and firefox-config
Installed Libraries: Numerous libraries, browser components, plugins, extensions, and helper modules installed in /usr/lib/firefox-1.5.0.9
Installed Directories: /usr/include/firefox-1.5.0.9, /usr/lib/firefox-1.5.0.9, and /usr/share/idl/firefox-1.5.0.9

Short Descriptions

firefox

is a shell script that sets up the environment and calls the firefox-bin binary.

firefox-config

determines the compile and linker flags that should be used to compile and link programs that use Firefox libraries and browser components.

Galeon-2.0.1

Introduction to Galeon

The Galeon package contains a GNOME-2 browser that utilizes the mozilla.org Gecko layout engine and presents the simplest interface possible for a browser.

Package Information

Galeon Dependencies

Required

libgnomeui-2.14.1 and a mozilla.org Gecko layout engine (SeaMonkey-1.1 or Firefox-1.5.0.9 or Thunderbird-1.5.0.9 or Mozilla)

Optional

GNOME Desktop-2.14.3, libgtkhtml-2.11.0, and ISO Codes-0.58-1

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/galeon

Installation of Galeon

Compiling must be done with the same compiler version and optimization settings that were used to compile the Gecko layout engine package.

Install Galeon by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --sysconfdir=/etc/gnome/2.14.3 \
            --localstatedir=/var/lib \
            --mandir=$(pkg-config \
                --variable=prefix ORBit-2.0)/share/man &&
make

This package does not come with a test suite.

Now, as the root user:

make install &&
install -v -m755 -d $(pkg-config \
        --variable=prefix ORBit-2.0)/share/doc/galeon-2.0.1 &&
install -v -m644 FAQ README* doc/*.txt $(pkg-config \
        --variable=prefix ORBit-2.0)/share/doc/galeon-2.0.1 &&
ln -v -s ../../$PACKAGE_NAME/FAQ.html $(pkg-config \
        --variable=prefix ORBit-2.0)/share/doc/galeon-2.0.1

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--sysconfdir=/etc/gnome/2.14.3: This parameter causes the configuration files to be installed in /etc/gnome/2.14.3 instead of $GNOME_PREFIX/etc. Additionally (if applicable), the parameter ensures that the GConf-2 database is correctly updated.

--localstatedir=/var/lib: This parameter is used so that all ScrollKeeper files are installed in, and the ScrollKeeper database is properly updated in /var/lib/scrollkeeper instead of some files being installed in $GNOME_PREFIX/var/scrollkeeper.

--mandir=$(pkg-config --variable=prefix ORBit-2.0)/share/man: This parameter causes the man.(X) files to be installed in $GNOME_PREFIX/share/man/man(X) instead of $GNOME_PREFIX/man/man(X).

Contents

Installed Programs: galeon and galeon-config-tool
Installed Libraries: None
Installed Directories: The following subdirectories of $GNOME_PREFIX/share/: galeon, {gnome/help, omf, sounds}/galeon

Short Descriptions

galeon

is a GNOME-2 web browser using a Gecko-based rendering/security/networking engine.

galeon-config-tool

clears settings, installs schemas, removes schemas and fixes permissions in the GConf database.

Konqueror-3.5.6

konqueror is the default graphical web browser for the KDE desktop environment. It is packaged and installed with kdebase-3.5.6.

Dillo-0.8.5

Introduction to Dillo

Dillo is a fast, small footprint graphical browser. Version 0.8.5 is now considered a very stable beta. Dillo does not support Java, JavaScript or CSS, and the current version does not support FTP, HTTPS or frames. It is, however, very fast and so is useful on older, slower machines. It supports downloads and can support cookies.

Caution

Dillo always interprets web pages as if they had the ISO-8859-1 encoding. Thus, it is useless for reading non-English web pages.

Package Information

Dillo Dependencies

Required

GTK+-1.2.10

Optional

OpenSSL-0.9.8d and Electric Fence

Optional (Run-Time Requirement for FTP Downloading)

Wget-1.10.2

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/dillo

Installation of Dillo

Support for secure connections is considered experimental by Dillo's author. If you want the optional HTTPS support for Dillo and have OpenSSL-0.9.8d installed, run the following command:

sed -i -e "/#undef ENABLE_SSL/d" dpi/https.c

Install Dillo by running the following commands:

./configure --prefix=/usr --sysconfdir=/etc/dillo &&
make

This package does not come with a test suite.

Now, as the root user:

make install &&
install -d -v -m755 /usr/share/doc/dillo-0.8.5 &&
install -v -m644 doc/{README,*.txt} /usr/share/doc/dillo-0.8.5

Configuring Dillo

Config Files

/etc/dillo/dillorc, /etc/dillo/dpidrc, and ~/.dillo/*

Configuration Information

Dillo stores its configuration in the system wide /etc/dillo/dillorc file and the ~/.dillo directory which is created automatically when dillo is run for the first time. Note that cookies are turned off by default. To enable cookies, edit the ~/.dillo/cookiesrc file.

Contents

Installed Programs: dillo, dpid, and dpidc
Installed Libraries: None
Installed Directories: ~/.dillo, /etc/dillo, /usr/share/doc/dillo-0.8.5, and /usr/lib/dillo

Short Descriptions

dillo

is a GTK+ graphical WWW browser with limited facilities, but a small footprint and runs fast on slower machines.

dpid

is a Dillo plugin daemon.

dpidc

is a control program for dpid.

Chapter 37. Other X-based Internet Programs

The Internet isn't just about browsing. Here are more graphical applications that utilize other areas of the Internet.

Thunderbird-1.5.0.9

Introduction to Thunderbird

Thunderbird is a stand-alone mail/news client based on the Mozilla codebase.

Package Information

Additional Downloads

To enable the Enigmail extension to the Thunderbird mail client, you'll need to download the tarball shown below. The Enigmail extension allows users to access the authentication and encryption features provided by the GnuPG package. The Enigmail extension will not operate correctly unless you have GnuPG-1.4.3 installed.

Thunderbird Dependencies

Required

GTK+-2.8.20, libIDL-0.8.7, and Zip-2.32

Note: libjpeg should have been installed before GTK+ and should exist on your system. If for some reason you haven't installed libjpeg, you should remove the --with-system-jpeg option from the .mozconfig file created below.

Recommended (if you will be installing any other package that utilizes NSS/NSPR, such as Firefox, Mozilla, Evolution, or OpenOffice)

Optional

UnZip-5.52 and libgnomeui-2.14.1 (to build the gnomevfs extension)

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/Thunderbird

Installation of Thunderbird

The configuration of Thunderbird is accomplished by creating a .mozconfig file containing the desired configuration options. A default .mozconfig is created below. To see the entire list of available configuration options (and an abbreviated description of each one), issue ./configure --help. If you are going to use system-installed versions of the NSS and NSPR libraries, ensure you uncomment the two lines near the bottom of the file. You may also wish to review the entire file and uncomment any other desired options. If you would prefer to download the file instead of creating it by typing or cut-and-pasting, you can find it at http://anduin.linuxfromscratch.org/files/BLFS/thunderbird-1.5.0.9-mozconfig (the file must be installed in the root of the source tree mozilla directory, and named .mozconfig). Create the file by issuing the following command:

cat > .mozconfig << "EOF"
# This file contains the options used in the Thunderbird build. You may
# need to specify additional options for your specific build needs.
# Use the information provided by running './configure --help' to
# help you determine if you need to add any additional options.
# Some additional options can be added by uncommenting the examples
# in this file or adding options by inserting a line containing
# 'ac_add_options --some-option-you-need'.


# Use the default settings specified in the source tree
. $topsrcdir/mail/config/mozconfig

# Create an object directory and specify to build the package in that
# directory. If desired, modify the location of the object directory
# to a directory inside the source tree by removing '../' from the
# line below.
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/../thunderbird-build

# Specify the installation prefix. If you would prefer Thunderbird
# installed in a different prefix, modify the line below to fit
# your needs. You'll also need to modify some of the instructions in
# the BLFS book to point to your desired prefix.
ac_add_options --prefix=/usr

# These options are used so that the Thunderbird binaries are linked to
# the system-installed copies of the specified libraries instead of
# the source tree code which may not be the most recent versions.
ac_add_options --with-system-zlib
ac_add_options --with-system-png
ac_add_options --with-system-jpeg
ac_add_options --enable-system-cairo

# This option causes the installed binaries to have the official
# Thunderbird name embedded in them. Due to license restrictions, you
# may not distribute binaries created using this option.
ac_add_options --enable-official-branding

# This option specifies to include support for rendering the HTML
# <canvas></canvas> tag in the Thunderbird mail client.
#ac_add_options --enable-canvas

# This option is used so that the debugging symbols are removed from
# the installed binaries during the installation process. Comment out
# this option if you may have a need to retain the debugging symbols
# in the installed binaries. Note that this can substantially
# increase the size of the installed binaries.
ac_add_options --enable-strip

# This option is added so that test libraries and programs are not
# built. These would only be required for debugging purposes.
ac_add_options --disable-tests

# This option is added so that the Mozilla Installer program is not
# built or installed. The program is not required for a BLFS
# installation of Thunderbird.
ac_add_options --disable-installer

# This option is used to disable the a11y support in the Thunderbird
# binaries. Comment out this option if you require a11y support.
ac_add_options --disable-accessibility

# This option is used to enable source tree included LDAP support in
# the Thunderbird binaries.
ac_add_options --enable-ldap

# This option is used to enable support for rendering SVG files in the
# Thunderbird mail client. Uncomment the line below to enable the option.
#ac_add_options --enable-svg

# Uncomment this option if you desire support for dual-monitor
# display of Thunderbird using the X-Window Xinerama libraries.
#ac_add_options --enable-xinerama

# Complex scripts such as Thai can only be rendered in Thunderbird with
# the help of Pango. This option significantly slows rendering, so only
# use it if necessary.
#ac_add_options --enable-pango

# These two options enable support for building Thunderbird with
# system-installed versions of the Network Security Services (NSS)
# and Netscape Portable Runtime (NSPR) libraries. Uncomment both
# lines to enable support for system-installed NSS/NSPR.
#ac_add_options --with-system-nss
#ac_add_options --with-system-nspr

# This option identifies the default binary directory of the Thunderbird
# installation and is used to locate Thunderbird's installed files. This
# option is not required for end-user use, and is only used for
# development purposes.
#ac_add_options --with-default-mozilla-five-home=/usr/lib/thunderbird-1.5.0.9

EOF

If you wish to use Pango for font rendering and have uncommented the appropriate option in .mozconfig, apply the following patch:

patch -Np1 -i ../thunderbird-1.5.0.9-pangoxft-1.patch

If you have system-installed Network Security Services (NSS) and Netscape Portable Runtime (NSPR) libraries and you uncommented the appropriate lines in the .mozconfig file to utilize them, apply the following patch:

patch -Np1 -i ../thunderbird-1.5.0.9-system_nss-1.patch

Compile Thunderbird by issuing the following commands:

sed -i "s/^    enum$/& xptinfo_enum_1/" \
    xpcom/reflect/xptinfo/public/xptinfo.h &&
make -f client.mk build

This package does not come with a test suite.

If you're building the Enigmail extension, issue the following commands:

tar -xf ../enigmail-0.94.2.tar.gz -C mailnews/extensions &&
( cd mailnews/extensions/enigmail && ./makemake -r ) &&

make -C ../thunderbird-build/mailnews/extensions/enigmail &&
make -C ../thunderbird-build/mailnews/extensions/enigmail \
        XPIFILE=enigmail.xpi xpi

Install Thunderbird by running the following commands as the root user:

make -f client.mk install &&

install -v -m644 ../thunderbird-build/dist/public/ldap-private/* \
    /usr/include/thunderbird-1.5.0.9/ldap &&

install -v -m755 -d /usr/lib/thunderbird-1.5.0.9/defaults/isp/US &&
install -v -m644 mailnews/base/ispdata/movemail.rdf \
                 mail/extensions/newsblog/rss.rdf \
    /usr/lib/thunderbird-1.5.0.9/defaults/isp &&
ln -v -s ../{movemail,rss}.rdf \
    /usr/lib/thunderbird-1.5.0.9/defaults/isp/US

If you built Thunderbird utilizing system-installed NSS and NSPR libraries, the thunderbird-ns*.pc pkgconfig files are broken as they point to the wrong directories where the actual libraries and interface headers are located. Issue the following commands as the root user to replace the broken files with symbolic links to known good files:

ln -v -sf nss.pc /usr/lib/pkgconfig/thunderbird-nss.pc &&
ln -v -sf nspr.pc /usr/lib/pkgconfig/thunderbird-nspr.pc

If you did NOT build Thunderbird utilizing system-installed NSS and NSPR libraries, issue the following commands as the root user to install the NSS interface headers:

install -v -m755 -d /usr/include/thunderbird-1.5.0.9/nss &&
cp -v -Lf ../thunderbird-build/dist/{private,public}/nss/*.h \
    /usr/include/thunderbird-1.5.0.9/nss

If you built the Enigmail extension, issue the following commands as the root user to install the .xpi file:

install -v -m644 -D ../thunderbird-build/dist/bin/enigmail.xpi \
    /usr/lib/thunderbird-1.5.0.9/xpi_store/enigmail.xpi

If you want to install Enigmail globally so that all users who run Thunderbird will have access to the extension, issue the command shown below. Note that this procedure starts an instance of Thunderbird and you must have an X server running. Issue the following command as the root user:

/usr/bin/thunderbird -install-global-extension \
    /usr/lib/thunderbird-1.5.0.9/xpi_store/$ENIGMAIL_FILENAME

Global installation of other extensions can be done using the same basic method as the Enigmail extension. See the “Configuring Thunderbird” section below for information about configuring Enigmail for individual users if you did not not install it globally.

Note

You should run /usr/bin/thunderbird once as the root user (or any user with write privileges) to create some necessary additional files in the /usr/lib/thunderbird-1.5.0.9 directory.

Command Explanations

sed -i "s/^ enum$/& xptinfo_enum_1/" ...: This command is used to fix an anonymous enum in an external/public interface header file.

make -f client.mk ...: Mozilla products are packaged to allow the use of a configuration file which can be used to pass the configuration settings to the configure command. make uses the client.mk file to get initial configuration and setup parameters, then depending on the target parameter (build or install), either runs the configure script and compiles the package or installs the package.

( cd mailnews/... && ./makemake -r ): This command is used to recursively create Makefiles in the enigmail directory.

make -C ... xpi: This command builds the Enigmail .xpi file which is used to install Enigmail.

install .../movemail.rdf .../rss.rdf ...: These commands are used to install two files inadvertently left out of the installation script.

Configuring Thunderbird

Configuration Information

No specific configuration is required as long as the thunderbird script is in the user's path. If Thunderbird is installed in a non-standard location, then make a symlink to the thunderbird script in the /usr/bin directory.

If you don't have privileges to install extensions globally, or you prefer to not install global extensions, you can configure Thunderbird on an individual user basis for access to extensions. For example, if you built the Enigmail extension and did not install it globally, it can be installed on an as-needed basis for each user of the system who may use Thunderbird. It is accomplished through the ThunderbirdTools” menu. Choose the “Extensions” – “Install” option and fill in the “Look in:” field with /usr/lib/thunderbird-1.5.0.9/xpi_store. You'll then see the enigmail-0.94.2-linux-????.xpi file listed. Choose this file and click on “Open”, then click on “Install now”. The Enigmail extension will install and you will be prompted to restart Thunderbird.

If your Window or Desktop Manager does not allow you to configure a default browser, you can add a configuration parameter to Thunderbird so that a browser will start when when you click on an Internet/intranet/local URL. The procedure to check or modify any of the configuration parameters is quite simple and the instructions here can be used to view or modify any of the parameters.

First, open the configuration dialog by opening the “Edit” drop-down menu. Choose “Preferences” and then click on the “Advanced” icon on the top menu bar. Choose the “General” tab and click on the “Config Editor” button. This will display a list of the configuration preferences and information related to each one. You can use the “Filter:” bar to enter search criteria and narrow down the listed items. Changing a preference can be done using two methods. One, if the preference has a boolean value (True/False), simply double-click on the preference to toggle the value and two, for other preferences simply right-click on the desired line, choose “Modify” from the menu and change the value. Creating new preference items is accomplished in the same way, except choose “New” from the menu and provide the desired data into the fields when prompted.

The configuration preference item you need to check so that Thunderbird uses a specified browser is the network.protocol-handler.app.http which should be set to the path of the desired browser, e.g., /usr/bin/firefox.

Tip

There is a multitude of configuration parameters you can tweak to customize Thunderbird. A very extensive and up-to-date list of these parameters can be found at http://preferential.mozdev.org/preferences.html.

Contents

Installed Programs: thunderbird and thunderbird-config
Installed Libraries: Numerous libraries, email/newsgroups components, plugins, extensions, and helper modules installed in /usr/lib/thunderbird-1.5.0.9
Installed Directories: /usr/include/thunderbird-1.5.0.9, /usr/lib/thunderbird-1.5.0.9, and /usr/share/idl/thunderbird-1.5.0.9

Short Descriptions

thunderbird

is Mozilla's next-generation email and newsgroup client.

Pan-0.14.2

Introduction to Pan

The Pan package contains a graphical newsreader. This is useful for reading and writing news, threading articles and replying via email.

Package Information

Pan Dependencies

Required

GTK+-2.8.20, GNet-2.0.7, intltool-0.34.2 and libxml2-2.6.26

Optional

gtkspell-2.0.4

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/pan

Installation of Pan

Install Pan by running the following commands:

./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Contents

Installed Program: pan
Installed Libraries: None
Installed Directories: /usr/share/gnome/apps/Internet

Short Descriptions

pan

is a graphical newsreader.

Balsa-2.3.13

Introduction to Balsa

The Balsa package contains a GNOME-2 based mail client.

Package Information

  • Download (HTTP): http://balsa.gnome.org/balsa-2.3.13.tar.bz2

  • Download (FTP):

  • Download MD5 sum: a1c7fe3454243f1719a19fcdb0905948

  • Download size: 2.4 MB

  • Estimated disk space required: 52.2 MB

  • Estimated build time: 0.7 SBU

Balsa Dependencies

Required

libgnomeui-2.14.1, libgnomeprintui-2.12.1, ScrollKeeper-0.3.14, Aspell-0.60.4, and GMime-2.2.2

Recommended

Optional

libgtkhtml-2.11.0, gtksourceview-1.6.2, OpenSSL-0.9.8d, OpenLDAP-2.3.27, PCRE-6.7, Compface-1.4, GtkSpell (provides on-the-fly as you type spell checking), an MTA (that provides a sendmail command), Heimdal-0.7.2 or MIT Kerberos V5-1.6, and SQLite

Optional to Build Experimental S/MIME Support

Libksba, GnuPG-1.9.x, and GPGME

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/balsa

Installation of Balsa

Install Balsa by running the following commands:

./configure --prefix=$(pkg-config --variable=prefix ORBit-2.0) \
            --sysconfdir=/etc/gnome/2.14.3 \
            --localstatedir=/var/lib \
            --mandir=$(pkg-config --variable=prefix \
                    ORBit-2.0)/share/man \
            --with-gtkhtml=no &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--prefix=$(pkg-config --variable=prefix ORBit-2.0): Setting the prefix using this parameter instead of with $GNOME_PREFIX will ensure that the prefix is consistent with the installation environment and the package will be installed in the correct location.

--sysconfdir=/etc/gnome/2.14.3: This parameter causes the configuration files to be installed in /etc/gnome/2.14.3 instead of $GNOME_PREFIX/etc. Additionally (if applicable), the parameter ensures that the GConf-2 database is correctly updated.

--localstatedir=/var/lib: This parameter is used so that all ScrollKeeper files are installed in, and the ScrollKeeper database is properly updated in /var/lib/scrollkeeper instead of some files being installed in $GNOME_PREFIX/var/scrollkeeper.

--mandir=$(pkg-config --variable=prefix ORBit-2.0)/share/man: This parameter causes the man.(X) files to be installed in $GNOME_PREFIX/share/man/man(X) instead of $GNOME_PREFIX/man/man(X).

--with-gtkhtml=no: This parameter is used if you don't have libgtkhtml installed. Remove this parameter if the package is installed. Note that you won't be able to read or write HTML formatted mail messages if you use this parameter.

--with-esmtp=no: Use this parameter if you don't have libESMTP installed.

--with-ssl: Use this option to enable SSL support if OpenSSL is installed.

--with-ldap: Use this option to enable LDAP address book support if OpenLDAP is installed.

--with-sqlite: Use this option to enable SQLite address book support if SQLite is installed.

--with-gpgme: Use this option to enable GPG support if “GnuPG Made Easy” (GPGME) is installed.

--enable-smime: Use this option to enable S/MIME support if Libksba and GnuPG-1.9.x is installed.

Configuring Balsa

Configuration Information

All configuration of Balsa is done through the Balsa menu system, with mailbox configuration done with the Settings—>Preferences menu.

If you are unable to connect to your ISP, they probably don't support APOP. Disable it in Settings/Preferences/POP3/advanced.

If you enable filters for your incoming POP3 mail, you must have Procmail-3.22 installed, as the incoming mail will be handed off to procmail for processing.

Contents

Installed Programs: balsa and balsa-ab
Installed Libraries: None
Installed Directories: The following subdirectories of $GNOME_PREFIX/share/: {gnome/help, omf, sounds}/balsa

Short Descriptions

balsa

is a GNOME-2 based mail client.

Gaim-1.5.0

Introduction to Gaim

Gaim is an instant messaging client that can connect with a wide range of networks including AIM, ICQ, MSN, Jabber, IRC, Napster, Gadu-Gadu, Zephyr and Yahoo!

Package Information

Gaim Dependencies

Required

GTK+-2.8.20

Optional

libao-0.8.6, GnuTLS (requires libgpg-error and libgcrypt in that order), Gtkspell, Tcl-8.4.13, Tk-8.4.13, startup-notification-0.8, Audio File-0.2.6, D-BUS-0.62, MIT Kerberos V5-1.6, NAS-1.7, Doxygen-1.4.6, and Avahi

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gaim

Installation of Gaim

To connect with MSN you will need to compile Gaim with SSL support. For this you will need to have already installed libgpg-error, libgcrypt and GnuTLS compiled in that order. Use of the Mozilla SSL library is deprecated.

To compile Gaim with audio support, first install libao-0.8.6.

Compile Gaim by running the following commands:

./configure --prefix=/usr &&
make

If you want to compile Gaim with support for NAS-1.7, configure it like this:

CPPFLAGS="-I/usr/X11R6/include" ./configure --prefix=/usr \
    --enable-nas &&
make

To test the results, issue: make check.

Now, as the root user:

make install

Command Explanations

CPPFLAGS=...--enable-nas: To avoid a compilation error the configure script needs to be told to look for the NAS header files in /usr/X11R6/include.

Contents

Installed Programs: gaim and gaim-remote
Installed Library: libgaim-remote.so
Installed Directories: /usr/include/gaim, /usr/lib/gaim, /usr/share/pixmaps/gaim, and /usr/share/sounds/gaim

Short Descriptions

gaim

is an instant messaging client

gaim-remote

is a command-line interface for controlling an already running instance of gaim

libgaim-remote.so

contains functions that are used by gaim-remote

XChat-2.6.2

Introduction to XChat

XChat is an IRC chat program. It allows you to join multiple IRC channels (chat rooms) at the same time, talk publicly, have private one-on-one conversations, etc. File transfers are also possible.

Package Information

XChat Dependencies

Required

GLib-2.10.3

Recommended

Optional

D-BUS-0.62, OpenSSL-0.9.8d, Python-2.4.4, and Tcl-8.4.13

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/xchat

Installation of XChat

Install XChat by running the following commands:

./configure --prefix=/usr &&
make

XChat does not come with a test suite.

Now, as the root user:

make install

Contents

Installed Programs: xchat and xchat-remote
Installed Libraries: xchat plugins
Installed Directory: /usr/lib/xchat

Short Descriptions

xchat

is a graphical Internet Relay Chat (IRC) client.

xchat-remote

is a program for remote access XChat using DBUS.

Part XI. Multimedia

Chapter 38. Multimedia Libraries and Drivers

Many multimedia programs require libraries and/or drivers in order to function properly. The packages in this section fall into this category. Generally you only need to install these if you are installing a program which has the library listed as either a requirement, or as an option to enable it to support certain functionality.

ALSA-1.0.13

The Linux kernel now provides ALSA support by default. However, applications need to interface to that capability. The following five sections of the book deal with the five separate components of ALSA: the libraries, the utilities, the tools, the firmware and the OSS compatibility libraries.

ALSA Library-1.0.13

Introduction to ALSA Library

The ALSA Library package contains the ALSA library. This is used by programs (including ALSA Utilities) requiring access to the ALSA sound interface.

Package Information

ALSA Library Dependencies

Optional

Doxygen-1.4.6 and resmgr

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/alsa-lib

Kernel Configuration

In the Device Drivers ⇒ Sound ⇒ Advanced Linux Sound Architecture section of the kernel configuration, select the settings and drivers appropriate for your hardware. Ensure that the deprecated Device Drivers ⇒ Sound ⇒ Open Sound System is not selected. If necessary, recompile and install your new kernel.

Installation of ALSA Library

Install ALSA Library by running the following commands:

./configure --enable-static &&
make

This package does not come with a test suite.

Now, as the root user:

make install &&
install -v -m644 -D doc/asoundrc.txt \
    /usr/share/doc/alsa-lib-1.0.13/asoundrc.txt

If you have Doxygen installed and you wish to build the library API documentation, run the following commands from the top-level directory of the source tree:

make doc

Now, as the root user:

install -v -d -m755 /usr/share/doc/alsa-1.0.13/html &&
install -v -m644 doc/doxygen/html/* /usr/share/doc/alsa-1.0.13/html

Command Explanations

--enable-static: This switch is used to enable building the static library as some programs link against it.

Configuring ALSA Library

Config Files

~/.asoundrc, /etc/asound.conf, /usr/share/alsa/alsa.conf, and /usr/share/alsa/{cards,pcm}/*.conf

Configuration Information

The default alsa.conf is adequate for most installations. For extra functionality and/or advanced control of your sound device, you may need to create additional configuration files. For information on the available configuration parameters, visit http://www.alsa-project.org/alsa-doc/doc-php/asoundrc.php.

Contents

Installed Programs: aserver
Installed Library: libasound.{so,a} and smixer-*.{so,a}
Installed Directories: /usr/include/alsa, /usr/lib/alsa-lib, /usr/share/alsa and /usr/share/doc/alsa-lib-1.0.13

Short Descriptions

aserver

provides the ALSA server.

libasound.{so,a}

provides ALSA functions for application programs.

smixer-*.{so,a}

provides hardware dependent ALSA mixer functions.

ALSA Plugins-1.0.13

Introduction to ALSA Plugins

The ALSA Plugins package contains plugins for various audio libraries and sound servers.

Note

The ALSA Plugins package has not been tested by the BLFS editors.

Package Information

ALSA Plugins Dependencies

Required

pkg-config-0.20 and ALSA Library-1.0.13

Optional

FFmpeg-0.4.9-pre1, JACK, PulseAudio, Secret Rabbit Code (a.k.a. libsamplerate)

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/alsa-plugins

Installation of ALSA Plugins

Install ALSA Plugins by running the following commands:

./configure &&
make

This package does not come with a test suite.

Now, as the root user:

make install &&
install -v -m755 -d /usr/share/doc/alsa-plugins-1.0.13 &&
install -v -m644 doc/{README*,*.txt} \
                    /usr/share/doc/alsa-plugins-1.0.13

Contents

Installed Programs: None
Installed Libraries: Numerous libasound_module_<module>.so modules including ctl_oss, pcm_oss, pcm_upmix, pcm_vdownmix and optionally ctl_pulse, pcm_pulse, pcm_a52, pcm_jack and rate_samplerate*
Installed Directory: /usr/share/doc/alsa-plugins-1.0.13

Short Descriptions

libasound_module_pcm_oss.so

Allows native ALSA applications to run on OSS.

libasound_module_pcm_upmix.so

Allows upmixing sound to 4 or 6 channels.

libasound_module_pcm_vdownmix.so

Allows downmixing sound from 4-6 channels to 2 channel stereo output.

libasound_module_pcm_jack.so

Allows native ALSA applications to work with jackd.

libasound_module_pcm_pulse.so

Allows native ALSA applications to access a PulseAudio sound daemon.

libasound_module_pcm_a52.so

Converts S16 linear sound format to A52 compressed format and sends it to an SPDIF output.

libasound_module_rate_samplerate.so

Provides an external rate converter through libsamplerate.

ALSA Utilities-1.0.13

Introduction to ALSA Utilities

The ALSA Utilities package contains various utilities which are useful for controlling your sound card.

Package Information

ALSA Utilities Dependencies

Required

ALSA Library-1.0.13

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/alsa-utils

Installation of ALSA Utilities

Install ALSA Utilities by running the following commands:

./configure &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Configuring ALSA Utilities

Config Files

/etc/asound.state

Configuration Information

Use a bootscript to store the values at shutdown.

As the root user, install the init script /etc/rc.d/init.d/alsa included in the blfs-bootscripts-20060910 package.

make install-alsa

Note that all channels of your sound card are muted by default. You can use the alsamixer program from the ALSA Utilities to change this. Use speaker-test to check that your settings have been applied correctly.

The first time the alsactl program is run from the udev rule below, it will complain that there is no state in /etc/asound.state. You can prevent this by running the following commands as the root user:

touch /etc/asound.state &&
alsactl store

The volume settings will be restored from the saved state by Udev when the device is detected (during boot or when plugged in for USB devices).

As the root user, install a new Udev rules file to create the audio device nodes and run the restore script:

cat > /etc/udev/rules.d/40-alsa.rules << "EOF"
# /etc/udev/rules.d/40-alsa.rules

# When a sound device is detected, restore the volume settings
KERNEL=="controlC[0-9]*", ACTION=="add", RUN+="/usr/sbin/alsactl restore %n"
EOF
chmod -v 644 /etc/udev/rules.d/40-alsa.rules

Contents

Installed Programs: aconnect, alsaconf, alsactl, alsamixer, amidi, amixer, aplay, aplaymidi, arecord, arecordmidi, aseqnet, aseqdump, iecset, and speaker-test
Installed Libraries: None
Installed Directories: None

Short Descriptions

aconnect

is a utility for connecting and disconnecting two existing ports in the ALSA sequencer system.

alsaconf

is a configuration tool which tries to detect the sound cards on your system and write a suitable configuration file for ALSA. This program is incompatible with udev and hotplug.

alsactl

is used to control advanced settings for the ALSA sound card drivers.

alsamixer

is an ncurses-based mixer program for use with the ALSA sound card drivers.

amidi

is used to read from and write to ALSA RawMIDI ports.

amixer

allows command-line control of the mixers for the ALSA sound card drivers.

aplay

is a command-line soundfile player for the ALSA sound card drivers.

aplaymidi

is a command-line utility that plays the specified MIDI file(s) to one or more ALSA sequencer ports.

arecord

is a command-line soundfile recorder for the ALSA sound card drivers.

arecordmidi

is a command-line utility that records a standard MIDI file from one or more ALSA sequencer ports.

aseqdump

is a command-line utility that prints the sequencer events it receives as text.

aseqnet

is an ALSA sequencer client which sends and receives event packets over a network.

iecset

is a small utility to set or dump the IEC958 (or so-called “S/PDIF”) status bits of the specified sound card via the ALSA control API.

speaker-test

is a command-line speaker test tone generator for ALSA.

ALSA Tools-1.0.13

Introduction to ALSA Tools

The ALSA Tools package contains advanced tools for certain sound cards.

Note

The ALSA Tools package has not been tested by the BLFS editors.

Package Information

ALSA Tools Dependencies

Required

ALSA Library-1.0.13

Optional

pkg-config-0.20 and GTK+-2.8.20 or GTK+-1.2.10 (to build echomixer, envy24control and rmedigicontrol), FLTK (to build hdspconf and hdspmixer), and Qt-3.3.7 (to build qlo10k1).

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/alsa-tools

Installation of ALSA Tools

The ALSA Tools package is only needed by those with advanced requirements for their sound card. The tools are not all built together, instead you need to cd into the directory of each tool you wish to compile and run the following commands:

./configure --prefix=/usr &&
make

The ac3dec tool comes with a test suite, but it is not functional since it does not contain the reference results for the dither_test program.

Now, as the root user:

make install

Contents

Installed Programs: ac3dec, extract_ac3, as10k1, dl10k1, echomixer, envy24control, hdspconf, hdsploader, hdspmixer, init_audigy, init_audigy_eq10, init_live, lo10k1, ld10k1, ld10k1d, mixartloader, pcxhrloader, qlo10k1, rmedigicontrol, cspctl, sbiload, sscape_ctl, us428control, usx2yloader, and vxloader
Installed Library: liblo10k1.so
Installed Directories: /usr/share/applications, /usr/share/pixmaps, /usr/include/lo10k1, /usr/share/ld10k1, and /usr/share/sounds

Short Descriptions

ac3dec

is a free AC-3 stream decoder.

extract_ac3

will take an MPEG-2 stream and produce AC-3 audio to stdout if it exists.

as10k1

is an assembler for the emu10k1 DSP chip present in the Creative SB Live, PCI 512, and emu APS sound cards. It is used to make audio effects such as a flanger, chorus or reverb.

echomixer

is the Linux equivalent of the Echoaudio console application from Echoaudio. It is a tool to control all the features of any Echoaudio soundcard. This includes clock sources, input and output gains, mixers, etc.

envy24control

is a control tool for Envy24 (ice1712) based sound cards.

hdspconf

is a GUI to control the Hammerfall HDSP Alsa Settings. Up to four hdsp cards are supported.

hdsploader

is used to load the firmware required by the Hammerfall HDSP sound cards.

hdspmixer

is the Linux equivalent of the Totalmix application from RME. It is a tool to control the advanced routing features of the RME Hammerfall DSP soundcard series.

ld10k1

is the server of a EMU10K{1,2} patch loader for ALSA.

lo10k1

is the client of a EMU10K{1,2} patch loader for ALSA.

dl10k1

loads config dumps generated by lo10k1 and ld10k1.

ld10k1d

is an init script for the ld10k1 patch loader.

qlo10k1

is a Qt GUI for the ld10k1 patch loader.

mixartloader

is a helper program to load the firmware binaries onto the Digigram's miXart board sound drivers. The following modules require this program: snd-mixart. These drivers don't work properly at all until the certain firmwares are loaded, i.e. no PCM nor mixer devices will appear.

pcxhrloader

is a helper program to load the firmware binaries onto Digigram's pcxhr compatible board sound drivers. The following modules require this program: snd-pcxhr. These drivers don't work properly at all until the certain firmwares are loaded, i.e. no PCM nor mixer devices will appear.

rmedigicontrol

is a control tool for RME Digi32 and RME Digi96 sound cards. It provides a graphical frontend for all the sound card controls and switches.

cspctl

is an SB16/AWE32 Creative Signal Processor (ASP/CSP) control program.

sbiload

is an OPL2/3 FM instrument loader for the ALSA sequencer.

sscape_ctl

is an ALSA SoundScape control utility.

us428control

is a Tascam US-428 control program.

usx2yloader

is a helper program to load the 2nd Phase firmware binaries onto the Tascam USX2Y USB sound cards. It has proven to work so far for the US122, US224 and US428. The snd-usb-usx2y module requires this program.

vxloader

is a helper program to load the firmware binaries onto the Digigram's VX-board sound drivers. The following modules require this program: snd-vx222, snd-vxpocket, snd-vxp440. These drivers don't work properly at all until the certain firmwares are loaded, i.e. no PCM nor mixer devices will appear.

ALSA Firmware-1.0.13

Introduction to ALSA Firmware

The ALSA Firmware package contains firmware for certain sound cards.

Note

The ALSA Firmware package has not been tested by the BLFS editors.

Package Information

ALSA Firmware Dependencies

Required

ALSA Tools-1.0.13

Optional

AS31 (for rebuilding the firmware from source)

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/alsa-firmware

Installation of ALSA Firmware

The ALSA Firmware package is only needed by those with advanced requirements for their sound card. See the README for configure options.

Install ALSA Firmware by running the following commands:

./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Contents

Installed Programs: None
Installed Libraries: None
Installed Directory: /lib/firmware and/or /usr/share/alsa/firmware

ALSA OSS-1.0.12

Introduction to ALSA OSS

The ALSA OSS package contains the ALSA OSS compatibility library. This is used by programs which wish to use the ALSA OSS sound interface.

Note

The ALSA OSS package has not been tested by the BLFS editors.

Package Information

ALSA OSS Dependencies

Required

ALSA Library-1.0.13

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/alsa-oss

Installation of ALSA OSS

Install ALSA OSS by running the following commands:

./configure &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Configuring ALSA OSS

Configuration Information

As with most libraries, there is no configuration to do, save that the library directory, i.e., /opt/lib or /usr/local/lib should appear in /etc/ld.so.conf so that ldd can find the shared libraries. After checking that this is the case, /sbin/ldconfig should be run while logged in as root.

Contents

Installed Program: aoss
Installed Libraries: libalsatoss.{so,a}, libaoss.{so,a}, and libossredir.a
Installed Directories: None

Short Descriptions

aoss

is a simple wrapper script which facilitates the use of the ALSA OSS compatibility library. It just sets the appropriate LD_PRELOAD path and then runs the command.

aRts-1.5.6

The Analog Real-time Synthesizer (aRts) provides software that can simulate a complete “modular analog synthesizer” on your computer. It creates sounds and music using small modules like oscillators for creating waveforms, various filters, modules for playing data on your speakers, mixers, and faders. You can build a complete setup with the GUI of the system, using the modules: generators, effects and output — connected to each other.

aRts provides necessary libraries for KDE, however it can be installed as a standalone package. The installation instructions for aRts can be found in the aRts-1.5.6 portion of the KDE installation instructions.

Audio File-0.2.6

Introduction to Audio File

The Audio File package contains the audio file libraries and two sound file support programs. These are useful to support basic sound file formats.

Package Information

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/audiofile

Installation of Audio File

Install Audio File by running the following commands:

./configure --prefix=/usr &&
make

To test the results, issue: make check.

Now, as the root user:

make install

Contents

Installed Programs: audiofile-config, sfinfo, and sfconvert
Installed Library: libaudiofile.{so,a}
Installed Directories: None

Short Descriptions

audiofile-config

is used during the compile process by programs linking to this library.

sfinfo

displays the sound file format, audio encoding, sampling rate and duration for audio formats supported by this library.

sfconvert

converts sound file formats where the original format and destination format are supported by this library.

libaudiofile.{so,a}

contains functions used by programs to support AIFF, AIFF-compressed, Sun/NeXT, WAV and BIC audio formats.

EsounD-0.2.36

Introduction to EsounD

The EsounD package contains the Enlightened Sound Daemon. This is useful for mixing together several digitized audio streams for playback by a single device.

Package Information

EsounD Dependencies

Required

Audio File-0.2.6

Optional

ALSA-1.0.13, aRts-1.5.6, TCP Wrapper-7.6 and DocBook-utils-0.6.14

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/esound

Installation of EsounD

Install EsounD by running the following commands:

sed -i 's@doc/esound@&-0.2.36@' configure &&
./configure --prefix=/usr --sysconfdir=/etc &&
make

This package does not come with a test suite.

Now, as the root user:

make install

If you have DocBook-utils-0.6.14 installed, the HTML documentation should have been built. Install it with the following command as the root user:

cp -v -R docs/html /usr/share/doc/esound-0.2.36

Command Explanations

sed -i '...': This appends the version string to the documentation installation directory.

--sysconfdir=/etc: This switch puts configuration files in /etc instead of /usr/etc.

Configuring EsounD

Config Files

/etc/esd.conf

Configuration Information

Instructions and information about the configuration file is located in the TIPS file in the EsounD source directory.

Contents

Installed Programs: esd, esdcat, esdctl, esd-config, esddsp, esdfilt, esdloop, esdmon, esdplay, esdrec, and esdsample
Installed Libraries: libesd.{so,a} and libesddsp.{so,a}
Installed Directory: /usr/share/doc/esound-0.2.36

Short Descriptions

esd

is the Enlightened Sound Daemon.

esd-config

is used by configure to determine the compiler and linker flags that should be used to compile and link programs that use EsounD.

esdcat

plays a RAW audio stream through the daemon.

esdctl

controls certain aspects of the sound daemon.

esdfilt

is an EsoundD filter.

esdloop

is test scaffolding for sample cache, loop and free.

esdmon

outputs the mixed stream from the daemon.

esdplay

plays the named file on EsoundD.

esdrec

outputs from the sound device's current input.

esdsample

is test scaffolding for sample cache, playback, and free.

libesd.{so,a}

contains functions used by the EsounD programs as well as other programs to read, write and play various sound format files.

SDL-1.2.11

Introduction to SDL

The Simple DirectMedia Layer (SDL for short) is a cross-platform library designed to make it easy to write multimedia software, such as games and emulators.

Package Information

SDL Dependencies

Optional

ALSA-1.0.13, EsounD-0.2.36, aRts-1.5.6, NAS-1.7, NASM-0.98.39, X Window System, AAlib-1.4rc5, DirectFB, SVGAlib, GNU Pth, and PicoGUI

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/sdl

Installation of SDL

If your X Window System is installed into any prefix other than /usr/X11R6, execute the following command, replacing <PREFIX> with the installation prefix of the X Window System:

sed -i 's:/usr/X11R6:<PREFIX>:' configure

Install SDL by running the following commands:

./configure --prefix=/usr &&
make

Now, as the root user:

make install &&
install -v -m755 -d /usr/share/doc/SDL-1.2.11/html &&
install -v -m644 docs/html/*.html /usr/share/doc/SDL-1.2.11/html

Testing SDL

It is advisable to test the installation of SDL using the included test programs. It is not required to install any of the resulting binaries to validate the installation. Issue the following commands to build the test programs:

cd test &&
./configure &&
make

You'll need to manually run all the test programs.

Configuring SDL

Configuration Information

As with most libraries, there is no configuration to do, save that the library directory, i.e., /opt/lib or /usr/local/lib should appear in /etc/ld.so.conf so that ldd can find the shared libraries. After checking that this is the case, /sbin/ldconfig should be run while logged in as root.

Contents

Installed Program: sdl-config
Installed Libraries: libSDL*.{so,a}
Installed Directories: /usr/include/SDL and /usr/share/doc/SDL-1.2.11

Short Descriptions

sdl-config

determines the compile and linker flags that should be used to compile and link programs that use libSDL.

libSDL*.{so,a}

libraries provide low level access to audio, keyboard, mouse, joystick, 3D hardware via OpenGL, and 2D frame buffer across multiple platforms.

Libao-0.8.6

Introduction to Libao

The libao package contains a cross-platform audio library. This is useful to output audio on a wide variety of platforms. It currently supports WAV files, OSS (Open Sound System), ESD (Enlighten Sound Daemon), ALSA (Advanced Linux Sound Architecture), NAS (Network Audio system) and PulseAudio (next generation GNOME sound architecture).

Package Information

Libao Dependencies

Optional

X Window System, EsounD-0.2.36, ALSA-1.0.13, aRts-1.5.6, NAS-1.7, and PulseAudio

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libao

Installation of Libao

Install libao by running the following commands:

./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Configuring Libao

Config Files

/etc/libao.conf and ~/.libao

Configuration Information

Currently, the only configuration option available is setting the default output device. Issue man libao.conf for details.

Contents

Installed Programs: None
Installed Libraries: libao.{so,a} and plugins
Installed Directories: /usr/include/ao, /usr/lib/ao and /usr/share/doc/libao-0.8.6

Short Descriptions

libao.{so,a}

provide functions for programs wishing to output sound over supported platforms.

libogg-1.1.3

Introduction to libogg

The libogg package contains the Ogg file structure. This is useful for creating (encoding) or playing (decoding) a single physical bit stream.

Package Information

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libogg

Installation of libogg

Install libogg by running the following commands:

./configure --prefix=/usr &&
make

To test the results, issue: make check.

Now, as the root user:

make install

Contents

Installed Programs: None
Installed Library: libogg.{so,a}
Installed Directories: /usr/include/ogg and /usr/share/doc/libogg-1.1.3

Short Descriptions

libogg.{so,a}

libraries provide the functions required for programs to read or write Ogg formatted bit streams.

libvorbis-1.1.2

Introduction to libvorbis

The libvorbis package contains a general purpose audio and music encoding format. This is useful for creating (encoding) and playing (decoding) sound in an open (patent free) format.

Package Information

libvorbis Dependencies

Required

libogg-1.1.3

Optional

pkg-config-0.20, and libxslt-1.1.17 and PassiveTeX (to build the PDF documentation)

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/Libvorbis

Installation of libvorbis

Install libvorbis by running the following commands:

./configure --prefix=/usr &&
make

libvorbis is known to cause compiler errors on certain machines. If you get errors, insert this command after running the configure script:

sed -i.bak -e 's/-mno-ieee-fp//' lib/Makefile

This package does not come with a test suite.

Now, as the root user:

make install &&
install -v -m644 doc/Vorbis* /usr/share/doc/libvorbis-1.1.2

Command Explanations

--enable-docs: This switch enables building the documentation.

Contents

Installed Programs: None
Installed Libraries: libvorbis.{so,a}, libvorbisenc.{so,a}, and libvorbisfile.{so,a}
Installed Directories: /usr/include/vorbis and /usr/share/doc/libvorbis-1.1.2

Short Descriptions

libvorbis*.{so,a}

libraries provide the functions to read and write sound files.

NAS-1.7

Introduction to NAS

The Network Audio System is a network transparent, client/server audio transport system used to read , write and play audio files in many formats including .au, .snd, .voc, .wav, .aiff, .aif and .iff. It can be described as the audio equivalent of an X server.

Package Information

Additional Downloads

NAS Dependencies

Required

X Window System and rman-3.2 (if using Xorg7)

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/nas

Installation of NAS

Install NAS by running the following commands:

patch -Np1 -i ../nas-1.7-gcc4-1.patch &&
xmkmf &&
make World

Now, as the root user:

make install install.man &&
install -v -m755 -d /usr/share/doc/nas-1.7/pdf &&
install -v -m644 doc/pdf/* /usr/share/doc/nas-1.7/pdf &&
install -v -m644 doc/{README,actions,*.{ps,txt}} \
    /usr/share/doc/nas-1.7

Command Explanations

xmkmf; make World: These commands use the standard for compiling X based applications.

Configuring NAS

Config Files

/etc/nas/nasd.conf

Configuration Information

Create the NAS configuration file using the following command:

install -v -m644 /etc/nas/nasd.conf.eg /etc/nas/nasd.conf

Edit the new configuration file to suit your network and system needs.

Boot Script

Note

The NAS server cannot run simultaneously with other sound servers, such as MAS or JACK.

Install the /etc/rc.d/init.d/nas init script included in the blfs-bootscripts-20060910 package.

make install-nas

The init script uses a default prefix of /usr/X11R6. If you've installed the X Window System into any other prefix, execute the following command, replacing <PREFIX> with the installation prefix of the X Window System.

sed -i 's@/usr/X11R6@<PREFIX>@' /etc/rc.d/init.d/nas

The init script uses a default parameter to allow access to all hosts on the network. Review the nasd man page for other available parameters if you need to modify the script.

Contents

Installed Programs: auconvert, auctl, audemo, audial, auedit, auinfo, aupanel, auphone, auplay, aurecord, auscope, autool, auwave, checkmail, issndfile, nasd, playbucket, and soundtoh
Installed Library: libaudio.{so,a}
Installed Directory: /etc/nas and /usr/X11R6/include/audio

Short Descriptions

au{utilities}

are a collection of tools to convert, play, edit, record, and manipulate sound files. See the respective man page for each utility for a full description of each one.

checkmail

plays a sound file when the user receives mail.

issndfile

checks if a file is in a recognized audio file format.

nasd

is the Network Audio System server daemon.

playbucket

plays, or creates, the bucket corresponding to the specified file.

soundtoh

converts a sound file to a C language header file.

libaudio.{so,a}

contains API functions to read and write audio files.

LibMPEG3-1.6

Introduction to LibMPEG3

LibMPEG3 supports advanced editing and manipulation of MPEG streams.

Package Information

Additional Downloads

LibMPEG3 Dependencies

Required

NASM-0.98.39

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libmpeg3

Installation of LibMPEG3

Install LibMPEG3 by running the following commands:

patch -Np1 -i ../libmpeg3-1.6-blfs_install-1.patch &&
./configure &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

patch -Np1 -i ...: The patch modifies the Makefile so that everything is installed with the make install command instead of just the executables being installed and manual commands used to install the library, interface headers and documentation.

./configure: This is not a typical Autotools script. It is only used to check for the availability of the NASM compiler.

Contents

Installed Programs: mpeg3cat, mpeg3dump, mpeg3peek and mpeg3toc
Installed Library: libmpeg3.a
Installed Directory: /usr/share/doc/libmpeg3-1.6

Short Descriptions

mpeg3cat

concatenates elementary streams or demultiplexes a program stream (separates components of the stream).

mpeg3dump

dumps information or extracts audio to a 24 bit PCM file.

mpeg3peek

prints the byte offset of a given frame. It only works for video and requires a table of contents.

mpeg3toc

creates a table of contents for a DVD or MPEG stream.

libmpeg3.a

decodes several MPEG standards into uncompressed data suitable for editing and playback.

libmad-0.15.1b

Introduction to libmad

libmad is a high-quality MPEG audio decoder capable of 24-bit output.

Package Information

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libmad

Installation of libmad

Install libmad by running the following commands:

./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Some packages check for the pkg-config file for libmad. This file is particularly needed so that Cdrdao can recognize the installed libmad.

As the root user:

cat > /usr/lib/pkgconfig/mad.pc << "EOF"
prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

Name: mad
Description: MPEG audio decoder
Requires:
Version: 0.15.1b
Libs: -L${libdir} -lmad
Cflags: -I${includedir}
EOF

Contents

Installed Programs: None
Installed Library: libmad.{so,a}
Installed Directories: None

Short Descriptions

libmad.{so,a}

is a MPEG audio decoder library.

libquicktime-0.9.9

Introduction to libquicktime

The libquicktime package contains the libquicktime library, various plugins and codecs, along with graphical and command line utilities used for encoding and decoding Quicktime files. This is useful for reading and writing files in the Quicktime format. The goal of the project is to enhance, while providing compatibility with, the Quicktime 4 Linux library.

Package Information

libquicktime Dependencies

Optional

pkg-config-0.20, libpng-1.2.12, libjpeg-6b, X Window System, GTK+-2.8.20, ALSA-1.0.13, libvorbis-1.1.2, LAME-3.96.1, libdv-0.104, FFmpeg from CVS, x264, FAAC and FAAD2 (a CVS version required to play all files)

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libquicktime

Installation of libquicktime

Install libquicktime by running the following commands:

./configure --prefix=/usr &&
make

If you have Doxygen-1.4.6 installed and wish to create the API documentation, issue: doxygen.

This package does not come with a test suite.

Now, as the root user:

make install &&
install -v -m755 -d /usr/share/doc/libquicktime-0.9.9/api &&
install -v -m644 README doc/{*.html,mainpage.incl} \
    /usr/share/doc/libquicktime-0.9.9

If you created the API documentation, install it by issuing the following command as the root user:

install -v -m644 doc/html/* /usr/share/doc/libquicktime-0.9.9/api

Command Explanations

--with-avcodec=<DIRECTORY NAME>: This option can be used to force libquicktime to use a specified version of FFmpeg to build the FFmpeg plugin module. Tip: build FFmpeg (don't use --enable-shared) and install it in a private directory. Then build libquicktime, substituting the private directory name for <DIRECTORY NAME>. You can now safely remove <DIRECTORY_NAME>, as the FFmpeg libavcodec library was statically linked into the libquicktime FFmpeg module.

Contents

Installed Programs: libquicktime_config, lqt-config, lqt_transcode, lqtplay, qtdechunk, qtdump, qtinfo, qtrechunk, qtstreamize and qtyuv4toyuv
Installed Libraries: libquicktime.so and several plugin codec libraries
Installed Directories: /usr/include/lqt, /usr/lib/libquicktime and /usr/share/doc/libquicktime-0.9.9

Short Descriptions

libquicktime_config

is a graphical front end to examine and configure the available libquicktime audio and video codecs.

lqt-config

is a simple program used to query the libquicktime installation settings and plugin information.

lqt_transcode

is a command-line program used to encode video and/or audio files from one format to another.

lqtplay

is a simple Quicktime movie player for X11.

qtdechunk

can take movies containing rgb frames and write them out as ppm images.

qtrechunk

concatenates input frames into a Quicktime movie.

qtyuv4toyuv

is used to write a YUV4 encoded movie as a planar YUV 4:2:0 file.

libquicktime.so

is a library for reading and writing Quicktime files. It provides convenient access to Quicktime files with a variety of supported codecs. The library contains new functions integrated with all the original Quicktime 4 Linux library functions used to encode and decode Quicktime files.

libFAME-0.9.1

Introduction to libFAME

libFAME is a fast (real-time) MPEG-1 as well as MPEG-4 rectangular and arbitrary shaped video encoding library.

Package Information

Additional Downloads

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libfame

Installation of libFAME

Install libFAME by running the following commands:

patch -Np1 -i ../libfame-0.9.1-gcc34-1.patch &&
sed -i 's/$CC --version/$CC -dumpversion/' configure &&
./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

sed -i 's/$CC --version/$CC -dumpversion/' configure: This command causes the configure script to use a different command to find out the version of the compiler. Without this command, the -fstrict-aliasing flag is not added to the CFLAGS variable in the various Makefiles.

--enable-sse: This option is off by default and should be set on if your machine has SSE capability. One way to find out if you have SSE is to issue cat /proc/cpuinfo and see if sse is listed in the flags.

Contents

Installed Programs: libfame-config
Installed Libraries: libfame.{so,a}
Installed Directories: None

Short Descriptions

libfame-config

provides configuration information for libfame.

libfame.{so,a}

provides functions for the video encoding programs.

Speex-1.0.5

Introduction to Speex

Speex is an audio compression format designed especially for speech. It is well-adapted to Internet applications and provides useful features that are not present in most other CODECs.

Package Information

Speex Dependencies

Optional

libogg-1.1.3

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/speex

Installation of Speex

Install Speex by running the following commands:

./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Contents

Installed Programs: speexdec and speexenc
Installed Libraries: libspeex.{so,a}
Installed Directories: /usr/share/doc/speex-1.0.4

Short Descriptions

speexdec

decodes a Speex file and produces a WAV or raw file.

speexenc

encodes a WAV or raw files using Speex.

libspeex.{so,a}

provides functions for the audio encoding/decoding programs.

Id3lib-3.8.3

Introduction to Id3lib

id3lib is a library for reading, writing and manipulating ID3v1 and ID3v2 tags.

Package Information

Additional Downloads

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/id3lib

Installation of Id3lib

Install id3lib by running the following commands:

patch -Np1 -i ../id3lib-3.8.3-test_suite-1.patch &&
./configure --prefix=/usr &&
make

To test the results, issue: make check.

Now, as the root user:

make install &&
install -v -m755 -d /usr/share/doc/id3lib-3.8.3 &&
install -v -m644 doc/*.{gif,jpg,png,ico,css,txt,php,html} \
    /usr/share/doc/id3lib-3.8.3

Contents

Installed Programs: id3convert, id3cp, id3info, and id3tag
Installed Library: libid3.{so,a}
Installed Directories: /usr/include/id3 and /usr/share/doc/id3lib-3.8.3

Short Descriptions

id3convert

converts between ID3v1/v2 tagging formats.

id3cp

extracts ID3v1/v2 tags from digital audio files.

id3info

prints ID3v1/v2 tag contents.

id3tag

is an utility for editing ID3v1/v2 tags.

libid3.{so,a}

provides functions for the ID3v1/v2 tag editing programs as well as other external programs and libraries.

FLAC-1.1.2

Introduction to FLAC

FLAC is an audio CODEC similar to MP3, but lossless, meaning that audio is compressed without losing any information.

Package Information

Additional Downloads

FLAC Dependencies

Optional

libogg-1.1.3, XMMS-1.2.10, NASM-0.98.39, DocBook-utils-0.6.14, Doxygen-1.4.6 and Valgrind

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/flac

Installation of FLAC

Install FLAC by running the following commands:

patch -Np1 -i ../flac-1.1.2-xmms_plugin_fix-1.patch &&
LIBS=-lm ./configure --prefix=/usr &&
make

If you have Valgrind version 3.0.0 or higher installed and you plan on running the test suites after passing the --enable-valgrind-testing parameter to configure, you need to issue the following command to change some test scripts:

sed -i -e "s/logfile-fd/log-fd/" `grep -lr logfile-fd test/*sh`

To test the results, issue: make check. This test suite will take quite a while. Note that if you passed the --enable-exhaustive-tests and --enable-valgrind-testing parameters to configure and then run the test suite, it will take a very long time (up to 300 SBUs) and use about 375 MB of disk space.

Now, as the root user:

make install

Command Explanations

LIBS=-lm ./configure --prefix=/usr: libFLAC uses a function from the math library but is not linked with libm. Passing the environment variable to configure satisfies this dependency.

--enable-sse: This option is off by default and should be set on if your machine has SSE capability. One way to find out if you have SSE is to issue cat /proc/cpuinfo and see if sse is listed in the flags.

Contents

Installed Programs: flac and metaflac
Installed Libraries: libFLAC.{so,a}, libFLAC++.{so,a}, libOggFLAC.{so,a}, libOggFLAC++.{so,a}, and libxmms-flac.{so,a}
Installed Directories: /usr/share/doc/flac-1.1.2

Short Descriptions

flac

is a command-line utility for encoding, decoding and converting FLAC files.

metaflac

is a program for listing, adding, removing, or editing metadata in one or more FLAC files.

lib{,Ogg}FLAC{,++}.{so,a}

these libraries provide native FLAC and Ogg FLAC C/C++ APIs for programs utilizing FLAC.

libxmms-flac.{so,a}

is a plugin for XMMS.

libdvdcss-1.2.9

Introduction to libdvdcss

libdvdcss is a simple library designed for accessing DVDs as a block device without having to bother about the decryption.

Package Information

libdvdcss Dependencies

Optional (to Create Documentation)

Doxygen-1.4.6 and teTeX-3.0

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libdvdcss

Installation of libdvdcss

Install libdvdcss by running the following commands:

./configure --prefix=/usr &&
make

If you have Doxygen and teTeX installed, HTML and Postscript documentation was created during the build. If you also want to install a PDF version of the reference manual, issue the following command:

make -C doc/latex pdf

This package does not come with a test suite.

Now, as the root user:

make install

If you have Doxygen and teTeX installed, install the documentation using the following commands as the root user:

install -v -m755 -d /usr/share/doc/libdvdcss-1.2.9/html &&
install -v -m644 doc/html/* /usr/share/doc/libdvdcss-1.2.9/html &&
install -v -m644 doc/latex/*.{pdf,ps,dvi} \
    /usr/share/doc/libdvdcss-1.2.9

Contents

Installed Programs: None
Installed Library: libdvdcss.{so,a}
Installed Directories: /usr/include/dvdcss and /usr/share/doc/libdvdcss-1.2.9

Short Descriptions

libdvdcss.{so,a}

provides the functionality that is required for transparent DVD access with CSS decryption.

Libdvdread-0.9.6

Introduction to Libdvdread

libdvdread is a library which provides a simple foundation for reading DVDs.

Package Information

Libdvdread Dependencies

Optional

libdvdcss-1.2.9

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libdvdread

Installation of Libdvdread

Install libdvdread by running the following commands:

./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--with-libdvdcss: This switch is needed if you want libdvdread to link to the libdvdcss library so it can read CSS encrypted DVDs. If you do not pass this switch, libdvdread will dlopen the libdvdcss library at runtime, if it is available, in order to read CSS encrypted DVDs.

Contents

Installed Programs: None
Installed Libraries: libdvdread.{so,a}
Installed Directories: /usr/include/dvdread

Short Descriptions

libdvdread.{so,a}

provides functionality required to access DVDs.

Libdv-0.104

Introduction to Libdv

libdv (Quasar DV) is a software CODEC for DV video, the encoding format used by most digital camcorders.

Package Information

Libdv Dependencies

Optional

popt-1.10.4, pkg-config-0.20, SDL-1.2.11, GTK+-1.2.10, and X Window System

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libdv

Installation of Libdv

Install libdv by running the following commands:

./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install &&
install -v -m755 -d /usr/share/doc/libdv-0.104 &&
install -v -m644 README* /usr/share/doc/libdv-0.104

Note

The configure check for GTK+ is broken. If GTK+ is not installed, also pass --disable-gtk to the configure script.

Contents

Installed Programs: dubdv, dvconnect, encodedv, and playdv
Installed Library: libdv.{so,a}
Installed Directories: /usr/include/libdv and /usr/share/doc/libdv-0.104

Short Descriptions

dubdv

inserts audio into a digital video stream.

dvconnect

is a small utility to send or capture raw data from and to the camcorder.

encodedv

encodes a series of images to a digital video stream.

playdv

displays digital video streams on the screen.

libdv.{so,a}

provides functions for programs interacting with the Quasar DV CODEC.

Liba52-0.7.4

Introduction to Liba52

liba52 is a free library for decoding ATSC A/52 (also known as AC-3) streams. The A/52 standard is used in a variety of applications, including digital television and DVD.

Package Information

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/liba52

Installation of Liba52

Install liba52 by running the following commands:

./configure --prefix=/usr --enable-shared &&
make

To test the results, issue: make check.

Now, as the root user:

make install &&
install -v -m644 -D doc/liba52.txt \
    /usr/share/doc/liba52-0.7.4/liba52.txt

Contents

Installed Programs: a52dec and extract_a52
Installed Library: liba52.{so,a}
Installed Directories: /usr/include/a52dec and /usr/share/doc/liba52-0.7.4

Short Descriptions

a52dec

plays ATSC A/52 audio streams.

extract_a52

extracts ATSC A/52 audio from an MPEG stream.

liba52.{so,a}

provides functions for the programs dealing with ATSC A/52 streams.

XviD-1.1.0

Introduction to XviD

XviD is an MPEG-4 compliant video CODEC.

Package Information

XviD Dependencies

Optional

NASM-0.98.39

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/xvid

Installation of XviD

Install XviD by running the following commands:

cd build/generic &&
./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install &&
chmod -v 755 /usr/lib/libxvidcore.so.4.1 &&
ln -v -sf libxvidcore.so.4.1 /usr/lib/libxvidcore.so.4 &&
ln -v -sf libxvidcore.so.4 /usr/lib/libxvidcore.so &&
install -v -m755 -d /usr/share/doc/xvidcore-1.1.0/examples &&
install -v -m644 ../../doc/* /usr/share/doc/xvidcore-1.1.0 &&
install -v -m644 ../../examples/* \
    /usr/share/doc/xvidcore-1.1.0/examples

Command Explanations

ln -v -sf libxvidcore.so.4 /usr/lib/libxvidcore.so: This command makes applications linked against .so names, link to .so.<MAJOR>. This ensures better binary compatibility, as XviD developers take care not changing the <MAJOR> number until there is an incompatible ABI change.

Contents

Installed Programs: None
Installed Library: libxvidcore.{so,a}
Installed Directory: /usr/share/doc/xvidcore-1.1.0

Short Descriptions

libxvidcore.{so,a}

provides functions to encode and decode most MPEG-4 video data.

Xine Libraries-1.1.1

Introduction to Xine Libraries

The xine Libraries package contains xine libraries. These are useful for interfacing with external plug-ins that allow the flow of information from the source to the screen and speakers.

Package Information

Xine Libraries Dependencies

Required

X Window System and EsounD-0.2.36 or OSS or ALSA-1.0.13 or aRts-1.5.6 or PulseAudio

Optional

pkg-config-0.20, FFmpeg-0.4.9-pre1, AAlib-1.4rc5, libmng-1.0.9, SDL-1.2.11, FLAC-1.1.2, libFAME-0.9.1, libogg-1.1.3, libvorbis-1.1.2, Speex-1.0.5, libmad-0.15.1b, liba52-0.7.4, GNOME Virtual File System-2.14.2, Samba-3.0.23d, ImageMagick-6.2.8-0, DirectFB, Theora, LibSTK, libcaca, libdvdnav, libmodplug, XvMC Wrapper (only if you have XFree86 installed), libcdio, VCDImager, sgmltools-lite, and Transfig

It is recommended that you use the internal source tree versions of FFmpeg, liba52, libdvdnav and libmad and not system-installed versions.

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/xine-lib

Installation of Xine Libraries

Install xine Libraries by running the following commands:

./configure --prefix=/usr --enable-static &&
make

Trying to use the locally installed FFmpeg library by passing --with-external-ffmpeg to configure may not compile cleanly.

You will need to pass --with-xv-path=</directory/path> to configure if you didn't install Xorg or XFree86 in /usr/X11R6. For example, if you installed Xorg in /usr, you will need to use --with-xv-path=/usr/lib.

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--enable-static: This switch is used to enable building the static library as some programs link against it.

Contents

Installed Program: xine-config
Installed Libraries: libxine.{a,so} and numerous plugin modules and video extensions
Installed Fonts: Output display engine fonts located in /usr/share/xine/libxine1/fonts
Installed Directories: /usr/include/xine, /usr/lib/xine, /usr/share/xine, and /usr/share/doc/xine

Short Descriptions

xine-config

provides information to programs trying to link with the xine libraries.

libxine.so

provides the API for processing audio/video files.

Libmikmod-3.1.11

Introduction to Libmikmod

libmikmod is a sound library capable of playing audio samples as well as tracker modules. Supported module formats include MOD, S3M, XM, IT, MED, MTM and 669.

Package Information

Additional Downloads

Libmikmod Dependencies

Optional

ALSA-1.0.13, EsounD-0.2.36, libGUS, AFlib and SAM9407 driver

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libmikmod

Installation of Libmikmod

Install libmikmod by running the following commands:

patch -Np1 -i ../libmikmod-3.1.11-a.diff &&
sed -i -e "s/VERSION=10/VERSION=11/" \
       -e "s/sys_asoundlib/alsa_asoundlib/" \
       -e "s/snd_cards/snd_card_load/g" \
       -e "s|sys/asoundlib.h|alsa/asoundlib.h|g" \
       -e "s/^LIBOBJS/#LIBOBJS/" \
    configure.in &&
autoconf &&
./configure --prefix=/usr &&
make

Now, as the root user:

make install &&
chmod 755 /usr/lib/libmikmod.so.2.0.4 &&
install -v -m644 -D docs/mikmod.html \
    /usr/share/doc/libmikmod-3.1.11/mikmod.html

Command Explanations

sed -i -e ...: This increments the package micro version and also modifies the ALSA header search routine so that the package properly discovers the ALSA library. It also fixes a problem which makes autoconf fail.

autoconf: This generates a new configure script, required because of the changes to configure.in.

Contents

Installed Program: libmikmod-config
Installed Library: libmikmod.{so,a}
Installed Directory: /usr/share/doc/libmikmod-3.1.11

Short Descriptions

libmikmod-config

provides version information, compiler, and linker flags to programs that utilize libmikmod.

libmikmod.{so,a}

contains functions that are required to play various tracker module files.

GStreamer-0.10.11

Introduction to GStreamer

The GStreamer package contains a streaming media framework that enables applications to share a common set of plugins for things like video decoding and encoding, audio encoding and decoding, audio and video filters, audio visualisation, Web streaming and anything else that streams in real-time or otherwise. It is modelled after research software worked on at the Oregon Graduate Institute. After installing GStreamer, you'll likely need to install one or more of the GStreamer Good Plug-ins-0.10.4, GStreamer Ugly Plug-ins-0.10.4, GStreamer Bad Plug-ins and GStreamer FFmpeg plug-in packages.

Package Information

GStreamer Dependencies

Required

GLib-2.10.3 and libxml2-2.6.26

Optional

Check (required to run the unit regression tests), and Valgrind (optionally used during the unit regression tests)

Optional (Required to Rebuild the API Documentation)

GTK-Doc-1.6 and PyXML-0.8.4

Optional (Required to Build Manuals)

libxslt-1.1.17, teTeX-3.0, AFPL Ghostscript-8.53 or ESP Ghostscript-8.15.2, DocBook-utils-0.6.14, Transfig, and Netpbm

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gstreamer

Installation of GStreamer

Install GStreamer by running the following commands:

./configure --prefix=/usr &&
make

To test the results, issue: make check. There are many other Makefile targets you can specify for running the tests, issue make -C tests/check help to see the complete list.

Now, as the root user:

make install &&
install -v -m755 -d /usr/share/doc/gstreamer-0.10/design &&
install -v -m644 docs/design/*.txt \
                    /usr/share/doc/gstreamer-0.10/design &&
if [ -d /usr/share/doc/gstreamer-0.10/faq/html ]; then
    chown -v -R root:root \
        /usr/share/doc/gstreamer-0.10/*/html
fi

If you did not rebuild the API documentation by passing --enable-gtk-doc to the configure script and you wish to install the pre-built documentation, issue the following command as the root user:

for DOCS in gst libs plugins; do make -C docs/$DOCS install-data; done

Testing the Installation

To test the functionality of the GStreamer installation, you can run a simple test as an unprivileged user (you may have to run ldconfig as the root user before attempting the test).

gst-launch -v fakesrc num_buffers=5 ! fakesink

If the command outputs a series of messages from fakesrc and fakesink, everything is okay.

Command Explanations

--enable-gtk-doc: This parameter is used to rebuild and install the API documentation.

--enable-docbook: This parameter is used to build HTML, PDF and PostScript versions of the GStreamer User's Manual, FAQ and Writer's Guide. Note that you must have all the listed dependencies installed.

chown -v -R root:root ...: The documentation is installed with ownerships of the user who untarred and built the package. This command changes the ownerships of the installed documentation files to root:root and is only executed if the documentation files were built and installed.

Contents

Installed Programs: gst-feedback{,-0.10}, gst-inspect{,-0.10}, gst-launch{,-0.10}, gst-typefind{,-0.10}, gst-xmllaunch{,-0.10} and gst-xmlinspect{,-0.10}
Installed Libraries: libgstbase-0.10.{so,a}, libgstcheck-0.10.{so,a}, libgstcontroller-0.10.{so,a}, libgstdataprotocol-0.10.{so,a}, libgstnet-0.10.{so,a}, libgstreamer-0.10.{so,a}, and libgst*.{so,a} plugin modules
Installed Directories: /usr/include/gstreamer-0.10, /usr/lib/gstreamer-0.10, /usr/share/doc/gstreamer-0.10, /usr/share/gtk-doc/html/gstreamer{,-libs,-plugins}-0.10

Short Descriptions

gst-feedback-0.10

generates debug info for GStreamer bug reports.

gst-inspect-0.10

prints information about a GStreamer plugin or element.

gst-launch-0.10

is a tool that builds and runs basic GStreamer pipelines.

gst-typefind-0.10

uses the GStreamer type finding system to determine the relevant GStreamer plugin to parse or decode a file, and determine the corresponding MIME type.

gst-xmlinspect-0.10

prints information about a GStreamer plugin or element in XML document format.

gst-xmllaunch-0.10

is used to build and run a basic GStreamer pipeline, loading it from an XML description.

GStreamer Base Plug-ins-0.10.11

Introduction to GStreamer Base Plug-ins

The GStreamer Base Plug-ins is a well-groomed and well-maintained collection of GStreamer plug-ins and elements, spanning the range of possible types of elements one would want to write for GStreamer. It also contains helper libraries and base classes useful for writing elements. A wide range of video and audio decoders, encoders, and filters are included. Also see the GStreamer Good Plug-ins-0.10.4, GStreamer Ugly Plug-ins-0.10.4, GStreamer Bad Plug-ins and GStreamer FFmpeg plug-in packages.

Package Information

GStreamer Base Plug-ins Dependencies

Required

GStreamer-0.10.11 and liboil

Optional

ALSA-1.0.13, libogg-1.1.3, libvorbis-1.1.2, Theora, CDParanoia-III-9.8, FreeType-2.1.10, Pango-1.12.3, GTK+-2.8.20 (required to build the examples), X Window System, GNOME Virtual File System-2.14.2, libvisual, Check (required to run the unit regression tests), and Valgrind (optionally used during the unit regression tests)

Optional (Required to Rebuild the API Documentation)

GTK-Doc-1.6 and PyXML-0.8.4

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gst-plugins-base

Installation of GStreamer Base Plug-ins

Install GStreamer Base Plug-ins by running the following commands:

./configure --prefix=/usr &&
make

To test the results, issue: make check. There are many other Makefile targets you can specify for running the tests, issue make -C tests/check help to see the complete list.

Now, as the root user:

make install

If you did not rebuild the API documentation by passing --enable-gtk-doc to the configure script and you wish to install the pre-built documentation, issue the following command as the root user:

make -C docs/libs install-data &&
make -C docs/plugins install-data

Contents

Installed Programs: gst-visualise-0.10
Installed Libraries: libgst*.{so,a} and numerous GStreamer plugins
Installed Directories: /usr/include/gstreamer-0.10/gst/{too numerous to list} and /usr/share/gtk-doc/html/gst-plugins-base-libs-0.10

Short Descriptions

gst-visualise-0.10

is used to run a basic GStreamer pipeline to display a graphical visualisation of an audio stream.

GStreamer Good Plug-ins-0.10.4

Introduction to GStreamer Good Plug-ins

The GStreamer Good Plug-ins is a set of plug-ins considered by the GStreamer developers to have good quality code, correct functionality, and the preferred license (LGPL for the plug-in code, LGPL or LGPL-compatible for the supporting library). A wide range of video and audio decoders, encoders, and filters are included. Also see the GStreamer Ugly Plug-ins-0.10.4, GStreamer Bad Plug-ins and GStreamer FFmpeg plug-in packages.

Package Information

GStreamer Good Plug-ins Dependencies

Required

GStreamer Base Plug-ins-0.10.11

Optional

AAlib-1.4rc5, cairo-1.2.4, libcdio (which can use CDParanoia-III-9.8, libcddb, and VCDImager), libavc1394 (requires libraw1394), libdv-0.104, EsounD-0.2.36, FLAC-1.1.2, GConf-2.14.0, GTK+-2.8.20 (required to build the examples), HAL-0.5.7.1, MMX Jpeg (preferred, but will fall back to libjpeg-6b), LADSPA, libcaca, libpng-1.2.12, libshout, Speex-1.0.5, TagLib, X Window System, Check (required to run the unit regression tests), and Valgrind (optionally used during the unit regression tests)

Optional (Required to Rebuild the API Documentation)

GTK-Doc-1.6 and PyXML-0.8.4

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gst-plugins-good

Installation of GStreamer Good Plug-ins

Install GStreamer Good Plug-ins by running the following commands:

./configure --prefix=/usr \
            --sysconfdir=/etc/gnome/2.14.3 &&
make

To test the results, issue: make check. There are many other Makefile targets you can specify for running the tests, issue make -C tests/check help to see the complete list.

Now, as the root user:

make install

If you did not rebuild the API documentation by passing --enable-gtk-doc to the configure script and you wish to install the pre-built documentation, issue the following command as the root user:

make -C docs/plugins install-data

Command Explanations

--sysconfdir=/etc/gnome/2.14.3: This parameter is used so that the GConf configuration files are installed in the system-wide GNOME GConf database located in /etc/gnome/2.14.3/gconf instead of /usr/etc. You may omit this parameter if you don't have GConf installed.

Contents

Installed Programs: None
Installed Libraries: Numerous GStreamer plugins
Installed Directories: /usr/share/gtk-doc/html/gst-plugins-good-plugins-0.10

GStreamer Ugly Plug-ins-0.10.4

Introduction to GStreamer Ugly Plug-ins

The GStreamer Ugly Plug-ins is a set of plug-ins considered by the GStreamer developers to have good quality and correct functionality, but distributing them might pose problems. The license on either the plug-ins or the supporting libraries might not be how the GStreamer developers would like. The code might be widely known to present patent problems. Also see the GStreamer Good Plug-ins-0.10.4, GStreamer Bad Plug-ins and GStreamer FFmpeg plug-in packages.

Package Information

GStreamer Ugly Plug-ins Dependencies

Required

GStreamer Base Plug-ins-0.10.11

Optional

LAME-3.96.1, liba52-0.7.4, libamrnb, libdvdnav, libdvdread-0.9.6, libmad-0.15.1b (and libid3tag), libmpeg2-0.4.0b, and libsidplay

Optional (Required to Rebuild the API Documentation)

GTK-Doc-1.6 and PyXML-0.8.4

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gst-plugins-ugly

Installation of GStreamer Ugly Plug-ins

Install GStreamer Ugly Plug-ins by running the following commands:

./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install

If you did not rebuild the API documentation by passing --enable-gtk-doc to the configure script and you wish to install the pre-built documentation, issue the following command as the root user:

make -C docs/plugins install-data

Contents

Installed Programs: None
Installed Libraries: Several GStreamer plugins
Installed Directories: /usr/share/gtk-doc/html/gst-plugins-ugly-plugins-0.10

libmusicbrainz-2.1.4

Introduction to libmusicbrainz

The libmusicbrainz package contains a library which allows you to access the data held on the MusicBrainz server. This is useful for adding MusicBrainz lookup capabilities to other applications.

MusicBrainz is a community music metadatabase that attempts to create a comprehensive music information site. You can use the MusicBrainz data either by browsing the web site, or you can access the data from a client program — for example, a CD player program can use MusicBrainz to identify CDs and provide information about the CD, about the artist or other related information.

Package Information

libmusicbrainz Dependencies

Required

expat-2.0.0

Optional to Build the Python Bindings

Python-2.4.4 and ctypes

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libmusicbrainz

Installation of libmusicbrainz

Install libmusicbrainz by running the following commands:

./configure --prefix=/usr &&
make

Build the Python bindings with the following commands:

(cd python && python setup.py build)

To test the Python bindings, issue the command (cd python && python setup.py test).

Now, as the root user:

make install &&
install -v -m644 -D docs/mb_howto.txt \
    /usr/share/doc/libmusicbrainz-2.1.4/mb_howto.txt

If you built the Python bindings, issue the following command as the root user to intstall them:

(cd python && python setup.py install)

Contents

Installed Programs: None
Installed Library: libmusicbrainz.{so,a}
Installed Directories: /usr/include/musicbrainz and /usr/share/doc/libmusicbrainz-2.1.4

Short Descriptions

libmusicbrainz.{so,a}

contains API functions to access the MusicBrainz database, both for looking up data and also for submitting new data.

libmpeg2-0.4.0b

Introduction to libmpeg2

The libmpeg2 package contains a library for decoding MPEG-2 and MPEG-1 video streams. The library is able to decode all MPEG streams that conform to certain restrictions: “constrained parameters” for MPEG-1, and “main profile” for MPEG-2. This is useful for programs and applications needing to decode MPEG-2 and MPEG-1 video streams.

Package Information

libmpeg2 Dependencies

Optional

X Window System and SDL-1.2.11

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libmpeg2

Installation of libmpeg2

Install libmpeg2 by running the following commands:

./configure --prefix=/usr --enable-shared &&
make

To test the results, issue: make check. To perform a more comprehensive regression test, see the file test/README in the source tree.

Now, as the root user:

make install &&
install -v -m755 -d /usr/share/doc/mpeg2dec-0.4.0b &&
install -v -m644 README doc/libmpeg2.txt \
    /usr/share/doc/mpeg2dec-0.4.0b &&
install -v -m755 doc/sample? /usr/share/doc/mpeg2dec-0.4.0b

Command Explanations

--enable-shared: This parameter forces building shared versions of the libraries as well as the static versions.

Contents

Installed Programs: corrupt_mpeg2, extract_mpeg2 and mpeg2dec
Installed Libraries: libmpeg2.{so,a} and libmpeg2convert.{so,a}
Installed Directories: /usr/include/mpeg2dec and /usr/share/doc/mpeg2dec-0.4.0b

Short Descriptions

extract_mpeg2

extracts MPEG video streams from a multiplexed stream.

mpeg2dec

decodes MPEG1 and MPEG2 video streams.

libmpeg2.{so,a}

contains API functions used to decode MPEG video streams.

libmpeg2convert.{so,a}

contains API functions used for color conversions of MPEG video streams.

Chapter 39. Audio Utilities

This chapter contains programs involved with audio file manipulation; that is to say playing, recording, ripping and the other common things which people want to do. It also includes a package used to render text to speech using your system's audio hardware. To use much of this software, you will need to have the kernel sound drivers installed.

Mpg123-0.60

Introduction to Mpg123

The mpg123 package contains a console-based MP3 player. It claims to be the fastest MP3 decoder for Unix.

Package Information

Mpg123 Dependencies

Required

ALSA Library-1.0.13

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/mpg123

Installation of Mpg123

Install mpg123 by running the following commands:

./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Contents

Installed Program: mpg123
Installed Libraries: None
Installed Directories: None

Short Descriptions

mpg123

is used for playing MP3 files via the console.

Vorbis Tools-1.1.1

Introduction to Vorbis Tools

The Vorbis Tools package contains command-line tools for Ogg audio files. This is useful for encoding, playing or editing files using the Ogg CODEC.

Package Information

Additional Downloads

Vorbis Tools Dependencies

Required

libvorbis-1.1.2

Recommended (Required to Build the 'ogg123' Program)

Optional

FLAC-1.1.2 and Speex-1.0.5

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/vorbistools

Installation of Vorbis Tools

Install Vorbis Tools by running the following commands:

patch -Np1 -i ../vorbis-tools-1.1.1-utf8-1.patch &&
./configure --prefix=/usr --enable-vcut &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--enable-vcut: This parameter is used so that the vcut program is built, as it is not by default.

Configuring Vorbis Tools

Config Files

/etc/libao.conf, ~/.libao, and ~/.ogg123rc

Configuration Information

Issue man libao.conf for information about setting the default output device. Also see /usr/share/doc/vorbis-tools-1.1.1/ogg123rc-example.

Contents

Installed Programs: ogg123, oggdec, oggenc, ogginfo, vcut, and vorbiscomment
Installed Libraries: None
Installed Directory: /usr/share/doc/vorbis-tools-1.1.1

Short Descriptions

ogg123

is a command-line audio player for Ogg Vorbis streams.

oggdec

is a simple decoder which converts Ogg Vorbis files into PCM audio files (WAV or raw).

oggenc

is an encoder that turns raw, WAV or AIFF files into an Ogg Vorbis stream.

ogginfo

prints information stored in an audio file.

vcut

will split a file into two files at a designated cut point.

vorbiscomment

is an editor that changes information in the audio file metadata tags.

XMMS-1.2.10

Introduction to XMMS

XMMS is an audio player for the X Window System.

Package Information

Additional Downloads

XMMS Dependencies

Required

GTK+-1.2.10

Optional

ALSA-1.0.13, EsounD-0.2.36, libvorbis-1.1.2 and libmikmod-3.1.11

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/XMMS

Installation of XMMS

Install XMMS by running the following commands:

patch -Np1 -i ../xmms-1.2.10-gcc4-1.patch &&
./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install &&
install -v -m755 -d /usr/share/doc/xmms-1.2.10 &&
install -v -m644 FAQ README /usr/share/doc/xmms-1.2.10

Configuring XMMS

Config Files

~/.xmms/config

Configuration Information

When you start xmms for the first time, you can configure it with CTRL+P. Note that you can extend XMMS' functionality with plugins and skins. You can find these at http://xmms.org.

Contents

Installed Programs: xmms, xmms-config, and wmxmms
Installed Libraries: libxmms.{so,a} and numerous input, output, effects, and general plugins
Installed Directories: /usr/include/xmms, /usr/lib/xmms, /usr/share/xmms and /usr/share/doc/xmms-1.2.10

Short Descriptions

xmms

(an acronym for X MultiMedia System) is a program comparable in function with WinAMP. Its main function is playing audio files like WAV and MP3. It can be extended with plugins to play a number of other audio or video formats. Its look can be customized with WinAMP style skins.

xmms-config

is used by other programs which need to link with xmms to retrieve the library and include paths.

wmxmms

is a dock applet for the Window Maker window manager. From the applet you can start and control xmms.

libxmms.{so,a}

contains graphics and playback functions used by xmms. These functions can also be utilized by other packages.

LAME-3.96.1

Introduction to LAME

The LAME package contains an MP3 encoder and optionally, an MP3 frame analyzer. This is useful for creating and analyzing compressed audio files.

Package Information

LAME Dependencies

Optional

GTK+-1.2.10, NASM-0.98.39, libsndfile (support is currently broken), Electric Fence and Dmalloc

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/lame

Installation of LAME

Install LAME by running the following commands:

./configure --prefix=/usr --enable-mp3rtp &&
make

To test the results, issue: make test.

Now, as the root user:

make install

Command Explanations

--enable-mp3rtp: Builds the encode-to-RTP program.

--enable-mp3x: Builds the mp3x frame analyzer program (requires GTK+).

Contents

Installed Programs: lame, mp3rtp, and optionally, mp3x
Installed Library: libmp3lame.{so,a}
Installed Directories: /usr/include/lame and /usr/share/doc/lame

Short Descriptions

lame

creates MP3 audio files from raw PCM or .wav data.

mp3rtp

is used to encode MP3 with RTP streaming of the output.

mp3x

is a GTK based graphical MP3 frame analyzer used for debugging, development and studying MP3 frames produced by any encoder.

libmp3lame.{so,a}

libraries provide the functions necessary to convert raw PCM and WAV files to MP3 files.

CDParanoia-III-9.8

Introduction to CDParanoia

The CDParanoia package contains a CD audio extraction tool. This is useful for extracting .wav files from audio CDs. A CDDA capable CDROM drive is needed. Practically all drives supported by Linux can be used.

Package Information

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/cdparanoia

Installation of CDParanoia

Install CDParanoia by running the following commands:

sed -i '/default:/a break;' interface/utils.h &&
./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install &&
chmod -v 755 /usr/lib/libcdda_*.so.0.9.8

Command Explanations

sed -i '/default:/a break;' interface/utils.h: This command enables the code to be compiled with a recent version of gcc.

Configuring CDParanoia

Configuration Information

As with most libraries, there is no configuration to do, save that the library directory, i.e., /opt/lib or /usr/local/lib should appear in /etc/ld.so.conf so that ldd can find the shared libraries. After checking that this is the case, /sbin/ldconfig should be run while logged in as root.

Contents

Installed Program: cdparanoia
Installed Libraries: libcdda_interface.{so,a} and libcdda_paranoia.{so,a}
Installed Directories: None

Short Descriptions

cdparanoia

is used for 'ripping' an audio-cd. Ripping is the process of digitally extracting music from an audio-cd.

libcdda_interface.{so,a}

contains functions used by cdparanoia, as well as other packages, which can automatically identify if a CD device is CDDA compatible.

libcdda_paranoia.{so,a}

contains functions used by cdparanoia, as well as other packages, which provide data verification, synchronization, error handling and scratch reconstruction capability.

FreeTTS-1.2.1

Introduction to FreeTTS

The FreeTTS package contains a speech synthesis system written entirely in the Java programming language. It is based upon Flite: a small run-time speech synthesis engine developed at Carnegie Mellon University. Flite is derived from the Festival Speech Synthesis System from the University of Edinburgh and the FestVox project from Carnegie Mellon University. The FreeTTS package is used to convert text to audible speech through the system audio hardware.

Package Information

Additional Downloads

FreeTTS Dependencies

Required

Apache Ant-1.6.5 (and JUnit to run the test suite), UnZip-5.52, Sharutils (for the uudecode program), and working audio hardware/software.

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/freetts

Installation of FreeTTS

The FreeTTS package is distributed in ZIP format and the unzip command will default to creating an unused source directory. Additionally, unzipping the test suite file will prompt for questions about overwriting existing files. Use the following commands to unzip the source files:

unzip -q freetts-1.2.1-src.zip -x META-INF/* &&
unzip -q freetts-1.2.1-tst.zip \
    -x {META-INF/*,freetts-1.2.1/{acknowledgments.txt,license.terms}}

Tip

The sh jsapi.sh command below installs the Java Speech API components into the FreeTTS source tree. You will be required to view, and then accept (by entering a y keypress), a license agreement before the installation will continue. If you are scripting (automating) the build, you'll need to account for this. There is information about automating build commands in the Automated Building Procedures section of Chapter 2. Towards the end of this section, specific information for automating this type of installation is discussed.

Install FreeTTS by running the following commands:

cd lib &&
sh jsapi.sh &&
cd .. &&
ant

To test the results, issue:

ant junit &&
sh regression.sh

Now, as the root user:

install -v -m755 -d /opt/freetts-1.2.1/{lib,docs/{audio,images}} &&
install -v -m644 lib/*.jar /opt/freetts-1.2.1/lib &&
install -v -m644 *.txt RELEASE_NOTES license.terms \
                 docs/*.{pdf,html,txt,sx{w,d}} \
    /opt/freetts-1.2.1/docs &&
install -v -m644 docs/audio/* /opt/freetts-1.2.1/docs/audio &&
install -v -m644 docs/images/* /opt/freetts-1.2.1/docs/images &&
cp -v -R javadoc /opt/freetts-1.2.1 &&
ln -v -s freetts-1.2.1 /opt/freetts

Optionally, install any or all of the additional FreeTTS components using the following commands as the root user (see the Command Explanations section for details):

cp -v -R bin /opt/freetts-1.2.1 &&
install -v -m644 speech.properties /opt/jdk/jdk/jre/lib &&
cp -v -R tools /opt/freetts-1.2.1 &&
cp -v -R mbrola /opt/freetts-1.2.1 &&
cp -v -R demo /opt/freetts-1.2.1

Command Explanations

sh jsapi.sh: This command installs the Java Speech API components into the FreeTTS source tree.

ant: FreeTTS uses the Apache Ant build system instead of the GNU autotools. This commands builds everything, including the class libraries, tools and demos.

cp -v -R bin ...; install -v -m644 speech.properties: These two commands install the demonstration programs. Optionally copy the speech.properties file to ~/speech.properties if you don't want to make it available system-wide.

cp -v -R tools ...: This installs the voice data import utilities. See the README.html files in the tools/ subdirectories for information and instructions about using the tools.

cp -v -R mbrola ...: This installs the mbrola.jar file, required if you use the MBROLA voices.

cp -v -R demo ...: This installs the sources and documentation for the demonstration programs.

For additional information and documentation about the FreeTTS project, visit the main web page at http://freetts.sourceforge.net.

Testing the Installation

Test the installation using the following command:

java -jar /opt/freetts/lib/freetts.jar \
    -text "This is a test of the FreeTTS speech synthesis system"

Depending on the setup of your audio drivers and software, you may have to add the -streaming switch to the command as shown below:

java -jar /opt/freetts/lib/freetts.jar -streaming \
    -text "This is a test of the FreeTTS speech synthesis system"

Contents

Installed Programs: None
Installed Libraries: /opt/freetts-1.2.1/lib/*.jar
Installed Directory: /opt/freetts-1.2.1

Short Descriptions

*.jar

contains the class libraries which make up the FreeTTS speech synthesis system.

Audacious-1.0.0

Introduction to Audacious

Audacious is a Gtk+-2 audio player.

Package Information

audacious Dependencies

Required

libglade-2.6.0

Optional

id3lib-3.8.3, GConf-2.14.0, GNOME Virtual File System-2.14.2, ALSA-1.0.13, EsounD-0.2.36, aRts-1.5.6, FLAC-1.1.2, JACK, libvorbis-1.1.2 and libmikmod-3.1.11

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/audacious

Installation of Audacious

The Audacious configure script will complain if it can't find libvorbis-1.1.2. If you have it installed, you can omit the --disable-vorbis option:

./configure --prefix=/usr --disable-vorbis &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Contents

Installed Program: audacious
Installed Library: libaudacious.so and numerous input, output, effects, and general plugins
Installed Directories: /usr/include/audacious, /usr/lib/audacious and /usr/share/audacious

Short Descriptions

audacious

is a Gtk2 port of XMMS based on the Beep Media Player.

libaudacious.so

contains functions that are used by audacious to render its graphical interface.

Chapter 40. Video Utilities

This chapter always seems to be the favorite chapter. It's probably because there is a lot of satisfaction in playing your first video when you have spent so much time getting to that point. All those libraries, all the configurations and your reward is that you finally get to watch a movie. Not to worry though, there is always one more CODEC to install.

FFmpeg-0.4.9-pre1

Introduction to FFmpeg

FFmpeg is a solution to record, convert and stream audio and video. It is a very fast video and audio converter and it can also acquire from a live audio/video source. Designed to be intuitive, the command-line interface (ffmpeg) tries to figure out all the parameters, when possible. FFmpeg can also convert from any sample rate to any other, and resize video on the fly with a high quality polyphase filter. FFmpeg can use a video4linux compatible video source and any Open Sound System audio source.

Package Information

Additional Downloads

FFmpeg Dependencies

Optional

libvorbis-1.1.2, LAME-3.96.1, Imlib2-1.2.2, X Window System, SDL-1.2.11, FreeType-2.1.10, MPlayer-1.0pre7try2 (for the shared post-processing library), FAAC, FAAD2, AMR narrowband (floating point) or AMR naarrowband (fixed point), AMR wideband, and teTeX-3.0 (to build HTML documentation)

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/ffmpeg

Installation of FFmpeg

Install FFmpeg by running the following commands:

Note

Review the doc/optimization.txt file in the source tree for information about optimizing the build.

patch -Np1 -i ../ffmpeg-0.4.9-pre1-gcc4-1.patch &&
patch -Np1 -i ../ffmpeg-0.4.9-pre1-amr_fixes-1.patch &&
sed -i "s/static uint64/const uint64/" \
    libavcodec/liba52/resample_mmx.c &&
./configure --prefix=/usr --enable-shared \
    --enable-pthreads --disable-ffplay &&
make

If you have teTeX installed, the man pages and HTML documentation were built during the make process. Skip to the root user installation steps if you don't need other formats of the documentation, or issue any or all of the following commands to create the additional formats.

for DOCFILE in faq ffmpeg-doc ffplay-doc ffserver-doc hooks
do
    texi2pdf -b $DOCFILE.texi
    texi2dvi -b $DOCFILE.texi
    dvips -o $DOCFILE.ps $DOCFILE.dvi
    makeinfo --plaintext --force -o $DOCFILE.txt $DOCFILE.texi
done

If you do not have teTeX installed, use the following command to build the man pages:

make -C doc ff{mpeg,play,server}.1

This package does not come with a test suite that works.

Now, as the root user:

make install

If you have teTeX installed on your system, install the documentation by issuing the following commands as the root user (modify the command appropriately to reflect the documentation formats you've created):

install -v -m755 -d /usr/share/doc/ffmpeg-0.4.9-pre1 &&
install -v -m644 doc/*.{html,dvi,pdf,ps,txt} \
    /usr/share/doc/ffmpeg-0.4.9-pre1

Command Explanations

sed -i -e "s/static uint64/const uint64/" libavcodec/liba52/resample_mmx.c: This command fixes an issue on machines with MMX capability and use GCC >= 3.4.x to compile in A52 support using the --enable-a52 parameter passed to the configure script.

--enable-shared: This switch is needed to build the libavcodec and libavformat shared libraries.

--enable-pthreads: This switch enables the build to link against the Posix threads library.

--disable-ffplay: Only installs the server part. ffplay requires X for building. Remove this option if X is installed.

--enable-<codec>: Review the available options and codecs using the ./configure --help command. Also review the information at the end of the configure script (cat the file or view it using a text editor) for information about building support for the AMR codecs.

Configuring FFmpeg

Config Files

/etc/ffserver.conf and ~/.ffmpeg/ffserver-config

You'll find a sample ffserver configuration file at http://ffmpeg.sourceforge.net/sample.html (also doc/ffserver.conf in the source tree).

Contents

Installed Programs: ffmpeg, ffserver, and optionally, ffplay
Installed Libraries: libavcodec.so, libavformat.so, and video hook modules
Installed Directories: /usr/include/ffmpeg, /usr/lib/vhook, and /usr/share/doc/ffmpeg-0.4.9-pre1

Short Descriptions

ffmpeg

is a command-line tool to convert video files, network streams and input from a TV card to several video formats.

ffplay

is a very simple and portable media player using the ffmpeg libraries and the SDL library.

ffserver

is a streaming server for everything that ffmpeg could use as input (files, streams, TV card input, webcam, etc.).

libavcodec.so

is a library containing the FFmpeg codecs (both encoding and decoding).

libavformat.so

is a library containing the file formats handling (mux and demux code for several formats) used by ffplay as well as allowing the generation of audio or video streams.

Avifile-0.7.45

Introduction to Avifile

The Avifile package contains an AVI video file player, tools and support libraries. This is useful for viewing and editing AVI files.

Package Information

Additional Downloads

Avifile Dependencies

Required

Qt-3.3.7 and SDL-1.2.11

Optional

pkg-config-0.20, libjpeg-6b, libvorbis-1.1.2, liba52-0.7.4, LAME-3.96.1, libmad-0.15.1b, XviD-1.1.0, FAAD2, DivX4Linux, and Dmalloc

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/avifile

Installation of Avifile

Install the required CODECs as the root user using the following commands:

install -v -d -m755 /usr/lib/avifile-0.7/win32 &&
tar -xvf ../binaries-011002.tgz -C /usr/lib/avifile-0.7

Install Avifile by running the following commands:

./configure --prefix=/usr \
    --with-win32-path=/usr/lib/avifile-0.7/win32 &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Contents

Installed Programs: avibench, avicap, avicat, avifile-config, avimake, aviplay, avirec, avirecompress, avitype and kv41setup
Installed Libraries: libaviplay.so, libaviplayavcodec.so, libaviplayavformat.so, libaviplayavutil.so, libaviplaydha.so, libaviplayvidix, libqavm.so and numerous CODEC plugins and video extensions.
Installed Directories: /usr/include/avifile-0.7, /usr/lib/avifile-0.7, and /usr/share/avifile-0.7

Short Descriptions

avibench

performs a measurement of the AVI file support library's performance for a file.

avicap

is a widget that displays acquired video from a Video For Windows (VFW) compatible device, like a webcam or a TV-tuner.

avicat

takes a set of AVI files and combines them into a single file.

avifile-config

is a script used to get information about the installed version of Avifile.

avimake

takes a set of JPG images and creates a movie.

aviplay

manages the input formats, the CODECs and the output formats to display AVI video files on your screen.

avirec

is a command-line video recording tool.

avirecompress

is a widget that takes an input file of one CODEC type and converts it into a video file of another CODEC.

avitype

will read and display AVI file header information.

kv41setup

is a small tool which tells video4linux about the current video mode.

libaviplay*.so

libraries contain the functions required by the various Avifile programs for encoding, decoding and to interface with the various plugins and video extensions.

MPlayer-1.0pre7try2

Introduction to MPlayer

The MPlayer package contains an audio/video player controlled via the command line or a graphical interface which is able to play almost every popular audio and video file format and CODEC (COder/DECoder, also COmpressor/DECompressor). With supported video hardware and additional drivers, MPlayer can play video files without an X Window System installed.

For MPlayer general information and available features, including a full list of file formats, CODECs and output devices supported by MPlayer, visit the MPlayer web site.

Package Information

Additional Downloads

CODECs

Skins

Fonts

Note

The CODECs, skins and fonts are not required to build and use MPlayer.

MPlayer Dependencies

Optional Input Drivers and Libraries

CDParanoia-III-9.8, libdv-0.104, libdvdread-0.9.6 (must disable internal mpdvdkit support), Samba-3.0.23d, LIVE555 Streaming Media, TiVo vstream client, DVB drivers, and DVB

Optional Audio Output Drivers and Libraries

ALSA-1.0.13, aRts-1.5.6, EsounD-0.2.36, NAS-1.7, SDL-1.2.11 (also used for video output), XMMS-1.2.10, PulseAudio, bio2jack (requires JACK), and LADSPA

Optional Video Output Drivers and Libraries

X Window System, libpng-1.2.12, libjpeg-6b, giflib-4.1.4, GTK+-1.2.10, FreeType-2.1.10, Fontconfig-2.3.2, AAlib-1.4rc5, FriBidi-0.10.7, XvMC Wrapper (only if you have XFree86 installed), DirectFB, SVGAlib, GGI, libcaca, and Enca

Optional CODECs

libvorbis-1.1.2, XviD-1.1.0, LZO-2.02 (requires Version 1), libmad-0.15.1b, LAME-3.96.1, libFAME-0.9.1, Theora, Tremor (requires libvorbis-1.1.2 and you must disable the internal version), FAAD2 (must disable internal version to use the system-installed version), x264, AMR narrowband (floating point) or AMR naarrowband (fixed point), AMR wideband, tooLAME, libdca, lirccd, and LIRC

Optional Hardware Specific Options

There is hardware specific packages (or vendor supplied software) you can install to improve the performance of your video card when using MPlayer. Some of the packages and/or vendor supplied software and the MPlayer specific driver created if it is found is shown here.

  • mga: Matrox G200/G400/G450/G550 hardware YUV overlay via the mga_vid device

  • xmga: Matrox G200/G400/G450/G550 overlay (mga_vid) in X11 window

  • syncfb: Matrox G400 YUV support on framebuffer

  • 3dfx: Voodoo 3/Banshee hardware YUV support (/dev/3dfx)

  • tdfxfb: Voodoo 3/Banshee hardware YUV support on tdfx framebuffer

  • mpegpes: support for Siemens DVB hardware MPEG-1/2 decoder boards (or MPEG-PES file output)

  • dxr2: support for DXR2 hardware MPEG-1/2 decoder boards Dxr2

  • dxr3: support for DXR3/Hollywood+ hardware MPEG-1/2 decoder boards libdxr3

  • zr: support for Zoran360[56]7 based hardware MJPEG cards

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/mplayer

Installation of MPlayer

CODEC Installation (Optional)

If you downloaded any proprietary CODECs (which can provide support for additional audio and video formats such as Real, Indeo and QuickTime), extract them to /usr/lib/mplayer/codecs using the following commands as the root user (substitute and/or add different CODEC filenames, if necessary):

install -v -d -m755 /usr/lib/mplayer/codecs &&
tar -xvf ../essential-20061022.tar.bz2 \
    -C /usr/lib/mplayer/codecs --strip-components=1 &&
chown -v -R root:root /usr/lib/mplayer/codecs

If you installed any CODECs, ensure you add --with-codecsdir=/usr/lib/mplayer/codecs to the configure script.

GUI Installation (Optional)

To enable building the GUI version of MPlayer (requires GTK+-1.2.10), add --enable-gui to the configure script. You'll also need to extract at least one skin. Extract the desired skin and create the default location (as the root user):

install -v -d -m755 /usr/share/mplayer/Skin &&
tar -xvf ../Blue-1.7.tar.bz2 \
    -C /usr/share/mplayer/Skin &&
chown -v -R root:root /usr/share/mplayer/Skin/Blue &&
chmod -v 755 /usr/share/mplayer/Skin/Blue{,/icons} &&
ln -sfv Blue /usr/share/mplayer/Skin/default

Installing OSD and Subtitles Support (Optional)

To enable OSD (On Screen Display) and subtitles support, add --enable-menu to the configure script. You'll also need to set up at least one font (see font installation instructions a little later).

Main MPlayer Installation

Note

The package maintainers recommend building without any optimizations.

MPlayer can build a shared post-processing library from the internal FFmpeg package which other packages can link to. This requires MPlayer to link dynamically to this library instead of the default statically linked method. If you desire to build the shared library, add --enable-shared-pp and --disable-fastmemcpy to the configure script. The --disable-fastmemcpy parameter is required to avoid undefined reference errors when other packages link to the shared library.

You may wish to examine the output from ./configure --help to find out what additional parameters to configure are needed to include the dependencies you have installed on your system.

Before beginning the installation, apply an upstream fix to avoid a conflict with the getline() function name:

sed -i 's/getline/vobsub_&/' vobsub.c

Install MPlayer by running the following commands:

patch -Np1 -i ../MPlayer-1.0pre7try2-kernel_2.6-1.patch &&
patch -Np1 -i ../MPlayer-1.0pre7try2-gcc4-1.patch &&
patch -Np1 -i ../MPlayer-1.0pre7try2-round_function_fix-1.patch &&
patch -Np1 -i ../MPlayer-1.0pre7try2-jack_fixes-1.patch &&
patch -Np1 -i ../MPlayer-1.0pre7try2-x264_fixes-1.patch &&

./configure --prefix=/usr \
            --confdir=/etc/mplayer \
            --enable-largefiles &&
make

This package does not come with a test suite.

Now, as the root user:

make install &&

install -v -m755 -d /usr/share/doc/mplayer-1.0pre7try2 &&
cp -v -R DOCS/*     /usr/share/doc/mplayer-1.0pre7try2

Passing certain parameters to configure may result in the creation of libdha.so.1.0. If so, you may wish to create a symlink to this library in case other packages link to libdha.so. Use the following command as the root user to create the symbolic link:

ln -v -s libdha.so.1.0 /usr/lib/libdha.so

You will need codecs.conf only if you want to change its properties, as the main binary contains an internal copy of it. Ensure any changes you make to codecs.conf achieve the desired results, as incorrect entries in this file have been known to cause errors and render the player unusable. If necessary, create the file using the following command.

install -m644 etc/codecs.conf /etc/mplayer

You may also want to copy all the default configuration files to /etc/mplayer for future reference or more customization ability.

install -m644 etc/*.conf /etc/mplayer

MPlayer requires that the RTC run at a frequency of 1024 Hz. Make this setting change at boot-time by adding a line to /etc/sysctl.conf:

echo "dev.rtc.max-user-freq=1024" >> /etc/sysctl.conf

OSD and Subtitles Font Installation (Required if '--enable-menu' Was Passed to 'configure')

The recommended method to set up a font for MPlayer is to link a TTF file to your ~/.mplayer directory. A link should be created in each user's home directory who may use MPlayer. For example:

install -v -m750 -d ~/.mplayer &&
ln -v -sf /usr/share/fonts/X11-TTF/luxisri.ttf \
    ~/.mplayer/subfont.ttf

There are several other ways to set up a font package. To use a prerendered MPlayer font package, extract and link one of the font tarballs using the following commands:

tar -xvf ../font-arial-iso-8859-1.tar.bz2 \
    -C /usr/share/mplayer/font &&
chown -v -R root:root /usr/share/mplayer/font &&
cd /usr/share/mplayer/font &&
ln -v -sf font-arial-iso-8859-1/font-arial-<font size>-iso-8859-1/* .

Available font sizes are 14, 18, 24 or 28.

Additional information as well as additional methods to set up an MPlayer font package can be found at http://www.mplayerhq.hu/DOCS/HTML/en/subosd.html#mpsub-install.

Installation for DVD Playback (Optional)

If you want DVD playback with MPlayer, you need to ensure a link exists between your DVD drive and /dev/dvd. This process is described in the Creating custom symlinks to devices section in LFS. The user must be part of the cdrom group in order to use the device.

Configuring MPlayer

Config Files

/etc/mplayer/* and ~/.mplayer/*

Configuration Information

Typically, there's no configuration required for the system-wide files in /etc/mplayer (in fact, this directory is empty unless you copied the default files as mentioned above). Configuration can be accomplished by choosing the configuration button located on the MPlayer GUI. Any configuration changes made here will be copied to the user's ~/.mplayer directory.

Contents

Installed Programs: gmplayer, mplayer, and mencoder
Installed Libraries: libdha.so and optionally, libpostproc.so
Installed Directories: ~/.mplayer, /etc/mplayer, /usr/include/postproc, /usr/lib/mplayer, /usr/share/mplayer, and /usr/share/doc/mplayer-1.0pre7try2

Short Descriptions

gmplayer

is a symlink to mplayer which brings up the graphical user interface component of MPlayer.

mplayer

manages the input formats, the CODECs and the output formats to play video files, DVDs, (S)VCDs or network streams containing audio and/or video information on your system.

Examples:

mplayer -fs blfs.avi
mplayer -vo fbdev -fb /dev/fb0 dvd://1 \
    -aid 128 -sub en -framedrop
mplayer -fs vcd://1    # works both for VCDs and SVCDs
mplayer \
http://www.students.uni-marburg.de/~Klossa/hapkidofight_lo.mpg

For further information, look at the very good documentation included with the package in the source tree subdirectory DOCS (also installed at /usr/share/doc/mplayer).

mencoder

is used to encode any MPlayer playable movie to DivX4, XviD or any CODEC in libavcodec with PCM/MP3/VBRMP3 audio.

Example:

rm frameno.avi
mencoder -dvd 1 -aid 128 -ovc frameno -oac mp3lame \
-lameopts vbr=3 -o frameno.avi

# mencoder should output bitrates for average encodings
# now, choose one you like best! In the following lines,
# replace <bitrate> and <name.avi> with statements of your
# personal liking.

mencoder -dvd 1 -aid 128 -oac copy -ovc lavc \
    -lavcopts vcodec=mpeg4:vpass=1:vhq:vbitrate=<bitrate> \
    -o <name.avi>
mencoder -dvd 1 -aid 128 -oac copy -ovc lavc \
    -lavcopts vcodec=mpeg4:vpass=2:vhq:vbitrate=<bitrate> \
    -o <name.avi>
mencoder -forceidx <name.avi>
libdha.so

contains functions used by the MPlayer programs.

libpostproc.so

is a post-processing filter library used by the MPlayer programs and other packages.

Xine User Interface-0.99.4

Introduction to Xine User Interface

The xine User Interface package contains a multimedia player. It plays back CDs, DVDs and VCDs. It also decodes multimedia files like AVI, MOV, WMV, MPEG and MP3 from local disk drives, and displays multimedia streamed over the Internet.

Package Information

Xine User Interface Dependencies

Required

xine Libraries-1.1.1

Optional

pkg-config-0.20, cURL-7.15.3, AAlib-1.4rc5, LIRC and libcaca

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/xine-ui

Installation of Xine User Interface

Install xine User Interface by running the following commands:

./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Configuring Xine User Interface

Config Files

~/.xine/config

Configuration Information

The above file is created and maintainable through the xine setup dialog box. The documentation for the configuration settings is located at /usr/share/doc/xine-ui/README.config_en.

Contents

Installed Programs: aaxine, cacaxine, fbxine, xine, xine-bugreport, xine-check, and xine-remote
Installed Directories: /usr/share/xine/{desktop,skins,visuals} and /usr/share/doc/{xine-ui,xitk}

Short Descriptions

aaxine

is an ASCII art video player which utilizes AAlib as the frontend for the xine Libraries.

cacaxine

is a color ASCII art video player which utilizes CACA as the frontend for the xine Libraries.

fbxine

is a frame buffer interface to the xine Libraries.

xine

is a multimedia player designed to play MPEG streams (audio and video), MPEG elementary streams (MP3), MPEG transport streams, Ogg files, AVI files, ASF files, some Quicktime files, VCDs and DVDs (non-encrypted).

xine-bugreport

produces a terse system description and guides you through the process of reporting a bug.

xine-check

tests the xine video player installation for common problems. It tests the operating system settings, installation of plugins, CD/DVD drive settings and video support parameters.

xine-remote

is a tool to connect to a xine remote control server.

Transcode-1.0.2

Introduction to Transcode

Transcode is a fast, versatile and command-line based audio/video everything to everything converter. For a rundown of the features and capabilities, along with usage examples, visit the Transcode Wiki at http://www.transcoding.org/.

Package Information

Transcode Dependencies

Required

FFmpeg-0.4.9-pre1 and libmpeg2-0.4.0b

Recommended

Optional (Listed in the Order That the configure Script Looks for Them)

pkg-config-0.20, X Window System, XviD-1.1.0, DivX4Linux, LoRS/IBP, MPlayer-1.0pre7try2 (for libpostproc), FreeType-2.1.10, Avifile-0.7.45, libogg-1.1.3, libvorbis-1.1.2, Theora, libdvdread-0.9.6, PVM3, libdv-0.104, libquicktime-0.9.9, LZO-2.02, liba52-0.7.4, LibMPEG3-1.6, libxml2-2.6.26, MJPEG Tools, SDL-1.2.11, GTK+-1.2.10, libFAME-0.9.1, ImageMagick-6.2.8-0, and libjpeg-6b or MMX Jpeg

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/transcode

Installation of Transcode

Install Transcode by running the following commands:

./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--enable-netstream: This parameter enables network streaming support.

Support for most of the dependency packages requires using options passed to the configure script. View the INSTALL file and the output from ./configure --help for complete information about enabling dependency packages.

Contents

Installed Programs: avicodec, avidump, avifix, aviindex, avimerge, avisplit, avisync, tccat, tcdecode, tcdemux, tcextract, tcframe, tcmodinfo, tcmp3cut, tcprobe, tcrequant, tcscan, tcxmlcheck, tcxpm2rgb, and transcode
Installed Libraries: a52_decore.so, af6_decore.so, export*.so, filter*.so, and import*.so output/filter/input modules
Installed Directories: /usr/lib/transcode and /usr/share/doc/transcode

Short Descriptions

avicodec

indicates or changes the FOURCC CODEC flag in an AVI file.

avidump

dumps audio or video stream of a given AVI file to stdout (for AVI conversion or extraction of audio streams).

avifix

fixes the header of an AVI file.

aviindex

writes a text file describing the index of an AVI file.

avimerge

merges AVI files of the same format. Do not try to merge AVI files of different formats, it will most likely result in errors (and format means same bitrates, too!).

avisplit

splits AVI files into multiple files.

avisync

can shift audio in AVI files for better synchronizing of the audio and video data signal.

tccat

concatenates input files using the input plugins of Transcode.

tcdecode

is used to decode input files to raw video and PCM audio streams.

tcdemux

demultiplexes (separates) audio/video input that contains multiple streams, e.g., VOB files.

tcextract

grabs single streams from a file containing multiple streams.

tcframe

processes single video frames for different color encodings (RGB >-< YUV or similar).

tcmodinfo

loads a supplied Transcode filter module and prints its parameters.

tcmp3cut

is a tool which can cut MP3 streams at milliseconds positions.

tcprobe

prints information about the input file format.

tcrequant

is a tool which can requantize an MPEG-2 elementary stream.

tcscan

performs several measurements on the given input data.

tcxmlcheck

checks information in a SMIL input file.

transcode

is the encoder's user interface that handles the plugins and other programs, being the glue between the modules. There are several well documented usage examples on both the homepage and the documentation included in the package.

a52_decore.so

is used to interface with the liba52 library for decoding AC-3 streams.

af6_decore.so

is a support module used to decode libaviplay library supported codecs and file formats

export/filter/import_*.so

— depending on the external libraries that are used, there are a great number of plugins to convert audio and video input to raw format, process raw video and audio and convert raw audio and video to other formats to be written into a file type of choice. Read the documentation for complete information.

Chapter 41. CD/DVD-Writing Utilities

This chapter contains information on CD/DVD-writing utilities in Linux.

Additional sources of information include:

Cdrtools-2.01

Introduction to Cdrtools

The Cdrtools package contains CD recording utilities. These are useful for reading, creating or writing (burning) Compact Discs.

Package Information

Additional Downloads

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/Cdrtools

Installation of Cdrtools

Note

Installation of Cdrtools will fail if raw kernel headers are found in /usr/src/linux either as actual files or a symlink. As of the Linux 2.6 kernel series, this directory should no longer exist because appropriate headers were installed in the linux-libc-headers package during the base LFS installation.

When creating an ISO 9660 image with mkisofs, the character set of the filenames used must be specified unless it is ISO-8859-1, the default. If the character set is not specified correctly, then non-ASCII filenames will be unreadable on other systems, such as Microsoft Windows. This patch allows any input character set supported by Glibc (such as UTF-8) to be specified to mkisofs, as opposed of the short list of built-in encodings. Also, the default input character set is set to that of the current locale, which is the correct behavior. To address this situation, apply the mkisofs_iconv patch:

patch -Np1 -i ../cdrtools-2.01-mkisofs_iconv-1.patch

The cdrecord program has hard-coded non-ASCII characters in its messages. Since these characters are part of the ISO-8859-1 character set, they will not be displayed correctly in locales that use a different character set, such as UTF-8. The following patch converts these characters to ASCII approximations:

patch -Np1 -i ../cdrtools-2.01-ascii-2.patch

Install Cdrtools by running the following commands:

make INS_BASE=/usr DEFINSUSR=root DEFINSGRP=root

This package does not come with a test suite.

Now, as the root user:

make INS_BASE=/usr DEFINSUSR=root DEFINSGRP=root install &&
install -v -m755 -d /usr/share/doc/cdrtools-2.01 &&
install -v -m644 README* ABOUT doc/*.ps \
    /usr/share/doc/cdrtools-2.01

Command Explanations

INS_BASE=/usr: This parameter moves the install directory from /opt/schily to /usr.

DEFINSUSR=root DEFINSGRP=root: These parameters install all programs with root:root ownership instead of the default bin:bin.

Contents

Installed Programs: cdda2wav, cdrecord, devdump, isodebug, isodump, isoinfo, isovfy, mkhybrid, mkisofs, readcd, rscsi, scgcheck, and skel
Installed Libraries: libdeflt.a, libedc_ecc.a, libfile.a, libhfs.a, libparanoia.a, librscg.a, libscg.a, libschily.a, and libunls.a
Installed Directories: None

Short Descriptions

cdda2wav

converts Compact Disc audio into WAV sound files.

cdrecord

records audio or data Compact Discs.

devdump

is a diagnostic program used to dump an ISO-9660 device or file in hex.

isodebug

is used to display the command-line parameters used to create an ISO-9660 image.

isodump

is a diagnostic program used to dump a device or file based on ISO-9660.

isoinfo

is used to analyze or list an ISO-9660 image.

isovfy

is used to verify an ISO-9660 image.

mkhybrid

is a symbolic link to mkisofs used to create ISO-9660/HFS hybrid filesystem images.

mkisofs

is used to create ISO-9660/JOLIET/HFS filesystem images, optionally with Rock Ridge attributes.

readcd

reads or writes Compact Discs.

rscsi

is a remote SCSI manager.

scgcheck

is used to check and verify the Application Binary Interface of libscg.

libscg.a

is a highly portable SCSI transport library.

Cdrdao-1.2.1

Introduction to Cdrdao

The Cdrdao package contains CD recording utilities. These are useful for burning a CD in disk-at-once mode.

Package Information

Cdrdao Dependencies

Recommended

Optional (Required to Build the gcdmaster Program)

Note: the following packages must be built in the order listed. Use the current “stable” version of each package.

libgnomeui-2.14.1, libsigc++, glibmm, gtkmm, libglademm, libgnomecanvasmm, gconfmm, gnome-vfsmm, libgnomemm, and libgnomeuimm

Note

There are two additional optional dependencies that can be used by the Cdrdao build: Cdrtools-2.01 and PCCTS. The pieces of these two packages required to build Cdrdao are also included in the source tree and are used by default.

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/cdrdao

Installation of Cdrdao

Install Cdrdao by running the following commands:

./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install &&
install -v -m755 -d /usr/share/doc/cdrdao-1.2.1 &&
install -v -m644 README* /usr/share/doc/cdrdao-1.2.1

Contents

Installed Programs: cdrdao, cue2toc, toc2cddb, toc2cue and optionally, gcdmaster and toc2mp3
Installed Libraries: None
Installed Directory: /usr/share/cdrdao, /usr/share/doc/cdrdao-1.2.1 and /usr/share/gcdmaster

Short Descriptions

cdrdao

records audio or data CD-Rs in disk-at-once (DAO) mode based on a textual description of the CD contents.

cue2toc

converts CUE to TOC format for audio CDs.

gcdmaster

is a graphical front end to cdrdao for composing audio CDs.

toc2cddb

converts a Cdrdao TOC file into a cddb file and prints it to stdout.

toc2cue

converts TOC to CUE format for audio CDs.

toc2mp3

converts an audio CD disk image (.toc file) to MP3 files.

UDFtools-1.0.0b3

Introduction to UDFtools

The UDFtools package contains utilities for creating and mounting CD-RW disks with UDF file systems for both reading and writing. UDF files systems are used on both CD-RW media and on DVD. For more details of the UDF file system standard see: http://www.osta.org and http://www.ecma-international.org.

Package Information

Additional Downloads

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/udftools

Kernel Configuration

In the kernel configuration, modify your settings to match those listed here:

Block devices
    Packet writing on CD/DVD media:       Y or M
CD-ROM/DVD Filesystems
    UDF file system support               Y or M

Recompile and install the new kernel.

Installation of UDFtools

Install UDFtools by running the following commands:

bzcat ../udftools-1.0.0b3.patch.bz2 | patch -Np1 &&
sed -i -e 's/(char\*)spm +=/spm = (char\*)spm +/' wrudf/wrudf.c &&
./configure --prefix=/usr &&
make

Now, as the root user:

make install

Command Explanations

sed -i -e 's/(char\*)spm +=/spm = (char\*)spm +/' wrudf/wrudf.c: This change is required to compile with recent compilers.

Contents

Installed Programs: cdrwtool, mkudffs, pktsetup, udffsck, and wrudf
Installed Library: libudffs.a
Installed Directories: None

Short Descriptions

cdrwtool

provides facilities to manage CD-RW drives, including formatting new disks, setting the read and write speeds, etc.

Example:

cdrwtool -d /dev/scd0 -q

prepares a new CD-RW for use and formats it with a UDF file system.

mkudffs

is used to create new UDF file systems. It can be used on hard disks and CD-Rs as well as CD-RWs.

pktsetup

is used to establish and break down associations between the kernel packet driver and a physical drive.

Example:

pktsetup /dev/pktcdvd0 /dev/scd0
mount /dev/pktcdvd0 /mnt/cdrom -t udf -o rw,noatime

associates the physical device /dev/scd0 with the kernel packet driver /dev/pktcdvd0, then mounts a UDF formatted CD-RW for read/write access.

udffsck

is used to check the integrity and correct errors on UDF filesystems.

wrudf

is used to maintain a UDF filesystem.

libudffs.a

contains functions used by the UDFtools programs.

dvd+rw-tools-6.1

Introduction to dvd+rw-tools

The dvd+rw-tools package contains several utilities to master the DVD media, both +RW/+R and -R[W]. The principle tool is growisofs which provides a way to both lay down and grow an ISO9660 file system on (as well as to burn an arbitrary pre-mastered image to) all supported DVD media. This is useful for creating a new DVD or adding to an existing image on a partially burned DVD.

Package Information

dvd+rw-tools Dependencies

Required

Though not required during the build, you must have Cdrtools-2.01 installed or the growisofs command will not function properly, rendering the entire package useless.

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/dvd+rw-tools

Installation of dvd+rw-tools

Install dvd+rw-tools by running the following commands:

make all rpl8 btcflash

This package does not come with a test suite.

Now, as the root user:

make prefix=/usr install &&

install -v -m644 -D index.html \
    /usr/share/doc/dvd+rw-tools-6.1/index.html

Command Explanations

make all rpl8 btcflash: This command uses additional targets so that all the utilities are built.

Contents

Installed Programs: btcflash, dvd+rw-booktype, dvd+rw-format, dvd+rw-mediainfo, dvd-ram-control, growisofs, and rpl8
Installed Libraries: None
Installed Directory: /usr/share/doc/dvd+rw-tools-6.1

Short Descriptions

growisofs

is a combined mkisofs frontend/DVD recording program.

K3b-0.12.16

Introduction to K3b

The K3b package contains a KDE-based graphical interface to the Cdrtools and dvd+rw-tools CD/DVD manipulation tools. It also combines the capabilities of many other multimedia packages into one central interface to provide a simple-to-operate application that can be used to handle many of your CD/DVD recording and formatting requirements. This is useful for creating audio, data, video and mixed-mode CDs as well as copying, ripping and burning CDs and DVDs.

Though K3b can be used to copy almost any DVD to similar medium, it does not provide a way to copy, or reproduce a double-layer DVD onto single-layer medium. Of course, there is not a program anywhere on any platform that can make an exact duplicate of a double-layer DVD onto a single-layer disk, there are programs on some platforms that can compress the data on a double-layer DVD to fit on a single-layer DVD producing a duplicate, but compressed, image. If you need to copy the contents of a double-layer DVD to single-layer medium, you may want to look at the RMLCopyDVD package.

Package Information

K3b Dependencies

Required

kdelibs-3.5.6

There are programs from three packages that K3b will look for at runtime: Cdrtools-2.01 (required to burn CD-ROM media), dvd+rw-tools-6.1 (required to burn or format DVD media), and Cdrdao-1.2.1 (required to burn CD-ROM media in DAO (Disk At Once) mode). If you don't need the capability provided by any of the three packages, you don't have to install it. However, a warning message will be generated every time you run the k3b program if any are not installed.

Recommended

Optional

ALSA-1.0.13, CDParanoia-III-9.8, FFmpeg-0.4.9-pre1, FLAC-1.1.2, HAL-0.5.7.1, LAME-3.96.1, libmad-0.15.1b, libmusicbrainz-2.1.4, libvorbis-1.1.2, libxml2-2.6.26, Transcode-1.0.2, libsndfile, MoviX, Musepack (libmpcdec), normalize, resmgr, Secret Rabbit Code (libsamplerate), SoX, TagLib, and VCDImager

For an explanation how each package is used by K3b, see the Requirements page at http://k3b.plainblack.com/requirements.

Runtime Requirements for DVD Ripping and Encoding

Transcode-1.0.2, XviD-1.1.0, libdvdread-0.9.6, and libdvdcss-1.2.9

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/k3b

Installation of K3b

Install K3b by running the following commands:

Note

The --sysconfdir parameter must be the same as the command used in the installation of kdelibs.

./configure --prefix=$(kde-config --prefix) \
            --sysconfdir=/etc/kde \
            --disable-debug \
            --disable-dependency-tracking &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--prefix=$(kde-config --prefix): This parameter uses kde-config to establish the prefix of the existing KDE installation and then sets the installation prefix for K3b to the same value.

disable-debug: This option causes the package to be compiled without debugging code.

disable-dependency-tracking: This option speeds up one time builds.

Configuring k3b

Configuration Information

You will need to ensure that any user of K3b has permission to read and write to the CD/DVD/audio hardware device files. The easiest way to do this is by creating groups (audio, video, cdrecord, dvdrecord, etc.,) and then add users to the appropriate groups. You'll also have to ensure that the Udev rules are set up appropriately if you are using a system where the device files are created during the system boot-up sequence.

There is a script installed (k3bsetup) that is a front-end to the k3bsetup2 KControlModule. This script can be accessed as a pull-down menu from the K3b GUI and requires root user privileges (root privileges are acquired through the use of the automatically-launched kdesud program). Though this utility can be used to set the appropriate permissions for the device files, be forewarned that in a Udev environment, where the device files are created during the system boot-up sequence, any changes made by this utility will not be preserved across system boots.

Contents

Installed Programs: k3b and k3bsetup
Installed Libraries: libk3b.so, libk3bdevice.so and numerous modules for the installed dependencies
Installed Directories: The following subdirectories of $KDE_PREFIX/share/: applnk/Settings/System, apps/k3b, doc/HTML/en/k3b

Short Descriptions

k3b

is the graphical CD/DVD program.

k3bsetup

is a script used to launch the k3bsetup2 KControlModule for setting up the CD/DVD hardware and device files in your system.

Part XII. Printing, Scanning and Typesetting

Chapter 42. Printing

This chapter contains spooling printer management systems and ghostscript applications to render PostScript for display on terminals or paper.

CUPS-1.2.7

Introduction to CUPS

The Common Unix Printing System (CUPS) is a print spooler and associated utilities. It is based on the "Internet Printing Protocol" and provides printing services to most PostScript and raster printers.

Package Information

CUPS Dependencies

Recommended

Optional

pkg-config-0.20, D-BUS-0.62, OpenLDAP-2.3.27, OpenSSL-0.9.8d or GnuTLS (which needs libgpg-error, libgcrypt and opencdk, in that order), Linux-PAM-0.99.4.0, PHP-5.1.4, Python-2.4.4, JDK-1.5.0_10, OpenSLP, libpaper, libacl (requires libattr), HTMLDOC, and Valgrind (optionally used if running the test suites)

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/cups

Installation of CUPS

Create an lp user, as CUPS will create some files owned by this user. (The lp user is the default used by CUPS, but may be changed to a different user by passing a parameter to the configure script.) Use the following command as the root user:

useradd -c "Print Service User" -d /dev/null -g lp -s /bin/false -u 9 lp

Install CUPS by running the following commands:

./configure &&
make

To test the results, issue: make check. This will run a basic test suite without any load testing. If you wish to run the tests specifying non-default parameters, issue: make test. Note that the “torture load testing” test uses more resources than those displayed in the prompt.

Now, as the root user:

make install

The man files are installed in compressed (.gz) format. If desired, use the following commands to uncompress them:

gunzip -v /usr/share/man/man{\
1/{cancel,cups{-config,test{dsc,ppd}},\
lp{,options,passwd,q,rm,r,stat}}.1,\
5/{{classes,client,cups-snmp,cupsd,printers,subscriptions,mailto}.conf,\
mime.{convs,types}}.5,\
7/{backend,filter}.7,\
8/{accept,cups{d,addsmb,enable,-{deviced,driverd,lpd,polld,}},\
lp{admin,info,move,c}}.8}.gz &&

rm -v /usr/share/man/man8/{reject,cupsdisable}.8.gz &&

ln -v -s accept.8 /usr/share/man/man8/reject.8 &&
ln -v -s cupsenable.8 /usr/share/man/man8/cupsdisable.8

Command Explanations

The basic default behavior of the installation is appropriate for LFS systems. CUPS files are placed in /usr/bin, /usr/sbin, /var and /etc/cups.

Configuring CUPS

Configuration of CUPS is dependent on the type of printer and can be complex. Generally, PostScript printers are easier. For detailed instructions on configuration and use of CUPS, see http://www.cups.org/documentation.php. The Software Administrators Manual and Software Users Manual are particularly useful.

For non-PostScript printers to print with CUPS, you need to install ESP Ghostscript-8.15.2 to convert PostScript to raster images and a driver (e.g., from Gimp-Print-4.2.7) to convert the resulting raster images to a form that the printer understands. Foomatic drivers use Ghostscript to convert PostScript to a printable form directly, but this is considered to be a hack by CUPS developers.

Boot Script

During the installation, CUPS added startup files in /etc/rc.d. These scripts will work in most cases, but will fail if you provide printers to Samba clients. Additionally, they are not consistent with standard LFS style scripts. Replace the installed scripts with the scripts and symlinks included in the blfs-bootscripts-20060910 package:

make install-cups

Contents

Installed Programs: accept, cancel, cups-config, cupsaddsmb, cupsd, cupstestppd, disable, enable, lp, lpadmin, lpc, lpinfo, lpmove, lpoptions, lppasswd, lpq, lpr, lprm, lpstat, and reject
Installed Libraries: libcups.{so,a}, libcupsimage.{so,a}, and various filters and backend drivers
Installed Directories: /etc/cups, /usr/include/cups, /usr/lib/cups, /usr/share/doc/cups, /usr/share/cups, /var/log/cups, and /var/spool/cups

Short Descriptions

accept

instructs the printing system to accept print jobs to the specified destinations.

cancel

cancels existing print jobs from the print queues.

cups-config

is a CUPS program configuration utility.

cupsaddsmb

exports printers to the Samba software for use with Windows clients.

cupsd

is the scheduler for the Common Unix Printing System.

cupstestppd

tests the conformance of PPD files.

disable

stops the named printers or classes.

enable

starts the named printers or classes.

lp

submits files for printing or alters a pending job.

lpadmin

configures printer and class queues provided by CUPS.

lpc

provides limited control over printer and class queues provided by CUPS.

lpinfo

lists the available devices or drivers known to the CUPS server.

lpmove

moves the specified job to a new destination.

lpoptions

displays or sets printer options and defaults.

lppasswd

adds, changes or deletes passwords in the CUPS digest password file passwd.md5.

lpq

shows the current print queue status on the named printer.

lpr

submits files for printing.

lprm

cancels print jobs that have been queued for printing.

lpstat

displays status information about the current classes, jobs, and printers.

reject

instructs the printing system to reject print jobs to the specified destinations.

LPRng-3.8.28

Introduction to LPRng

The LPRng package contains an enhanced, extended and portable implementation of the Berkeley Line PRinter (LPR) print spooler. This is useful for queuing print jobs.

Package Information

LPRng Dependencies

Optional

OpenSSL-0.9.8d, TCP Wrapper-7.6, Heimdal-0.7.2 or MIT Kerberos V5-1.6, and krb4

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/lprng

Installation of LPRng

Install LPRng by running the following commands:

sed -i 's@CLEAR,0@CLEAR,CLEAR,NULL@' src/common/lpq.c &&
sed -i 's@\(fi\|done\) \\@\1; \\@' Makefile.in &&
./configure --prefix=/usr --libexecdir=/usr/lib/lprng \
    --sysconfdir=/etc --enable-shared &&
make

Now, as the root user:

make install
install -v -d -m755 /usr/share/doc/lprng-3.8.28 &&
cp -v -R DOCS/* PrintingCookbook \
    /usr/share/doc/lprng-3.8.28

Command Explanations

sed -i 's@CLEAR ...': This fixes a gcc-4.1 warning, treated as an error.

sed -i 's@/\(fi ...': This fixes a syntax bug for newer makes.

Configuring LPRng

Config Files

/etc/printcap and /etc/lpd/*

Configuration Information

There is no generic printcap for all printers. A sample printcap is loaded into the /etc directory which can be of some help. Information is also available at http://www.lprng.org, http://www.linuxprinting.org and the documentation installed in /usr/share/doc/lprng-3.8.28.

Boot Script

The init script installed by LPRng is not consistent with other BLFS scripts; therefore, install the /etc/rc.d/init.d/lprng init script included in the blfs-bootscripts-20060910 package (as the root user):

make install-lprng

Note

You may also want to remove the lpd script that was installed in /etc/rc.d/init.d.

Contents

Installed Programs: cancel, checkpc, lp, lpc, lpd, lpq, lpr, lprm, lprng_certs, lprng_index_certs, and lpstat
Installed Library: liblpr.{so,a}
Installed Directories: /etc/lpd, /usr/lib/lprng, /usr/share/doc/3.8.28, /var/run/lpd, and /var/spool/lpd

Short Descriptions

cancel

is a symlink to lprm used to send cancel requests to an LPRng print service.

checkpc

checks out the printcap database.

lp

is a symlink to lpr used to send requests to an LPRng print service.

lpc

is a control program for the lpd daemon.

lpd

is the print queueing daemon.

lpq

is a status monitoring program.

lpr

is a print job spooler program.

lprm

is a print job removal program.

lprng_certs

is a program used to manage SSL certificates for the LPRng software.

lprng_index_certs

creates a set of index files in the LPRng signing certificate directory.

lpstat

is a print job status reporting program.

liblpr.{so,a}

contains the API functions used by the LPRng programs.

AFPL Ghostscript-8.53

Introduction to Ghostscript

Ghostscript is a versatile processor for PostScript data with the ability to render PostScript to different targets.

Package Information

Additional Downloads

Standard Fonts

Other Fonts

Ghostscript Dependencies

Optional

libjpeg-6b, libpng-1.2.12, GTK+-1.2.10, and X Window System

Conflicts

This version of Ghostscript does not work with CUPS due to missing generic "cups" raster image driver. The necessary support cannot be patched in due to incompatible licenses. Use ESP Ghostscript-8.15.2 instead if you have CUPS.

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gs

Installation of Ghostscript

Install Ghostscript by running the following commands:

./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install

To install the shared library libgs.so, run the following additional command as an unprivileged user:

make so

And again, as the root user:

make soinstall &&
install -v -d -m755 /usr/include/ps &&
install -v -m644 src/*.h /usr/include/ps &&
ln -v -s ps /usr/include/ghostscript

Note

The shared library depends on GTK+-1.2.10. It is only used in external programs like GSview-4.8 and ImageMagick-6.2.8-0.

To finish the installation, unpack all fonts you've downloaded to /usr/share/ghostscript and ensure the ownerships of the files are root:root. Substitute <font-tarball> appropriately in the command below for the fonts you wish to install:

tar -xvf ../<font-tarball> -C /usr/share/ghostscript &&
chown -v -R root:root /usr/share/ghostscript/fonts

Command Explanations

install ...: Some packages (ImageMagick is one) need the Ghostscript interface headers in place to link to the shared library. These commands install the headers.

ln -v -s ps /usr/include/ghostscript: Some packages expect to find the interface headers in an alternate location.

Contents

Installed Programs: bdftops, dumphint, ddvipdf, eps2eps, fixmswrd.pl, font2c, gs, gsbj, gsc, gsdj, gsdj500, gslj, gslp, gsnd, gsx, lprsetup.sh, pdf2dsc, pdf2ps, pdfopt, pf2afm, pfbtopfa, pj-gs.sh, printafm, ps2ascii, ps2epsi, ps2pdf, ps2pdf12, ps2pdf13, ps2pdf14, ps2pdfwr, ps2ps, pv.sh, unix-lpr.sh, and wftopfa
Installed Library: libgs.so
Installed Directories: /usr/include/ps and /usr/share/ghostscript

Short Descriptions

gs

invokes Ghostscript, an interpreter of Adobe Systems' PostScript(tm) and Portable Document Format (PDF) languages.

AFPL Ghostscript provides many different scripts used to render PostScript/PDF files back and forth. Please refer to the HTML documentation or try man gs for information about the capabilities provided by the package.

ESP Ghostscript-8.15.2

Introduction to ESP Ghostscript

ESP Ghostscript is a versatile processor for PostScript data with the ability to render PostScript to different targets. ESP Ghostscript is a customized version of GNU Ghostscript that includes an enhanced configuration script, the CUPS raster driver to support CUPS raster printer drivers, and additional patches and drivers from various Linux distributors.

Package Information

Additional Downloads

Standard Fonts

Other Fonts

ESP Ghostscript Dependencies

Optional

CUPS-1.2.7, libjpeg-6b, libpng-1.2.12, X Window System, GTK+-1.2.10, and jbig2dec

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/espgs

Installation of ESP Ghostscript

Install ESP Ghostscript by running the following commands:

sed -i "s/bbox.dev$/x11.dev/" Makefile.in &&
./configure --prefix=/usr --enable-threads --without-omni &&
make

This package does not come with a test suite. However, you may test the operation of the newly built gs program by issuing the following command (issue from an X Windows terminal):

bin/gs -Ilib -dBATCH examples/tiger.eps

Now, as the root user:

make install &&
install -d /usr/share/doc/espgs-8.15.2
ln -v -s ../../ghostscript/8.15/doc /usr/share/doc/espgs-8.15.2 &&
for INSTFILE in `ls doc`
do
  if [ ! -f /usr/share/doc/espgs-8.15.2/$INSTFILE ]; then
    install -v -m644 doc/$INSTFILE /usr/share/doc/espgs-8.15.2/
  fi
done

To install the shared library libgs.so you will need GTK+-1.2.10. Note that the shared library is only used in external programs such as GSview-4.8 and ImageMagick-6.2.8-0. Proceed with the following command as an unprivileged user:

make CFLAGS_SO='-fPIC $(ACDEFS)' so

Now, as the root user:

make soinstall &&
install -v -d -m755 /usr/include/ps &&
install -v -m644 src/*.h /usr/include/ps &&
ln -v -s ps /usr/include/ghostscript

To finish the installation, unpack all fonts you've downloaded to /usr/share/ghostscript and ensure the ownerships of the files are root:root. Substitute <font-tarball> appropriately in the command below for the fonts you wish to install:

tar -xvf ../<font-tarball> -C /usr/share/ghostscript &&
chown -v root:root /usr/share/ghostscript/fonts/*

Command Explanations

sed -i "s/bbox.dev$/x11.dev/" Makefile.in: This command changes the default gs output device from the bbox driver to the x11 (screen) driver.

--enable-threads: This parameter enables threaded output.

--without-omni: This switch disables the omni driver support.

--without-ijs: This switch disables the IJS driver support.

install -v -m644 src/*.h /usr/include/ps: Some packages (ImageMagick is one) need the Ghostscript interface headers in place to link to the shared library. These commands install the headers.

ln -v -s ps /usr/include/ghostscript: Some packages expect to find the interface headers in an alternate location.

for INSTFILE in `ls doc` ...: This “for” loop installs some documentation files that were not installed during the installation process.

Contents

Installed Programs: bdftops, dvipdf, eps2eps, fixmswrd.pl, font2c, gs, gsbj, gsc, gsdj, gsdj500, gslj, gslp, gsnd, gsx, lprsetup.sh, pdf2dsc, pdf2ps, pdfopt, pf2afm, pfbtopfa, printafm, ps2ascii, ps2epsi, ps2pdf,ps2pdf12, ps2pdf13, ps2pdf14, ps2pdfwr, ps2ps, pv.sh, unix-lpr.sh, and wftopfa
Installed Library: libgs.so
Installed Directories: /usr/include/ps and /usr/share/ghostscript

Short Descriptions

gs

invokes Ghostscript, an interpreter of Adobe Systems' PostScript(tm) and Portable Document Format (PDF) languages.

pstoraster

is a filter used by CUPS to convert PostScript to a generic raster image format that is acceptable as an input to drivers for non-PostScript printers (e.g., from Gimp-Print-4.2.7). It is built and installed only if CUPS-1.2.7 is found.

ESP Ghostscript provides many different scripts used to render PostScript/PDF files back and forth. Please refer to the HTML documentation or try man gs for information about the capabilities provided by the package.

Gimp-Print-4.2.7

Introduction to Gimp-Print

The Gimp-Print package contains high quality drivers for Canon, Epson, Lexmark and PCL printers for use with ESP Ghostscript-8.15.2, CUPS-1.2.7, Foomatic, LPRng-3.8.28, lpr and the GIMP-1.2. See a list of supported printers at http://gimp-print.sourceforge.net/p_Supported_Printers.php3.

Package Information

Gimp-Print Dependencies

Optional

CUPS-1.2.7, Foomatic, IJS, teTeX-3.0, DocBook-utils-0.6.14 and ESP Ghostscript-8.15.2 or AFPL Ghostscript-8.53

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gimp-print

Installation of Gimp-Print

Install Gimp-Print by running the following commands:

./configure --prefix=/usr --with-testpattern --enable-test &&
make

To test the results, issue make check.

Now, as the root user:

make install

Command Explanations

--with-testpattern: This parameter causes the test pattern generator program to be built.

--enable-test: This parameter causes the programs required by the test suite to be built.

--with-translated-ppds=no: When this switch is given, only US English PPD files for CUPS will be built. Useful if the PPD files are not yet translated into your native language and you want to save some space by not installing unneeded translations.

--enable-cups-level3-ps: This option causes the build process to generate PostScript level 3 PPD files instead of level 2 ones.

Configuring Gimp-Print

Configuration Information

For CUPS to see newly installed PPD files, it has to be restarted (as the root user):

/etc/rc.d/init.d/cups restart

Note

This command may take a very long time (up to 10 minutes) to complete. Don't panic while CUPS is rescanning the list of PPD files. The long delay will happen only once.

Then point your web browser to http://localhost:631/ to add a new printer to CUPS.

Contents

Installed Programs: cups-calibrate, escputil, gimpprint-config, ijsgimpprint, and testpattern
Installed Libraries: libgimpprint.{so,a} and optionally, various CUPS filters and backend drivers
Installed Directories: /usr/include/gimp-print, /usr/lib/gimp, /usr/share/cups/model/C, and /usr/share/gimp-print

Short Descriptions

cups-calibrate

calibrates the color output of printers using the Gimp-Print, CUPS or ESP Print Pro drivers.

escputil

is a command line utility to perform various maintenance tasks on Epson Stylus inkjet printers.

gimpprint-config

is a script to get information about the installed version of Gimp-Print.

ijsgimpprint

is a Ghostscript driver for Gimp-Print.

Chapter 43. Scanning

This chapter contains scanning applications which allow you to convert printed documents into formatted documents readable by other applications.

SANE-1.0.17

Introduction to SANE

SANE is short for Scanner Access Now Easy. Scanner access, however, is far from easy, since every vendor has their own protocols. The only known protocol that should bring some unity into this chaos is the TWAIN interface, but this is too imprecise to allow a stable scanning framework. Therefore, SANE comes with its own protocol, and the vendor drivers can't be used.

SANE is split into back ends and front ends. The back ends are drivers for the supported scanners and cameras. The front ends are user interfaces to access the backends.

Back Ends Package Information

Front Ends Package Information

SANE Dependencies

Optional (Back Ends)

libjpeg-6b, libusb-0.1.12, libieee1284, libgphoto2, and teTeX-3.0

Optional (Front Ends)

X Window System, GTK+-2.8.20, and GIMP-2.2.12

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/sane

Kernel Configuration

To access your scanner, you will probably need the related kernel drivers and/or additional support packages. A SCSI scanner will need SCSI drivers, a parallel port scanner needs parallel port support (you should use enhanced EPP modes) and perhaps libieee1284 and a USB scanner will need the libusb-0.1.12 package. Ensure you have the necessary drivers properly configured to access the devices.

Installation of SANE

Installation of SANE Back Ends

Install SANE-backends by running the following commands:

./configure --prefix=/usr --sysconfdir=/etc &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Installation of SANE Front Ends

The SANE-frontends package includes the graphical frontends xscanimage and xcam, and a command-line frontend scanadf. You don't need this package if you intend to use one of the more advanced graphical frontends like XSane-0.97. For a list of frontend packages, see http://www.sane-project.org/sane-frontends.html.

To install SANE-frontends, use the following commands:

./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install &&
install -v -m644 doc/sane.png xscanimage-icon-48x48-2.png \
    /usr/share/sane

If GIMP was linked into the build and you wish GIMP to use xscanimage as a scanning plugin, issue the following command as the root user:

ln -v -s ../../../../bin/xscanimage /usr/lib/gimp/2.0/plug-ins

Command Explanations

--sysconfdir=/etc: This switch installs the configuration files in /etc/sane.d instead of /usr/etc/sane.d.

Configuring SANE

Config Files

/etc/sane.d/*.conf

Configuration Information

Backend Configuration

The backend configuration files are located in /etc/sane.d. Information for configuring the various backends can be found by using the man(5) page for the desired backend. Run man sane-<backend>, substituting the desired backend.

General Information

For general information about configuring and using SANE, see man sane. Linux-2.6.x brings some special issues into the picture. See http://www.sane-project.org/README.linux for information about using SANE with the Linux-2.6.x kernel. For information about USB scanning devices, run man sane-usb. For information about SCSI devices, run man sane-scsi.

Configuration and setup of the 'saned' daemon

The saned daemon is not meant to be used for untrusted clients. You should provide TCP Wrapper-7.6 and/or Firewalling protection to ensure only trusted clients access the daemon. Due to the complex security requirements to ensure only trusted clients access the daemon, BLFS does not provide instructions to configure the saned daemon. If you desire to make the daemon available, ensure you provide adequate security, configure your [x]inetd.conf file and send a SIGHUP to the [x]inetd daemon. Some good information for setting up and securing the saned daemon can be found at http://penguin-breeder.org/sane/saned/.

Contents

Back Ends:

Installed Programs: gamma4scanimage, sane-config, saned, sane-find-scanner, and scanimage
Installed Libraries: libsane.so and numerous scanner backend modules
Installed Directories: /etc/sane.d, /usr/include/sane, /usr/lib/sane, /usr/share/sane, and /usr/share/doc/sane-1.0.17

Front Ends:

Installed Programs: scanadf, xcam, and xscanimage
Installed Library: GIMP plugin embedded in xscanimage
Installed Directories: None

Short Descriptions

gamma4scanimage

creates a gamma table in the format expected by scanimage.

sane-config

is a tool used to determine the compiler and linker flags that should be used to compile and link SANE.

saned

is the SANE daemon that allows remote clients to access image acquisition devices available on the local host.

sane-find-scanner

is a command-line tool to find SCSI and USB scanners and determine their device files. Its primary purpose is to make sure that scanners can be detected by SANE backends.

scanadf

is a command-line interface to control image acquisition devices which are equipped with an automatic document feeder (ADF).

scanimage

is a command line interface for scanning from image acquisition devices such as flatbed scanners or cameras. It is also used to list the available backend devices.

xcam

is a graphical camera front end for SANE.

xscanimage

is a graphical user interface for scanning.

libsane.so

is the application programming interface that is used to communicate between frontends and backends.

libsane-*.so

modules are backend scanning library plugins used to interface with scanning devices. See http://www.sane-project.org/sane-supported-devices.html for a list of supported backends.

XSane-0.97

Introduction to XSane

XSane is another front end for SANE-1.0.17. It has additional features to improve the image quality and ease of use compared to xscanimage.

Package Information

XSane Dependencies

Required

GTK+-2.8.20 or GTK+-1.2.10 and SANE-1.0.17 (back ends)

Optional

LibTIFF-3.8.2, libjpeg-6b and GIMP-2.2.12

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/xsane

Installation of XSane

Install XSane by running the following commands:

./configure --prefix=/usr &&
make

Now, as the root user:

make install

If GIMP is installed, issue the following command as the root user:

ln -v -s /usr/bin/xsane /usr/lib/gimp/2.0/plug-ins/

Command Explanations

ln -v -s /usr/bin/xsane /usr/lib/gimp/2.0/plug-ins/: This creates a link in the system-wide GIMP plug-ins directory so that users can access XSane directly from GIMP. GIMP must be available before building XSane for this to work. Alternatively, create the link in ~/.gimp-2.0/plug-ins/ to provide individual user access. man xsane for additional information.

Contents

Installed Program: xsane
Installed Libraries: None
Installed Directory: /usr/share/sane/xsane

Short Descriptions

xsane

is a graphical user-interface to control an image acquisition device such as a flatbed scanner.

Chapter 44. Standard Generalized Markup Language (SGML)

This chapter contains DocBook SGML document type definitions (DTDs), DocBook DSSSL Stylesheets and DocBook tools to validate, transform, format and publish DocBook documents.

SGML Common-0.6.3

Introduction to SGML Common

The SGML Common package contains install-catalog. This is useful for creating and maintaining centralized SGML catalogs.

Package Information

Additional Downloads

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/sgml-common

Installation of SGML Common

Instead of the normal convention of including the autotools files in the package, the maintainers included symlinks to the files in /usr/share/automake. For previous versions of Automake this convention is correct, but recent versions of Automake install the internal files in version specific directories. This causes the configure script to abort. To fix this error, the autotools are regenerated. Since the included Makefile.am file uses a syntax not supported by current versions of Automake, a patch is required to fix the syntax.

patch -Np1 -i ../sgml-common-0.6.3-manpage-1.patch &&
autoreconf -f -i

Install SGML Common by running the following commands:

./configure --prefix=/usr --sysconfdir=/etc &&
make

This package does not come with a test suite.

Now, as the root user:

make install &&
install-catalog --add /etc/sgml/sgml-ent.cat \
    /usr/share/sgml/sgml-iso-entities-8879.1986/catalog &&
install-catalog --add /etc/sgml/sgml-docbook.cat \
    /etc/sgml/sgml-ent.cat

Update Hint

Remove the above catalog items prior to upgrading (as the root user) with:

install-catalog --remove /etc/sgml/sgml-ent.cat \
    /usr/share/sgml/sgml-iso-entities-8879.1986/catalog &&
install-catalog --remove /etc/sgml/sgml-docbook.cat \
    /etc/sgml/sgml-ent.cat

Configuring SGML Common

Config Files

/etc/sgml/sgml.conf

Configuration Information

No change in this file is necessary.

Contents

Installed Programs: install-catalog and sgmlwhich
Installed Libraries: None
Installed Files: SGML and XML DocBook entity files
Installed Directories: /etc/sgml, /usr/share/doc/sgml-common-0.6.3, and /usr/share/sgml

Short Descriptions

install-catalog

creates a centralized catalog that maintains references to catalogs scattered throughout the /usr/share/sgml directory tree.

sgmlwhich

will print to standard output the name of the main configuration file.

SGML entities files

contain the basic character entities defined with SDATA entries.

XML entities files

contain the basic character entities defined by a hexadecimal representation of the Unicode character number.

DocBook SGML DTD-3.1

Introduction to DocBook SGML DTD

The DocBook SGML DTD package contains document type definitions for verification of SGML data files against the DocBook rule set. These are useful for structuring books and software documentation to a standard allowing you to utilize transformations already written for that standard.

Package Information

DocBook SGML DTD Dependencies

Required

SGML Common-0.6.3 and UnZip-5.52

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/sgml-dtd-3

Installation of DocBook SGML DTD

Note

The package source is distributed in zip format and requires unzip. You should create a directory and change to that directory before unzipping the file to ease the removal of the source files after the package has been installed.

Install DocBook SGML DTD by running the following commands:

sed -i -e '/ISO 8879/d' \
    -e 's|DTDDECL "-//OASIS//DTD DocBook V3.1//EN"|SGMLDECL|g' \
    docbook.cat

This package does not come with a test suite.

Now, as the root user:

install -v -d -m755 /usr/share/sgml/docbook/sgml-dtd-3.1 &&
chown -R root:root . &&
install -v docbook.cat /usr/share/sgml/docbook/sgml-dtd-3.1/catalog &&
cp -v -af *.dtd *.mod *.dcl /usr/share/sgml/docbook/sgml-dtd-3.1 &&
install-catalog --add /etc/sgml/sgml-docbook-dtd-3.1.cat \
    /usr/share/sgml/docbook/sgml-dtd-3.1/catalog &&
install-catalog --add /etc/sgml/sgml-docbook-dtd-3.1.cat \
    /etc/sgml/sgml-docbook.cat

Command Explanations

sed -i -e '/ISO 8879/d' docbook.cat: This command removes the ENT definitions from the catalog file.

sed -i -e 's|DTDDECL "-//OASIS//DTD Docbook V3.1//EN"|SGMLDECL|g' docbook.cat: This command replaces the DTDDECL catalog entry, which is not supported by Linux SGML tools, with the SGMLDECL catalog entry.

Configuring DocBook SGML DTD

Config Files

/etc/sgml/catalog

Configuration Information

The above installation script updates the catalog.

Using only the most current 3.x version of DocBook SGML DTD requires the following (perform as the root user):

cat >> /usr/share/sgml/docbook/sgml-dtd-3.1/catalog << "EOF"
  -- Begin Single Major Version catalog changes --

PUBLIC "-//Davenport//DTD DocBook V3.0//EN" "docbook.dtd"

  -- End Single Major Version catalog changes --
EOF

Contents

Installed Programs: None
Installed Libraries: None
Installed Files: SGML DTD and MOD files
Installed Directory: /usr/share/sgml/docbook/sgml-dtd-3.1

Short Descriptions

SGML DTD files

contain a document type definition which defines the element types and the attribute lists that can be used in the corresponding SGML files.

SGML MOD files

contain components of the document type definition that are sourced into the DTD files.

DocBook SGML DTD-4.4

Introduction to DocBook SGML DTD

The DocBook SGML DTD package contains document type definitions for verification of SGML data files against the DocBook rule set. These are useful for structuring books and software documentation to a standard allowing you to utilize transformations already written for that standard.

Package Information

DocBook SGML DTD Dependencies

Required

SGML Common-0.6.3 and UnZip-5.52

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/sgml-dtd

Installation of DocBook SGML DTD

Note

The package source is distributed in zip format and requires unzip. You should create a directory and change to that directory before unzipping the file to ease the removal of the source files after the package has been installed.

Install DocBook SGML DTD by running the following commands:

sed -i -e '/ISO 8879/d' \
    -e '/gml/d' docbook.cat

This package does not come with a test suite.

Now, as the root user:

install -v -d /usr/share/sgml/docbook/sgml-dtd-4.4 &&
chown -R root:root . &&
install -v docbook.cat /usr/share/sgml/docbook/sgml-dtd-4.4/catalog &&
cp -v -af *.dtd *.mod *.dcl /usr/share/sgml/docbook/sgml-dtd-4.4 &&
install-catalog --add /etc/sgml/sgml-docbook-dtd-4.4.cat \
    /usr/share/sgml/docbook/sgml-dtd-4.4/catalog &&
install-catalog --add /etc/sgml/sgml-docbook-dtd-4.4.cat \
    /etc/sgml/sgml-docbook.cat

Command Explanations

sed -i -e '/ISO 8879/d' -e '/gml/d' docbook.cat: This command removes the ENT definitions from the catalog file.

Configuring DocBook SGML DTD

Config Files

/etc/sgml/catalog

Configuration Information

The above installation script updates the catalog.

Using only the most current 4.x version of DocBook SGML DTD requires the following (perform as the root user):

cat >> /usr/share/sgml/docbook/sgml-dtd-4.4/catalog << "EOF"
  -- Begin Single Major Version catalog changes --

PUBLIC "-//OASIS//DTD DocBook V4.3//EN" "docbook.dtd"
PUBLIC "-//OASIS//DTD DocBook V4.2//EN" "docbook.dtd"
PUBLIC "-//OASIS//DTD DocBook V4.1//EN" "docbook.dtd"
PUBLIC "-//OASIS//DTD DocBook V4.0//EN" "docbook.dtd"

  -- End Single Major Version catalog changes --
EOF

Contents

Installed Programs: None
Installed Libraries: None
Installed Files: SGML DTD and MOD files
Installed Directory: /usr/share/sgml/docbook/sgml-dtd-4.4

Short Descriptions

SGML DTD files

contain a document type definition which defines the element types and the attribute lists that can be used in the corresponding SGML files.

SGML MOD files

contain components of the document type definition that are sourced into the DTD files.

OpenSP-1.5.2

Introduction to OpenSP

The OpenSP package contains a C++ library for using SGML/XML files. This is useful for validating, parsing and manipulating SGML and XML documents.

Package Information

OpenSP Dependencies

Required

SGML Common-0.6.3

Optional

xmlto

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/opensp

Installation of OpenSP

Install OpenSP by running the following commands:

sed -i 's:32,:253,:' lib/Syntax.cxx &&
sed -i 's:LITLEN          240 :LITLEN          8092:' \
    unicode/{gensyntax.pl,unicode.syn} &&
./configure --prefix=/usr --disable-static --disable-doc-build \
    --enable-default-catalog=/etc/sgml/catalog --enable-http \
    --enable-default-search-path=/usr/share/sgml &&
make pkgdatadir=/usr/share/sgml/OpenSP-1.5.2

To test the results, issue make check. As many as eight of the 22 tests may fail. Do not be alarmed.

Now, as the root user:

make pkgdatadir=/usr/share/sgml/OpenSP-1.5.2 install &&
ln -v -sf onsgmls /usr/bin/nsgmls &&
ln -v -sf osgmlnorm /usr/bin/sgmlnorm &&
ln -v -sf ospam /usr/bin/spam &&
ln -v -sf ospcat /usr/bin/spcat &&
ln -v -sf ospent /usr/bin/spent &&
ln -v -sf osx /usr/bin/sx &&
ln -v -sf osx /usr/bin/sgml2xml &&
ln -v -sf libosp.so /usr/lib/libsp.so

Command Explanations

sed -i 's:32,:253,:...unicode.syn}: These seds prevent some annoying messages that may otherwise appear while running openjade.

--disable-static: This switch prevents the building of the static library.

--enable-http: This switch adds support for HTTP.

--enable-default-catalog=/etc/sgml/catalog: This switch sets the path to the centralized catalog.

--enable-default-search-path: This switch sets the default value of SGML_SEARCH_PATH.

--enable-xml-messages: This switch adds support for XML Formatted Messages.

--disable-doc-build: This switch prevents the configure script checking if you have xmlto installed. If you have xmlto, you can remove this option.

make pkgdatadir=/usr/share/sgml/OpenSP-1.5.2: This sets the pkgdatadir variable in the Makefile from /usr/share/OpenSP to /usr/share/sgml/OpenSP-1.5.2.

ln -v -sf ...: These commands create the SP equivalents of OpenSP executables and libraries.

Contents

Installed Programs: onsgmls, osgmlnorm, ospam, ospcat, ospent, osx, and the SP equivalent symlinks: nsgmls, sgml2xml, sgmlnorm, spam, spcat, spent, and sx
Installed Library: libosp.so and the SP equivalent symlink: libsp.so
Installed Directories: /usr/include/OpenSP, /usr/share/doc/OpenSP, and /usr/share/sgml/OpenSP-1.5.2

Short Descriptions

onsgmls

is used to process SGML files.

osgmlnorm

prints on the standard output a normalized document instance for the SGML document contained in the concatenation of the entities with system identifiers .nf and .fi.

ospam

is a markup stream editor.

ospcat

prints effective system identifiers found in the catalogs.

ospent

provides access to OpenSP's entity manager.

osx

is an SGML normalizer or used to convert SGML files to XML files.

nsgmls

is a symlink to onsgmls.

sgml2xml

is a symlink to osx.

sgmlnorm

is a symlink to osgmlnorm.

spam

is a symlink to ospam.

spcat

is a symlink to ospcat.

spent

is a symlink to ospent.

sx

is a symlink to osx.

libosp.so

contains functions required by the OpenSP programs to parse, validate and manipulate SGML and XML files.

libsp.so

is a symlink to libosp.so.

OpenJade-1.3.2

Introduction to OpenJade

The OpenJade package contains a DSSSL engine. This is useful for SGML and XML transformations into RTF, TeX, SGML and XML.

Package Information

OpenJade Dependencies

Required

OpenSP-1.5.2

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/openjade

Installation of OpenJade

Install OpenJade by running the following commands:

./configure --prefix=/usr --enable-http --disable-static \
    --enable-default-catalog=/etc/sgml/catalog \
    --enable-default-search-path=/usr/share/sgml \
    --datadir=/usr/share/sgml/openjade-1.3.2 &&
make

This package does not come with a test suite.

Now, as the root user:

make install &&
make install-man &&
ln -v -sf openjade /usr/bin/jade &&
ln -v -sf libogrove.so /usr/lib/libgrove.so &&
ln -v -sf libospgrove.so /usr/lib/libspgrove.so &&
ln -v -sf libostyle.so /usr/lib/libstyle.so &&
install -v -m644 dsssl/catalog /usr/share/sgml/openjade-1.3.2/ &&
install -v -m644 dsssl/*.{dtd,dsl,sgm} \
    /usr/share/sgml/openjade-1.3.2 &&
install-catalog --add /etc/sgml/openjade-1.3.2.cat \
    /usr/share/sgml/openjade-1.3.2/catalog &&
install-catalog --add /etc/sgml/sgml-docbook.cat \
    /etc/sgml/openjade-1.3.2.cat

Command Explanations

make install-man: This command installs the openjade man page.

--disable-static: This switch prevents the building of the static library.

--enable-http: This switch adds support for HTTP.

--enable-default-catalog=/etc/sgml/catalog: This switch sets the path to the centralized catalog.

--enable-default-search-path: This switch sets the default value of SGML_SEARCH_PATH.

--datadir=/usr/share/sgml/openjade-1.3.2: This switch puts data files in /usr/share/sgml/openjade-1.3.2 instead of /usr/share.

ln -v -sf ...: These commands create the Jade equivalents of OpenJade executables and libraries.

Configuring OpenJade

Configuration Information

echo "SYSTEM \"http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd\" \
    \"/usr/share/xml/docbook/xml-dtd-4.4/docbookx.dtd\"" >> \
    /usr/share/sgml/openjade-1.3.2/catalog

This configuration is only necessary if you intend to use OpenJade to process the BLFS XML files through DSSSL Stylesheets.

Contents

Installed Programs: openjade and the Jade equivalent symlink, jade
Installed Libraries: libogrove.so, libospgrove.so, libostyle.so, and the Jade equivalent symlinks: libgrove.so, libspgrove.so, and libstyle.so
Installed Directory: /usr/share/sgml/openjade-1.3.2

Short Descriptions

openjade

is a DSSSL engine used for transformations.

jade

is a symlink to openjade.

DocBook DSSSL Stylesheets-1.79

Introduction to DocBook DSSSL Stylesheets

The DocBook DSSSL Stylesheets package contains DSSSL stylesheets. These are used by OpenJade or other tools to transform SGML and XML DocBook files.

Package Information

Additional Downloads

DocBook DSSSL Stylesheets Dependencies

Required

SGML Common-0.6.3

Required (to Test the DocBook SGML Toolchain)

DocBook SGML DTD-3.1, DocBook SGML DTD-4.4, OpenSP-1.5.2 and OpenJade-1.3.2

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/docbook-dsssl

Installation of DocBook DSSSL Stylesheets

Ensure you unpack both the source and documentation tarballs before beginning the build.

Install DocBook DSSSL Stylesheets by running the following commands as the root user:

install -v -m755 bin/collateindex.pl /usr/bin &&
install -v -m644 bin/collateindex.pl.1 /usr/share/man/man1 &&
install -v -d -m755 /usr/share/sgml/docbook/dsssl-stylesheets-1.79 &&
cp -v -R * /usr/share/sgml/docbook/dsssl-stylesheets-1.79 &&
install-catalog --add /etc/sgml/dsssl-docbook-stylesheets.cat \
    /usr/share/sgml/docbook/dsssl-stylesheets-1.79/catalog &&
install-catalog --add /etc/sgml/dsssl-docbook-stylesheets.cat \
    /usr/share/sgml/docbook/dsssl-stylesheets-1.79/common/catalog &&
install-catalog --add /etc/sgml/sgml-docbook.cat \
    /etc/sgml/dsssl-docbook-stylesheets.cat

Command Explanations

The above commands create an installation script for this package.

Testing the DocBook SGML Toolchain (Optional)

The following commands will perform the necessary tests to confirm that your installed DocBook SGML toolchain will produce desired results. You must have the DocBook SGML DTD-3.1, DocBook SGML DTD-4.4, OpenSP-1.5.2 and OpenJade-1.3.2 packages installed and perform the tests as the root user.

All tests will be performed from the /usr/share/sgml/docbook/dsssl-stylesheets-1.79/doc/testdata directory:

cd /usr/share/sgml/docbook/dsssl-stylesheets-1.79/doc/testdata

The first test should produce no output to stdout (your screen) and create a file named jtest.rtf in the current directory:

openjade -t rtf -d jtest.dsl jtest.sgm

The next test should return only the following line to stdout: onsgmls:I: "OpenSP" version "1.5.2"

onsgmls -sv test.sgm

The next test should produce no output to stdout and create a file named test.rtf in the current directory:

openjade -t rtf \
    -d /usr/share/sgml/docbook/dsssl-stylesheets-1.79/print/docbook.dsl \
    test.sgm

The last test should produce no output to stdout and create a file named c1.htm in the current directory:

openjade -t sgml \
    -d /usr/share/sgml/docbook/dsssl-stylesheets-1.79/html/docbook.dsl \
    test.sgm

Contents

Installed Program: collateindex.pl
Installed Libraries: None
Installed Files: DSSSL stylesheets
Installed Directory: /usr/share/sgml/docbook/dsssl-stylesheets-1.79

Short Descriptions

collateindex.pl

is a Perl script that creates a DocBook index from raw index data.

DocBook-utils-0.6.14

Introduction to DocBook-utils

The DocBook-utils package is a collection of utility scripts used to convert and analyze SGML documents in general, and DocBook files in particular. The scripts are used to convert from DocBook or other SGML formats into “classical” file formats like HTML, man, info, RTF and many more. There's also a utility to compare two SGML files and only display the differences in markup. This is useful for comparing documents prepared for different languages.

Package Information

DocBook-utils Dependencies

Required

OpenJade-1.3.2, DocBook DSSSL Stylesheets-1.79 and DocBook SGML DTD-3.1

Optional (Runtime Dependencies Only)

JadeTeX-3.13 (for conversion to DVI, PS and PDF), SGMLSpm-1.03ii (for conversion to man and texinfo), and Lynx-2.8.6 or Links-2.1pre23 or w3m (for conversion to ASCII text)

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/docbook-utils

Installation of DocBook-utils

Install DocBook-utils by running the following commands:

sed -i 's:/html::' doc/HTML/Makefile.in &&
./configure --prefix=/usr &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Many packages use an alternate name for the DocBook-utils scripts. If you wish to create these alternate names, use the following command:

for doctype in html ps dvi man pdf rtf tex texi txt
do
    ln -s docbook2$doctype /usr/bin/db2$doctype
done

Note

The jw script uses the which command to locate required utilities. You must install which-2.16 before attempting to use any of the DocBook-utils programs.

Command Explanations

sed -i 's:/html::' doc/HTML/Makefile.in: This command changes the installation directory of the HTML documents.

Contents

Installed Programs: docbook2dvi, docbook2html, docbook2man, docbook2pdf, docbook2ps, docbook2rtf, docbook2tex, docbook2texi, docbook2txt, jw, and sgmldiff
Installed Libraries: None
Installed Directories: /usr/share/doc/docbook-utils-0.6.14 and /usr/share/sgml/docbook/utils-0.6.14
Installed Symlinks: db2dvi, db2html, db2man, db2pdf, db2ps, db2rtf, db2tex, db2texi, and db2txt

Short Descriptions

docbook2*

are simple one-line wrapper scripts to jw. They are provided as easy-to-remember names used to convert DocBook or other SGML files to the respective format.

db2*

are symlinks pointing at the respectively named docbook2* commands, created to satisfy some program's use of these names.

jw

is a script used to convert DocBook or other SGML files to various output formats. It hides most of OpenJade's complexity and adds comfortable features.

sgmldiff

is used to compare two SGML files and only return the differences in the markup. This is especially useful to compare files that should be identical except for language differences in the content.

Chapter 45. Extensible Markup Language (XML)

This chapter contains the DocBook XML document type definition (DTD) and DocBook Stylesheets which are used to validate, transform, format and publish DocBook documents.

DocBook XML DTD-4.4

Introduction to DocBook XML DTD

The DocBook XML DTD-4.4 package contains document type definitions for verification of XML data files against the DocBook rule set. These are useful for structuring books and software documentation to a standard allowing you to utilize transformations already written for that standard.

Package Information

DocBook XML DTD Dependencies

Required

libxml2-2.6.26 and UnZip-5.52

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/docbook

Installation of DocBook XML DTD

Note

The package source is distributed in zip format and requires unzip. You should create a directory and change to that directory before unzipping the file to ease the removal of the source files after the package has been installed.

Install DocBook XML DTD by running the following commands as the root user:

install -v -d -m755 /usr/share/xml/docbook/xml-dtd-4.4 &&
install -v -d -m755 /etc/xml &&
chown -R root:root . &&
cp -v -af docbook.cat *.dtd ent/ *.mod \
    /usr/share/xml/docbook/xml-dtd-4.4

Create (or update) and populate the /etc/xml/docbook catalog file by running the following commands as the root user:

if [ ! -e /etc/xml/docbook ]; then
    xmlcatalog --noout --create /etc/xml/docbook
fi &&
xmlcatalog --noout --add "public" \
    "-//OASIS//DTD DocBook XML V4.4//EN" \
    "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" \
    /etc/xml/docbook &&
xmlcatalog --noout --add "public" \
    "-//OASIS//DTD DocBook XML CALS Table Model V4.4//EN" \
    "file:///usr/share/xml/docbook/xml-dtd-4.4/calstblx.dtd" \
    /etc/xml/docbook &&
xmlcatalog --noout --add "public" \
    "-//OASIS//DTD XML Exchange Table Model 19990315//EN" \
    "file:///usr/share/xml/docbook/xml-dtd-4.4/soextblx.dtd" \
    /etc/xml/docbook &&
xmlcatalog --noout --add "public" \
    "-//OASIS//ELEMENTS DocBook XML Information Pool V4.4//EN" \
    "file:///usr/share/xml/docbook/xml-dtd-4.4/dbpoolx.mod" \
    /etc/xml/docbook &&
xmlcatalog --noout --add "public" \
    "-//OASIS//ELEMENTS DocBook XML Document Hierarchy V4.4//EN" \
    "file:///usr/share/xml/docbook/xml-dtd-4.4/dbhierx.mod" \
    /etc/xml/docbook &&
xmlcatalog --noout --add "public" \
    "-//OASIS//ELEMENTS DocBook XML HTML Tables V4.4//EN" \
    "file:///usr/share/xml/docbook/xml-dtd-4.4/htmltblx.mod" \
    /etc/xml/docbook &&
xmlcatalog --noout --add "public" \
    "-//OASIS//ENTITIES DocBook XML Notations V4.4//EN" \
    "file:///usr/share/xml/docbook/xml-dtd-4.4/dbnotnx.mod" \
    /etc/xml/docbook &&
xmlcatalog --noout --add "public" \
    "-//OASIS//ENTITIES DocBook XML Character Entities V4.4//EN" \
    "file:///usr/share/xml/docbook/xml-dtd-4.4/dbcentx.mod" \
    /etc/xml/docbook &&
xmlcatalog --noout --add "public" \
    "-//OASIS//ENTITIES DocBook XML Additional General Entities V4.4//EN" \
    "file:///usr/share/xml/docbook/xml-dtd-4.4/dbgenent.mod" \
    /etc/xml/docbook &&
xmlcatalog --noout --add "rewriteSystem" \
    "http://www.oasis-open.org/docbook/xml/4.4" \
    "file:///usr/share/xml/docbook/xml-dtd-4.4" \
    /etc/xml/docbook &&
xmlcatalog --noout --add "rewriteURI" \
    "http://www.oasis-open.org/docbook/xml/4.4" \
    "file:///usr/share/xml/docbook/xml-dtd-4.4" \
    /etc/xml/docbook

Create (or update) and populate the /etc/xml/catalog catalog file by running the following commands as the root user:

if [ ! -e /etc/xml/catalog ]; then
    xmlcatalog --noout --create /etc/xml/catalog
fi &&
xmlcatalog --noout --add "delegatePublic" \
    "-//OASIS//ENTITIES DocBook XML" \
    "file:///etc/xml/docbook" \
    /etc/xml/catalog &&
xmlcatalog --noout --add "delegatePublic" \
    "-//OASIS//DTD DocBook XML" \
    "file:///etc/xml/docbook" \
    /etc/xml/catalog &&
xmlcatalog --noout --add "delegateSystem" \
    "http://www.oasis-open.org/docbook/" \
    "file:///etc/xml/docbook" \
    /etc/xml/catalog &&
xmlcatalog --noout --add "delegateURI" \
    "http://www.oasis-open.org/docbook/" \
    "file:///etc/xml/docbook" \
    /etc/xml/catalog

Configuring DocBook XML DTD

Config Files

/etc/xml/catalog, /etc/xml/docbook

Configuration Information

The above installation creates the files and updates the catalogs. In order to install ScrollKeeper or to utilize DocBook XML DTD V4.4 when any version 4.x is requested in the System Identifier, you need to add additional statements to the catalog files. If you have any of the DocBook XML DTD's referenced below already installed on your system, remove those entries from the for command below (issue the commands as the root user):

for DTDVERSION in 4.1.2 4.2 4.3
do
  xmlcatalog --noout --add "public" \
    "-//OASIS//DTD DocBook XML V$DTDVERSION//EN" \
    "http://www.oasis-open.org/docbook/xml/$DTDVERSION/docbookx.dtd" \
    /etc/xml/docbook
  xmlcatalog --noout --add "rewriteSystem" \
    "http://www.oasis-open.org/docbook/xml/$DTDVERSION" \
    "file:///usr/share/xml/docbook/xml-dtd-4.4" \
    /etc/xml/docbook
  xmlcatalog --noout --add "rewriteURI" \
    "http://www.oasis-open.org/docbook/xml/$DTDVERSION" \
    "file:///usr/share/xml/docbook/xml-dtd-4.4" \
    /etc/xml/docbook
  xmlcatalog --noout --add "delegateSystem" \
    "http://www.oasis-open.org/docbook/xml/$DTDVERSION/" \
    "file:///etc/xml/docbook" \
    /etc/xml/catalog
  xmlcatalog --noout --add "delegateURI" \
    "http://www.oasis-open.org/docbook/xml/$DTDVERSION/" \
    "file:///etc/xml/docbook" \
    /etc/xml/catalog
done

Contents

Installed Programs: None
Installed Libraries: None
Installed Files: DTD, MOD and ENT files
Installed Directories: /etc/xml and /usr/share/xml/docbook/xml-dtd-4.4

Short Descriptions

DTD files

contain a document type definition which defines the element types and the attribute lists that can be used in the corresponding XML files.

MOD files

files contain components of the document type definition that are sourced into the DTD files.

ENT files

files contain lists of named character entities allowed in HTML.

DocBook XSL Stylesheets-1.69.1

Introduction to DocBook XSL Stylesheets

The DocBook XSL Stylesheets package contains XSL stylesheets. These are useful for performing transformations on XML DocBook files.

Package Information

Additional Downloads

DocBook XSL Stylesheets Dependencies

Required

libxml2-2.6.26

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/docbook-xsl

Installation of DocBook XSL Stylesheets

If you downloaded the optional documentation tarball, unpack it when you unpack the source tarball. The documentation tarball unpacks into subdirectories of the source tree.

Install DocBook XSL Stylesheets by running the following commands as the root user:

install -v -m755 -d /usr/share/xml/docbook/xsl-stylesheets-1.69.1 &&
cp -v -R VERSION common eclipse extensions fo html \
         htmlhelp images javahelp lib manpages params \
         profiling slides template website xhtml \
    /usr/share/xml/docbook/xsl-stylesheets-1.69.1

If you downloaded the optional documentation tarball, install the documentation by issuing the following commands as the root user:

install -v -m755 -d /usr/share/doc/docbook-xsl-1.69.1 &&
cp -v -R doc/* /usr/share/doc/docbook-xsl-1.69.1

Configuring DocBook XSL Stylesheets

Config Files

/etc/xml/catalog

Configuration Information

Create (or append) and populate the XML catalog file using the following commands as the root user:

if [ ! -d /etc/xml ]; then install -v -m755 -d /etc/xml; fi &&
if [ ! -f /etc/xml/catalog ]; then
    xmlcatalog --noout --create /etc/xml/catalog
fi &&

xmlcatalog --noout --add "rewriteSystem" \
           "http://docbook.sourceforge.net/release/xsl/1.69.1" \
           "/usr/share/xml/docbook/xsl-stylesheets-1.69.1" \
    /etc/xml/catalog &&

xmlcatalog --noout --add "rewriteURI" \
           "http://docbook.sourceforge.net/release/xsl/1.69.1" \
           "/usr/share/xml/docbook/xsl-stylesheets-1.69.1" \
    /etc/xml/catalog &&

xmlcatalog --noout --add "rewriteSystem" \
           "http://docbook.sourceforge.net/release/xsl/current" \
           "/usr/share/xml/docbook/xsl-stylesheets-1.69.1" \
    /etc/xml/catalog &&

xmlcatalog --noout --add "rewriteURI" \
           "http://docbook.sourceforge.net/release/xsl/current" \
           "/usr/share/xml/docbook/xsl-stylesheets-1.69.1" \
    /etc/xml/catalog

Occasionally, you may find the need to install other versions of the XSL stylesheets as some projects reference a specific version. One example is BLFS-6.0, which needs the 1.67.2 version. In these instances you should install any other required version in its own versioned directory and create catalog entries as follows (substitute the desired version number for <version>):

xmlcatalog --noout --add "rewriteSystem" \
           "http://docbook.sourceforge.net/release/xsl/<version>" \
           "/usr/share/xml/docbook/xsl-stylesheets-<version>" \
    /etc/xml/catalog &&

xmlcatalog --noout --add "rewriteURI" \
           "http://docbook.sourceforge.net/release/xsl/<version>" \
           "/usr/share/xml/docbook/xsl-stylesheets-<version>" \
    /etc/xml/catalog

Contents

Installed Programs: None
Installed Libraries: None
Installed Files: XSL style sheets for HTML and FO
Installed Directories: /usr/share/xml/docbook/xsl-stylesheets-1.69.1 and /usr/share/doc/docbook-xsl-1.69.1

Chapter 46. PostScript

This chapter includes applications that create, manipulate or view PostScript files and create or view Portable Document Format PDF files.

a2ps-4.13b

Introduction to a2ps

a2ps is a filter utilized mainly in the background and primarily by printing scripts to convert almost every input format into PostScript output. The application's name expands appropriately to "all to PostScript".

Caution

a2ps cannot convert UTF-8 encoded text to PostScript. The issue is discussed in detail in the Needed Encoding Not a Valid Option section of the Locale Related Issues page. The solution is to use paps-0.6.6, instead of a2ps, for converting UTF-8 encoded text to PostScript.

Package Information

Additional Downloads

a2ps Dependencies

Recommended

Optional

X Window System, PSUtils-p17, teTeX-3.0, AFPL Ghostscript-8.53 or ESP Ghostscript-8.15.2, libpaper, Adobe Reader, and Ghostview

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/A2PS

Installation of a2ps

Install a2ps by running the following commands:

sed -i "s|emacs||" contrib/Makefile.in &&
sed -i 's/+0 -1/-k 1,2/' afm/make_fonts_map.sh &&
sed -i "s|/usr/local/share|/usr/share|" configure &&
sed -i "s|char \*malloc ();|/* & */|" \
    lib/path-concat.c &&
./configure --prefix=/usr \
    --sysconfdir=/etc/a2ps --localstatedir=/var \
    --enable-shared --with-medium=letter &&
make

To test the results, issue: make check. The printers.tst test will fail, as there is no default test printer.

Now, as the root user:

make install

Install the downloaded i18n-fonts by running the following commands as the root user:

cp -v fonts/* /usr/share/a2ps/fonts &&
cp -v afm/* /usr/share/a2ps/afm &&
cd /usr/share/a2ps/afm &&
./make_fonts_map.sh &&
mv fonts.map.new fonts.map

Command Explanations

sed -i -e "s|emacs||" contrib/Makefile.in: This command eliminates the compiling and installing of the Emacs script files. If you have substituted Emacs for Vi as your primary editor, skip this step.

sed -i 's/+0 -1/-k 1,2/' afm/make_fonts_map.sh: The make_fonts_map.sh script to uses an option that is invalid with the version of sort installed as part of Coreutils-5.93. If you are using an older version of Coreutils, skip this step.

sed -i -e "s|/usr/local/share|/usr/share|" configure: This command modifies the configure script to search for Ghostscript fonts at the location where they were installed by the BLFS instructions.

sed -i -e "s|char \*malloc ();|/* & */|" lib/path-concat.c: This command fixes a build problem with GCC-3.4.x

--sysconfdir=/etc/a2ps: Configuration data is installed in /etc/a2ps instead of /usr/etc.

--enable-shared: This switch enables building the dynamic liba2ps library.

--with-medium=letter: This switch changes the default paper format of A4 to letter. Installations that utilize A4 would eliminate this switch.

Configuring a2ps

Config Files

/etc/a2ps/a2ps.cfg, /etc/a2ps/a2ps-site.cfg

Configuration Information

Information about configuring a2ps can be found in the comments contained in the above files, and also by running info a2ps.

Contents

Installed Programs: a2ps, card, composeglyphs, fixnt, fixps, ogonkify, pdiff, psmandup, psset, and texi2dvi4a2ps
Installed Libraries: liba2ps.{so,a} and filter data
Installed Directories: /etc/a2ps and /usr/share/a2ps

Short Descriptions

a2ps

is a filter, utilized primarily by printing scripts, that converts standard input or supported files to PostScript.

card

prints a reference card of a given program's options.

composeglyphs

creates a composite font program.

fixnt

is supposed to fix the problems in the PostScript files generated by the Microsoft PostScript driver under Windows NT (3.5 and 4.0).

fixps

tries to fix common PostScript problems that break postprocessing.

ogonkify

provides international support for Postscript by performing various munging of PostScript files related to printing in different languages.

pdiff

produces a pretty comparison between files.

psmandup

tries to produce a version of a given PostScript file to print in manual duplex.

psset

produces a version of a given PostScript file with a protected call to the PostScript operator 'setpagedevice'. Typical use is making a file print duplex, or on the manual tray, etc.

texi2dvi4a2ps

compiles Texinfo and LaTeX files to DVI or PDF

Enscript-1.6.4

Introduction to Enscript

Enscript converts ASCII text files to PostScript, HTML, RTF, ANSI and overstrikes.

Caution

Enscript cannot convert UTF-8 encoded text to PostScript. The issue is discussed in detail in the Needed Encoding Not a Valid Option section of the Locale Related Issues page. The solution is to use paps-0.6.6, instead of Enscript, for converting UTF-8 encoded text to PostScript.

Package Information

Additional Downloads

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/Enscript

Installation of Enscript

Install Enscript by running the following commands:

patch -Np1 -i ../enscript-1.6.4-security_fixes-1.patch &&
./configure --prefix=/usr \
            --sysconfdir=/etc/enscript \
            --localstatedir=/var \
            --with-media=Letter &&
make

Though it is very sparse, if you have teTeX-3.0 installed, you can create alternate forms of the documentation by issuing any or all of the following commands:

make -C docs ps &&
make -C docs pdf &&

cd docs &&
texi2html enscript.texi &&
makeinfo --plaintext -o enscript.txt enscript.texi &&
cd ..

To test the results, issue: make check.

Now, as the root user:

make install &&
install -v -m755 -d /usr/share/doc/enscript-1.6.4 &&
install -v -m644 README* *.txt docs/FAQ.html \
    /usr/share/doc/enscript-1.6.4

If you built any of the alternate forms of documentation, install it using the following command as the root user:

install -v -m644 docs/*.{dvi,html,pdf,ps,txt} \
    /usr/share/doc/enscript-1.6.4

Command Explanations

--sysconfdir=/etc/enscript: This switch puts configuration data in /etc/enscript instead of /usr/etc.

--localstatedir=/var: This switch sets the directory for runtime data to /var instead of /usr/var.

--with-media=Letter: This switch sets the medium format to letter.

Contents

Installed Programs: diffpp, enscript, mkafmmap, over, sliceprint, and states
Installed Libraries: None
Installed Directories: /etc/enscript, /usr/share/doc/enscript-1.6.4 and /usr/share/enscript

Short Descriptions

diffpp

converts diff output files to a format suitable to be printed with enscript.

enscript

is a filter, used primarily by printing scripts, that converts ASCII text files to PostScript, HTML, RTF, ANSI and overstrikes.

mkafmmap

creates a font map from a given file.

over

is a script which calls enscript and passes the correct parameters to create overstriked fonts.

sliceprint

slices documents with long lines.

states

is an awk-like text processing tool with some state machine extensions. It is designed for program source code highlighting and for similar tasks where state information helps input processing.

PSUtils-p17

Introduction to PSUtils

PSUtils is a set of utilities to manipulate PostScript files.

Package Information

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/psutils

Installation of PSUtils

Install PSUtils by running the following commands:

sed 's@/usr/local@/usr@g' Makefile.unix > Makefile &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

sed 's@/usr/local@/usr@g' Makefile.unix > Makefile: This command creates a Makefile that installs the program to the /usr prefix instead of the /usr/local prefix.

Contents

Installed Programs: epsffit, extractres, fixdlsrps, fixfmps, fixmacps, fixpsditps, fixpspps, fixscribeps, fixtpps, fixwfwps, fixwpps, fixwwps, getafm, includeres, psbook, psmerge, psnup, psresize, psselect, pstops, and showchar
Installed Libraries: None
Installed Directories: /usr/share/psutils

Sometimes psnup and other utilities from this package produce PostScript files that don't conform to Adobe's DSC standard. CUPS may print them incorrectly. On the other hand, CUPS has builtin replacements for most commands from this package. For example, to print a document 2-up, you can issue this command:

lp -o number-up=2 <filename>

Short Descriptions

epsffit

fits an EPSF file to a given bounding box.

psbook

rearranges pages into signatures.

psnup

puts multiple pages per physical sheet of paper.

psresize

alters the document paper size.

psselect

selects pages and page ranges.

pstops

performs general page rearrangements and selection.

scripts

the remaining commands are scripts that perform specific functions described in their respective man pages.

GSview-4.8

Introduction to GSview

GSview is a viewer for PostScript and PDF using X.

Package Information

Additional Downloads

GSview Dependencies

Required

GTK+-1.2.10, and AFPL Ghostscript-8.53 or ESP Ghostscript-8.15.2

Note that you must build the shared libgs.so library during the Ghostscript installation else the gsview program will fail at run-time.

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gsview

Installation of GSview

GSview uses netscape to browse through the online help. BLFS does not install Netscape, but has other browsers from which to choose. You can create a symlink from your preferred browser to /usr/bin/netscape, or simply edit srcunx/gvxreg.c using the following sed script with your browser's executable file name substituted for <browser>:

sed -i 's:netscape:<browser>:' srcunx/gvxreg.c

The GSview package has not been updated in quite a while and does not accomodate the recent versions of the ESP Ghostscript package. If you installed ESP Ghostscript-8.15.2 as your Ghostscript application, you must modify the maximum version of Ghostscript allowed. Make the modification using the following command:

sed -i 's:999:99999:' src/gvcver.h

Install GSview by running the following commands:

patch -Np1 -i ../gsview-4.8-pstotext-1.patch &&
sed 's:/local::' srcunx/unx.mak > Makefile &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

sed 's:/local::' srcunx/unx.mak > Makefile: This command changes the default installation directory to /usr during the creation of the Makefile.

Configuring GSview

Config Files

/etc/gsview/*

Contents

Installed Programs: gsview and gsview-help
Installed Libraries: None
Installed Directories: /etc/gsview and /usr/share/doc/gsview-4.8

Short Descriptions

gsview

is a viewer for PostScript (PS) and PDF files.

gsview-help

is a script for displaying help files in your chosen browser.

Xpdf-3.01pl2

Introduction to Xpdf

Xpdf is a viewer for Adobe's free Portable Document Format (PDF) which is both fast and small and comes with some useful command-line utilities.

Package Information

Additional Downloads

Xpdf Dependencies

Required

LessTif-0.94.4

Optional

AFPL Ghostscript-8.53 or ESP Ghostscript-8.15.2 (just the fonts), t1lib and libpaper

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/Xpdf

Installation of Xpdf

Install Xpdf by running the following commands:

patch -Np1 -i ../xpdf-3.01pl2.patch &&
./configure --prefix=/usr \
            --sysconfdir=/etc \
            --with-freetype2-includes=/usr/include/freetype2 \
            --enable-opi \
            --enable-multithreaded \
            --enable-wordlist &&
make

This package does not come with a test suite.

Now, as the root user:

make install

Command Explanations

--enable-a4-paper: This switch must be added to set DIN A4 as the standard paper format.

Configuring Xpdf

Config Files

/etc/xpdfrc and ~/.xpdfrc

Configuration Information

In the /etc directory you will find a sample xpdfrc that can be either copied to ~/.xpdfrc or taken as an example to write your own configuration file. Below you'll find a condensed version of the file you may wish to build from.

# Example .xpdfrc
displayFontT1 Times-Roman           /usr/share/ghostscript/fonts/n021003l.pfb
displayFontT1 Times-Italic          /usr/share/ghostscript/fonts/n021023l.pfb
displayFontT1 Times-Bold            /usr/share/ghostscript/fonts/n021004l.pfb
displayFontT1 Times-BoldItalic      /usr/share/ghostscript/fonts/n021024l.pfb
displayFontT1 Helvetica             /usr/share/ghostscript/fonts/n019003l.pfb
displayFontT1 Helvetica-Oblique     /usr/share/ghostscript/fonts/n019023l.pfb
displayFontT1 Helvetica-Bold        /usr/share/ghostscript/fonts/n019004l.pfb
displayFontT1 Helvetica-BoldOblique /usr/share/ghostscript/fonts/n019024l.pfb
displayFontT1 Courier               /usr/share/ghostscript/fonts/n022003l.pfb
displayFontT1 Courier-Oblique       /usr/share/ghostscript/fonts/n022023l.pfb
displayFontT1 Courier-Bold          /usr/share/ghostscript/fonts/n022004l.pfb
displayFontT1 Courier-BoldOblique   /usr/share/ghostscript/fonts/n022024l.pfb
displayFontT1 Symbol                /usr/share/ghostscript/fonts/s050000l.pfb
displayFontT1 ZapfDingbats          /usr/share/ghostscript/fonts/d050000l.pfb

fontDir                 /usr/share/fonts/X11-TTF

psFile                  "|lpr"
psPaperSize             letter
#psPaperSize             A4
textEOL                 unix

enableT1lib             yes
enableFreeType          yes
antialias               yes

urlCommand              "links -g %s"

Contents

Installed Programs: pdffonts, pdfimages, pdfinfo, pdftoppm, pdftops, pdftotext, and xpdf
Installed Libraries: None
Installed Directories: None

Short Descriptions

pdffonts

lists the fonts used in a PDF file along with various information for each font.

pdfimages

saves images from a PDF file as PPM, PBM, or JPEG files.

pdfinfo

prints the contents of the 'Info' dictionary (plus some other useful information) from a PDF file.

pdftoppm

converts PDF files to PBM, PGM and PPM formats.

pdftops

converts PDF files to Postscript format.

pdftotext

parses ASCII text from PDF files.

xpdf

displays files in PDF format.

FOP-0.20.5

Introduction to FOP

The FOP (Formatting Objects Processor) package contains a print formatter driven by XSL formatting objects (XSL-FO). It is a Java application that reads a formatting object tree and renders the resulting pages to a specified output. Output formats currently supported include PDF, PCL, PostScript, SVG, XML (area tree representation), print, AWT, MIF and ASCII text. The primary output target is PDF.

Package Information

Additional Downloads

Required package

Choose the “Linux JDK Install” file after accepting the license agreement.

FOP Dependencies

Required

JDK-1.5.0_10

Optional

libxslt-1.1.17, JIMI SDK, Batik and Forrest (only used to rebuild the documentation)

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/fop

Installation of FOP

Note

Ensure $JAVA_HOME is set correctly before beginning the build.

Some versions of tar will display a message similar to “tar: A lone zero block at 33476” when unpacking the source tarball. You may safely ignore this message.

Installing JAI

Tip

The $FOP_BUILD_DIR/jai-1_1_2_01-lib-linux-i586-jdk.bin command below installs the JAI components in the JDK tree. You will be required to view, and then accept (by entering a y keypress), a license agreement before the installation will continue. If you are scripting (automating) the build, you'll need to account for this. There is information about automating build commands in the Automated Building Procedures section of Chapter 2. Towards the end of this section, specific information for automating this type of installation is discussed.

Install the JAI components by running the following commands as the root user while in the root of the FOP source tree:

cp ../jai-1_1_2_01-lib-linux-i586-jdk.bin . &&
sed -i 's/tail +122/tail -n +122/' \
    jai-1_1_2_01-lib-linux-i586-jdk.bin &&
chmod 755 jai-1_1_2_01-lib-linux-i586-jdk.bin &&
FOP_BUILD_DIR=$(pwd) &&
cd $JAVA_HOME &&
$FOP_BUILD_DIR/jai-1_1_2_01-lib-linux-i586-jdk.bin &&
cd $FOP_BUILD_DIR

Installing FOP required components

Install FOP by running the following commands:

patch -Np1 -i ../fop-0.20.5-jdk_1.5.0-1.patch &&
./build.sh &&
sed -i "s/build/lib/" fop.sh

Now, as the root user:

install -v -d -m755 \
    /opt/fop-0.20.5/{bin,lib,docs/{general,lib,site}} &&
install -v -m755 fop.sh /opt/fop-0.20.5/bin &&
install -v -m644 build/fop.jar lib/avalon-framework-cvs-20020806.jar \
    /opt/fop-0.20.5/lib &&
install -v -m644 docs/* /opt/fop-0.20.5/docs &&
install -v -m644 CHANGES LICENSE README ReleaseNotes.html STATUS \
    /opt/fop-0.20.5/docs/general &&
install -v -m644 lib/{avalon.LICENSE.txt,readme} \
    /opt/fop-0.20.5/docs/lib &&
cp -v -R build/site/* /opt/fop-0.20.5/docs/site &&
ln -svf fop-0.20.5 /opt/fop

Installing the Batik JAR

You'll need to install one additional Java class library to process SVG objects. This library is part of the Batik package, but is also included with the FOP package. If you have Batik installed, ensure the batik.jar library is included in your $CLASSPATH environment variable. Alternatively, create a symbolic link from /opt/fop-0.20.5/lib/batik.jar pointing to the full path of the installed batik.jar file so that the fop.sh script will automatically pick it up.

If you don't have the Batik package installed, run the following commands as the root user:

install -v -m644 lib/batik.jar /opt/fop-0.20.5/lib &&
install -v -m644 lib/batik.LICENSE.txt \
    /opt/fop-0.20.5/docs/lib

Installing the Xalan-Java components

The components of FOP required to process FO files created by an XSL transformation engine (also known as an XSLT processor) is now complete. An XSL transformation engine (xsltproc) is included with the libxslt-1.1.17 package in BLFS. The FOP package includes components of Xalan-Java to accomplish XSL transformations. If you have the Xalan-Java package installed, skip to the next section.

If you wish to install the Xalan-Java components provided by the FOP package, run the following commands as the root user:

sed -i "s/build/lib/" xalan.sh &&
install -v -m755 xalan.sh /opt/fop-0.20.5/bin &&
install -v -m644 lib/xml-apis.jar \
                 lib/xercesImpl-2.2.1.jar \
                 lib/xalan-2.4.1.jar \
    /opt/fop-0.20.5/lib &&
install -v -m644 lib/{xml-apis,xerces,xalan}.LICENSE.txt \
                 lib/xml-apis.README.txt \
    /opt/fop-0.20.5/docs/lib

Installing the Jimi SDK JAR

If you installed the Java Image I/O class library (Jimi SDK) into the FOP source tree lib directory before building FOP (this will enable Jimi support), ensure you also install this JAR file into /opt/fop-0.20.5/lib.

Command Explanations

sed -i 's/tail +122/tail -n +122/' ...: The JAI binary file has a tail command imbedded in the file which uses obsolete syntax and causes the file to not unpack correctly. This command fixes the obsolete syntax.

$FOP_BUILD_DIR/../jai-...-jdk.bin: This command installs the JAI components into the JDK file structure. $FOP_BUILD_DIR is used as a reference point to the source executable and as a method to return back to the FOP source tree.

sed -i "s/build/lib/" ...: These commands modify the installed shell scripts so that the location of the installed fop.jar file is correctly identified.

install -v ...; cp -v ...: There is no installation script provided by the FOP package. These commands install the package.

ln -svf fop-0.20.5 /opt/fop: This creates a convenience symlink so that $FOP_HOME doesn't have to be changed each time there's a package version change.

Configuring FOP

Config Files

~/.foprc

Configuration Information

Using FOP to process some large FO's (including the FO derived from the BLFS XML sources), can lead to memory errors. Unless you add a parameter to the java command used in the fop.sh script you may receive messages similar to the one shown below:

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

To avoid errors like this, you need to pass an extra parameter to the java command used in the fop.sh script. This can be accomplished by creating a ~/.foprc (which is sourced by the fop.sh script) and adding the parameter to the FOP_OPTS environment variable.

The fop.sh script looks for a FOP_HOME environment variable to locate the FOP class libraries. You can create this variable using the ~/.foprc file as well. Create a ~/.foprc file using the following commands:

cat > ~/.foprc << "EOF"
FOP_OPTS="-Xmx<RAM_Installed>m"
FOP_HOME="/opt/fop"

EOF

Replace <RAM_Installed> with a number representing the amount of RAM installed in your computer (in megabytes). An example would be FOP_OPTS="-Xmx768m". For more information about memory issues running FOP, see http://xml.apache.org/fop/running.html#memory.

To include the fop.sh script in your path, update your personal or system-wide profile with the following:

PATH=$PATH:/opt/fop/bin

Contents

Installed Programs: fop.sh and xalan.sh
Installed Libraries: avalon-framework-cvs-20020806.jar, batik.jar, fop.jar, xalan-2.4.1.jar, xercesImpl-2.2.1.jar, and xml-apis.jar. JAI components include libmlib_jai.so, jai_codec.jar, jai_core.jar, and mlibwrapper_jai.jar
Installed Directory: /opt/fop-0.20.5

Short Descriptions

fop.sh

is a wrapper script to the java command which sets up the FOP environment and passes the required parameters.

fop.jar

contains all the FOP Java classes.

paps-0.6.6

Introduction to paps

paps is a text to PostScript converter that works through Pango. Its input is a UTF-8 encoded text file and it outputs vectorized PostScript. It may be used for printing any complex script supported by Pango.

Package Information

paps Dependencies

Required

Pango-1.12.3

Recommended

Doxygen-1.4.6

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/Paps

Installation of paps

Install paps by running the following commands:

./configure --prefix=/usr &&
make

To test the results, issue: src/test_libpaps > test.ps. View the output file in any available PostScript viewer and visually compare it to doc/example-output.png. The results of the output will be more robust with DejaVu, Arphic, and Kochi fonts installed as explained in the Xft Font Protocol Section of the X Window System configuration.

Now, as the root user:

make install

Command Explanations

make DOXYGEN=true; make DOXYGEN=true -k install: Use these commands if Doxygen is not installed. Documentation will not be installed.

Contents

Installed Program: paps
Installed Library: libpaps.a
Installed Directory: /usr/share/doc/libpaps

Short Descriptions

paps

is a text to PostScript converter that supports UTF-8 character encoding.

Other PostScript Programs

kghostview is a Qt based PostScript/PDF viewer from kdegraphics-3.5.6.

Chapter 47. Typesetting

This chapter includes applications that create output equivalent to typesetting.

teTeX-3.0

Introduction to teTeX

teTeX is an implementation of Donald Knuth's TeX typesetting program. This package is able to create documents in a variety of formats. The optional texmfsrc (TeX METAFONT) tarball contains source code for programs to create and manipulate TeX fonts.

Package Information

Additional Downloads

Required Macros and Fonts

Optional 'texmf' Sources:

Optional 'cm-super' Sources:

teTeX Dependencies

Required

Ed-0.2

Optional

libpng-1.2.12, X Window System, Tk-Perl-804.027, t1lib, and GD

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/tetex

Installation of teTeX

Before building teTeX, the macros and fonts package (texmf tarball) must be installed. Install the macros and fonts using the following commands as the root user:

install -v -d -m755 /usr/share/texmf &&
gzip -dc ../tetex-texmf-3.0.tar.gz \
    | (umask 0; cd /usr/share/texmf; tar -xvf -)

If the optional texmfsrc source code TAR ball was downloaded, unpack it now as the root user:

gzip -dc ../tetex-texmfsrc-3.0.tar.gz \
    | (umask 0; cd /usr/share/texmf; tar -xvf -)

Install teTeX by running the following commands:

./configure --prefix=/usr \
            --exec-prefix=/usr \
            --bindir=/usr/bin \
            --without-texinfo \
            --with-x=no \
            --with-system-ncurses \
            --with-system-zlib &&
make all

To test the results, issue: make check. The tests should complete without errors (there may be some errors which are ignored).

Now, as the root user:

make install &&
texconfig-sys dvips paper letter &&
texconfig-sys font rw

Note

The paper size may be changed to a4, as is used in most countries.

To install the optional cm-super fonts, perform the following instructions as the root user:

tar -xf ../tetex-cm-super.tar.bz2 &&
FONTDIR=$(kpsewhich --expand-var '$TEXMFMAIN') &&
mkdir -v -p $FONTDIR/fonts/afm/public/cm-super   \
            $FONTDIR/fonts/type1/public/cm-super \
            $FONTDIR/fonts/enc/dvips/cm-super    \
            $FONTDIR/fonts/map/dvips/cm-super   &&

cp -v cm-super/pfb/*.pfb $FONTDIR/fonts/type1/public/cm-super/ &&

gunzip cm-super/afm/* &&
cp -v cm-super/afm/*.afm $FONTDIR/fonts/afm/public/cm-super/ &&

cp -v cm-super/dvips/*.enc $FONTDIR/fonts/enc/dvips/cm-super/ &&
cp -v cm-super/dvips/*.map $FONTDIR/fonts/map/dvips/cm-super/ &&

cat >> $FONTDIR/web2c/updmap.cfg << "EOF" &&
MixedMap cm-super-t1.map
MixedMap cm-super-t2a.map
MixedMap cm-super-t2b.map
MixedMap cm-super-t2c.map
MixedMap cm-super-ts1.map
MixedMap cm-super-x2.map
EOF

install -v -m644 -D cm-super/type1ec.sty \
       $FONTDIR/tex/latex/cm-super/type1ec.sty &&

mktexlsr &&
updmap-sys &&

unset FONTDIR

Command Explanations

--with-x=no: This switch will avoid any X dependencies. teTeX can be compiled with X support, notably for xdvi. If this is desired, remove this parameter.

--exec-prefix=/usr --bindir=/usr/bin: These switches ensure that teTeX binaries are installed in /usr/bin.

--without-texinfo: A default LFS installation already has the Texinfo package installed. This switch will avoid overwriting it with the included Texinfo package.

--with-system-ncurses: This switch specifies using the already installed libncurses library.

--with-system-zlib: A default LFS installation already has the Zlib library installed. This switch will avoid replacing it with the included Zlib library.

--disable-a4: Use this option to set the default paper size to letter and the default unit to inch.

texconfig-sys dvips paper letter: This command sets the default paper size for teTeX.

texconfig-sys font rw: This command specifies creating and using a directory for globally writeable fonts.

mktexlsr: This command recreates the teTeX ls-R databases after installing the CM-Super fonts.

updmap-sys: This command updates the system-wide font configuration to include the CM-Super fonts.

Tip

Run ./configure --help for information about using other switches which will enable the build to use other installed packages you may have on your system.

Contents

Installed Programs: 100 separate binaries and scripts along with 30 symlinks to these programs.
Installed Library: libkpathsea.a
Installed Directories: /usr/include/kpathsea, /var/tmp/texfonts and the following subdirectories of /usr/share/: texi2html, texinfo/html, texmf, texmf-config and texmf-var

Short Descriptions

teTeX programs

included in the teTeX package are too numerous to individually list. Please refer to the individual program man pages and file:///usr/share/texmf/doc/index.html for details, as well as a tour of the expansive teTeX documentation.

libkpathsea.a

contains functions used by teTeX for searching and cataloging path names.

JadeTeX-3.13

Introduction to JadeTeX

The JadeTeX package is a companion package to the OpenJade DSSSL processor. JadeTeX transforms high level LaTeX macros into DVI/PostScript and Portable Document Format (PDF) forms.

Package Information

Additional Downloads

JadeTeX Dependencies

Required

teTeX-3.0 and OpenJade-1.3.2

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/jadetex

Installation of JadeTeX

If you downloaded the demo files tarball, unpack it along with the source tarball. It will unpack as a demo directory in the root of the source tree.

First, as the root user, make some required modifications to the texmf.cnf file already installed on the system by the teTeX package, then build a new latex.fmt file using the following commands:

sed -i.orig -e "s/original texmf.cnf/modified texmf.cnf/" \
            -e "s/memory hog.../&\npool_size.context = 750000/" \
    $(kpsewhich texmf.cnf) &&
cat >> $(kpsewhich texmf.cnf) << "EOF"

% The following 3 sections added for JadeTeX

% latex settings
main_memory.latex = 1100000
param_size.latex = 1500
stack_size.latex = 1500
hash_extra.latex = 15000
string_vacancies.latex = 45000
pool_free.latex = 47500
nest_size.latex = 500
save_size.latex = 5000
pool_size.latex = 500000
max_strings.latex = 55000
font_mem_size.latex= 400000

% jadetex settings
main_memory.jadetex = 1500000
param_size.jadetex = 1500
stack_size.jadetex = 1500
hash_extra.jadetex = 50000
string_vacancies.jadetex = 45000
pool_free.jadetex = 47500
nest_size.jadetex = 500
save_size.jadetex = 5000
pool_size.jadetex = 500000
max_strings.jadetex = 55000

% pdfjadetex settings
main_memory.pdfjadetex = 2500000
param_size.pdfjadetex = 1500
stack_size.pdfjadetex = 1500
hash_extra.pdfjadetex = 50000
string_vacancies.pdfjadetex = 45000
pool_free.pdfjadetex = 47500
nest_size.pdfjadetex = 500
save_size.pdfjadetex = 5000
pool_size.pdfjadetex = 500000
max_strings.pdfjadetex = 55000

EOF
LATEX_FMT_DIR="$(kpsewhich -expand-var '$TEXMFSYSVAR')/web2c" &&
mv -v $(kpsewhich latex.fmt) $(kpsewhich latex.fmt).orig &&
mv -v $LATEX_FMT_DIR/latex.log $LATEX_FMT_DIR/latex.log.orig &&
fmtutil-sys --byfmt latex

Install JadeTex using the following commands:

make

Now, as the root user:

install -v -m755 -d \
    $(kpsewhich -expand-var '$TEXMFLOCAL')/tex/jadetex/config &&
install -v -m644 dsssl.def jadetex.ltx *.sty \
    $(kpsewhich -expand-var '$TEXMFLOCAL')/tex/jadetex &&
install -v -m644 {,pdf}jadetex.ini \
    $(kpsewhich -expand-var '$TEXMFLOCAL')/tex/jadetex/config &&
FMTUTIL_CNF="$(kpsewhich fmtutil.cnf)" &&
mv $FMTUTIL_CNF $FMTUTIL_CNF.orig &&
cat $FMTUTIL_CNF.orig - >> $FMTUTIL_CNF << "EOF"

# JadeTeX formats:
jadetex         etex            -               "&latex"     jadetex.ini
pdfjadetex      pdfetex         -               "&pdflatex"  pdfjadetex.ini

EOF
mv -v $(kpsewhich -expand-var '$TEXMFMAIN')/ls-R \
      $(kpsewhich -expand-var '$TEXMFMAIN')/ls-R.orig &&
mv -v $(kpsewhich -expand-var '$TEXMFSYSVAR')/ls-R \
      $(kpsewhich -expand-var '$TEXMFSYSVAR')/ls-R.orig &&
mktexlsr &&
fmtutil-sys --byfmt jadetex &&
fmtutil-sys --byfmt pdfjadetex &&
mktexlsr &&
ln -v -sf etex /usr/bin/jadetex &&
ln -v -sf pdfetex /usr/bin/pdfjadetex &&
install -v -m644 -D index.html \
    /usr/share/doc/jadetex-3.13/index.html &&
install -v -m644 *.1 /usr/share/man/man1

If you downloaded the demo files tarball, issue the following commands as an unprivileged user to test the functionality of the new JadeTex installation:

cd demo &&
openjade -t tex -d demo.dsl demo.sgm &&
jadetex demo.tex &&
pdfjadetex demo.tex &&
ls -lrt &&
cd ..

The commands should complete without errors or warnings and create demo.dvi and demo.pdf files.

Command Explanations

sed -i -e ... -e ... $(kpsewhich texmf.cnf): This command uses kpsewhich to locate the installed texmf.cnf. The first change is used to modify the header of the file so that if teTeX is upgraded, the file won't get overwritten. The next change adds a parameter to increase ConTeXt's memory size to accommodate JadeTeX.

fmtutil-sys ...: These commands are used to build the latex.fmt, jadetex.fmt and pdfjadetex.fmt files. Additionally, the command automagically places the files in the correct directory.

mktexlsr; ln -v -sf tex ...; ln -v -sf pdftex ...: The JadeTeX programs are actually just symlinks to the teTeX programs. mktexlsr updates teTeX's ls-R databases used by the libkpathsea library so that teTeX knows to use the JadeTeX .fmt files when jadetex or pdfjadetex is called.

Configuring JadeTeX

Config Files

jadetex.dtx in the JadeTeX source tree.

Configuration Information

If you need to modify the default JadeTeX macro settings, see the JadeTeX FAQ.

Contents

Installed Programs: jadetex and pdfjadetex
Installed Libraries: None
Installed Directories: /usr/share/texmf-local and /usr/share/doc/jadetex-3.13

Short Descriptions

jadetex

transforms LaTeX macros created by OpenJade into DVI/PostScript forms.

pdfjadetex

transforms LaTeX macros created by OpenJade into Portable Document Format (PDF) forms.

Appendix A. Creative Commons License

Creative Commons Legal Code

Attribution-NonCommercial-ShareAlike 2.0

Important

CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE.

License

THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.

BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS.

  1. Definitions

    1. "Collective Work" means a work, such as a periodical issue, anthology or encyclopedia, in which the Work in its entirety in unmodified form, along with a number of other contributions, constituting separate and independent works in themselves, are assembled into a collective whole. A work that constitutes a Collective Work will not be considered a Derivative Work (as defined below) for the purposes of this License.

    2. "Derivative Work" means a work based upon the Work or upon the Work and other pre-existing works, such as a translation, musical arrangement, dramatization, fictionalization, motion picture version, sound recording, art reproduction, abridgment, condensation, or any other form in which the Work may be recast, transformed, or adapted, except that a work that constitutes a Collective Work will not be considered a Derivative Work for the purpose of this License. For the avoidance of doubt, where the Work is a musical composition or sound recording, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered a Derivative Work for the purpose of this License.

    3. "Licensor" means the individual or entity that offers the Work under the terms of this License.

    4. "Original Author" means the individual or entity who created the Work.

    5. "Work" means the copyrightable work of authorship offered under the terms of this License.

    6. "You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation.

    7. "License Elements" means the following high-level license attributes as selected by Licensor and indicated in the title of this License: Attribution, Noncommercial, ShareAlike.

  2. Fair Use Rights. Nothing in this license is intended to reduce, limit, or restrict any rights arising from fair use, first sale or other limitations on the exclusive rights of the copyright owner under copyright law or other applicable laws.

  3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below:

    1. to reproduce the Work, to incorporate the Work into one or more Collective Works, and to reproduce the Work as incorporated in the Collective Works;

    2. to create and reproduce Derivative Works;

    3. to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission the Work including as incorporated in Collective Works;

    4. to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission Derivative Works;

    The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. All rights not expressly granted by Licensor are hereby reserved, including but not limited to the rights set forth in Sections 4(e) and 4(f).

  4. Restrictions.The license granted in Section 3 above is expressly made subject to and limited by the following restrictions:

    1. You may distribute, publicly display, publicly perform, or publicly digitally perform the Work only under the terms of this License, and You must include a copy of, or the Uniform Resource Identifier for, this License with every copy or phonorecord of the Work You distribute, publicly display, publicly perform, or publicly digitally perform. You may not offer or impose any terms on the Work that alter or restrict the terms of this License or the recipients' exercise of the rights granted hereunder. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties. You may not distribute, publicly display, publicly perform, or publicly digitally perform the Work with any technological measures that control access or use of the Work in a manner inconsistent with the terms of this License Agreement. The above applies to the Work as incorporated in a Collective Work, but this does not require the Collective Work apart from the Work itself to be made subject to the terms of this License. If You create a Collective Work, upon notice from any Licensor You must, to the extent practicable, remove from the Collective Work any reference to such Licensor or the Original Author, as requested. If You create a Derivative Work, upon notice from any Licensor You must, to the extent practicable, remove from the Derivative Work any reference to such Licensor or the Original Author, as requested.

    2. You may distribute, publicly display, publicly perform, or publicly digitally perform a Derivative Work only under the terms of this License, a later version of this License with the same License Elements as this License, or a Creative Commons iCommons license that contains the same License Elements as this License (e.g. Attribution-NonCommercial-ShareAlike 2.0 Japan). You must include a copy of, or the Uniform Resource Identifier for, this License or other license specified in the previous sentence with every copy or phonorecord of each Derivative Work You distribute, publicly display, publicly perform, or publicly digitally perform. You may not offer or impose any terms on the Derivative Works that alter or restrict the terms of this License or the recipients' exercise of the rights granted hereunder, and You must keep intact all notices that refer to this License and to the disclaimer of warranties. You may not distribute, publicly display, publicly perform, or publicly digitally perform the Derivative Work with any technological measures that control access or use of the Work in a manner inconsistent with the terms of this License Agreement. The above applies to the Derivative Work as incorporated in a Collective Work, but this does not require the Collective Work apart from the Derivative Work itself to be made subject to the terms of this License.

    3. You may not exercise any of the rights granted to You in Section 3 above in any manner that is primarily intended for or directed toward commercial advantage or private monetary compensation. The exchange of the Work for other copyrighted works by means of digital file-sharing or otherwise shall not be considered to be intended for or directed toward commercial advantage or private monetary compensation, provided there is no payment of any monetary compensation in connection with the exchange of copyrighted works.

    4. If you distribute, publicly display, publicly perform, or publicly digitally perform the Work or any Derivative Works or Collective Works, You must keep intact all copyright notices for the Work and give the Original Author credit reasonable to the medium or means You are utilizing by conveying the name (or pseudonym if applicable) of the Original Author if supplied; the title of the Work if supplied; to the extent reasonably practicable, the Uniform Resource Identifier, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work; and in the case of a Derivative Work, a credit identifying the use of the Work in the Derivative Work (e.g., "French translation of the Work by Original Author," or "Screenplay based on original Work by Original Author"). Such credit may be implemented in any reasonable manner; provided, however, that in the case of a Derivative Work or Collective Work, at a minimum such credit will appear where any other comparable authorship credit appears and in a manner at least as prominent as such other comparable authorship credit.

    5. For the avoidance of doubt, where the Work is a musical composition:

      1. Performance Royalties Under Blanket Licenses. Licensor reserves the exclusive right to collect, whether individually or via a performance rights society (e.g. ASCAP, BMI, SESAC), royalties for the public performance or public digital performance (e.g. webcast) of the Work if that performance is primarily intended for or directed toward commercial advantage or private monetary compensation.

      2. Mechanical Rights and Statutory Royalties. Licensor reserves the exclusive right to collect, whether individually or via a music rights agency or designated agent (e.g. Harry Fox Agency), royalties for any phonorecord You create from the Work ("cover version") and distribute, subject to the compulsory license created by 17 USC Section 115 of the US Copyright Act (or the equivalent in other jurisdictions), if Your distribution of such cover version is primarily intended for or directed toward commercial advantage or private monetary compensation. 6. Webcasting Rights and Statutory Royalties. For the avoidance of doubt, where the Work is a sound recording, Licensor reserves the exclusive right to collect, whether individually or via a performance-rights society (e.g. SoundExchange), royalties for the public digital performance (e.g. webcast) of the Work, subject to the compulsory license created by 17 USC Section 114 of the US Copyright Act (or the equivalent in other jurisdictions), if Your public digital performance is primarily intended for or directed toward commercial advantage or private monetary compensation.

    6. Webcasting Rights and Statutory Royalties. For the avoidance of doubt, where the Work is a sound recording, Licensor reserves the exclusive right to collect, whether individually or via a performance-rights society (e.g. SoundExchange), royalties for the public digital performance (e.g. webcast) of the Work, subject to the compulsory license created by 17 USC Section 114 of the US Copyright Act (or the equivalent in other jurisdictions), if Your public digital performance is primarily intended for or directed toward commercial advantage or private monetary compensation.

  5. Representations, Warranties and Disclaimer

    UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.

  6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

  7. Termination

    1. This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Derivative Works or Collective Works from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License.

    2. Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above.

  8. Miscellaneous

    1. Each time You distribute or publicly digitally perform the Work or a Collective Work, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License.

    2. Each time You distribute or publicly digitally perform a Derivative Work, Licensor offers to the recipient a license to the original Work on the same terms and conditions as the license granted to You under this License.

    3. If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.

    4. No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent.

    5. This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You.

Important

Creative Commons is not a party to this License, and makes no warranty whatsoever in connection with the Work. Creative Commons will not be liable to You or any party on any legal theory for any damages whatsoever, including without limitation any general, special, incidental or consequential damages arising in connection to this license. Notwithstanding the foregoing two (2) sentences, if Creative Commons has expressly identified itself as the Licensor hereunder, it shall have all rights and obligations of Licensor.

Except for the limited purpose of indicating to the public that the Work is licensed under the CCPL, neither party will use the trademark "Creative Commons" or any related trademark or logo of Creative Commons without the prior written consent of Creative Commons. Any permitted use will be in compliance with Creative Commons' then-current trademark usage guidelines, as may be published on its website or otherwise made available upon request from time to time.

Creative Commons may be contacted at http://creativecommons.org/.

Appendix B. Academic Free License v. 2.1

This Academic Free License (the "License") applies to any original work of authorship (the "Original Work") whose owner (the "Licensor") has placed the following notice immediately following the copyright notice for the Original Work:

Licensed under the Academic Free License version 2.1

  1. Grant of Copyright License. Licensor hereby grants You a world-wide, royalty-free, non-exclusive, perpetual, sublicenseable license to do the following:

    • to reproduce the Original Work in copies;

    • to prepare derivative works ("Derivative Works") based upon the Original Work;

    • to distribute copies of the Original Work and Derivative Works to the public;

    • to perform the Original Work publicly; and

    • to display the Original Work publicly.

  2. Grant of Patent License. Licensor hereby grants You a world-wide, royalty-free, non-exclusive, perpetual, sublicenseable license, under patent claims owned or controlled by the Licensor that are embodied in the Original Work as furnished by the Licensor, to make, use, sell and offer for sale the Original Work and Derivative Works.

  3. Grant of Source Code License. The term "Source Code" means the preferred form of the Original Work for making modifications to it and all available documentation describing how to modify the Original Work. Licensor hereby agrees to provide a machine-readable copy of the Source Code of the Original Work along with each copy of the Original Work that Licensor distributes. Licensor reserves the right to satisfy this obligation by placing a machine-readable copy of the Source Code in an information repository reasonably calculated to permit inexpensive and convenient access by You for as long as Licensor continues to distribute the Original Work, and by publishing the address of that information repository in a notice immediately following the copyright notice that applies to the Original Work.

  4. Exclusions From License Grant. Neither the names of Licensor, nor the names of any contributors to the Original Work, nor any of their trademarks or service marks, may be used to endorse or promote products derived from this Original Work without express prior written permission of the Licensor. Nothing in this License shall be deemed to grant any rights to trademarks, copyrights, patents, trade secrets or any other intellectual property of Licensor except as expressly stated herein. No patent license is granted to make, use, sell or offer to sell embodiments of any patent claims other than the licensed claims defined in Section 2. No right is granted to the trademarks of Licensor even if such marks are included in the Original Work. Nothing in this License shall be interpreted to prohibit Licensor from licensing under different terms from this License any Original Work that Licensor otherwise would have a right to license.

  5. This section intentionally omitted.

  6. Attribution Rights. You must retain, in the Source Code of any Derivative Works that You create, all copyright, patent or trademark notices from the Source Code of the Original Work, as well as any notices of licensing and any descriptive text identified therein as an "Attribution Notice." You must cause the Source Code for any Derivative Works that You create to carry a prominent Attribution Notice reasonably calculated to inform recipients that You have modified the Original Work.

  7. Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that the copyright in and to the Original Work and the patent rights granted herein by Licensor are owned by the Licensor or are sublicensed to You under the terms of this License with the permission of the contributor(s) of those copyrights and patent rights. Except as expressly stated in the immediately proceeding sentence, the Original Work is provided under this License on an "AS IS" BASIS and WITHOUT WARRANTY, either express or implied, including, without limitation, the warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No license to Original Work is granted hereunder except under this disclaimer.

  8. Limitation of Liability. Under no circumstances and under no legal theory, whether in tort (including negligence), contract, or otherwise, shall the Licensor be liable to any person for any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or the use of the Original Work including, without limitation, damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses. This limitation of liability shall not apply to liability for death or personal injury resulting from Licensor's negligence to the extent applicable law prohibits such limitation. Some jurisdictions do not allow the exclusion or limitation of incidental or consequential damages, so this exclusion and limitation may not apply to You.

  9. Acceptance and Termination. If You distribute copies of the Original Work or a Derivative Work, You must make a reasonable effort under the circumstances to obtain the express assent of recipients to the terms of this License. Nothing else but this License (or another written agreement between Licensor and You) grants You permission to create Derivative Works based upon the Original Work or to exercise any of the rights granted in Section 1 herein, and any attempt to do so except under the terms of this License (or another written agreement between Licensor and You) is expressly prohibited by U.S. copyright law, the equivalent laws of other countries, and by international treaty. Therefore, by exercising any of the rights granted to You in Section 1 herein, You indicate Your acceptance of this License and all of its terms and conditions.

  10. Termination for Patent Action. This License shall terminate automatically and You may no longer exercise any of the rights granted to You by this License as of the date You commence an action, including a cross-claim or counterclaim, against Licensor or any licensee alleging that the Original Work infringes a patent. This termination provision shall not apply for an action alleging patent infringement by combinations of the Original Work with other software or hardware.

  11. Jurisdiction, Venue and Governing Law. Any action or suit relating to this License may be brought only in the courts of a jurisdiction wherein the Licensor resides or in which Licensor conducts its primary business, and under the laws of that jurisdiction excluding its conflict-of-law provisions. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any use of the Original Work outside the scope of this License or after its termination shall be subject to the requirements and penalties of the U.S. Copyright Act, 17 U.S.C. § 101 et seq., the equivalent laws of other countries, and international treaty. This section shall survive the termination of this License.

  12. Attorneys Fees. In any action to enforce the terms of this License or seeking damages relating thereto, the prevailing party shall be entitled to recover its costs and expenses, including, without limitation, reasonable attorneys' fees and costs incurred in connection with such action, including any appeal of such action. This section shall survive the termination of this License.

  13. Definition of "You" in This License. "You" throughout this License, whether in upper or lower case, means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, "You" includes any entity that controls, is controlled by, or is under common control with you. For purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.

  14. Right to Use. You may use the Original Work in all ways not otherwise restricted or conditioned by this License or by law, and Licensor promises not to interfere with or be responsible for such uses by You.

This license is Copyright (C) 2003-2004 Lawrence E. Rosen. All rights reserved. Permission is hereby granted to copy and distribute this license without modification. This license may not be modified without the express written permission of its copyright owner.

Glossary

Acronyms

669

UNIS/Composer 669 Module

ABI

Application Binary Interface

ADSL

Asymmetric Digital Subscriber Line

AFS

Andrew File System

AIFF

Audio Interchange File Format

ALSA

Advanced Linux Sound Architecture

ANSI

American National Standards Institute

API

Application Programming Interface

APR

Apache Portable Runtime

ARP

Address Resolution Protocol

ASCII

American Standard Code for Information Interchange

ASN

Abstract Syntax Notation

ASF

Advanced Streaming Format

ATA

AT-Attached

ATSC

Advanced Television Systems Committee

ATK

Accessibility ToolKit

AVI

Audio Video Interleave

AWT

Abstract Window Toolkit

BER

Basic Encoding Rules

BICS

Berkeley/IRCAM/CARL

BIND

Berkeley Internet Name Domain

BIOS

Basic Input/Output System

BLFS

Beyond Linux From Scratch

BMP

Bit MaP

CD

Compact Disk

CDDA

Compact Disc Digital Audio

CIFS

Common Internet File System

See Also SMB .

CODEC

COmpression/DECompression module

CORBA

Common Object Request Broker Architecture

CPU

Central Processing Unit

CRD

Color Rendering Dictionary

CSA

Color Space Array

CSS (on DVD)

Contents Scrambling System

CSS

Cascading Style Sheets

CUPS

Common Unix Printing System

CVS

Concurrent Versions System

DAO

Disc At Once

DARPA

Directory Address Resolution Protocol Allocation

DEC

Digital Equipment Corporation

DER

Distinguished Encoding Rules

DES

Data Encryption Standard

DHCP

Dynamic Host Configuration Protocol

DICT

Dictionary Server Protocol (RFC 2229)

DIN

German Industrial Norm

DNS

Domain Name Service

DOS

Disk Operating System

DRI

Direct Rendering Infrastructure

DSC

Document Structuring Conventions

DSO

Dynamic Shared Objects

DSSSL

Document Style Semantics and Specification Language

DV

Digital Video

DVD

Digital Versatile Disk (also Digital Video Disk)

DVI

DeVice Independent

ELF

Executable and Linking Format

EPP

Enhanced Parallel Port

EPS

Encapsulated PostScript

ESD

Enlighten Sound Daemon

ESMTP

Extended Simple Mail Transfer Protocol

FAM

File Alteration Monitor

FAME

Fast Assembly Mpeg Encoder

FAQ

Frequently Asked Questions

FAX

Facsimile

FB

Frame Buffer

FHS

File Hierarchy Standard

FLAC

Free Lossless Audio CODEC

FO

Formatted Objects

FOURCC

FOUR Character Code

FTP

File Transfer Protocol

GCC

GNU Compiler Collection

GDBM

GNU DataBase Manager

GDK

GTK+ Drawing Kit

GDM

GNOME Display Manager

GID

Group IDentity

GIF

Graphics Interchange Format

GLUT

OpenGL Utility Toolkit

GMP

GNU Multiple Precision Arithmetic

GNAT

GNU NYU Ada 9x Translator

GNOME

GNU Network Object Model Environment

GNU

GNU's Not Unix

GPL

General Public License

GPM

General Purpose Mouse

GSS

Generic Security Service

GSSAPI

Generic Security Service Application Programming Interface

GTK

GIMP ToolKit

GUI

Graphical User Interface

HFS

Hierarchical File System

HTML

HyperText Markup Language

HTTP

HyperText Transfer Protocol

HTTPS

HyperText Transfer Protocol Secured

HUP

Hang UP

IANA

Internet Assigned Numbers Authority

ICC

International Color Consortium

ICMP

Internet Control Message Protocol

IDE

Integrated Drive Electronics

Integrated Development Environment

IDL

Interface Definition Language

IJS

Ink Jet Systems

ILS

Internet Location Server

IMAP

Internet Message Access Protocol

IMON

Inode MONitor

IP

Internet Protocol

See Also TCP .

IPX

Internetwork Packet eXchange

IRC

Internet Relay Chat

IrDA

Infrared Data Association

ISDN

Integrated Services Digital Network

ISO

International Standards Organisation

ISP

Internet Service Provider

IT

ImpulseTracker Module

JAI

Java Advanced Imaging

JAR

Java ARchive

JDK

Java Development Kit

JFIF

JPEG File Interchange Format

JPEG

Joint Photographic Experts Group

KDC

Key Distribution Center

KDE

KDesktop Environment

LAME

Lame Ain't an MP3 Encoder

LAN

Local Area Network

LDAP

Lightweight Directory Access Protocol

LDIF

Lightweight Data Interchange Format

LFS

Linux From Scratch

LGPL

Library General Public License

LPR

Line PRinter

LZO

Lempel-Ziv-Oberhumer

LZW

Lempel-Ziv-Welch

MAC

Media Access Control

MCOP

Multimedia COmmunication Protocol

MCU

Multipoint Control Unit

MD

Message-Digest

MDA

Mail Delivery Agent

MED

MED/OctaMED Module

MIDI

Musical Instrument Digital Interface

MIF

Maker Interchange Format

MII

Media Independent Interface

MIME

Multipurpose Internet Mail Extensions

MIT

Massachusetts Institute of Technology

MNG

Multiple-image Network Graphics

MOD

ProTracker Module

MP3

MPEG-1 audio layer 3

MPEG

Moving Picture Experts Group

MSL

Magick Scripting Language

MTA

Mail Transport Agent

MTM

MultiTracker Module

MUA

Mail User Agent

NASM

Netwide ASseMbler

NNTP

Network News Transfer Protocol

NFS

Network File System

NIS

Network Information Service

NPTL

Native Posix Thread Library

NSPR

Netscape Portable Runtime

NSS

Network Security Services

NTP

Network Time Protocol

OAF

Object Activation Framework

ODBC

Open DataBase Connectivity

OMF

Open Metadata Framework

ORB

Object Request Broker

See Also CORBA .

ORDBMS

Object Relational Database Management System

OS

Operating System

OSF

Open Software Foundation

OSS

Open Sound System

PAM

Pluggable authentication Modules

PBM

Portable BitMap

PCI

Peripheral Component Interconnect

PCL

Printer Control Language

PCM

Pulse Code Modulation

PDC

Primary Domain Controller

PDF

Portable Document Format

PEAR

PHP Extension and Application Repository

PGM

Portable Grey Map

PGP

Pretty Good Privacy

PHP

PHP Hypertext Preprocessor

PIM

Personal Information Manager

PLIP

Parallel Line Internet Protocol

PNG

Portable Network Graphics

PO

Portable Object

POD

Plain Old Documentation

POP

Post Office Protocol

PPD

PostScript Printer Description

PPM

Portable Pixel Map

PPP

Point to Point Protocol

PPPoE

Point to Point Protocol over Ethernet

PS

PostScript

RAM

Random Access Memory

RARP

Reverse Address Resolution Protocol

RCS

Revision Control System

RFC

Request For Comments

RGB

Red Green Blue

RGBA

Red Green Blue Alpha

ROM

Read-Only Memory

RP

Roaring Penguin

RPC

Remote Procedure Call

RTC

Real Time Clock

RTP

Real Time Protocol

RW

Read Write

S3M

ScreamTracker Version 3 Module

S/MIME

Secure/MIME

SANE

Scanner Access Now Easy

SASL

Simple Authentication and Security Layer

SBU

Static Binutils Units

SCCS

Source Code Control System

SCSI

Small Computer System Interface

SDK

Software Development Kit

SGML

Standard Generalized Markup Language

SMB

Server Message Block

SMIL

Synchronized Multimedia Integration Language

SMTP

Simple Mail Transfer Protocol

SOAP

Simple Object Access Protocol

SQL

Structured Query Language

SSH

Secure SHell

SSL

Secure Sockets Layer

SUID

Set User IDentity

SVG

Scalable Vector Graphics

SVGA

Super Video Graphics Array

TCL

Tool Command Language

TCP

Transmission Control Protocol

TGT

Ticket-Granting Ticket

TIFF

Tag(ged) Image File Format

TLS

Transport Layer Security

TTF

TrueType Font

TTS

Text To Speech

UCS

Universal Character Set

UDF

Universal Disk Format

UID

User IDentity

UDP

User Datagram Protocol

UI

User Interface

UML

Unified Modelling Language

URL

Uniform Resource Locator

USB

Universal Serial Bus

USR

Upstream Ready

UTF

UCS Transformation Format

UUCP

Unix-to-Unix Copy Protocol

VCD

Video Compact Disk

VESA

Video Electronics Standards Association

VGA

Video Graphics Array

VNC

Virtual Network Computer

VOB

Video OBject

VOIP

Voice Over IP

W3C

World Wide Web Consortium

WAV

Waveform Audio

WWW

World Wide Web

XDMCP

XDisplay Manager Control Protocol

XM

FastTracker Module

XML

eXtensible Markup Language

XSL

eXtensible Style Language

XSLT

eXtensible Style Language Transformation

XSM

X/Open System Management

XMMS

XMultiMedia System

YP

Yellow Pages

YUV

Luminance-Bandwidth-Chrominance

Index

Packages

Programs

Libraries

Kernel Configuration

Configuration Files

Bootscripts

Others