Copyright © 2001-2003 BLFS Development Team
Copyright (c) 2001-2003, BLFS Development Team
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions in any form must retain the above copyright notice, this list of conditions and the following disclaimer.
Neither the name of "Linux From Scratch" nor the names of its contributors may be used to endorse or promote products derived from this material without specific prior written permission.
Any material derived from Linux From Scratch must contain a reference to the "Linux From Scratch" project.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
This book is dedicated to the LFS community
Having helped out with LinuxFromScratch 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://hints.linuxfromscratch.org). 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@linuxfromscratch.org> BLFS Editor (July 2001 - March 2003)
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. 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!
This book is divided into the following parts.
Here we introduce basic configuration and security issues. We also discuss a range of editors, filesystems and shells which aren't covered in the main LFS book.
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.
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.
Networking libraries and command line networking tools make up the bulk of this part.
Here we deal with setting up mail and other servers (such as SSH, CVS, etc.).
This part explains how to set up a basic XFree86 installation along with some generic X libraries and Window managers.
For those who want to use the K Desktop Environment or some parts of it, this part covers it.
Gnome is the main alternative to KDE in the Desktop Environment arena and we cover both gnome-1.4 and gnome-2.2 here.
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.
Here we cover setting multimedia libraries and drivers along with some audio, video and CD-writing programs.
The PST part of the book covers things from ghostscript, cups and DocBook to installing TeX.
The Appendices cover information which doesn't belong in the main book; they are mainly there as a reference.
The Beyond LinuxFromScratch book is designed to carry on from where the LFS book leaves off. 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 we use throughout the 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 in the explanation sections to identify which of the commands is being referred to.
install-info: unknown option `--dir-file=/mnt/lfs/usr/info/dir'
This form of text (fixed width text) is showing screen output, probably as the result of commands issued and is also used to show filenames such as /etc/lilo.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 hyperlinks, both within the book and to external pages such as HowTo's, download locations, websites, etc.
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.
This is BLFS-BOOK version 1.0 dated April 25th, 2003. If this version is older than a month a newer version is probably already available for download. Check one of the mirror sites below for updated versions.
Below is a list of our current HTTP and FTP mirror sites as of September 29th 2002. This list might not be accurate anymore. The latest info can be found on our website at http://beyond.linuxfromscratch.org.
Ottawa, Ontario, Canada [100 Mbps] - http://beyond.linuxfromscratch.org/blfs/intro.shtml
Calgary, Alberta, Canada [10 Mbps] - http://beyond.ca.linuxfromscratch.org/blfs/intro.shtml
Columbus, Ohio, USA [1 Mbit] - http://beyond.us.linuxfromscratch.org/blfs/intro.shtml
Amsterdam, The Netherlands [100 Mbps] - http://beyond.nl.linuxfromscratch.org/blfs/intro.shtml
Oslo, Norway [100 Mbit] - http://beyond.no.linuxfromscratch.org/blfs/intro.shtml
Karlsruhe/Germany [100 Mbit] - http://blfs.netservice-neuss.de/blfs/intro.shtml
Vienna Univ. of Technology, Austria [64 Mbit] - http://beyond.at.linuxfromscratch.org/blfs/intro.shtml
Karlskrona, Sweden [10 Mbit] - http://beyond.se.linuxfromscratch.org/blfs/intro.shtml
Teeside, United Kingdom [256 Kbit] - http://beyond.linuxfromscratch.co.uk/blfs/intro.shtml
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.
Mark Stone <mstone@linux.com> for donating the linuxfromscratch.org servers.
Gerard Beekmans <gerard@linuxfromscratch.org> for starting and writing the vast majority of the LFS project.
Jesse Tie-Ten-Quee <highos@linuxfromscratch.org> for answering many questions on irc, having a great deal of patience and for not killing the editor for the joke in the original BLFS announcement!
DREAMWVR.COM for their ongoing sponsorship by donating various resources to the LFS and related sub projects.
Robert Briggs for donating the linuxfromscratch.org and linuxfromscratch.com domain names.
Frank Skettino <bkenoah@oswd.org> at OSWD for coming up the initial design of the LFS and BLFS websites.
Garrett LeSage <garrett@linux.com> for creating the LFS banner
Jeff Bauman (former co-editor of the book) for his assistance with getting BLFS off the ground.
Countless other people on the various LFS and BLFS mailing lists who are making this book happen by giving their suggestions, testing the book and submitting bug reports.
Many people have contributed both directly and indirectly to BLFS. This page lists all of those we can think of. We may well have missed people out and if you feel this is the case, drop us 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 larry@linuxfromscratch.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.
Editor: Larry Lawrence <larry@linuxfromscratch.org>
Co-Editors: Bruce Dubbs, Mark Hymers, Billy O'Connor and Tushar Teredesai
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 03: /etc/inputrc: Chris Lynn.
Chapter 03: Customizing your logon & vimrc: Mark Hymers.
Chapter 03: Random number script Larry Lawrence.
Chapter 03: Creating a custom bootdisk Mike Bedwell.
Chapter 03: The Bash Shell Startup Files James Robertson.
Chapter 04: Firewalling: Henning Rohde with thanks to Jeff Bauman.
Chapter 11: Which Mark Hymers with many thanks to Seth Klein and Jesse Tie-Ten-Quee.
Chapter 26: XFree86 Bruce Dubbs.
Chapter 28: Intro to Window Managers Bruce Dubbs.
Chapter 29: KDE: Bruce Dubbs.
Chapter 32: GNOME: Larry Lawrence.
aalib, Alsa, ffmpeg, MPlayer, opendivx, sane, transcode, xvid and xsane: Alex Kloss
AbiWord, at-spi, ATK, audiofile, avifile, bc, bonobo-activation, bug-buddy, cdrdao, cdrtools, cpio, curl, dhcp, enlightenment, eog, esound, fcron, fluxbox, FNLIB, 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, gnome2-user-docs, gnumeric, GTK+2, gtk-doc, gtk-engines, gtk-thinice-engine, eel, imlib, intltool, lame, libao, libart_lgpl, libbonobo, libbonoboui, libgail-gnome, libglade2, libgnome, libgnomecanvas, libgnomeprint, libgnomeprintui, libgnomeui, libgtkhtml, libgtop, libIDL, libogg, librep, librsvg, libvorbis, libwnck, libxml2, libxslt, linc, LPRng, Linux_PAM, metacity, MPlayer, mutt, nautilus, nautilus-media, oaf, OpenJade, OpenSP, OpenSSH, ORBit, ORBit2, pan, Pango, pccts, 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
CDParanoia, mpg123, SDL and XMMS: Jeroen Coumans
alsa, cvs, dhcpcd, gpm, hdparm, libjpeg, libmng, libpng, libtiff, libungif, links, lynx, openssl, tcsh, which, zsch, zlib: Mark Hymers
daemontools, traceroute and ucspi-tcp: Jeff Bauman
db and lcms: Jeremy Jones and Mark Hymers
aspell, balsa, bind, bonobo, bonobo-conf, cvs server, db-3.3.11, db-3.1.17, emacs, evolution, exim, expat, gal, gnome-print, GnuCash, gtkhtml, guppi, guile, guppi, g-wrap, leafnode, lesstif, libcapplet, libesmtp, libfam, libghttp, libglade, pine, portmap, PostgreSQL, pspell, qmail, qpopper, readline, reiserfs, Samba, sendmail, slib, slrn, soup, tex, tcp-wrappers, and xinetd: Billy O'Connor
ESP Ghostscript: Matt Rogers
fetchmail and wvdial: Paul Campbell
tripwire : Manfred Glombowski
alsa-oss, inetutils, gdk, GLib, GTK+, libxml and vim: James Iwanek
iptables: Henning Rohde
joe, nano, nmap, slang, w3m and whois: Timothy Bauscher
MySQL: Jesse Tie-Ten-Quee
gcc, gcc2, j2sdk, mozilla, nas, openoffice and STLport: Tushar Teredesai
Gerard Beekmans for generally putting up with us and for running the whole LFS project.
Bruce Dubbs for writing the kde.txt hint from which we gathered much useful information.
Lee Harris for writing the gpm.txt hint on which our gpm instructions are based.
Marc Heerdink for writing the gpm2.txt hint on which our gpm instruction are based.
Jeremy Jones (otherwise known as mca) for hacking Makefiles and general assistance.
J_Man for submitting a gpm-1.19.3.diff file on which our gpm instructions are based.
Scot Mc Pherson for writing the gnome-1.4.txt hint from which was gathered useful information and for warning us that Gnome2 was a toy.
Tushar Teredesai for writing the Compiling Java 2 SDK from Scratch hint on which j2sdk is based and for writing the docbook hint used throughout the typesetting chapter.
Oliver Brakmann for developing the dhcpcd patch for FHS compliance.
DJ Lucas for contributing to dhcpcd patch and many contributions while dhcp section was being developed.
Billy O'Connor for building gnome2 so many times (I thought my four was a lot) and being very helpful with his comments on that section.
Ted Riley for writing the Linux-PAM + CrackLib + Shadow hint on which reinstalling shadow to use PAM is based.
Fernando Arbeiza for doing great quality assurance on Shadow utilizing PAM. The machine access he saved may have been yours.
Please note that the changelog only lists which editor was responsible for putting the changes into CVS; please read the Credits page in Chapter 1 for details on who wrote what.
1.0 - April 25th, 2003
April 25th, 2003 [larry]: Clarified ncftp license with maintainer. Although he was not concerned about our usage of ncftp in BLFS and the development license issues would be between the user and ncftp, I took the opportunity to explain this in to book anyway.
April 25th, 2003 [larry]: multimedia: fixed GUI interface redundancy in MPlayer.
April 23rd, 2003 [larry]: general: found a description for c_hash.
April 23rd, 2003 [larry]: postlfs: corrected errors in tripwire installation instructions.
April 23rd, 2003 [larry]: content: adding introduction to apache page.
0.99.2 - April 22nd, 2003
April 21st, 2003 [larry]: pst: changed url to point to correct location for the version in the book. This will be undone after release.
April 21st, 2003 [larry]: added a lot of tags.
April 17th, 2003 [larry]: multimedia: updated to MPlayer 0.90.
April 17th, 2003 [larry]: pst: Fixed installation instructions for psutils as reported by Gustav Schauwecker.
0.99.1 - April 16th, 2003
April 16th, 2003 [larry]: xsoft: updated to balsa-2.0.10 to sync with gnome-2.2.
April 16th, 2003 [larry]: x: updated dependencies to include xfree for consistency - reported by conathan.
April 16th, 2003 [larry]: xsoft: updated to gnucash-1.8.2 to eliminate sed.
April 16th, 2003 [larry]: general: updated to g-wrap-1.3.4 to clear up gtkhtml error in gnucash.
April 16th, 2003 [tushar]: db: added patch for perl in case perl is recompiled after installing db-4.1.
April 15th, 2003 [tushar]: moved db-3.1 as a sub-section of evolution since no other package needs it.
April 15th, 2003 [larry]: updated to samba-2.2.8a, security update.
April 15th, 2003 [larry]: updated to db-4.1.25.
April 15th, 2003 [larry]: updated to qpopper4.0.5 as current file pointers did not work.
April 14th,2003 [larry]: Tree pruning. All unfinished work was commented out.
April 12th 2003 [larry]: modified instructions for wvstreams and wvdial as submitted by Alexander E. Patrakov.
April 10th, 2003 [larry]: updated to slang-1.4.9 as current file pointers did not work.
April 10th, 2003 [larry]: added a bug patch to reiserfsprogs and added symlinks to the install, all reported by Kelledin.
April 7th, 2003 [tushar]: Added Beyond BLFS section.
April 7th, 2003 [larry]: another spellcheck run.
April 6th, 2003 [larry]: basicnet: updated to mutt-1.4.1i.
April 5th, 2003 [larry]: server: updated to samba-2.2.8.
April 5th, 2003 [larry]: server: Update to sendmail-8.12.9.
April 5th, 2003 [tushar]: openldap: Updated to 2.1.17.
April 5th, 2003 [tushar]: nmap: Updated to 3.20.
April 5th, 2003 [tushar]: libpng: Added patch to link against libz.
April 5th, 2003 [tushar]: unzip: Added patches and modified instructions to link against system zlib.
April 4th, 2003 [bdubbs]: KDE: moved aRts section from multimedia section to KDE section.
April 4th, 2003 [larry]: basicnet: updated to curl-7.10.4.
April 4th, 2003 [tushar]: fcron: added docbook-dsssl dependency link.
April 4th, 2003 [larry]: general: updated to libxml2-2.5.6 and libxslt-1.0.29.
April 3rd, 2003 [tushar]: programming: Added Fortran-77 compatibility symlink.
April 3rd, 2003 [larry]: postlfs: Added tripwire-2.3.1-2 and moved nessus to old while I determine its fate.
April 3rd, 2003 [tushar]: programming: merged gnat with gcc instructions, made changes to the gcc instructions.
April 2nd, 2003 [larry]: postlfs: sync xfs patch to LFS kernel version.
April 2nd, 2003 [larry]: postlfs: Shells chapter edited, qa'ed by larry.
April 2nd, 2003 [larry]: postlfs: Editors chapter complete except for vim-exp.xml, packages qa'ed by larry.
April 2nd, 2003 [larry]: postlfs: updated to emacs-21.3 and nano-1.2.0.
April 2nd, 2003 [markh]: server: Updated to OpenSSH-3.6.1p1.
April 2nd, 2003 [tushar]: genlib: simplified STL port sed command.
April 1st, 2003 [tushar]: genlib: updated to popt-1.7.
April 1st, 2003 [larry]: X: updated to sawfish-1.3.
April 1st, 2003 [larry]: prog: updated to librep-0.16.2.
April 1st, 2003 [tushar]: prog: added motif fix for j2sdk. Happy 1st April:) BTW, the fix is real:)
March 31st, 2003 [tushar]: prog: removed gcc2libs, added complete gcc suite.
March 30th, 2003 [tushar]: j2sdk: updated jdk to 1.4.1_02.
March 30th, 2003 [tushar]: editors: added instructions for recompiling vim post X.
March 28th, 2003 [larry]: pst: updated to xpdf-2.02.
March 28th, 2003 [larry]: X: moved enlightenment and fnlib to old.
March 27th, 2003 [larry]: Server: updated to postfix-2.0.7.
March 27th, 2003 [larry]: General: updated to lcms-1.09.
March 24th, 2003 [larry]: PST: Added Cyrillic fonts to a2ps as suggested by Alexander Patrakov.
March 23rd, 2003 [larry]: Multimedia: Updated to MPlayer-0.90rc5 and xine-lib-1-beta9.
March 23rd, 2003 [larry]: Gnome: Updated to gnome-desktop-2.2.1, gnome-panel-2.2.1, gnome-session-2.2.1, control-center-2.2.1 , gnome-terminal-2.2.1, gnome-applets-2.2.1, gnome-utils-2.2.1, nautilus-2.2.2, bug-buddy-2.1.103, gedit-2.2.1, eog-2.2.1 and gnome-user-docs-2.0.6.
March 22nd, 2003 [larry]: Gnome: Updated to libbonoboui-2.2.0.1, gnome-icon-theme-1.0.1, libwnck-2.2.1, gnome-themes-2.2.1, vte-0.10.26, librsvg-2.2.4, eel-2.2.2, libgtkhtml-2.2.1, libgnomeprint-2.2.1.2 and libgnomeprintui-2.2.1.2.
March 21st, 2003 [larry]: General: added aspell configuration as recommended by Grant Murray.
March 20th, 2003 [larry]: Gnome: updated to ORBit2-2.6.1, bonobo-activation-2.2.1.1, libbonobo-2.2.1, gnome-vfs-2.2.3 and libgnomecanvas-2.2.0.2.
March 20th, 2003 [tushar]: OpenOffice: Added note about a non working openoffice-1.0.2 install
March 19th, 2003 [tushar]: Sever: Updated to bind-9.2.2 (James Iwanek's patch).
March 19th, 2003 [tushar]: Multimedia: Updated to alsa-0.9.2 (James Iwanek's patch).
March 19th, 2003 [tushar]: Mozilla: Added patch for Alpha (submitted by Kelledin) and removed elf-dynstr-gc option. Removed openoffice related instructions.
March 18th, 2003 [larry]: General: Updated to pcre-4.1.
March 18th, 2003 [larry]: Server: Updated to Postfix-2.0.6.
March 17th, 2003 [tushar]: BasicNet: Applied James' patch to inetutils.
March 17th, 2003 [larry]: Xsoft: Updated to galeon-1.3.3.
March 16th, 2003 [larry]: Basicnet: Updated to whois_4.6.3.
March 16th, 2003 [larry]: PST: Updated to docbook-dsssl-1.78.
March 15th, 2003 [larry]: Multimedia: Updated to xine-ui-0.9.19.
March 15th, 2003 [tushar]: X Software: Temporarily removed spellchecker from mozilla 1.3.
March 13th, 2003 [tushar]: X Software: Updated to mozilla 1.3.
March 11th, 2003 [tushar]: Multimedia: Applied James' patch to update to alsa-0.9.1.
March 10th, 2003 [larry]: Connect: applied patch from James for dhcpcd. Postlfs: applied patch from Manfred to emacs. General: applied patch from Manfred to slang. Multimedia: updated to alsa-0.9.0rc8c.
March 9th, 2003 [larry]: Multimedia: Updated to alsa-0.9.0rc8b.
March 9th, 2003 [larry]: Multimedia: Updated to xine-lib-1-beta8.
March 7th, 2003 [bdubbs]: X: Added fc-cache instructions to TrueType and added section on building kernel modules.
March 7th, 2003 [larry]: PST: updated to TeX-2.0.2.
March 6th, 2003 [tushar]: OpenOffice: Removed unneeded patch (debug-keep-setup). Added sed command to remove version number from installation directory.
March 5th, 2003 [larry]: PST: modified a2ps instructions to eliminate files going into root directory.
March 5th, 2003 [larry]: Multimedia: applied James' patch to mv startup script instructions to utils.
March 5th, 2003 [larry]: General: updated to libmng-1.0.5.
March 4th, 2003 [larry]: Server: updated to postfix-2.0.5 and sendmail-8.12.8.
March 4th, 2003 [larry]: Basicnet: updated to fetchmail-6.2.2.
March 4th, 2003 [larry]: Multimedia: updated to alsa-0.9.0rc8a.
March 4th, 2003 [bdubbs]: X: updated keyboard layout explanation and example in XFree86.
March 3rd, 2003 [larry]: X: updated to qt-3.1.2.
March 3rd, 2003 [larry]: Multimedia: updated to alsa-0.9.0rc8.
March 3rd, 2003 [larry]: Xsoft: updated to gnumeric-1.0.12.
March 2nd, 2003 [bdubbs]: XFree86: updated to version 4.3. Removed freetype 1. Updated XFree86 configuration.
March 2nd, 2003 [larry]: Xsoft: updated to AbiWord-1.0.4.
March 3rd, 2003 [tushar]: db: Added note for openoffice.
March 3rd, 2003 [tushar]: j2sdk: Added explanations for patches.
March 2nd, 2003 [larry]: DJB's: corrections to daemontools install instructions, submitted by Sefan Krah.
March 1st, 2003 [larry]: basicnet: corrections to inetutils install instructions, submitted by James Iwanek.
March 1st, 2003 [larry]: multimedia: applied James' patch to roll alsa to 0.9.0rc7
March 1st, 2003 [larry]: pst: xsl-stylesheets install was incomplete, fixed.
February 28th, 2003 [tushar]: j2sdk: Added reference to blackdown jdk for users who cannot download j2sdk source due to license restrictions.
February 28th, 2003 [tushar]: Remove && from the end of unset VAR to accommodate bash versions < 2.05b. Minor fixes to some packages.
February 26th, 2003 [larry]: PST: added xpdf-patch1.
February 26th, 2003 [larry]: xsoft: Updated to pan-0.13.4.
February 26th, 2003 [larry]: Basicnet: Added gnet-1.1.8, newly required by pan.
February 25th, 2003 [larry]: General: Updated to libxml2-2.5.4 and libxslt-1.0.27.
February 25th, 2003 [larry]: PST: modified install instructions of xpdf to move /usr/X11R6/etc to /etc.
February 25th, 2003 [markh]: General: Removed alias option from which and put the actual package first in the list.
February 25th, 2003 [larry]: Multimedia: Updated to xine-lib-1-beta6 and ffmpeg-0.4.6.
February 24th, 2003 [larry]: Basicnet: Added inetutils-1.4.2 contributed by James Iwanek and removed telnet.
February 23rd, 2003 [larry]: Server: Updated to postfix-2.0.4.
February 23rd, 2003 [larry]: Multimedia: Updated to xine-lib-1-beta5.tar.gz.
February 22nd, 2003 [larry]: General: Updated to openssl-0.9.7a and pcre-4.0. New sed command for openssl contributed by Jochen Held.
February 22nd, 2003 [larry]: PST: Updated to LPRng-3.8.20.
February 21st, 2003 [larry]: Multimedia: updated to xvidcore-0.9.1.
February 20th, 2003 [larry]: basicnet: updated to curl-7.10.3.
February 20th, 2003 [larry]: multimedia: updated to xine-lib-1-beta4 and xine-ui-0.9.18.
February 20th, 2003 [larry]: pst: edited for consistency.
February 20th, 2003 [larry]: pst: added espgs-7.05.5 submitted by Matt Rogers.
February 19th, 2003 [larry]: entity files: added my last batch of SBU times.
February 18th, 2003 [larry]: xsoft: Added patch to downloads to mozilla for galeon and rewrote instructions.
February 18th, 2003 [tushar]: openoffice: Removed optimization flags. Added warning.
February 17th, 2003 [larry]: entity files: adding SBU time for packages for editors use if desired.
February 17th, 2003 [larry]: multimedia: updated to MPlayer-0.90rc4.
February 17th, 2003 [tushar]: openoffice: Added localized helpcontent instructions.
February 16th, 2003 [tushar]: openoffice: Updated to 1.0.2
February 16th, 2003 [larry]: gnome: updated to gnome-media-2.2.1.1 and nautilus-media-0.2.1.
February 15th, 2003 [larry]: gnome: Updated to control-center-2.2.0.1, librsvg-2.2.3, eel-2.2.0.2, nautilus-2.2.0.2, libgtkhtml-2.2.0, yelp-2.2.0, bug-buddy-2.2.102, libgnomeprint-2.2.1.1, libgnomeprintui-2.2.1.1, gtk-thinice-engine-2.0.2, gedit-2.2.0.1, gstreamer-0.6.0 and gst-plugins-0.6.0.
February 15th, 2003 [larry]: pst: updated to docbook-xsl-1.60.1
February 14th, 2003 [tushar]: mozilla: Updated patch mozilla-1.2.1-gtk-mozembed.patch and fixed typo.
February 13th, 2003 [larry]: Appendices: Moved portmap to S22 and xinetd to S23 so that libfam will work properly.
February 12th, 2003 [larry]: General: Updated to libxml2-2.5.3 and libxslt-1.0.26.
February 12th, 2003 [tushar]: Updated STLport instructions.
February 12th, 2003 [larry]: postlfs: Updated PAM and shadow instructions to correct the none working behavior under LFS cvs reported by Jim Gifford.
February 10th, 2003 [billyoc]: pst: Updated teTeX to version 2.0.
February 10th, 2003 [billyoc]: xsoft: Updated balsa to version 2.0.7.
February 10th, 2003 [tushar]: Added nas-1.6, a prereq for OpenOffice.
February 10th, 2003 [tushar]: Added STLport, a prereq for OpenOffice.
February 10th, 2003 [tushar]: KDE: Added explanation for the environment variable DO_NOT_COMPILE.
February 9th, 2003 [billyoc]: server: Updated leafnode to version 1.9.33.
February 9th, 2003 [billyoc]: content: Updated postgres to version 7.3.2.
February 9th, 2003 [larry]: Gnome: Added gnome-desktop-2.2.0.1, gnome-panel-2.2.0.1, gnome-session-2.2.0.2, vte-0.10.17, gnome-terminal-2.2.0, libgtop-2.0.1, gnome-system-monitor-2.0.4, gail-1.2.0, at-spi-1.1.8, libgail-gnome-1.0.2, gnome-applets-2.2.0, gnome-utils-2.2.0.3 and gnome-games-2.2.0
February 8th, 2003 [larry]: Gnome: Added gtk-doc-1.0, linc-1.0.1, ORBit-2.5.1, bonobo-activiation-2.2.0, libbonobo-2.2.0, gnome-mime-data-2.2.0, GConf-2.2.0, gconf-editor-0.4.0, gnome-vfs-2.2.0, libgnome-2.2.0.1, libgnomecanvas-2.2.0.1, libbonoboui-2.2.0, gnome-icon-theme-1.0.0, libgnomeui-2.2.0.1, libwnck-2.2.0, gtk-engines-2.2.0 and gnome-themes-2.2
February 6th, 2003 [larry]: X: Added metacity-2.4.34.
February 6th, 2003 [larry]: X: Added startup-notification-0.5.
February 6th, 2003 [tushar]: Fixed errors in mozilla instructions and typos in j2sdk.
February 6th, 2003 [larry]: General: Updated to pkgconfig-0.15.0.
February 6th, 2003 [tushar]: Chapter 40: Updated to mozilla-1.2.1 and made gtk2 the default toolkit for building mozilla
February 5th, 2003 [larry]: General: Updated to libxml2-2.5.2 and libxslt-1.0.25.
February 5th, 2003 [larry]: General: Updated to atk-1.2.0, pango-1.2.1 and gtk+-2.2.1.
February 5th, 2003 [larry]: General: Updated to glib-2.2.1.
February 3rd, 2003 [larry]: Modified hfile-root to point to downloads.linuxfromscratch.org/blfs-patches. This gives us a temporary solution to patches. Changed ffile-root to hfile-root in jdk, gcc2lib and expat.
February 3rd, 2003 [larry]: General: Updated to expat-1.95.6.
February 1st, 2003 [larry]: General: Removed pccts as it is now built with cdrdao.
February 1st, 2003 [larry]: Multimedia: Updated to cdrtools-2.0.
January 31st, 2003 [bdubbs]: Add Openldap.
January 31st, 2003 [bdubbs]: Fix various types.
January 30th, 2003 [bdubbs]: removed zlib.
January 30th, 2003 [bdubbs]: fixed various typo's thanks to Matt.
January 30th, 2003 [larry]: general: Updated gcc to install-no-fixedincludes to be consistent with LFS. Thanks to Greg for doing the research.
January 30th, 2003 [tushar]: j2sdk: Updated to j2sdk-1.4.1 and merged two instructions.
January 29th, 2003 [bdubbs]: rc scripts: fixed typo's thanks to Matt.
January 29th, 2003 [bdubbs]: libmng: deleted explicit zlib dependency since zlib is now in LFS Book.
January 28th, 2003 [highos]: Content: Updated to MySQL-3.23.55.
January 27th, 2003 [bdubbs]: freetype2: removed instructions to use the system zlib until the linking problem is fixed in the next release.
January 26th, 2003 [larry]: Updated to postfix-2.0.3.
January 26th, 2003 [bdubbs]: Inserted instructions for kdevelop and kdocs (thanks to Matt Rogers)
January 25th, 2003 [billyoc]: basicnet: Updated fetchmail to version 6.2.1.
January 25th, 2003 [billyoc]: server: Updated xinetd to version 2.3.10.
January 25th, 2003 [billyoc]: basicnet: Updated Pine to version 4.53.
January 23rd, 2003 [larry]: general: added new configuration targets as suggested by Dagmar.
January 23rd, 2003 [larry]: server: updated to dhcp-3.0pl2.
January 21st, 2003 [larry]: gnome: updated to libgnomecanvas-2.0.5, libwnck-0.18, libgtkhtml-2.0.3, gnome-terminal-2.0.2, eog-1.0.4 and gnome-system-monitor-2.0.3. This brings BLFS Gnome to the 2.0.3 level.
January 21st, 2003 [billyoc]: general: Updated gpm instructions to add -lm to LDFLAGS. Maintainers notified..
January 20th, 2003 [billyoc]: basicnet: Updated cvs to version 1.11.5.
January 20th, 2003 [larry]: postlfs: corrected configure switch from --enable-both-confs to --enable-read-both-confs.
January 19th, 2003 [larry]: general: updated to libxml2-2.5.1.
January 19th, 2003 [larry]: gnome: update to intltool-0.25.
January 17th, 2003 [larry]: server: put full paths in openssh script. Could not get reload to work without it.
January 17th, 2003 [billyoc]: gnome: Updated gal to version 0.22.
January 15th, 2003 [larry]: server: Updated to postfix-2.0.2.
January 11th, 2003 [billyoc]: postlfs: Updated iptables to version 1.2.7a.
January 11th, 2003 [billyoc]: basicnet: Updated pine to version 4.52.
January 11th, 2003 [billyoc]: general: Added aspell section, to eventually replace outdated pspell.
January 9th, 2003 [tushar]: mozilla, openoffice, jdk: My first update:) Updated URL location for the hints.
January 8th, 2003 [billyoc]: general: Updated openssl to version 0.9.7.
January 8th, 2003 [billyoc]: general: Updated gpm to version 1.20.1.
January 8th, 2003 [billyoc]: server: Updated exim to version 4.12.
January 8th, 2003 [billyoc]: basicnet: Updated cvs to version 1.11.4.
January 8th, 2003 [billyoc]: basicnet: Updated w3m to version 0.3.2.1.
January 8th, 2003 [billyoc]: server: Updated sendmail to version 8.12.7.
January 8th, 2003 [billyoc]: server: Updated leafnode to version 1.9.32..
January 8th, 2003 [markh]: Introduction: Add Tushar to Co-editors list.
January 5th, 2003 [billyoc]: general: Updated slang to version 1.4.7.
January 5th, 2003 [bdubbs]: freetype2: Updated version to freetype-2.1.3 and fixed sed script.
January 5th, 2003 [larry]: Gnome: Updated to control-center-2.0.3.2, gnome-games-2.0.6 and libgnomeui-2.0.6.
January 5th, 2003 [larry]: Server: Updated to postfix-2.0.0.2.
January 5th, 2003 [larry]: Gnome: Updated to libart_lgpl-2.3.11.
January 5th, 2003 [larry]: Gnome: Updated to gtk-doc-0.10.
January 4th, 2003 [larry]: PST: Added LPRng-3.8.19.
January 3rd, 2003 [larry]: General: Updated to gmp-4.1.2 and gdbm-1.8.3.
January 3rd, 2003 [larry]: PST: Clean-up SGML chapter.
January 2nd, 2003 [larry]: PST: Added sane-1.0.9 and xsane-0.90 submitted by Alex Kloss.
January 2nd, 2003 [larry]: Postlfs: Applied patch to profile supplied by James Robertson.
January 2nd, 2003 [larry]: PST: Added sgml-dtd versions 3.1 and 4.2.
January 2nd, 2003 [bdubbs]: opendivx: Minor update.
January 1st, 2003 [larry]: Gnome: Updated to gdk-pixbuf-0.22.0.
January 1st, 2003 [larry]: Multimedia: Updated to lame-3.93.1.
January 1st, 2003 [larry]: Xsoft: Updated to pan-0.13.3.
January 1st, 2003 [markh]: PST: Added a brief note on configuring a2ps.
January 1st, 2003 [bdubbs]: CUPS: Updated entire section.
January 1st, 2003 [markh]: Gnome/Content: Move db-3.x to Content. At the same time, change install for db-3.1 to /tmp/db-3.1; also adjust Evolution to use the same.
January 1st, 2003 [bdubbs]: CUPS: Added boilerplate but text still needs to be updated.
December 31st, 2002 [markh]: PostLFS: Added James Robertson's /etc/skel page.
December 31st, 2002 [markh]: PST: Added Alex's patch for Ghostscript, a2ps, enscript, gsview, psutils and xpdf.
December 27th, 2002 [larry]: Multimedia: Added transcode-0.6.2.
December 26th, 2002 [larry]: Multimedia: updated to MPlayer-0.90rc2.
December 26th, 2002 [larry]: Server: Updated to postfix-2.0.0.1.
December 26th, 2002 [larry]: X: Updated to fluxbox-0.1.14.
December 26th, 2002 [larry]: General: Updated to ruby-1.6.8.
December 24th, 2002 [larry]: PST: Added scrollkeeper configuration to DocBook.
December 21st, 2002 [billyoc]: Content: Updated to PostgreSQL 7.3.1.
December 21st, 2002 [larry]: Multimedia: Updated to xine-lib-1-beta0, xine-ui-0.9.16 and avifile-0.7.22.
December 21st, 2002 [larry]: Basicnet: Updated to curl-7.10.2.
December 21st, 2002 [larry]: Multimedia: Added ffmpeg-211202-cvs.
December 21st, 2002 [larry]: Multimedia: Added opendivx-091202-cvs.
December 21st, 2002 [larry]: Multimedia: Added xvid-0.9.0.
December 20th, 2002 [larry]: General: Added aalib-1.4rc1.
December 19th, 2002 [larry]: X: Upgraded to qt-3.1.1.
December 19th, 2002 [larry]: General: Upgraded to gcc-3.2.1.
December 19th, 2002 [larry]: General: Rollbacked to gnat-3.14p.
December 19th, 2002 [larry]: General: Upgraded to gnat-3.15p.
December 18th, 2002 [larry]: Xsoft: Upgraded to gnumeric-1.0.11.
December 18th, 2002 [larry]: PST: Added docbook-dsssl-1.77.
December 17th, 2002 [larry]: PST: Clean up builds in SGML and XML.
December 16th, 2002 [billyoc]: Multimedia: Updated SDL to version 1.2.5.
December 16th, 2002 [billyoc]: Basicnet: Updated whois to version 4.6.1.
December 16th, 2002 [billyoc]: General: Updated hdparm to version 5.3.
December 16th, 2002 [billyoc]: Basicnet: Updated fetchmail to version 6.2.0.
December 16th, 2002 [billyoc]: General: Updated openssl to 0.9.6h.
December 16th, 2002 [billyoc]: Xsoft: Added evolution-1.2.1.
December 16th, 2002 [billyoc]: Gnome: Added bonobo-conf-0.16.
December 16th, 2002 [billyoc]: Gnome: Added soup-0.7.4.
December 16th, 2002 [billyoc]: Gnome: Added db-3.1.17.
December 15th, 2002 [larry]: PST: Added OpenJade-1.3.2.
December 15th, 2002 [larry]: PostLFS: eliminated --prefix=/usr, once used with shadow, login is linked to a library that will not be there if /usr mount fails.
December 15th, 2002 [larry]: PST: Added OpenSP-1.5.
December 14th, 2002 [larry]: PostLFS: Correct errors in shadows PAM section pointed out by Fernando Arbeiza.
December 13th, 2002 [billyoc]: Gnome: Added gnucash-1.6.8.
December 13th, 2002 [billyoc]: Gnome: Added gnome-print-0.37.
December 13th, 2002 [billyoc]: Gnome: Added libglade-0.17.
December 13th, 2002 [billyoc]: Gnome: Added db-3.3.11.
December 13th, 2002 [billyoc]: Gnome: Added gal-0.21.
December 13th, 2002 [billyoc]: Gnome: Added libcapplet-1.5.11.
December 13th, 2002 [billyoc]: Gnome: Added gtkhtml-1.0.4.
December 13th, 2002 [billyoc]: Gnome: Added libghttp-1.0.9.
December 13th, 2002 [billyoc]: Gnome: Added bonobo-1.0.22.
December 13th, 2002 [billyoc]: Gnome: Added guppi-0.40.3.
December 13th, 2002 [billyoc]: Gnome: Added guile-1.4.1.
December 13th, 2002 [billyoc]: Gnome: Added slib-2d5.
December 13th, 2002 [billyoc]: Gnome: Added gwrap-1.2.1.
December 13th, 2002 [billyoc]: Server: Updated Samba to version 2.2.7a.
December 13th, 2002 [billyoc]: Basicnet: Updated pine to version 4.51.
December 13th, 2002 [billyoc]: General: Added guile-1.4.1.
December 13th, 2002 [billyoc]: General: Added slib2d5.
December 13th, 2002 [billyoc]: General: Added g-wrap-1.2.1.
December 13th, 2002 [larry]: PST: Added docbook-xsl-1.58.1.
December 13th, 2002 [larry]: PST: DocBook is now xml-docbook-4.2
December 13th, 2002 [larry]: PST: Reorganized section to implement docbook hint.
December 12th, 2002 [larry]: PST: Added sgml-common-0.6.3.
December 12th, 2002 [larry]: General: updated to libxml2-2.4.30.
December 11th, 2002 [larry]: General: updated to libxml2-2.4.29.
December 11th, 2002 [markh]: Added 'The Bash Shell Startup Files' by James Robertson.
December 9th, 2002 [larry]: Update to MPlayer-0.90rc1.
December 9th, 2002 [markh]: Introduction: Wrote the organization page.
December 9th, 2002 [markh]: Introduction: Apply Seth's mailing list patch (seen on lfs-dev).
December 9th, 2002 [markh]: Introduction: Add new German mirror to mirror list.
December 6th, 2002 [larry]: Postlfs: Add sections to shadow to utilize PAM.
December 5th, 2002 [larry]: Postlfs: Updated to Linux-PAM-0.77.
December 4th, 2002 [billyoc]: Server: Updated to leafnode-1.9.30.
December 3rd, 2002 [larry]: General: Updated to libxml2-2.4.28.
December 2nd, 2002 [larry]: General: Updated to gmp-4.1.1.
December 2nd, 2002 [billyoc]: xsoft: Added Balsa 2 section.
December 2nd, 2002 [larry]: X: Added a link in the QT installation so that configure scripts looking for libqt find the libqt-mt that we install.
December 1st, 2002 [larry]: Gnome: Fixed script on gdm. Failed when bring down gdm when it was not running.
November 29th, 2002 [billyoc]: x: Update dri cvs update command with cvs repository on command line.
November 29th, 2002 [billyoc]: content: Update to PostgreSQL-7.3.
November 29th, 2002 [billyoc]: basicnet: Update to fetchmail-6.1.3.
November 27th, 2002 [larry]: Server: Update BIND with new J-ROOT server IP address.
November 24th, 2002 [larry]: Server: Update to postfix-1.1.12.
November 24th, 2002 [larry]: Gnome: Update to gdm-2.4.0.12.
November 24th, 2002 [larry]: Gnome: Roll back to bonobo-activation-1.0.3.
November 24th, 2002 [larry]: Gnome: Update to gedit-2.0.6
November 23rd, 2002 [larry]: Gnome: Update to eel-2.0.8,nautilus-2.0.8, yelp-1.0.7, and gnome-media-2.0.3.
November 23rd, 2002 [larry]: Gnome: Updated to gnome-utils-2.0.6, gnome-applets-2.0.4 and gnome-games-2.0.5.
November 23rd, 2002 [larry]: Gnome: Updated to gnome-vfs-2.0.4.1.
November 23rd, 2002 [larry]: Gnome: Updated to gnome-session-2.0.9 and control-center-2.0.2.91.
November 23rd, 2002 [larry]: Gnome: Updated to gnome-desktop-2.0.10 and gnome-panel-2.0.11.
November 23rd, 2002 [larry]: Gnome: Updated to bonobo-activation-1.0.4 and libgnome-2.0.6.
November 22nd, 2002 [larry]: Gnome: Updated to ORBit2-2.4.4.
November 22nd, 2002 [larry]: X: Updated to GTK+-2.0.9.
November 20th, 2002 [larry]: X: Added warning to QT. Multimedia: Removed ftp site for vorbis-tools, libao, ogg and vorbis reported by Bill.
November 19th, 2002 [highos]: Content: Updated to apache-1.3.27 and mysql-3.23.53.
November 19th, 2002 [billyoc]: Content: Add C++ and java support to db-4.0.14.
November 19th, 2002 [billyoc]: General: Update libesmtp to version 1.0.
November 19th, 2002 [highos]: Basicnet: Updated to whois-4.5.31.
November 19th, 2002 [highos]: Postlfs: Updated to reiserfsprogs-3.6.4.
November 19th, 2002 [highos]: Content: Updated to apache-1.3.27 and mysql-3.23.53.
November 18th, 2002 [larry]: General: Updated to libxml2-2.4.27 and libxslt-1.0.23.
November 18th, 2002 [billyoc]: X: Update to lesstif, add Java and Gnome compatibility.
November 14th, 2002 [larry]: X: Update to qt-3.1.0.
November 13th, 2002 [larry]: X: Update to xfce-3.8.18.
November 11th, 2002 [larry]: Multimedia: Update to MPlayer-0.90pre10.
November 10th, 2002 [larry]: X: Update to sawfish-1.2-gtk2
November 10th, 2002 [larry]: General: Update to rep-gtk-0.17
November 10th, 2002 [larry]: X: Update to gtk+-2.0.8.
November 9th, 2002 [larry]: Xsoft: Update to pan-0.13.2.
November 6th, 2002 [larry]: X: Backup to gtk+-2.0.6.
November 6th, 2002 [larry]: General: Updated to fcron-2.9.3.
November 6th, 2002 [billyoc]: General: Added pspell-.12.2.
November 6th, 2002 [billyoc]: General: Added libesmtp-0.8.12.
November 5th, 2002 [larry]: X: Updated to GTK+-2.0.7.
November 5th, 2002 [larry]: General: Updated to GLib-2.0.7.
November 2nd, 2002 [larry]: Basicnet: Updated to fetchmail-6.1.2.
November 2nd, 2002 [larry]: Gnome: Updated to intltool-0.23
November 2nd, 2002 [larry]: X: Updated to fluxbox-0.1.12.
October 27th, 2002 [larry]: Prog: Added page for perl modules used in BLFS
October 26th, 2002 [larry]: Basicnet: Update to links-0.98.
October 25th, 2002 [larry]: Multimedia: Update to MPlayer-0.90pre9.
October 25th, 2002 [larry]: General: Update to pkgconfig-0.14.0.
October 25th, 2002 [larry]: Gnome: Update to libbonobo-2.0.1 and libbonoboui-2.0.3.2.
October 25th, 2002 [larry]: Basicnet: Update to fetchmail-6.1.1.
October 25th, 2002 [larry]: Basicnet: Update to curl-7.10.1.
October 24th, 2002 [larry]: Xsoft: Edited Galeon for Mozilla changes.
October 24th, 2002 [larry]: Xsoft: Changed prefix on Mozilla to /usr now that make install behaves itself.
October 24th, 2002 [larry]: X: Updated to qt-3.0.6.
October 24th, 2002 [billyoc]: Content: Updated to Postgres-7.2.3.
October 22nd, 2002 [larry]: Expanded Gnome Chapter introduction.
October 21st, 2002 [larry]: Basicnet: Updated to ncftp-3.1.5.
October 20th, 2002 [larry]: Xsoft: moved prefix on gimp, AbiWord and Pan to /usr.
October 19th, 2002 [larry]: Gnome: Updated to linc-0.7.0.
October 19th, 2002 [larry]: Gnome: Updated to gdk-pixbuf-0.21.0.
October 19th, 2002 [larry]: General: Updated to libxml2-2.2.26 and libxslt-1.0.22.
October 18th, 2002 [larry]: Xsoft: Added gimp-1.2.3.
October 18th, 2002 [billyoc]: Server: Updated to Samba-2.2.6.
October 18th, 2002 [markh]: General - Slang: Updated to 1.4.6.
October 16th, 2002 [larry]: X: Updated to pango-1.0.5.
October 16th, 2002 [larry]: Multimedia: Added AviFile-0.7.15.
October 16th, 2002 [larry]: Server: Updated to OpenSSH-3.5p1.
October 16th, 2002 [larry]: Xsoft: Updated to pan-0.13.1.
October 16th, 2002 [markh]: Basicnet - tcpwrappers: Add patch from Bill to install man-pages.
October 16th, 2002 [bruce]: XFree86: Removed note about hdparm.
October 14th, 2002 [larry]: General: Updated to Python-2.2.2.
October 14th, 2002 [larry]: General: Updated to gdbm-1.8.2.
October 14th, 2002 [larry]: Connect: Went to full path on ifup-eth0 and ifdown-eth0, the previous instructions left you in /etc/sysconfig. Eliminated audiofile in Sawfish dependencies, implied in esound. Moved freetype2 from required to can utilize in MPlayer.
October 13th, 2002 [markh]: Moved patches directory to blfs-patches/cvs (lowercase) because apache has a nasty thing about directories called CVS (uppercase). Updated patch root entity. Have symlinked CVS --> cvs for now so that people don't get 404s when looking for patches.
October 11th, 2002 [larry]: Multimedia: Added MPlayer-0.90pre8.
October 11th, 2002 [billyoc]: Server: added security patch to sendmail.
October 10th, 2002 [billyoc]: Basicnet: modified install instructions for SSL and documentation.
October 9th, 2002 [larry]: Multimedia: added xine-ui-0.9.13.
October 9th, 2002 [larry]: General: updated to libpng-1.2.5 and fixed typo in shadow.
October 9th, 2002 [larry]: Typo cleanup in bootdisk, inputrc and unpacking.
October 8th, 2002 [larry]: General: clarified gdbm installation instructions. Xsoft: changed AbiWord to default to non-gnome.
October 7th, 2002 [larry]: Gnome: updated to gdk-pixbuf-0.20.0.
October 7th, 2002 [larry]: Multimedia: updated to cdrdao-1.1.7.
October 7th, 2002 [larry]: Multimedia: added xine-lib-0.9.13.
October 7th, 2002 [larry]: General: updated to fcron-2.9.2.
October 6th, 2002 [bdubbs]: KDE: updates to configure instructions and install directory.
October 6th, 2002 [larry]: Appendices: Added named and fcron to the runlevels.
October 5th, 2002 [larry]: Appendices: Added xinetd to the runlevels and had to bump portmap and samba up one notch.
October 4th, 2002 [markh]: Connect: Slight re-write of DHCP instructions to clarify them.
October 4th, 2002 [markh]: Xsoft: Add dependency of "which" to mozilla (from Tushar).
October 2nd, 2002 [larry]: General: Added readline-4.3 and expat-1.95.5.
October 2nd, 2002 [bdubbs]: XFree86: removed incorrect libc statements host.def
October 1st, 2002 [markh]: BasicNet: Add cvs-1.11.2-zlib patch submitted to blfs-dev by Michael Horbats to make cvs use a shared zlib.
October 1st, 2002 [markh]: Change to using ffile-root and hfile-root entities instead of the old file-root one.
October 1st, 2002 [larry]: Gnome: Added Gnome 1.4 to page headings and TOC so Gnome2 builders can skip without reading the page.
September 30th, 2002 [larry]: Gnome: updated to linc-0.5.4.
September 30th, 2002 [larry]: Gnome: Fixed some dependencies and a url.
September 29th, 2002 [larry]: Gnome: Change order of GConf-1.0.9, seems to have a hidden dependency on gdk.
September 29th, 2002 [markh]: Introduction: Rewrite "Which sections of the book do I want?" page to update it to the new format.
September 29th, 2002 [markh]: Introduction: Update mirrors list and tidy XML slightly.
September 29th, 2002 [larry]: pst: added dependency to DocBook.
September 28th, 2002 [bdubbs]: KOffice: updated to version 1.2.
September 28th, 2002 [larry]: Server: Billy expanded instructions to include xinetd for samba and qmail. General: added extra installation for gdbm (Apache) and edited libfam.
September 28th, 2002 [larry]: Basicnet: updated to fetchmail-6.1.0.
September 27th, 2002 [larry]: General: updated to libxml2-2.4.25 and libxlst-1.0.21.
September 26th, 2002 [larry]: Multimedia: Removed cdrdao page due to project being frozen on Sourceforge with sources withdrawn.
September 25th, 2002 [larry]: Edits, mainly trying to standardize exp sections and desc sections.
September 25th, 2002 [larry]: Xsoft: Mozilla patch uploaded to ftp. Galeon corrected per Tushars observation and incorporated a patch .
September 25th, 2002 [larry]: Server: Updates submitted for samba, bind, leafnode, and xinetd.
September 24th, 2002 [larry]: Xsoft: Added AbiWord-1.0.3. Minor edits and more bz2.
September 23rd, 2002 [larry]: Xsoft: updated mozilla per patch submitted by Tushar, cleaned out .mozconfig, and updated galeon to match directory structure.
September 22nd, 2002 [larry]: Gnome: Added gdm-2.4.0.11.
September 22nd, 2002 [larry]: Modified download links to bz2 for gnome ftp site and applied cpio patch.
September 22nd, 2002 [larry]: Postlfs: Added Linux-PAM-0.76 and added sed to the explanations in QT.
September 21st, 2002 [markh]: Xsoft: Committed Tushar's mozilla instructions.
September 21st, 2002 [larry]: Converted leading spaces to in qt instructions. Change libld to libdl in bootdisk and changed /mnt/lib to /mnt/loop1/lib.
September 21st, 2002 [larry]: Basicnet: Added references in "Other Mail and News" page.
September 21st, 2002 [larry]: Xsoft: Added Gnumeric-1.0.9.
September 20th, 2002 [larry]: Xsoft: Added pan-0.13.0.
September 20th, 2002 [larry]: Gnome: Updated to linc-0.5.3.
September 20th, 2002 [larry]: General: Updated to pkgconfig-0.13.0.
September 20th, 2002 [larry]: Gnome: Added at-spi-1.0.2, libgail-gnome-1.0.1 and gconf-editor-0.3.1.
September 20th, 2002 [bdubbs]: Multimedia: Added qt as prerequisite to aRts.
September 19th, 2002 [larry]: Gnome: Added gnome2-user-docs-2.0.1.
September 18th, 2002 [larry]: xsoft: Added galeon-1.2.6 and Konqueror reference.
September 17th, 2002 [larry]: Gnome: Added oaf-0.6.10, GConf-1.0.9 and gnome-vfs-1.0.5 for Gnome 1.4.
September 16th, 2002 [larry]: pst: applied patch to Tex submitted by Billy.
September 15th, 2002 [larry]: Gnome: Updated to libgnomeprint-1.116.1, gnome-applets-2.0.3, nautilus-2.0.7 and eel-2.0.7. Added patch to gmp. Added gnome-media-2.0.2.5.
September 14th, 2002 [markh]: Postlfs: Added ext3 instructions from Tushar.
September 14th, 2002 [larry]: Gnome: Updated to gdk-pixbuf-0.19.0.
September 14th, 2002 [bdubbs]: KDE: Remove objprelink. Update to KDE 3.0.3.
September 14th, 2002 [bdubbs]: XFree86: Update to use freetype2.
September 14th, 2002 [bdubbs]: XFree86: Add freetype2.
September 13th, 2002 [larry]: Gnome: Added gedit-2.0.4. Added conditional install instructions to mutt to account for no MTA.
September 13th, 2002 [larry]: Xsoft: Added openoffice-1.0.1 submitted by Tushar.
September 12th, 2002 [markh]: Basic Networking: Fix ncftp entity file - the download says 3.1.4 but the version hadn't been updated from 3.1.2.
September 12th, 2002 [larry]: Gnome: Another correction on /etc/gnome - gnome-games. Moved the prefix on libglade to /opt/gnome2 to get the module path correct in pkgconfig, this may break rep-gtk.
September 11th, 2002 [larry]: Basicnet: modified portmap per submission.
September 11th, 2002 [larry]: Gnome: Two more corrections on /etc/gnome - bonobo-activation and gnome-mime-data. Typo in gail.
September 10th, 2002 [larry]: Gnome: Fixed formatting of install instructions for console browsers. Fixed configuration to add /usr/lib/pkgconfig to PKG_CONFIG_PATH. Fixed >> instead of > in second line of .initrc.
September 9th, 2002 [larry]: Gnome: Added gnome-system-monitor-2.0.2 and yelp-1.0.6.
September 8th, 2002 [larry]: Basicnet: Added tcp-wrappers-7.6 submitted by Billy.
September 8th, 2002 [larry]: Gnome: Added eog-1.0.3 and nautilus-2.0.6.
September 8th, 2002 [larry]: Basicnet: Added portmap-5 submitted by Billy.
September 8th, 2002 [larry]: library-config.xml: changed userinput to filename in the appropriate places per conventions page.
September 8th, 2002 [larry]: Gnome: Another clean-up run through gnome concentrating on links and adding exp files.
September 7th, 2002 [larry]: General: Updated libfam to utilize patches for gcc-3.2. Submissions by Billy.
September 6th, 2002 [bdubbs]: XFree86: Updated to 4.2.1.
September 6th, 2002 [larry]: Gnome: Updated to gnome-vfs-2.0.4, libgnome-2.0.4, libgnomecanvas-2.0.4, libgnomeui-2.0.5, gnome-desktop-2.0.8, gnome-panel-2.0.9, gnome-session-2.0.7 and gnome-utils-2.0.5.
September 5th, 2002 [larry]: Gnome: Added core configuration page and moved library installation instructions to its own page. Cleaned up typos in gnome. Corrected /var/spool to /var/lib to match where scrollkeeper installs to and returned to /etc/gnome.
September 4th, 2002 [larry]: Gnome: Added gnome-games-2.0.4 and bug-buddy-2.2.0.
September 4th, 2002 [larry]: Gnome: Added gnome-terminal-2.0.1, gnome-utils-2.0.4 and gnome-applets-2.0.2, cleaned credits, cleaned gnome lib descriptions.
September 3rd, 2002 [larry]: Gnome: Added control-center-2.0.1, libgtop-2.0.0, librsvg-2.0.1, gail-0.17, eel-2.0.6 and libgtkhtml-2.0.2.
September 2nd, 2002 [larry]: Postlfs: Added Boot disk writeup by Mike Bedwell.
September 2nd, 2002 [highos]: Filesystems: Updated to reiserfsprogs-3.6.3.
September 2nd, 2002 [highos]: Server: Updated to leafnode-1.9.25.
September 2nd, 2002 [larry]: Gnome: Added gtk-engines-1.9.0, gnome-panel-2.0.7, gnome-session-2.0.6 and gnome-desktop-2.0.7.
September 1st, 2002 [larry]: Gnome: Added libgnome-2.0.3, libgnomecanvas-2.0.3, libbonoboui-2.0.3, libgnomeui-2.0.4, libwnck-0.17, libgnomeprint-1.116.0, libgnomeprintui-1.116.0 and updated to libglade-2.0.1.
September 1st, 2002 [larry]: X: Sawfish will compile with gdk-pixbuf installed IF it is installed in /opt/gnome, not /usr.
September 1st, 2002 [larry]: Gnome: Added gnome-mime-data-2.0.1 and gnome-vfs-2.0.3.
August 31st, 2002 [larry]: Gnome: Added libIDL-0.8.0, ORBit2-2.4.1, bonobo-activation-1.0.3, GConf-1.2.1, libart_lgpl-2.3.10, libbonobo-2.0.0 and libzvt-2.0.1.
August 31st, 2002 [larry]: Multimedia: Updated to esound-0.2.29.
August 31st, 2002 [larry]: Gnome: Added gnome-common-1.2.4 and reworked sawfish to dance around its conflict with gdk-pixbuf.
August 30th, 2002 [larry]: General: Fixed path errors in gcc and gnat instructions. Updated links.
August 29th, 2002 [larry]: X: Added lesstif-0.93.36, sendmail and slrn updates submitted by Billy.
August 29th, 2002 [larry]: Postlfs: Updated to zsh-4.0.6, modified wget per highos suggestion.
August 27th, 2002 [larry]: Gnome: Added gtk-doc-0.9 and linc-0.5.2.
August 27th, 2002 [larry]: Server: added qpopper-4.0.4. Applied submitted patch for sendmail.
August 27th, 2002 [larry]: Cleaned up reference to gnome in package dependencies, removed chain dependencies (usually zlib, if package looks for libpng).
August 27th, 2002 [highos]: Content: Updated to MySQL-3.23.52. A description fix and path change for FHS compliance.
August 27th, 2002 [highos]: General: Upgraded to openssl-0.9.6g.
August 26th, 2002 [larry]: Gnome: Added ORBit-0.5.17 and gnome-libs-1.4.2.
August 26th, 2002 [markh]: Multimedia. Rewrite of ALSA instructions and update then to 0.9.0rc3 (0.5.x support removed).
August 26th, 2002 [larry]: Server: Added exim-4.10, changes to sendmail and qmail submitted by Billy.
August 26th, 2002 [larry]: General: Update to fcron-2.9.1, libxml2-2.4.24 and libxslt-1.0.20.
August 26th, 2002 [markh]: General: Update to libpng-1.2.4 and libmng-1.0.4.
August 25th, 2002 [larry]: Server: Added cvs server.
August 25th, 2002 [larry]: Multimedia: Added lame-3.92.
August 25th, 2002 [markh]: Moved glib and glib2 to general, libglade to gnome and zlib to appendix b.
August 24th, 2002 [larry]: gnome: added Scrollkeeper-0.3.11.
August 24th, 2002 [larry]: pst: Added DocBook-4.1.2.
August 24th, 2002 [larry]: Content: Added PostgreSQL.
August 24th, 2002 [larry]: pst: Added tex-1.0.
August 23rd, 2002 [larry]: Server: Added sendmail.
August 23rd, 2002 [larry]: gnome: Added intltool-0.22.
August 23rd, 2002 [larry]: Server: Added leafnode and xinetd.
August 23rd, 2002 [bdubbs]: Updated X11 discussion of PPC optimization and fixed two Xll (X el el) references to X11 (X one one).
August 21st, 2002 [larry]: Server: Added bind-9.
August 20th, 2002 [larry]: X: Added FNLIB-0.5 and enlightenment-0.16.5.
August 19th, 2002 [larry]: Server: Added Samba-2.2.5 and modified slrn.
August 19th, 2002 [larry]: X: Added sawfish-1.1a-gtk2.
August 18th, 2002 [larry]: General: Added gmp-4.1, gdbm-1.8.0, librep-0.16.1, esound-0.2.26, libglade-2.0.0 and rep-gtk-0.16.
August 17th, 2002 [larry]: Added patch paragraph to dhcpcd and cdrdao. Fixed typos in j2sdk. Added explanations of commands to dhcpcd.
August 17th, 2002 [markh]: Moved patches to the blfs-patches/CVS directory on ftp.linuxfromscratch.org and update file-root entity and text to follow this.
August 16th, 2002 [larry]: Connect: updated dhcpcd to use patch that puts files in their proper place.
August 16th, 2002 [larry]: General: j2sdk expected cpio in /bin instead of /usr/bin.
August 16th, 2002 [larry]: Server: added qmail.
August 16th, 2002 [larry]: General: Added gnat-3.14, gcc-3.2 recompile and cpio-2.5.
August 15th, 2002 [highos]: Content: Added MySQL-3.23.51.
August 13th, 2002 [larry]: X: updated to qt-3.0.5.
August 12th, 2002 [larry]: General: Added libfam-2.6.9. Server: added touch dhcpd.leases.
August 11th, 2002 [larry]: X: Added XFce-3.8.16.
August 10th, 2002 [larry]: Basic Networking: Modified pine-4.44 for patches.
August 9th, 2002 [larry]: Basic Networking: Added pine-4.44 and slrn-0.9.7.4.
August 9th, 2002 [larry]: Basic Networking: Added w3m-0.3.1.
August 9th, 2002 [larry]: General: Added j2sdk-1.4.0.
August 8th, 2002 [markh]: Post-LFS: Added initial XFS instructions.
August 8th, 2002 [markh]: Post-LFS: Added missing --prefix=/usr to emacs instructions.
August 8th, 2002 [larry]: General: Added slang.
August 8th, 2002 [larry]: X: Added fluxbox-0.1.10
August 7th, 2002 [larry]: General: Added Ruby-1.6.7.
August 7th, 2002 [larry]: Post-LFS: Added joe-2.9.7 from Timothy.
August 7th, 2002 [markh]: Post-LFS: Added emacs-21.2 from Billy O'Connor.
August 6th, 2002 [larry]: X: Updated to GLib-2.0.6, GTK+-2.0.6, atk-1.0.3 and pango-1.0.4.
August 6th, 2002 [larry]: Basic networking: added nmap-3.00 submitted by Timothy.
August 6th, 2002 [larry]: Basic networking: added whois-4.5.28 submitted by Timothy.
August 6th, 2002 [larry]: Basic networking: added telnet-0.17. Client ONLY. Subject to replacement by inettools or netkit-combo when completed by assignee.
August 6th, 2002 [markh]: Post-LFS: Initial addition of reiserfsprogs.
August 6th, 2002 [markh]: General: Update which to 2.14.
August 6th, 2002 [markh]: Basic networking: Finally get around to fixing up the traceroute instructions.
August 6th, 2002 [markh]: Post-LFS: Update iptables to 1.2.6a.
August 6th, 2002 [markh]: General: Add popt-1.6.4.
August 6th, 2002 [markh]: Post-LFS: Update to tcsh-6.12.
August 6th, 2002 [markh]: General: Add pciutils.
August 6th, 2002 [markh]: Post-LFS: Added Timothy's nano instructions.
August 5th, 2002 [larry]: Basic Networking: added mutt-1.4i. X: added exp files to GTK+ and GTK+2 for --sysconfdir=/etc
August 4th, 2002 [larry]: General: Added Python-2.2.1.
August 4th, 2002 [larry]: Basic Networking: Update ent and intro files to new format. Update to fetchmail 5.9.13. Server Networking: Update ent and intro files to new format.
August 3rd, 2002 [larry]: General: added bc-1.06.
August 3rd, 2002 [larry]: Graphics Libraries: update ent and intro files to new format. System Utilities: update ent and intro files to new format. Text Web: update ent and intro files to new format.
August 2nd, 2002 [larry]: Basic Net: added wget-1.8.2, procmail-3.22. Removed chmod 755 from OpenSSH. Modified Imlib for consistency. Imlib, GTK+, GTK2+ and Pango modified to install configuration files in /etc rather than /usr/etc. General Libraries: update ent and intro files to new format.
July 31st, 2002 [larry]: General Libraries: upgraded openssl to 0.9.6e.
July 30th, 2002 [larry]: Multimedia: modified intro for xmms for links.
July 22nd, 2002 [bdubbs]: Deleted duplicate define in xfree86 hosts.def file.
July 22nd, 2002 [larry]: Multimedia: modified install instruction for cdrtools to accommodate $CFLAGS with spaces.
July 21st, 2002 [bdubbs]: Updated description of lame package in KDE configuration description.
July 21st, 2002 [larry]: System Utilities: Added Zip 2.3.
July 20th, 2002 [larry]: Update libxml2 to 2.4.23 and libxslt to 1.0.19, minor modifications in ent files of vorbis ogg.
July 19th, 2002 [markh]: Update libogg, libvorbis and vorbistools to 1.0, libao to 0.8.3, sync descriptions and update them to the new -intro.xml template.
July 16th, 2002 [larry]: Convert pcre, unzip and curl to new intro template.
July 14th, 2002 [markh]: Post-LFS: Add zsh-4.0.4.
July 14th, 2002 [markh]: Post-LFS: Add tcsh-6.11.
July 14th, 2002 [bdubbs]: Update location of zlib.
July 13th, 2002 [larry]: Removed libiconv from GLib2. Added links to lcms, jpeg, and dhcp.
July 13th, 2002 [bdubbs]: Insert download and build sizes for XFree86 DRI.
July 13th, 2002 [markh]: Post-LFS: Finally fix the inputrc comments bug.
July 13th, 2002 [markh]: Basic Networking - Add &'s to traceroute commands.
July 13th, 2002 [markh]: Update location of cvs package.
July 13th, 2002 [bdubbs]: Update location of zlib.
July 7th, 2002 [markh]: REORGANIZATION DONE. Note that all Changelog entries below this one will now refer to the wrong answer.
July 4th, 2002 [bdubbs]: Various typo and grammar changes.
July 4th, 2002 [bdubbs]: KDE section - updated koffice patch instruction and added a backslash to kdelibs build commands. Successfully rebuilt kde 3.0.2 with current instructions.
July 3rd, 2002 [bdubbs]: KDE section - updated koffice and changed to kde 3.0.2.
July 2nd, 2002 [bdubbs]: KDE section - updated kdeutils, kdeedu, kdeartwork, kdetoys, and kdeaddons.
July 2nd, 2002 [bdubbs]: Updated link location in libungif and added a note to remove a possible compilation error.
July 1st, 2002 [bdubbs]: KDE section - updated kdegraphics, kdeadmin, and kdegames sections. Updated imlib to correct an error in configure with gcc 3.1. Changed download locations to links in libtiff and libungif
June 30th, 2002 [bdubbs]: KDE section - updated kedmultimedia, kdenetwork and kdepim sections.
June 29th, 2002 [larry]: Chapter 5 - updated to alsa-0.9.0rc2 and moved gnome intro.
June 28th, 2002 [bdubbs]: QT section - Added note to allow not building examples and tutorials.
June 28th, 2002 [larry]: Chapter 4 - Added GTK+-1.2.10, GLib-1.2.10, gdk-0.11.0, libxml-1.8.17.
June 27th, 2002 [larry]: Chapter 12 - Started adding GNOME-1.4.1.
June 26th, 2002 [larry]: Chapter 4 - Added GTK+-2.0.5, Chapter 9 - Updated to OpenSSH-3.4p1.
June 24th, 2002 [larry]: Chapter 9 - Updated to OpenSSH-3.3p1, with modifications to set up privileged/unprivileged operations which is now the default. Chapter 4 - Added GLib-2.0.4, Pango-1.0.3 and ATK-1.0.2
June 22nd, 2002 [larry]: Chapter 20 - Added kernel configuration and additional reading links to introduction.
June 21st, 2002 [larry]: Chapter 04 - Added pkgconfig-0.12.0.
June 15th, 2002 [larry]: Chapter 08 - Modified config sed command for a change in main.cf after version 1.1.9 on myhostname.
June 14th, 2002 [larry]: Chapter 07 - Update to curl-7.9.8.
June 7th, 2002 [markh]: Chapter 02 - Update daemontools and daemontools-man packages; patch from Sal Gonzalez.
June 7th, 2002 [markh]: Chapter 05 - Update db link location.
June 7th, 2002 [markh]: Chapter 13 - Update objprelink download location and slightly modify build command to match new file.
June 7th, 2002 [markh]: Chapter 07 - Update to links-0.97.
June 7th, 2002 [markh]: Chapter 05 - Update to hdparm-5.2.
June 7th, 2002 [markh]: Chapter 04 - Finally applied the fix for libmng to make it use lcms properly.
May 31st, 2002 [larry]: Update to postfix-1.1.11, modified fcron script.
May 31st, 2002 [markh]: Chapter 06 - Update to wvstreams-3.70 and wvdial-1.53.
May 31st, 2002 [bdubbs]: Add comment about /lib/libmisc.la to kdebase instructions.
May 30th, 2002 [larry]: Update to libxml2-1.4.22 and libxslt-1.0.18.
May 29th, 2002 [markh]: Chapter 04 - Update openssl instructions to install man pages in /usr/share/man. We get around the passwd man page problem by renaming the source file to openssl-passwd. Thanks to Jesse for suggesting this.
May 28th, 2002 [bdubbs]: Change structure of kde xml and begin KDE Intro.
May 28th, 2002 [bdubbs]: Remove extra line feed in qt configure instructions for man.conf.
May 24th, 2002 [bdubbs]: Updated to openssl to version 0.9.6d and updated configure instruction.
May 23rd, 2002 [larry]: Updated to libpng 1.2.3 and OpenSSH 3.2.3p1.
May20th, 2002 [larry]: Added pccts 133MR33 to chapter 04 and cdrdao 1.1.5 to chapter 20.
May19th, 2002 [larry]: Updated to OpenSSH 3.2.2p1.
May 19th, 2002 [bdubbs]: Updated cvs version to 1.11.2.
May 18th, 2002 [larry]: Updated to postfix 1.1.9.
May 17th, 2002 [bdubbs]: Chapter 11 - Inserted text about Window Mangers. Chapter 13 - Added stubs for KDE. Updated links for QT and objprelink.
May 17th, 2002 [bdubbs]: Chapter 10 - Updated XFree86 sections. Corrected kernel make commands and changed url references to links.
May 16th, 2002 [bdubbs]: Chapter 10 - Added XFree86. Updated data for objprelink.
May 16th, 2002 [larry]: Chapter 05 - Added unzip-5.50.
May 15th, 2002 [markh]: Chapter 02 - Fix up formatting in traceroute section.
May 15th, 2002 [markh]: Chapter 06 and 09. Update to dhcp-3.0pl1.
May 15th, 2002 [markh]: Chapter 04 - Update to libpng-1.2.2 and fix imlib so it works with this libpng version.
May 15th, 2002 [markh]: Chapter 08 - Update to postfix-1.1.8. Chapter 13 - Update to qt-3.0.4.
May 15th, 2002 [markh]: Chapter 04 - Add libxml2 and libxslt (from Larry).
May 15th, 2002 [markh]: Chapter 17 - SDL (to 1.2.4) and XMMS (to 1.2.7) update from Jeroen.
May 15th, 2002 [markh]: Chapter 13 - Add objprelink and update QT instructions to match.
May 15th, 2002 [markh]: Chapter 06 - Firewalling. Changed references to /etc/init.d --> /etc/rc.d/init.d.
May 15th, 2002 [markh]: Chapter 06 - DHCP. Fixed extraneous line in dhclient.conf creation command.
May 15th, 2002 [markh]: Chapter 05 - Alsa. Fixed typo in chmod command. Added note about manually creating /etc/asound.conf so that alsactl doesn't baulk on first startup.
April 29th, 2002 [markh]: Chapter 06 - Add DHCP_STOP variable to DHCP scripts.
April 28th, 2002 [markh]: Chapter 04 - Add imlib.
April 28th, 2002 [markh]: Chapter 02, 04, 08 - Minor fixes to daemontools, libpng, libmng and postfix instructions.
April 28th, 2002 [markh]: Chapter 05 - Fix to alsa install instructions (added a missing 's' and \).
April 20th, 2002 [markh]: Chapter 20 - Add cdrtools-1.10.
April 20th, 2002 [markh]: Chapter 09 - Add DHCP server instructions.
April 20th, 2002 [markh]: Chapter 06 - We now have DHCP client configuration instructions.
April 20th, 2002 [markh]: Chapter 08 and Appendix A - Update to postfix-1.1.7 and keep runlevels list in sync with LFS-1.9 (from Larry).
April 7th, 2002 [markh]: Chapter 07 - Added curl. Chapter 18 - Added vorbistools.
April 7th, 2002 [markh]: Chapter 17 - Added libao, libogg, libvorbis.
April 7th, 2002 [markh]: Chapter 08 - Postfix update from Larry and fix script to use spaces instead of tabs.
April 7th, 2002 [markh]: Chapter 05 - Applied fcron updates (two of them) from Larry. Moves to fcron-2.9.0 with a few fixes.
April 7th, 2002 [markh]: Daemontools - moved to using telinit -Q instead of kill -HUP 1 following user comments on blfs-dev.
April 7th, 2002 [markh]: Chapter 17 - Add audiofile-0.2.3.
March 28th, 2002 [markh]: Chapter 08 - Add postfix-1.1.5 instructions.
March 28th, 2002 [markh]: Chapter 13 - Update to QT-3.0.3.
March 27th, 2002 [markh]: Chapter 07 and 09 - Added dhcp package instructions.
March 26th, 2002 [markh]: Chapter 04 - Add pcre-3.9 instructions.
March 26th, 2002 [markh]: Chapter 13 - Added initial set of qt instructions.
March 26th, 2002 [markh]: Chapter 05 - Fcron update to 2.1.0 and a few miscellaneous fixes from Larry.
March 25th, 2002 [markh]: Chapter 05 - Fix the mistake whereby we tried to add lines to /etc/sysconfig instead of /etc/syslog.conf.
March 25th, 2002 [markh]: Appendix A and other sections - Add the initial tables of rc?.d symlinks. At the same time, make sure scripts are set to 755 (to be executable) and sort out the numbering of the scripts (some were still using three digits from the old-style links).
March 25th, 2002 [markh]: Chapter 05 - Added the "which" page.
March 20th, 2002 [markh]: Moved all homeless packages to a new temporary place in Chapter 02 until homes are found for them. This leaves appendix A empty for the symlink list.
March 20th, 2002 [markh]: Chapter 03 - Added random script instructions.
March 15th, 2002 [markh]: Chapter 05 - Small update to fcron instructions. Chapter 09 - Small update to OpenSSH instructions.
March 11th, 2002 [markh]: Chapter 09 - Add OpenSSH-3.1p1 install instructions. Chapter 07 - Add reference about installing OpenSSH client.
March 11th, 2002 [markh]: Chapter 05 - Update fcron instructions (syslog related changes).
March 11th, 2002 [markh]: Chapter 02 - Add comment about using bootscripts with LFS-3.2 and later. Chapter 05 - Change gpm and alsa scripts to work with LFS-3.2 and later.
March 11th, 2002 [markh]: Chapter 04 - Update to zlib-1.1.4.
March 2nd, 2002 [markh]: Chapter 1 - Credits - Modify credits list so that each author is only listed once with a complete list of what they did (it makes the list smaller).
March 2nd, 2002 [markh]: Chapter 5 - Add fcron-2.0.0 instructions from Larry Lawrence.
February 24th, 2002 [markh]: Chapter 5 - Update to gpm-1.20.0.
February 21st, 2002 [markh]: Argh.. I've been writing the wrong date all day! Changed all Feb 20th entries to Feb 21st and corrected the book's date.
February 21st, 2002 [markh]: Chapter 7 - Update to ncftp-3.1.2.
February 21st, 2002 [markh]: Chapter 5 - Update to db-4.0.14.
February 21st, 2002 [markh]: Chapter 4 - Update to lcms-1.08, libpng-1.2.1 and libtiff-3.5.7.
February 21st, 2002 [markh]: Add chapters 18-20 as placeholders for multimedia section and move SDL into ch1 and cdparanoia, mpg123 and XMMS into ch18.
February 21st, 2002 [markh]: Chapter 5 - Move cvs and db to here from appendix a.
February 19th, 2002 [markh]: Chapter 6 - Update to hdparm-4.6 and move it here from appendix a.
February 19th, 2002 [markh]: Chapter 6 - Update to wvdial-1.50 and add wvstreams-3.64 which is required by the new version of wvdial.
February 19th, 2002 [markh]: Chapter 6 - Add ppp.
February 19th, 2002 [markh]: Chapter 6 - Move wvdial to here from appendix A.
February 15th, 2002 [markh]: Chapter 6 - DHCP - Added initial DHCP section.
February 14th, 2002 [markh]: Chapter 6 - Firewalling update from Henning.
January 3rd, 2002 [markh]: Changed alsa instructions to include --with-kernel= for robustness.
January 1st, 2002 [markh]: Started large rearrangement of book. Many modifications made. Fixed up quite a few things. Happy New Year to you all!
December 31st, 2001 [markh]: Gpm - Fixed symlink creation so it actually works.
December 22nd, 2001 [markh]: Zlib - Added instructions to copy manual page as it isn't installed by default.
December 20th, 2001 [markh]: Chapter 3 - Added the vimrc page.
December 20th, 2001 [markh]: Appendix A - Added alsa instructions by Alex Kloss.
December 20th, 2001 [markh]: Chapter 2 - More text added.
December 1st, 2001 [markh]: Chapter 3 - Added some corrections to the inputrc page regarding the role of /etc/inputrc and ~/.inputrc.
November 30th, 2001 [markh]: Appendix A - Added fetchmail instructions by Paul Campbell.
November 26th, 2001 [markh]: General - Added <&dbhtml> tags all over the place to divide generated HTML into directories.
November 26th, 2001 [markh]: Chapter 3 - Added /etc/inputrc details by Chris Lynn and /etc/issue details by me.
November 5th, 2001 [markh]: Appendix A - Added gpm recommendation to links instructions.
October 25th, 2001 [markh]: Chapter 6 - Firewalling section added to book.
October 25th, 2001 [markh]: Appendix A - wvdial-1.41 added.
October 20th, 2001 [markh]: Appendix A - hdparm-4.2 added.
October 20th, 2001 [markh]: Appendix B removed. Credits moved to a page in Chapter 1.
October 20th, 2001 [markh]: Appendix A - All current sets of installation instructions changed to install items in /usr instead of /usr/local.
October 20th, 2001 [markh]: Chapter 2 - Added the /usr versus /usr/local debate section.
October 14th, 2001 [markh]: Chapter 1 - Added lots of text.
September 20th, 2001 [markh]: Appendix A - Small formatting fix to db instructions so they copy and paste properly.
September 20th, 2001 [markh]: Appendix A - Updated to libmng-1.0.3 and libpng-1.2.0.
September 20th, 2001 [markh]: Appendix A - Fixed lcms instructions so that they actually work...
September 14th, 2001 [markh]: Appendix A - Links installation instructions added.
September 14th, 2001 [markh]: Appendix A - Lynx installation instructions added.
September 14th, 2001 [markh]: Appendix A - Finished off openssl instructions.
September 6th, 2001 [markh]: Appendix A - Added daemontools
September 4th, 2001 [markh]: General - lots and lots of things - setting up xml structure, adding instructions etc.
Unlike the LinuxFromScratch 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 through going from the base system to your intended destination and so 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 Important Information (Chapter 2), as this contains comments about how to unpack software 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), Filesystems (Chapter 5), Editors (Chapter 6) and Shells (Chapter 7). Indeed, you may wish to reference certain parts of this chapter (especially the sections on Editors and Filesystems) 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 Programming (Chapter 12) 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, each BLFS install 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 local LAN using a variety of methods such as DHCP (Chapter 14) and Dial-Up Connections (Chapter 13). The second of these parts deals with items such as Networking Libraries (Chapter 16) 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 Server Networking and Content Serving parts of the book. Those wanting to build servers should find enough information to give them a good starting point here. Note that Content Serving also contains information on various database packages.
The next parts of the book principally deal with desktop systems. We start with a part talking about X and Window Managers. This part also deals with some generic X-based libraries (Chapter 27). After this, KDE and gnome are given their own parts which are followed by one on X Software.
We then move on to deal with Multimedia packages. Note that many people may want to use the alsa-0.9.2 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.
Finally, the Part XIV in Beyond Linux From Scratch contain various pieces of useful information which you may need to use as a reference.
We hope you enjoy using BLFS and find it useful.
The linuxfromscratch.org server is hosting the following publicly accessible mailing lists:
blfs-support
blfs-dev
blfs-book
lfs-chat
lfs-support
lfs-dev
lfs-announce
lfs-book
lfs-security
alfs-discuss
The blfs-support list is for the BLFS Book and beyond.
It includes requests for help following the BLFS Book, requests for help with packages not (yet) in either the LFS Book or the BLFS Book, and other requests and discussion concerning software that might be installed on an LFS system.
It does not include topics such as the price of beer, what hardware to buy, or GNU versus BSD or Microsoft versus Linux flame wars. These belong on lfs-chat, and since blfs-support is high traffic, please follow this rule strictly.
The blfs-book list is used for coordinating the BLFS Book's maintenance. Traffic on it is mostly Bugzilla and CVS commit messages. It is important that all development discussion of interest to the Book's users take place on blfs-dev, not here.
The lfs-chat list is the place for community chatter. It's a place where anything goes, nothing is off-topic. You can discuss the price of beer or what hardware to buy. Even GNU versus BSD and Microsoft versus Linux flame wars are okay in lfs-chat.
The lfs-support list is the place to get help following the instructions in the LFS Book itself.
If you're finished with the LFS Book, use blfs-support instead.
The lfs-announce list is a moderated list for those who want notification of new stable releases without the higher traffic of lfs-dev.
The lfs-book list is used for coordinating the LFS Book's maintenance. Traffic on it is mostly Bugzilla and CVS commit messages. It is important that all development discussion of interest to the Book's users take place on lfs-dev, not here.
The lfs-security list discusses security issues. Vulnerability alerts, configuration questions, security related packages, and other things to do with secure systems are appropriate on this list.
All these lists are archived and can be viewed online at http://archive.linuxfromscratch.org/mail-archives or downloaded from ftp://ftp.linuxfromscratch.org/mail-archives.
Any of the above-mentioned mailing lists can be subscribed to by sending an email to listar@linuxfromscratch.org and writing subscribe listname as the subject header of the message.
Multiple lists at the same time can be subscribed to by using one email. This is done by leaving the subject blank and putting all the commands in the body of the email. The email will look like:
To: listar@linuxfromscratch.org
Subject:
subscribe lfs-dev
subscribe blfs-support
subscribe alfs-discuss
After the email is sent, the Listar program will reply with an email requesting a confirmation of the subscription request. After this confirmation email is sent back, Listar will send an email again with the message that the user has been subscribed to the list(s) along with an introduction message for that particular list.
To unsubscribe from a list, send an email to mailto:listar@linuxfromscratch.org and write unsubscribe listname as the subject header of the message.
Multiple lists can be unsubscribed at the same time using one email. This is done by leaving the subject header blank and putting all the commands in the body of the email. The email will look like:
To: listar@linuxfromscratch.org
Subject:
unsubscribe lfs-dev
unsubscribe blfs-support
unsubscribe alfs-discuss
After the email is sent, the Listar program will reply with an email requesting a confirmation of the unsubscription request. After this confirmation email is sent back, Listar will send an email again with the message that the user has been unsubscribed from the list(s).
The modes that can be set by a user require sending an email to listar@linuxfromscratch.org. The modes themselves are set by writing the appropriate commands in the subject header of the message.
As the name implies, the Set command tells what to write to set a mode. The Unset command tells what to write to unset a mode.
The listname in the example subject headers should be replaced with the listname to which the mode is going to be applied to. If more than one mode is to be set (to the same list or multiple lists) with one email, this can be done by leaving the subject header blank and writing all the commands in the body of the message instead.
Set command: set listname digest
Unset command: unset listname digest
All lists have the digest mode available which can be set after a user has subscribed to a list. Being in digest mode will cause you to stop receiving individual messages as they are posted to the list and instead receive one email a day containing all the messages posted to the list during that day.
There is a second digest mode called digest2. When a user is set to this mode he will receive the daily digests but will also continue to receive the individual messages to the lists as they are posted. To set this mode, substitute digest for digest2 in the command.
Set command: set listname vacation
Unset command: unset listname vacation
If a user is going to be away for a while or wishes to stop receiving messages from the lists but doesn't want to unsubscribe, he can change to vacation mode. This has the same effect as unsubscribing, but without having to go through the unsubscribe process and then later through the subscribe process again.
All the mailing lists hosted at linuxfromscratch.org are also accessible via the NNTP server. All messages posted to a mailing list will be copied to its correspondent newsgroup, and vice versa.
The news server can be reached at news:news.linuxfromscratch.org.
Please direct your emails to one of the BLFS mailing lists. See Mailing lists and archives for more information on the available mailing lists.
The current BLFS maintainer is Larry Lawrence. If you need to reach Larry, send an email to larry@linuxfromscratch.org.
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 and archives. To assist us in diagnosing and solving your problem, include as much relevant information as possible in your request for help.
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 modules.conf and has it been loaded. You should use lsmod to see if it's loaded. Check the sys.log or run modprobe <driver> to review any error message. If it loads properly, you may need to add the modprobe 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 ..." should review permissions throughly 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 some cases, the package will walk you through the changes, but some will not. Appendix B is available to help you check.
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 1.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.
(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.tuxedo.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.
Those people who have built a LFS system will 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.
One difference from the LFS book is that we do not mirror the packages on the BLFS website. Instead, 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/ftp. These are referenced as needed in the installation instructions.
While you can keep the source tarballs anywhere you like, we assume that you have unpacked them and unzipped any required patches into /usr/src.
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, 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.
If a file is tar'ed and gzip'ed, it is unpacked by running one of the following two commands, depending on the filename:
tar -xvzf filename.tar.gz tar -xvzf filename.tgz tar -xvzf filename.tar.Z |
If a file is tar'ed and bzip2'ed, it can usually be unpacked by running:
tar -jxvf filename.tar.bz2 |
This applies as long as you patched tar to include the j option during your LFS install. If you didn't, you can use a slightly different method:
bzcat filename.tar.bz2 | tar -xv |
Finally, you need to be able to unpack patches which are generally not tar'ed. The best way to do this is to copy the patch file to /usr/src and then to run one of the following commands depending on whether the file is .gz or .bz2:
gunzip patchname.gz bunzip2 patchname.bz2 |
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 add things to. The only really hard and fast rule is that unix distributions should not touch /usr/local, except perhaps for creating 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 filesystem 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 unless specifically stated otherwise. There are examples where some files are placed in the /usr/local hierarchy but these are documented and are generally for a good reason. These exceptions should be well documented in the book. If you think you have found one which isn't please tell us!
The scripts included for packages such as gpm-1.20.1 and alsa-0.9.2 are based around the template supplied with the lfs-bootscripts package from version 3.2 and later of the LFS book. Note that this is lfs-bootscripts-1.6 and later (the old numbering changed as of LFS-3.2). The scripts won't work with versions of LFS before 3.2 because of a change in their organization with the new scripts. However, it should be trivial to adapt the scripts if needed for older LFS versions.
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.
If you are in search of a package that is not in the book, the following are different ways you can search for the concerned package.
If you know the name of the package, then search FreshMeat for at http://freshmeat.net/. Also search Google at http://google.com/. Sometimes a search for the rpm at http://rpmfind.net/ or the deb at http://www.debian.org/distrib/packages#search_packages can also lead to the website for the package.
If you know the name of the executable, but not the package that the executable belongs to, first try a google search with the name of the executable. If the results are overwhelming, try searching for the given executable in the debian repository at http://www.debian.org/distrib/packages#search_contents.
Some general hints on handling new packages:
Many of the newer packages follow the ./configure && make && make install dance routine. 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/news-server.
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://www.linuxfromscratch.org/~tushar/downloads/ to convert the archives into a simple tar.gz format.
The intention of LFS is to provide a basic system which you can build upon. There are several things which many people wonder about to do with tidying up their system once they have done the base install. We hope to cover these issues in this chapter.
Most people coming from a Windows background to Linux find the concept of text-only configuration files slightly strange. In Linux, just about all configuration is done via 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 these are mostly simply pretty frontends to the process of editing the file. The advantage of text-only configuration is that you can edit parameters using your favorite text editor, whether that be vim, emacs or anything else.
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 also not interpret the escape sequences as shown below.
One of the most common things which people want to do is to clear the screen at each logon. The easiest way of doing that is to put a "clear" escape into /etc/issue. A simple way of doing this is to do 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 ^[c character on the first line alone.
The following escapes 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 escape codes to display various information. All escape codes 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. i486 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.4.16. 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 shell program /bin/bash (hereafter referred to as just "the shell") uses a collection of startup files to help create an environment to run in. Each file has a specific use and may affect login and interactive environments differently.
An interactive login shell is started after a successful login by /bin/login by reading the /etc/passwd file. An interactive non-login shell is started at the command line (e.g. [prompt]$/bin/bash). 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 more information see info bash -- Nodes: Bash Startup Files and Interactive Shells
The following files are needed to make sure that the correct environment is read for each of the ways the shell can be invoked: /etc/profile, /etc/bashrc, ~/.bash_profile, and ~/.bashrc. The file ~/.bash_logout is not used for an invocation of the shell. It is read by the shell when a user logouts of the system. The files /etc/profile and ~/.bash_profile are read when the shell is invoked as a interactive login shell. The file ~/.bashrc is read when the shell is invoked as an interactive non-login shell.
Here is a base /etc/profile. Comments in the file should explain everything you need. For more information on the escape sequences you can use for your prompt (e.g. the PS1 environment variable) see info bash -- Node: Printing a Prompt.
# Begin /etc/profile # Written for Beyond Linux From Scratch # by James Robertson <jameswrobertson@earthlink.net> # 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. # Function to help us manage paths pathman () { if ! echo $PATH | /bin/egrep -q "(^|:)$1($|:)" ; then if [ "$2" = "last" ] ; then PATH=$PATH:$1 else PATH=$1:$PATH fi fi } # Add to the standard path. if [ $(id -u) = 0 ] ; then if [ -d "/usr/local/sbin" ] ; then pathman /usr/local/sbin last fi fi if [ $(id -u) != 0 ] ; then if [ -d "/usr/local/bin" ] ; then pathman /usr/local/bin last fi fi if [ -d "/usr/X11R6/bin" ] ; then pathman /usr/X11R6/bin last fi # Setup some environment variables. HISTSIZE=1000 PS1="[\u@\h \w]\\$ " # Setup the INPUTRC environment variable. if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ] ; then INPUTRC=/etc/inputrc fi # 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 export PATH HISTSIZE PS1 LS_COLORS INPUTRC # End /etc/profile |
Here is a base /etc/bashrc. Comments in the file should explain everything you need.
# Begin /etc/bashrc # Written for Beyond Linux From Scratch # by James Robertson <jameswrobertson@earthlink.net> # 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 # By default we want the umask to get set. # Even for non-interactive and non-login shells. if [ "$(id -gn)" = "$(id -un)" -a $(id -u) -gt 99 ] ; then umask 002 else umask 022 fi # Provides a colored /bin/ls command. Used in conjunction with code in # /etc/profile. alias ls='ls --color=auto' # End /etc/bashrc |
Here is a base ~/.bash_profile. Comments in the file should explain everything you need.
# Begin ~/.bash_profile # Written for Beyond Linux From Scratch # by James Robertson <jameswrobertson@earthlink.net> # 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. if [ -f "$HOME/.bashrc" ] ; then source $HOME/.bashrc fi if [ -d "$HOME/bin" ] ; then pathman $HOME/bin last fi export PATH # End ~/.bash_profile |
Here is a base ~/.bashrc. Comments in the file should explain everything you need.
# 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 |
Here is a base ~/.bash_logout. Comments in the file should explain everything you need. 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.
# Begin ~/.bash_logout # Written for Beyond Linux From Scratch # by James Robertson <jameswrobertson@earthlink.net> # Personal items to perform on logout. # End ~/.bash_logout |
If you want to use the /etc/dircolors or ~/.dircolors files called from /etc/profile, then run the following: /bin/dircolors -p > /etc/dircolors or /bin/dircolors -p > ~/.dircolors respectively. The file in the /etc directory should be used for global settings and if one exists in your home directory then it will overwrite the global settings. It might be a good idea to create a base .dircolors file and place it in the /etc/skel directory for new users.
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
Inputrc deals with the mapping of the keyboard for certain situations. This file is the start-up file used by readline - the input related library used by Bash and most other shells.
For more information see info bash -- Node: Readline Init file as well as info readline. There is a lot that can be done with this one rc file.
The following is a base /etc/inputrc along with comments to explain what the various options do.
Please note that comments can not be on the same line as commands in inputrc.
# Begin /etc/inputrc # Make sure we don't output everything on the 1 line set horizontal-scroll-mode Off # Enable 8bit input set meta-flag On set input-meta On # Turns off 8th bit stripping set convert-meta Off # Keep the 8th bit for display set output-meta On # none, visible or audible set bell-style none # All of the following map the escape sequence of the # value contained inside the 1st argument to the # readline specific functions "\eOd": backward-word "\eOc": forward-word # for linux console "\e[1~": beginning-of-line "\e[4~": end-of-line "\e[5~": beginning-of-history "\e[6~": end-of-history "\e[3~": delete-char "\e[2~": quoted-insert # for xterm "\eOH": beginning-of-line "\eOF": end-of-line # End /etc/inputrc |
Global values are set in /etc/inputrc. Personal user values as are set in ~/.inputrc. The ~/.inputrc file will override the global settings file. The previous page sets up Bash to use /etc/inputrc by default. If you want your system to use both, it might be a good idea to place a default .inputrc into the /etc/skel directory for use with new users.
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. The following init.d script and links will perform this function for you automatically.
cat > /etc/rc.d/init.d/random << "EOF" #!/bin/sh # Begin $rc_base/init.d/random # Based on sysklogd script from LFS-3.1 and earlier. # Rewritten by Gerard Beekmans - gerard@linuxfromscratch.org # Random script elements by Larry Lawrence source /etc/sysconfig/rc source $rc_functions case "$1" in start) echo "Initializing kernel random number generator..." if [ -f /var/tmp/random-seed ]; then cat /var/tmp/random-seed >/dev/urandom fi dd if=/dev/urandom of=/var/tmp/random-seed count=1 &>/dev/null evaluate_retval ;; stop) echo "Saving random seed..." dd if=/dev/urandom of=/var/tmp/random-seed count=1 &>/dev/null evaluate_retval ;; *) echo "Usage: $0 {start|stop}" exit 1 ;; esac # End $rc_base/init.d/random EOF chmod 755 /etc/rc.d/init.d/random |
Create the symbolic links to this file in the relevant rc.d directories with the following commands:
cd /etc/rc.d/init.d && ln -sf ../init.d/random ../rc0.d/K45random && ln -sf ../init.d/random ../rc2.d/S25random && ln -sf ../init.d/random ../rc3.d/S25random && ln -sf ../init.d/random ../rc4.d/S25random && ln -sf ../init.d/random ../rc5.d/S25random && ln -sf ../init.d/random ../rc6.d/K45random |
The LFS book installs vim as its editor. At this point we should state that there are a lot of different editors 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 gives a basic vimrc file. Here, we 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 an example of a slightly expanded vimrc:
" Begin .vimrc set nocompatible set bs=2 set columns=80 set background=dark set tabstop=8 set wrapmargin=8 set nobk syntax on set ruler set noexpandtab " End .vimrc |
A FAQ on the lfs lists regards the comment tags in vimrc. Note that they are " instead of the more usual # or //. This is correct, the syntax for vimrc is slightly unusual.
We'll run through a quick explanation of what each of the options in this example file means here:
set nocompatible : This option stops vim from behaving in a strongly vi-compatible way. It should be at the start of any vimrc file as it can affect lots of other options which you may want to override.
set bs=2 : This influences the behavior of the backspace option. It is fairly complex so see :help 'bs' for more details.
set columns=80 : This simply sets the number of columns used on the screen.
set background=dark : This tells vim to use colors which look good on a dark background.
set tabstop=8 : The number of spaces which a tabstop takes.
set wrapmargin=8 : This is the number of characters from the right window border where wrapping starts.
set nobk : This stops vim from creating a backup before overwriting a file.
syntax on : Enables vim's syntax highlighting.
set ruler : This makes vim show the current row and column at the bottom right of the screen.
set noexpandtab : This makes vim insert tabs as tab characters instead of as a set of spaces.
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.
How to create a decent bootdisk
The intent here is to create a "rescue bootdisk" that will load enough 'linux' to enable you to do rescue operations. With what is presented here you will be able to do file manipulation, mounting and unmounting, and other tasks. This however is not the limit. The minimal disk is described here, and you can add anything you can fit on the floppy.
Boot disk/Rescue Disk
First we will create a loopback file to build our rescue disk image on, next we'll make a file system on the image file, then we'll use 'mount' to mount the file as a regular disk, allowing us to read and write files from the loopback file. The following commands will build us a 4 MB image.
dd if=/dev/zero of=/tmp/rfloppy bs=1k count=4096 && mke2fs -m 0 -N 2000 /tmp/rfloppy && mount -o loop /tmp/rfloppy /mnt/loop1 && rmdir /mnt/loop1/lost+found/ |
Now that we have a file mounted and usable, let's prepare it to be filled with useful material. Since this is only a rescue floppy we'll only need to set up the minimum directories.
mkdir /mnt/loop1/{dev,proc,etc,sbin,bin,lib,mnt,usr,var} |
Next, we will set up the device files. I use devfs on my system, so the following command works well, as I only have the devices I use anyway. If you used MAKEDEV to create your devices, you'll want to trim the /mnt/loop1/dev directory to reclaim the inode space wasted by all of the devices in the dev directory you don't use.
cp -dpR /dev/* /mnt/loop1/dev |
Now to tend to the /etc directory. To start, all we will do is use the passwd and group file that worked for our static chroot environment when we built LFS. We'll also copy the startup scripts over and a few other files that serve well as starting points.
cp -ax /etc/rc* /mnt/loop1/etc cp -ax /etc/fstab /mnt/loop1/etc echo "root:x:0:0:root:/root:/bin/bash" > /mnt/loop1/etc/passwd cat > /mnt/loop1/etc/group << "EOF" root:x:0: bin:x:1: sys:x:2: kmem:x:3: tty:x:4: tape:x:5: daemon:x:6: floppy:x:7: disk:x:8: lp:x:9: dialout:x:10: audio:x:11: EOF |
To prevent automatic mounting of hard drive partitions, make sure to add the noauto option in their fstab entry. Also, add the following entries to the /mnt/loop1/etc/fstab to assist with mounting our floppy and the ram image
/dev/ram0 / ext2 defaults /dev/fd0 / ext2 defaults |
Next, we will install busybox onto the image. Busybox incorporates many of the unix functions into a single small executable file.
make && make PREFIX=/mnt/loop1 install && cp -ax /var/utmp /mnt/loop1/var && mkdir /mnt/loop1/var/log |
Also, keeping in mind your space limitations, copy any other binaries and libraries you need to the image. Use the ldd command to see which libraries you will need to copy over for any executables.
Now, since I use devfs to create devices on the fly and free up precious inodes on the floppy, we'll also install devfsd to facilitate the devices that busybox expects to find.
mv GNUmakefile Makefile && make && make PREFIX=/mnt/loop1 install && cp /lib/libc.so.6 /lib/ld-linux.so.2 /lib/libdl.so.2 /tmp &/& strip --strip-deb /tmp/ld-linux.so.2 /tmp/libc.so.6 /tmp/libdl.so.2 && mv /tmp/ld-linux.so.2 /tmp/libc.so.6 /tmp/libdl.so.2 /mnt/loop1/lib/ |
We will also need to set up an rc script to handle the devfsd startup. Put this in /mnt/loop1/etc/init.d/rcS.
#!/bin/sh mount -t devfs devfs /dev /sbin/devfsd /dev |
Next create your compressed root filesystem. We use -9 with gzip to make the smallest possible compressed image.
umount /mnt/loop1 && dd if=/tmp/rfloppy bs=1k | gzip -v9 > rootfs.gz |
ls -l rootfs.gz to make sure it will fit on the diskette. |
Make a custom kernel that is optimized for size. Include only those features you will need to rescue your system. no sense in building in support for things like xfree86 dri, etc, as most rescues are performed from the command prompt.
dd if=rescueimg of=/dev/floppy/0 bs=1k 429+1 records in 429+1 records out rdev /dev/floppy/0 /dev/floppy/0 rdev -R /dev/floppy/0 0 |
In this example the rescueimage(KERNEL) was 429+1 blocks in size. We will remember this for the next command. We now write the root file system right after the kernel on the floppy by doing 16384+429+1= 16814.
rdev -r /dev/floppy/0 16814 |
dd if=rootfs.gz of=/dev/floppy/0 bs=1k seek=430 |
In this command we use seek to find the end of the kernel (429+1) and write the root file system to the floppy.
The /etc/skel directory is quite simple to setup and use. It provides a way to make sure that all new users on your LFS system begin with the same settings. The /etc/skel directory is used by the /usr/sbin/useradd program.
For more information see man useradd.
To get started create a /etc/skel directory. Creating the directory as root is the best way to go. Next copy any files into /etc/skel that you want every new user to have placed in their home drive. Examples include .bash_profile, .bashrc, .bash_logout, dircolors, .inputrc and .vimrc.
When creating a new user with /usr/sbin/useradd use the -m parameter. For example:
useradd -m -s/bin/bash jwrober |
The /usr/sbin/useradd program uses a collection of default values. It will read them from the /etc/default/useradd file if it exists. If the file does not exist, then it uses some internal defaults. They can be found by running /usr/sbin/useradd -D.
To change these values to something new, create a base /etc/default/useradd file 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:
/usr/sbin/useradd -D -s/bin/bash |
This will set the SHELL= line to SHELL=/bin/bash. This makes it even easier to add new users to your LFS system. The /usr/sbin/useradd has many parameters that can be set in the /etc/default/useradd file. See the man page for more details.
Shadow's Configuration File
/etc/login.defs
Enabling MD5 Passwords
To enable MD5 Passwords, modify the line in the login.defs file that reads:
#MD5_CRYPT_ENAB no |
MD5_CRYPT_ENAB yes |
Passwords created after this change will be encrypted using MD5 instead of using DES encryption.
shadow requires: Linux_PAM-0.77 |
Download the patch for shadow from http://downloads.linuxfromscratch.org/blfs-patches.
Reinstall shadow by running the following commands:
patch -Np1 -i ../shadow-4.0.3.patch && autoconf && LDFLAGS="-lpam -lpam_misc" ./configure --prefix=/usr --enable-shared --with-libpam && make && make install && rm /bin/vipw && rm /bin/sg && mv /lib/{libmisc.*a,libshadow.*a} /usr/lib && mv /lib/{libmisc.so,libshadow.so} /usr/lib && ln -sf ../../lib/libshadow.so.0 /usr/lib/libshadow.so && ln -sf ../../lib/libmisc.so.0 /usr/lib/libmisc.so && cp debian/securetty /etc/securetty |
cp debian/securetty /etc/securetty : This command sets the tty's that allow logins through PAM.
/etc/pam.d/login, /etc/pam.d/passwd, /etc/pam.d/su, /etc/pam.d/shadow, /etc/pam.d/useradd
Add the following PAM configuration files to /etc/pam.d (or add them to /etc/pam.conf with the additional field for the program).
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 # End /etc/pam.d/login EOF cat > /etc/pam.d/passwd << "EOF" # Begin /etc/pam.d/passwd password required pam_unix.so md5 shadow # End /etc/pam.d/passwd EOF cat > /etc/pam.d/shadow << "EOF" # Begin /etc/pam.d/shadow 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/shadow EOF 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 required pam_unix.so # End /etc/pam.d/su EOF cat > /etc/pam.d/useradd << "EOF" # Begin /etc/pam.d/useradd 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/useradd EOF 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 |
Currently, /etc/pam.d/other is configured to allow anyone with an account on the machine to use programs that do not specifically have a configuration file of their own. After testing PAM for proper configuration, it can be changed to the following:
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 |
Finally, edit /etc/login.defs by adding '#' to the beginning of the following lines:
DIALUPS_CHECK_ENAB 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 |
This stops login from performing these functions, as they will now be performed by PAM modules.
The next part of this chapter deals with firewalling. The principle firewalling 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 firewalling.
Download location (HTTP): http://www.iptables.org/files/iptables-1.2.7a.tar.bz2 Download location (FTP): ftp://ftp.netfilter.org/pub/iptables/iptables-1.2.7a.tar.bz2 Version used: 1.2.7a Package size: 115 KB Estimated Disk space required: 2.4 MB |
To use firewalling, as well as installing iptables, you will need to configure the relevant options into your kernel. This is discussed in the next part of this chapter - getting a firewalling-enabled Kernel.
If you intend to use IPv6 you might consider extending the kernel by running make patch-o-matic in the top-level directory of the sources of iptables. If you are going to do this, on a freshly untarred kernel, you need to run yes "" | make config && make dep first because otherwise the patch-o-matic command is likely to fail while setting up some dependencies.
If you are going to patch the kernel, you need to do it before you compile iptables, because during the compilation, the kernel source tree is checked (if it is available at /usr/src/linux to see which features are available. Support will only be compiled into iptables for the features recognized at compile-time. Applying a kernel patch may result in errors, often because the hooks for the patches have changed or because the runme script doesn't recognize that a patch has already been incorporated.
Note that for most people, patching the kernel is unnecessary. With the later 2.4.x kernels, most functionality is already available and those who need to patch it are generally those who need a specific feature; if you don't know why you need to patch the kernel, you're unlikely to need to!
Install iptables by running the following commands:
make PREFIX=/usr && make PREFIX=/usr install |
PREFIX=/usr : Compiles and installs iptables into the /usr hierarchy instead of /usr/local.
iptables is used to set up, maintain, and inspect the tables of IP packet filter rules in the Linux kernel.
These are used to save and to restore your elaborated set of chains and rules. Until iptables-1.2.5 they were declared experimental.
This is the same as iptables but for use with IPv6. As of v1.2.5, it is not as complete as the standard IPv4 version, especially with regard to some of the modules.
These are various modules (implemented as dynamic libraries) which extend the core functionality of iptables.
Before you read this part of the chapter, note that we assume that you have already installed iptables as described in the previous section.
The general purpose of a firewall is to protect a network against malicious access by using a single machine as a firewall. This does imply that the firewall is to be considered a single point of failure, but it can make the administrators life a lot easier.
In a perfect world where you knew that every daemon or service on every machine was perfectly configured and was immune to, e.g., buffer-overflows and any other imaginable problem regarding its security, and where you trusted every user accessing your services to aim no harm, you wouldn't need to do firewalling! In the real world however, daemons may be misconfigured, exploits against essential services are freely available, you may wish to choose which services are accessible by certain machines, you may wish to limit which machines or applications are allowed to have internet access, or you may simply not trust some of your apps or users. In these situations you might benefit by using a firewall.
Don't assume however, that having a firewall makes careful configuration redundant, nor that it makes any negligent misconfiguration harmless, nor that it prevents 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 well-configured and up-to-date; a firewall is not a cure-all!
The word firewall can have several different meanings.
This is a setup or program, for Windows commercially sold by companies such as Symantec, of which they claim or pretend that it secures a home or desktop-pc with internet access. This topic is highly relevant for users who do not know the ways their computers might be accessed via the internet and how to disable these, especially if they are always online and if they are connected via broadband links.
This is a box 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 riskless, the tasks of doing the routing and eventually IP masquerading[1] are commonly considered harmless.
This is often an old box you may have retired and nearly forgotten, performing masquerading or routing functions, but offering a bunch of services, e.g., web-cache, mail, etc. This may be very commonly used for home networks, but can definitely not to be considered as secure anymore because the combining of server and router on one machine raises the complexity of the setup.
This box performs masquerading or routing, but grants public access to some branch of your network which, because of public IP's and a physically separated structure, is neither considered to be part of the inter- nor intranet. These servers are those which must be easily accessible from both the inter- and intranet. The firewall protects them all.
Doing routing or masquerading, but permitting only selected services to be accessible, sometimes only by selected internal users or boxes; mostly used in highly secure business contexts, sometimes by distrusting employers. This was the common configuration of a firewall at the time of the Linux 2.2 kernel. It's still possible to configure a firewall this way, but it makes the rules quite complex and lengthy.
NEITHER THE AUTHOR NOR ANY OF THE LINUXFROMSCRATCH TEAM ARE RESPONSIBLE FOR ANY DAMAGES INCURRED DUE TO ACTIONS TAKEN BASED ON THIS DOCUMENT.
This document is meant as an introduction to how to setup a firewall - it 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 as to how firewalling works, they are not intended to fit into any imaginable configuration and may not prevent any imaginable attack.
The purpose of this text is simply to give you a hint on how to get started with firewalling.
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 firewalling 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. Here you will find a list of URLs that contain quite comprehensive information about building your own firewall.
If you want your Linux-Box to do firewalling you must first ensure that your kernel has been compiled with the relevant options turned on [2].
How to configure your kernel, with enabling the options to be either compiled into the kernel or as modules, depends on your personal preferences and experience. Note, that for the quoted scripts it is assumed that the modules need to be loaded at first.
Table 4-1. Essential config-options for a firewalling-enabled Kernel
Networking options: | Network packet filtering | = | CONFIG_NETFILTER | |
Unix domain sockets | = | CONFIG_UNIX | ||
IP: TCP/IP networking | = | CONFIG_INET | ||
IP: advanced router | = | CONFIG_IP_ADVANCED_ROUTER | ||
IP: verbose route monitoring | = | CONFIG_IP_ROUTE_VERBOSE | ||
IP: TCP Explicit Congestion Notification support | = | CONFIG_INET_ECN | ||
IP: TCP syncookie support | = | CONFIG_SYN_COOKIES | ||
IP: Netfilter Configuration: | every option | = | CONFIG_IP_NF_* | |
WITHOUT: | ipchains (2.2-style) support ipfw-adm (2.0-style) support | w\ | CONFIG_IP_NF_COMPAT_* | |
Fast switching | Make sure to disable it because it would setup a bypass around your firewalling-rules. | w\ | CONFIG_NET_FASTROUTE |
A Personal Firewall is supposed to let you access the all 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:
cat > /etc/rc.d/init.d/firewall << "EOF" #!/bin/sh # Begin $rc_base/init.d/firewall # 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 # 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 (eg active-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 " # set a sane policy: everything not accepted > /dev/null iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT DROP # be verbose on dynamic ip-addresses (not needed in case of static IP) echo 2 > /proc/sys/net/ipv4/ip_dynaddr # disable ExplicitCongestionNotification - too many routers are still ignorant echo 0 > /proc/sys/net/ipv4/tcp_ecn # End $rc_base/init.d/firewall EOF |
His script is quite simple, it drops all traffic coming in into your computer that wasn't initiated from your box, 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, please have a look at BusyBox - example no. 4.
Even if you have daemons / services running on your box, these should be inaccessible everywhere but from your box itself. If you want to allow access to services on your machine, such as ssh or pinging, take a look at BusyBox.
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 against the box itself being broken into, make sure that there are no servers running on it, especially not X11 et al. And, as a general principle, the box itself should not access any untrusted service[3].
cat > /etc/rc.d/init.d/firewall << "EOF" #!/bin/sh # Begin $rc_base/init.d/firewall echo echo "You're using the example-config for a setup of a firewall" echo "from the firewalling-hint written for LinuxFromScratch." 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 quoted configuration rules." echo "You can find some quite comprehensive information" echo "about firewalling in Chapter 4 of the BLFS book." echo "http://beyond.linuxfromscratch.org/" 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 # allow local-only connections iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT # allow forwarding iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -m state --state NEW -i ! ppp+ -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 DROP/REJECT) 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 " # set a sane policy iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT DROP # be verbose on dynamic ip-addresses (not needed in case of static IP) echo 2 > /proc/sys/net/ipv4/ip_dynaddr # disable ExplicitCongestionNotification echo 0 > /proc/sys/net/ipv4/tcp_ecn # activate TCPsyncookies echo 1 > /proc/sys/net/ipv4/tcp_syncookies # activate Route-Verification = IP-Spoofing_protection for f in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 1 > $f done # activate IP-Forwarding echo 1 > /proc/sys/net/ipv4/ip_forward EOF |
With this script your intranet should be sufficiently secure against external attacks: no one should be able to setup a new connection to any internal service and, if it's masqueraded, it s even invisible; furthermore, your firewall should be nearly immune 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 which you are using. If you are using the same interface type to connect to both your intranet and the internet, you need to use the actual name of the interface such as eth0, on both interfaces.
If you need stronger security (e.g., against DOS, connection highjacking, spoofing, etc.) have a look at the list of Links for further reading at the end of this section.
This scenario isn't too different from (Masquerading Router), but in this case you want to offer some services to your intranet. Examples of this can be when you want to admin your box from another host on your intranet or use it as a proxy or a name server. Note: Outlining a true concept howto protect a server that offers services on the internet goes far beyond the scope of this document, see Disclaimer.
Be cautious. Every service you offer and have enabled makes your setup more complex and your box less secure: You induce the risks of misconfigured services or running a service with an exploitable bug, both risks that a firewall principally should be immune of. See the introduction to Masquerading Router for some more details.
If the services you'd like to offer do not need to access the internet themselves, like internal-only samba- or name-servers, it's quite simple and should still be acceptable from a security standpoint. Just add the following lines before the logging-rules into the script.
iptables -A INPUT -i ! ppp+ -j ACCEPT iptables -A OUTPUT -o ! ppp+ -j ACCEPT |
If your daemons have to access the web themselves, like squid would need to, 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 on trojans who'd like to "call home", and a bit of redundancy in case you've (mis-)configured a service so that it does broadcast its existence to the world.
If you prefer to have this protection, you may 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., dnscache) does its lookups via udp:
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT iptables -A INPUT -p udp --sport 53 -m state --state ESTABLISHED \ -j ACCEPT |
Alternatively, if you want to be able to ping your box 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 box for your username for logging. Although there's really no harm in this, having an identd running is not recommended because some implementations are known to be vulnerable.
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 iptables -A OUTPUT -p tcp --sport 113 -m state --state RELATED \ -j ACCEPT |
To log and drop invalid packets, mostly harmless packets that came in after netfilter's timeout, sometimes scans:
iptables -I INPUT 1 -p tcp -m state --state INVALID -j LOG \ --log-prefix "FIREWALL:INVALID" iptables -I INPUT 2 -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 -t nat -A PREROUTING -i ppp+ -s 10.0.0.0/8 -j DROP iptables -t nat -A PREROUTING -i ppp+ -s 172.16.0.0/12 -j DROP iptables -t nat -A PREROUTING -i ppp+ -s 192.168.0.0/16 -j DROP |
To simplify debugging and be fair to anyone who'd like to access a service you have disabled, purposely or by mistake, you should 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 iptables -A OUTPUT -p icmp --icmp-type 3 -j ACCEPT |
These are only examples to show you some of the capabilities of the new firewalling-code in Linux-Kernel 2.4. Have a look at the man page of iptables. There you will find more of them. The port-numbers you'll need for this can be found in /etc/services, in case you didn't find them via "try'n'error" in your logfile.
If you add any of your offered or accessed services such as the above, maybe even in FORWARD and for intranet-communication, and delete the general clauses, you get an old fashioned packet filter.
Finally, I'd like to remind you of one fact we 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 such valuable assets that you expect great effort to be made by potential crackers, you hopefully won't be in the need of this hint!
Be cautious!
Henning Rohde
<Henning.Rohde@uni-bayreuth.de>
PS: And always do remember: SecureIT is not a matter of a status-quo but one of never stopping to take care!
PPS: If any of these scripts fail, please tell me. I will try to trace any faults.
Homepage of the netfilter/iptables project
FAQ
List of Netfilter-related HOWTO's
http://www.linuxdoc.org/LDP/nag2/x-087-2-firewall.html
http://www.linuxdoc.org/HOWTO/Security-HOWTO.html
http://www.linuxdoc.org/HOWTO/Firewall-HOWTO.html
http://www-106.ibm.com/developerworks/security/library/s-fire.html +s-fire2.html
http://www.interhack.net/pubs/fw-faq/
http://csrc.nist.gov/isptg/html/ISPTG-6.html
http://www.linuxsecurity.com/docs/
http://www.little-idiot.de/firewall (German & outdated, but very comprehensive)
http://www.linuxgazette.com/issue65/stumpel.html
http://linux.oreillynet.com/pub/a/linux/2000/03/10/netadmin/ddos.html
http://staff.washington.edu/dittrich/misc/ddos
http://ipmasq.cjb.net/
http://www.e-infomax.com/ipmasq
http://www.circlemud.org/~jelson/writings/security/index.htm
http://www.securityfocus.com
http://www.cert.org/tech_tips/
http://www.uni-siegen.de/security/pointers.html
http://security.ittoolbox.com/
http://www.linux-firewall-tools.com/linux/
http://logi.cc/linux/athome-firewall.php3
http://www.insecure.org/reading.html
http://www.robertgraham.com/pubs/firewall-seen.html
If a link proves to be dead or if you think I missed one, please mail!
If you'd like to have a look at the chains your firewall consists of and the order in which the rules take effect:
cat > /etc/rc.d/init.d/firewall.status << "EOF" #!/bin/sh # Begin $rc_base/init.d/firewall.status echo "iptables.mangling:" iptables -t mangle -v -L -n --line-numbers echo echo "iptables.nat:" iptables -t nat -v -L -n --line-numbers echo echo "iptables.filter:" iptables -v -L -n --line-numbers EOF |
If you need to turn firewalling off, this script will do it:
cat > /etc/rc.d/init.d/firewall.stop << "EOF" #!/bin/sh # Being $rc_base/init.d/firewall.stop # deactivate IP-Forwarding echo 0 > /proc/sys/net/ipv4/ip_forward iptables -Z iptables -F iptables -t nat -F PREROUTING iptables -t nat -F OUTPUT iptables -t nat -F POSTROUTING iptables -t mangle -F PREROUTING iptables -t mangle -F OUTPUT iptables -X iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT EOF |
Download location (HTTP): http://telia.dl.sourceforge.net/sourceforge/tripwire/tripwire-2.3.1-2.tar.gz Download location (FTP): Version used: 2.3.1-2 Package size: 1.5 MB Estimated Disk space required: 63 MB |
The tripwire package contains the tripwire programs used by tripwire to verify the integrity of the files on a given system.
tripwire depends on: gcc-2.95.3 |
Download the patch for tripwire config from http://downloads.linuxfromscratch.org/blfs-patches.
Install tripwire by running the following commands:
export PATH_HOLD=$PATH && export PATH=/opt/gcc2/bin:$PATH && ln -s make /usr/bin/gmake && cd src && gmake release && cd .. && cp install/install.{sh,cfg} . && patch -Np0 -i ../tripwire-cfg.patch && ./install.sh && cp /etc/tripwire/tw.cfg /usr/sbin && cp policy/*.txt /usr/share/doc/tripwire |
Reverse the modifications made above:
rm /usr/bin/gmake && export PATH=$PATH_HOLD |
ln -s make /usr/bin/gmake : The reason we create the gmake symlink is that tripwire will only install if the symlink is present. It may be safely removed after installation.
gmake release : This command creates the tripwire binaries.
cp install.{sh,cfg} . : These are copied to the main tripwire directory so that the script can be used to install the package.
cp policy/*.txt /usr/share/doc/tripwire : This command installs the documentation.
/etc/tripwire
Tripwire uses a policy file to determine which files integrity are checked. The default policy file (twpol.txt found in /etc/tripwire/) is for a default installation of Redhat 7.0 and is woefully outdated.
Policy files are also a custom thing and should be tailored to each individual distro 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. twpol.txt is a good policy file for beginners as it will note any changes to the filesystem 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:
twadmin -m P /etc/tripwire/twpol.txt && tripwire -m i |
During configuration tripwire will create 2 keys: a site key and a local key which will be stored in /etc/tripwire/.
To use tripwire after this and run a report using the following command:
tripwire -m c > /etc/tripwire/report.txt |
View the output to check the integrity of your files. An automatic integrity report can be produced by using fcron.
Please note that after you run an integrity check, you must check the report or email and then modify the tripwire database of the files on your system so that tripwire will not continually notify you that files you intentionally changed are a security violation. To do this you must first ls /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, type in the following command making the appropriate substitutions for '?':
tripwire -m u -r /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, please remove the x before the filename in the report and type :x.
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:
twadmin -m P /etc/tripwire/twpol.txt && tripwire -m i |
Download location (HTTP): http://www.kernel.org/pub/linux/libs/pam/pre/library/Linux-PAM-0.77.tar.bz2 Download location (FTP): Version used: 0.77 Package size: 332 KB Estimated Disk space required: 4.1 MB |
The Linux_PAM package contains Pluggable Authentication Modules. This is useful to enable the local system administrator to choose how applications authenticate users.
Linux_PAM will utilize: cracklib |
Install Linux_PAM by running the following commands:
./configure --enable-static-libpam --with-mailspool=/var/mail \ --enable-read-both-confs --sysconfdir=/etc && make && make install && mv /lib/libpam.a /lib/libpam_misc.a /lib/libpamc.a /usr/lib && ln -sf ../../lib/libpam.so.0.77 /usr/lib/libpam.so && ln -sf ../../lib/libpam_misc.so.0.77 /usr/lib/libpam_misc.so && ln -sf ../../lib/libpamc.so.0.77 /usr/lib/libpamc.so |
--enable-static-libpam : This switch builds static PAM libraries as well as the dynamic libraries.
--with-mailspool=/var/mail : This switch makes the mailspool directory FHS compliant.
--enable-read-both-confs : This switch lets the local administrator choose which configuration file setup to use.
mv /lib/libpam.a /lib/libpam_misc.a /lib/libpamc.a /usr/lib : This command moves the static libraries to /usr/lib to comply with FHS.
/etc/pam.d or /etc/pam.conf
Configuration information is placed in /etc/pam.d or /etc/pam.conf depending on the application that is using PAM. 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 provides a good starting point for descriptions of fields and allowable entries. The Linux-PAM guide for system administrators and two PAM hints located at http://hints.linuxfromscratch.org are also available for further reading.
Journaling filesystems reduce the time needed to recover a filesystem 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 a variety of journaling filesystems.
Ext3 is a journaling filesystem that is an extension to the ext2 filesystem. It is backward compatible with ext2 and the conversion from ext2 to ext3 is trivial.
You don't need to install anything to use ext3, all the required packages are available with a bare LFS system.
When building the kernel, ensure that you have compiled in ext3 support. If you want your root partition to be ext3, then compile the ext3 support in the kernel, else you may compile it as a module. Recompile the kernel if needed.
Edit your /etc/fstab. For each partition that you want to convert into ext3, edit the entry so that it looks similar to the following line.
/dev/hdXX /mnt_point ext3 defaults 1 0 |
In the above line, replace /dev/hdXX by the partition (e.g. /dev/hda2), /mnt_point by the mount point (e.g. /home). The 0 in the last field ensures that the partition will not be checked for consistency during bootup by the checkfs script. You may replace the ext3 fs type in the above by auto if you want to ensure that the partition is mounted if you accidentally skip enabling the ext3 support in the kernel.
For each partition that you have converted to ext3 in /etc/fstab, enable the journal for the partition by running the following command.
tune2fs -j /dev/hdXX
Remount the concerned partitions, or simply reboot if you have recompiled the kernel to enable ext3 support.
More information is available at http://www.zip.com.au/~akpm/linux/ext3/ext3-usage.html
Download location (HTTP): http://ftp.namesys.com/pub/reiserfsprogs/reiserfsprogs-3.6.5.tar.gz Download location (FTP): ftp://ftp.namesys.com/pub/reiserfsprogs/reiserfsprogs-3.6.5.tar.gz Version used: 3.6.5 Package size: 356 KB Estimated Disk space required: 3.6 MB Estimated build time: 0.43 SBU |
Additional Download: flush_buffers bug patch |
The reiserfsutils package contains various utilities for use with the reiser filesystem.
Install reiserfs by running the following commands:
patch -Np1 -i ../reiserfsprogs-3.6.5-flush_buffers-bug.patch && ./configure --prefix=/usr --sbindir=/sbin && make && make install && ln -sf reiserfsck /sbin/fsck.reiserfs && ln -sf mkreiserfs /sbin/mkfs.reiserfs |
--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.
debugreiserfs can sometimes help to solve problems with reiserfs filesystems. If it is called without options it prints the super block of any reiserfs filesystem found on the device.
reiserfstune is used for tuning the ReiserFS journal. WARNING: Don't use this utility without first reading the man page thoroughly.
The unpack utility can be used to dump reiserfs filesystem information to files for debugging, much like debugreiserfs.
Download location (HTTP): Download location (FTP): ftp://oss.sgi.com/projects/xfs/download/patches/2.4.20/xfs-2.4.20-all-i386.bz2 Version used: 2.4.20 Package size: 840 KB Estimated Disk space required: Varies with options |
The XFS kernel patch must be applied to use XFS filesystems
Build an XFS-enabled Linux 2.4.20 kernel with the following commands:
cd /usr/src/linux && make mrproper && bzcat ../xfs-2.4.20-all-i386.bz2 | patch -Np1 && make menuconfig && make dep && make bzImage && make modules && make modules_install && cp arch/i386/boot/bzImage /boot/vmlinuz-xfs && cp System.map /boot/System.map-xfs |
Download location (HTTP): Download location (FTP): ftp://oss.sgi.com/projects/xfs/download/Release-1.1/cmd_tars/xfsprogs-2.0.3.src.tar.gz Version used: 2.0.3 Package size: 740 KB Estimated Disk space required: 31 MB |
The xfsprogs package contains administration and debugging tools for the XFS filesystem.
Install xfsprogs by running the following commands:
./configure && make && make install |
xfsprogs contains xfs_growfs, xfs_admin, xfs_freeze, xfs_mkfile, xfs_check, xfs_bmap, xfs_rtcp, xfs_repair, xfs_db, xfs_logprint, xfs_ncheck, mkfs.xfs and fsck.xfs.
From a developer's point of view, this is the only program that really matters. We spend so much time using it that it is critical that we are comfortable with the one we use. This chapter is referenced in the LFS book for those wishing to use other editors on their LFS system. We also have the opportunity to show how some LFS installed programs benefit from being recompiled after GUI libraries have been installed.
Download location (HTTP): Download location (FTP): ftp://ftp.nluug.nl/pub/editors/vim/unix/vim-6.1.tar.bz2 Version used: 6.1 Package size: 2.8 MB Estimated Disk space required: 27 MB Estimated build time: 1.93 SBU |
The vim package, which is an abbreviation for VI IMproved, contains a vi clone with extra features as compared to the original vi.
vim depends on: xfree86-4.3.0 |
vim will utilize: GLib-1.2.10, GTK+-1.2.10 and lesstif-0.93.36 |
The default LFS instructions install LFS as a part of the base system, but owing to the lack of X libraries during the base install, vim needs to be recompiled once X in installed to enable the GUI mode. There is no need for special instructions since X support is automatically detected.
Download the patch to make the location of configuration files FHS compliant from http://downloads.linuxfromscratch.org/blfs-patches.
Install vim by running the following commands:
patch -Np1 -i ../vim-6.1-fhs-compliant-vimrc.patch && ./configure --prefix=/usr \ --with-features=huge && make && make install |
patch -Np1 -i ../vim-6.1-fhs-compliant-vimrc... : Changes the location of vimrc and gvimrc from /usr/share to the more appropriate /etc.
--with-features=huge : Enables all the additional features available in vim.
The vim package contains eview, evim, ex, gview, gvim, gvimdiff, rgview, rgvim, rview, rvim, view, vim, vimdiff, vimtutor and xxd. Except for vimtutor and xxd, all the other commands are symlinks to vim and start vim with different options. vimtutor is a tool to learn the various vim commands and xxd is a command used to create hex dumps.
Download location (HTTP): http://ftp.gnu.org/pub/gnu/emacs/emacs-21.3.tar.gz Download location (FTP): ftp://ftp.gnu.org/pub/gnu/emacs/emacs-21.3.tar.gz Version used: 21.3 Package size: 20 MB Estimated Disk space required: 92.5 MB Estimated build time: 8.40 SBU |
The emacs package contains emacs, the extensible, customizable, self-documenting real-time display editor.
emacs will utilize: xfree86-4.3.0, libjpeg-6b, libpng-1.2.5, libtiff-3.5.7 and libungif-4.1.0b1 |
Install emacs by running the following commands:
./configure --prefix=/usr \ --libexecdir=/usr/sbin && make bootstrap && make install |
The emacs package contains emacs, b2m, ctags, ebrowse, emacsclient, etags, grep-changelog, rcs-checkin, cvt-mail, digest-doc, emacsserver, fakemail, hexl, movemail, profile, rcs2log, sorted-doc, vcdiff and yow.
The editor proper.
emacserver allows other applications/shells to access an already running emacs instance and share buffers with it.
Download location (HTTP): http://ftp.gnu.org/gnu/nano/nano-1.2.0.tar.gz Download location (FTP): ftp://ftp.gnu.org/gnu/nano/nano-1.2.0.tar.gz Version used: 1.2.0 Package size: 880 KB Estimated Disk space required: 3.8 MB Estimated build time: 0.13 SBU |
The nano package contains nano, a small, simple text editor which aims to replace Pico, the default editor in the Pine package.
Install nano by running the following commands:
./configure --prefix=/usr --enable-color \ --enable-multibuffer --enable-nanorc && make && make install |
nano is a small, simple text editor which aims to replace Pico, the default editor in the Pine package.
Download location (HTTP): http://unc.dl.sourceforge.net/sourceforge/joe-editor/joe-2.9.7.tgz Download location (FTP): Version used: 2.9.7 Package size: 272 KB Estimated Disk space required: 2.2 MB |
Joe is a small text editor capable of emulating WordStar, Pico, and Emacs.
Install joe by running the following commands:
./configure --sysconfdir=/etc --prefix=/usr && make && make install |
Joe can make use of several configuration files. Information about these files may be found in the joe man page. These files are /etc/jmacsrc, /etc/joerc, /etc/jpicorc, /etc/jstarrc, and /etc/rjoerc. Joe can also make use of ~/.joerc, which may be copied from /etc/joerc and customized for each user's taste.
jmacs is a symbolic link to joe used to launch Emacs emulation mode.
rjoe is a symbolic link to joe that restricts joe to editing only files which are specified on the command line.
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.
Download location (HTTP): Download location (FTP): ftp://ftp.funet.fi/pub/unix/shells/tcsh/tcsh-6.12.00.tar.gz Version used: 6.12 Package size: 804 KB Estimated Disk space required: 5.9 MB Estimated build time: 0.77 SBU |
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 install.
Install tcsh by running the following commands:
./configure --prefix=/usr && make && make install && cp tcsh.man /usr/share/man/man1/tcsh.1 && ln -s /usr/bin/tcsh /bin/csh |
cp tcsh.man /usr/share/man/man1/tcsh.1 : tcsh doesn't install its man page correctly, so we do it manually.
ln -s /usr/bin/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.
There are numerous configuration files for the C shell. Examples of these are /etc/csh.cshrc, /etc/csh.login, ~/.tcshrc, ~/.cshrc, ~/.history, ~/.login, ~/.cshdirs, /etc/csh.logout, ~/.logout and ~/.logout. More information on these files can be found in the tcsh(1) man page.
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.
Download location (HTTP): http://www.zsh.org/pub/zsh-4.0.6.tar.bz2 Download location (FTP): ftp://ftp.zsh.org/zsh/zsh-4.0.6.tar.bz2 Version used: 4.0.6 Package size: 1.6 MB Estimated Disk space required: 14 MB Estimated build time: 2.31 SBU |
The zsh package contains the zsh shell. zsh is 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.
Install zsh by running the following commands:
./configure --prefix=/usr && make && make install |
There are a whole host of configuration files for zsh including /etc/zshenv, /etc/zprofile, /etc/zshrc, /etc/zlogin and /etc/zlogout. You can find more information on these in the zsh(1) and related man pages.
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.
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 library, 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 which requires functionality which they supply. In the BLFS book, each package is listed 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 programs 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.
Download location (HTTP): http://www.openssl.org/source/openssl-0.9.7a.tar.gz Download location (FTP): ftp://ftp.openssl.org/source/openssl-0.9.7a.tar.gz Version used: 0.9.7a Package size: 2.7 MB Estimated Disk space required: 25.4 MB |
The openssl package contains c_rehash, openssl, libcrypto and libssl. These are useful for providing cryptography functions to other packages, notably OpenSSH and web browsers (for accessing secure https sites).
Install openssl by running the following commands:
Note: GCC issues a warning on every compilation because the Configure command uses -m486 instead of -march=i486. To fix this behavior, use linux-ppro, linux-pentium or linux-k6 (depending on your architecture), instead of linux-elf.
sed 's/^passwd/openssl-passwd/' doc/apps/passwd.pod \ > doc/apps/openssl-passwd.pod && rm doc/apps/passwd.pod && ./Configure linux-elf --openssldir=/etc/ssl --prefix=/usr shared && make MANDIR=/usr/share/man && make MANDIR=/usr/share/man install && rmdir /etc/ssl/lib |
rm doc/apps/passwd.pod : We do this because otherwise openssl installs its passwd man page over the existing system one which isn't what we want.
make MANDIR=/usr/share/man make MANDIR=/usr/share/man install |
rmdir /etc/ssl/lib : This is simply a tidy-up command. For some reason, the openssl install routine creates the /etc/ssl/lib directory even though the libraries have been installed in /usr/lib. We remove it to keep things nice and tidy!
/etc/ssl/openssl.cnf
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.
c_rehash is a perl script that scans all files in a directory and adds symbolic links to their hash values.
The openssl program 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.
The OpenSSL crypto library 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 SSH, OpenPGP, and other cryptographic standards.
The OpenSSL ssl library 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.
Download location (HTTP): Download location (FTP): ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-4.1.tar.bz2 Version used: 4.1 Package size: 332 KB Estimated Disk space required: 2.8 MB Estimated build time: 0.19 SBU |
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.
Install pcre by running the following commands:
./configure --prefix=/usr && make && make install |
Download location (HTTP): Download location (FTP): ftp://ftp.rpm.org/pub/rpm/dist/rpm-4.1.x/popt-1.7.tar.gz Version used: 1.7 Package size: 200 KB Estimated Disk space required: 4 MB Estimated build time: 0.10 SBU |
The popt package contains the popt libraries which are used by some programs to parse command line options.
Install popt by running the following commands:
./configure --prefix=/usr && make && make install |
As with most libraries, there is no configuration to do, save that the library directory i.e. /usr/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.
Download location (HTTP): http://ftp.jedsoft.org/pub/davis/slang/v1.4/slang-1.4.9.tar.bz2 Download location (FTP): ftp://ftp.jedsoft.org/pub/davis/slang/v1.4/slang-1.4.9.tar.bz2 Version used: 1.4.9 Package size: 624 KB Estimated Disk space required: 4.7 MB |
The slang package contains the slang library, which is used to create robust, multi-platform software.
Install slang by running the following commands:
./configure --prefix=/usr && make && make install && make elf && make install-elf && make install-links && chmod 755 /usr/lib/libslang.so.1.4.9 |
As with most libraries, there is no configuration to do, save that the library directory i.e. /usr/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.
Download location (HTTP): http://oss.sgi.com/projects/fam/download/fam-2.6.9.tar.gz Download location (FTP): ftp://oss.sgi.com/projects/fam/download/fam-2.6.9.tar.gz Version used: 2.6.9 Package size: 300 KB Estimated Disk space required: 350 KB |
The fam package contains a File Alteration Monitor.
fam depends on: portmap-5 |
Download the fam patches from http://downloads.linuxfromscratch.org/blfs-patches.
Install fam by running the following commands:
Note: You will get warnings about make install being unable to merge entries in /etc/rpc. These can be ignored, along with any IMON or inetd.conf warnings, as we will be configuring these files after installation.
patch -Np1 -i ../fam-dnotify.patch && patch -Np1 -i ../fam-gcc3.patch && ./configure --prefix=/usr --sysconfdir=/etc && make && make install |
patch -Np1 -i ../fam-dnotify.patch : This patch causes fam to use the Linux kernel dnotify mechanism to inform the calling process of file modifications, rather than polling the file system for.
patch -Np1 -i ../fam-gcc3.patch : This patch is necessary to get fam to compile with gcc-3.2.
/etc/rpc, /etc/fam.conf, /etc/inetd.conf, /etc/xinetd.d/fam or /etc/xinetd.conf
Configuring the file alteration monitor.
If you use inetd, add the fam entry to /etc/inetd.conf with the following command:
echo "sgi_fam/1-2 stream rpc/tcp wait root /usr/bin/fam fam" >> /etc/inetd.conf |
If you use xinetd, add an entry to /etc/xinetd.conf with the following command (be sure the "nogroup" group exists):
cat >> /etc/xinetd.conf << "EOF" # description: FAM - file alteration monitor service sgi_fam { type = RPC UNLISTED socket_type = stream user = root group = nogroup server = /usr/bin/fam wait = yes protocol = tcp rpc_version = 2 rpc_number = 391002 } EOF |
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/libxml/1.8/libxml-1.8.17.tar.bz2 Download location (FTP): ftp://ftp.xmlsoft.org/libxml-1.8.17.tar.gz Version used: 1.8.17 Package size: 973 KB Estimated Disk space required: 11 MB |
The libxml package contains the libxml libraries. These are useful for parsing XML files.
Install libxml by running the following commands:
./configure --prefix=/usr && make && make install |
As with most libraries, there is no configuration to do, save that the library directory i.e. /usr/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.
libxml provides the functions for programs to parse files that use the XML format.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/libxml2/2.5/libxml2-2.5.6.tar.bz2 Download location (FTP): ftp://ftp.xmlsoft.org/libxml2-2.5.6.tar.gz Version used: 2.5.6 Package size: 3 MB Estimated Disk space required: 33 MB Estimated build time: 2.35 SBU |
The libxml2 package contains the libxml2 libraries. These are useful for parsing XML files.
libxml2 will utilize: Python-2.2.2 |
Install libxml2 by running the following commands:
./configure --prefix=/usr && make && make install |
libxml2 provides the functions for programs to parse files that use the XML format.
xmllint parses XML files and outputs reports (based upon options) to detect errors in XML coding.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/libxslt/1.0/libxslt-1.0.29.tar.bz2 Download location (FTP): ftp://ftp.xmlsoft.org/libxslt-1.0.29.tar.gz Version used: 1.0.29 Package size: 2.2 M Estimated Disk space required: 22 MB Estimated build time: 0.69 SBU |
The libxslt package contains libxslt libraries. These are useful for extending libxml2 libraries to support XSLT files.
libxslt depends on: libxml2-2.5.6 |
Install libxslt by running the following commands:
./configure --prefix=/usr && make && make install |
libxslt provides extensions to the libxml2 library to parse files that use the XSLT format.
Download location (HTTP): http://ftp.gnu.org/gnu/readline/readline-4.3.tar.gz Download location (FTP): ftp://ftp.gnu.org/gnu/readline/readline-4.3.tar.gz Version used: 4.3 Package size: 939 KB Estimated Disk space required: 4.9 MB |
The Readline library provides a set of functions for use by applications that allow users to edit command lines as they are typed in. Both Emacs and vi editing modes are available.
Install readline by running the following commands:
./configure --prefix=/usr && make && make install |
As with most libraries, there is no configuration to do, save that the library directory i.e. /usr/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.
Download location (HTTP): http://www.ibiblio.org/pub/gnu/gmp/gmp-4.1.2.tar.bz2 Download location (FTP): ftp://ftp.gnu.org/gnu/gmp/gmp-4.1.2.tar.bz2 Version used: 4.1.2 Package size: 1.6 MB Estimated Disk space required: 19.2 MB |
The gmp package contains a MP library. This has useful functions for arbitrary precision arithmetic.
gmp will utilize: readline-4.3. |
Install gmp by running the following commands:
./configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info && make && make install |
gmp libraries contains the functions to operate on signed integers, rational numbers, and floating point numbers.
Download location (HTTP): http://www.ibiblio.org/pub/gnu/gdbm/gdbm-1.8.3.tar.gz Download location (FTP): ftp://ftp.gnu.org/gnu/gdbm/gdbm-1.8.3.tar.gz Version used: 1.8.3 Package size: 228 KB Estimated Disk space required: 1.7 MB |
The gdbm package contains a dbm library. This is useful for database routines that use extendible hashing.
Install gdbm by running the following commands:
./configure --prefix=/usr --infodir=/usr/share/info --mandir=/usr/share/man && make && make BINOWN=root BINGRP=root install |
In addition, you may need to install the compatibility headers for gdbm. Apache 1.3, for example, will need these headers. Install the compatibility headers by running the following command:
make BINOWN=root BINGRP=root install-compat |
--infoprefix=/usr/share/info --mandir=/usr/share/man : These switches set the documentation directory to /usr/share instead of /usr.
BINOWN=root BINGRP=root : This command changes the file ownership to root instead of the bin user.
gdbm libraries contain functions that perform database routines using extendible hashing.
Download location (HTTP): Download location (FTP): ftp://ftp.gtk.org/pub/gtk/v1.2/glib-1.2.10.tar.gz Version used: 1.2.10 Package size: 412 KB Estimated Disk space required: 7 MB Estimated build time: 0.52 SBU |
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.
Install glib by running the following commands:
./configure --prefix=/usr && make && make install |
Download location (HTTP): Download location (FTP): ftp://ftp.gtk.org/pub/gtk/v2.2/glib-2.2.1.tar.bz2 Version used: 2.2.1 Package size: 1.5 MB Estimated Disk space required: 18.7 MB Estimated build time: 0.87 SBU |
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.
glib depends on: pkgconfig-0.15.0 glib will utilize: gtk-doc-1.0 and xml-dtd-4.2 |
Install glib by running the following commands:
./configure --prefix=/usr && make && make install |
--enable-gtk-doc : This switch will rebuild the API documentation during the make command.
Download location (HTTP): http://umn.dl.sourceforge.net/sourceforge/expat/expat-1.95.6.tar.gz Version used: 1.95.6 Package size: 292 KB Estimated Disk space required: 3.2 MB Estimated build time: 0.25 SBU |
The expat package contains a stream oriented C library for parsing XML.
Download the patch for expat from http://downloads.linuxfromscratch.org/blfs-patches.
The expat.h declares XML_Status after its first use. This is corrected by the following patch:
patch -Np1 -i ../expat-1.95.6.patch |
Install expat by running the following commands:
./configure --prefix=/usr && make && make install |
xmlwf is a non-validating utility to check whether or not XML documents are well formed.
Download location (HTTP): http://www.stafford.uklinux.net/libesmtp/libesmtp-1.0.tar.bz2 Download location (FTP): Version used: 0.8.12 Package size: 249 KB Estimated Disk space required: 6.6 MB Estimated build time: 0.25 SBU |
The libesmtp package contains the libesmtp libraries which are used by some programs to manage email submission to a mail transport layer.
Install libesmtp by running the following commands:
./configure --prefix=/usr && make && make install |
The libesmtp library is used to manage submission of electronic mail to a Mail Transport Agent.
Download location (HTTP): Download location (FTP): ftp://ftp.gnu.org/gnu/aspell/aspell-0.50.3.tar.gz Version used: 0.50.3 Package size: 917 KB Estimated Disk space required: 9.4 MB |
The aspell package contains the aspell library, used to interface to spell checking libraries.
Install aspell by running the following commands:
./configure --prefix=/usr && make && make install |
After Aspell is installed at least one dictionary needs to be installed. You can find them at http://aspell.net/.
Install your dictionary or dictionaries by running the following commands:
./configure && make && make install |
Download location (HTTP): http://ftp.gnu.org/pub/gnu/guile/guile-1.4.1.tar.gz Download location (FTP): ftp://ftp.gnu.org/pub/gnu/guile/guile-1.4.1.tar.gz Version used: 1.4.1 Package size: 1.4 MB Estimated Disk space required: 12 MB |
The Guile package contains the Project GNU's extension language library. Guile also contains a stand alone Scheme interpreter.
Guile will utilize: readline-4.3 |
Install Guile by running the following commands:
./configure --prefix=/usr && make && make install |
As with most libraries, there is no configuration to do, save that the library directory i.e. /usr/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.
In addition to the libguile libraries, the Guile package contains guile, guile-config and guile-snarf.
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 pkgconfig-0.15.0 does.
guile-snarf a script to parse declarations in your C code for Scheme-visible C functions, Scheme objects to be used by C code, etc.
Download location (HTTP): http://www.swiss.ai.mit.edu/ftpdir/scm/slib2d5.tar.gz Download location (FTP): Version used: 2d5 Package size: 620 KB Estimated Disk space required: 2.9 MB |
The slib package is a scheme library used with Guile.
slib depends on: guile-1.4.1 |
Download location (HTTP): http://www.gnucash.org/pub/g-wrap/source/g-wrap-1.3.4.tar.gz Download location (FTP): Version used: 1.3.4 Package size: 400 KB Estimated Disk space required: 4.6 MB |
The G-Wrap package contains tools for exporting C libraries into Scheme interpreters.
G-Wrap depends on: guile-1.4.1 and slib-2d5 |
Install G-Wrap by running the following commands:
./configure --prefix=/usr && make && make install |
As with most libraries, there is no configuration to do, save that the library directory i.e. /usr/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.
g-wrap-config is a tool to generate CFLAGS for linking C code to the Scheme runtime libraries.
Download location (HTTP): http://www.stlport.org/archive/STLport-4.5.3.tar.gz Download location (FTP): Version used: 4.5.3 Package size: 728 KB Estimated Disk space required: 56 MB |
STLport is a multi-platform ANSI C++ Standard Library implementation featuring advanced techniques and optimizations for maximum efficiency, exception safety and thread safety, important extensions such as hash tables, and singly-linked list.
Download the STLport patches from http://downloads.linuxfromscratch.org/blfs-patches.
Install STLport by running the following commands.
patch -Np1 -i ../STLport-4.5.3-gcc3.patch && patch -Np1 -i ../STLport-4.5.3-g++-inc.patch && GCC_VERSION=`gcc -v 2>&1 | grep "gcc version " | sed -e "s:gcc version ::"` && cp stlport/config/stl_gcc.h stlport/config/stl_gcc.h.orig && sed -e "s:@GCC_VERSION@:$GCC_VERSION:" \ stlport/config/stl_gcc.h.orig > stlport/config/stl_gcc.h && cd src && ln -sf gcc-linux.mak Makefile && make && make INSTALLDIR=/usr install |
GCC_VERSION=... : STLport needs the location of the C++ headers, which are installed in /usr/include/c++/$GCC_VERSION if installed as per the instructions in LFS.
sed -e ... : Replace the location where STLport looks for C++ headers.
cd src : Change to the source directory.
ln -sf gcc-linux.mak Makefile : Use the appropriate makefile for our environment.
As with most libraries, there is no configuration to do, save that the library directory i.e. /usr/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.
You will need to reinstall STLport whenever you upgrade gcc since the STLport include files have a hard coded reference to the location where gcc includes are installed.
The STLport package contains STLport headers /usr/include/stlport and STLport dynamic and static libraries.
Depending on what your system will be used for, you may or may not require the graphics libraries. Most desktop machines will want them for use with graphical applications. Most servers on the other hand, will not require them.
Download location (HTTP): http://www.littlecms.com/lcms-1.09.tar.gz Download location (FTP): Version used: 1.09 Package size: 196 KB Estimated Disk space required: 4.9 MB Estimated build time: 0.29 SBU |
The lcms library is used by other programs to provide color management facilities.
As with most libraries, there is no configuration to do, save that the library directory i.e. /usr/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.
The lcms library is used by other programs to provide color management facilities.
Download location (HTTP): Download location (FTP): ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz Version used: 6b Package size: 599 KB Estimated Disk space required: 3.7 MB Estimated build time: 0.51 SBU |
The libjpeg package contains the jpeg libraries. These allow compression of image files based on the Joint Photographic Experts Group standard. It is a "lossy" compression algorithm.
Install libjpeg by running the following commands:
./configure --enable-static --enable-shared --prefix=/usr && make && make install |
./configure --enable-static --enable-shared --prefix=/usr : This command tells libjpeg to build both shared and static libraries and to install them with a base of /usr.
As with most libraries, there is no configuration to do, save that the library directory i.e. /usr/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.
The libjpeg package contains cjpeg, djpeg, jpegtran, rdjpgcom, wrjpgcom and libjpeg libraries.
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.
Download location (HTTP): http://www.libpng.org/pub/png/src/libpng-1.2.5.tar.bz2 Download location (FTP): ftp://swrinde.nde.swri.edu/pub/png/src/libpng-1.2.5.tar.gz Version used: 1.2.5 Package size: 376 KB Estimated Disk space required: 4.1 MB |
The libpng package contains the libpng libraries. These are used by other programs for reading and writing png files.
Download the patch to force linking of libpng to libz from http://downloads.linuxfromscratch.org/blfs-patches.
Install libpng by running the following commands:
patch -Np0 -i ../libpng-1.2.5-lz.patch && make prefix=/usr \ ZLIBINC=/usr/include ZLIBLIB=/usr/lib -f scripts/makefile.linux && make prefix=/usr install -f scripts/makefile.linux |
ZLIBINC=/usr/include ZLIBLIB=/usr/lib : This forces libpng to look for the zlib includes and libraries where we have them installed.
-f scripts/makefile.linux : This points make at the Linux version of the makefile as libpng doesn't use a autoconf routine instead coming with various makefiles for different platforms.
As with most libraries, there is no configuration to do, save that the library directory i.e. /usr/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.
The PNG library is 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.
Download location (HTTP): Download location (FTP): ftp://ftp.remotesensing.org/pub/libtiff/tiff-v3.5.7.tar.gz Version used: 3.5.7 Package size: 928 KB Estimated Disk space required: 5.9 MB Estimated build time: 0.26 SBU |
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.
Install libtiff by running the following commands:
./configure --prefix=/usr --noninteractive \ --with-DIR_MAN=/usr/share/man && make && make install |
--noninteractive : This switch is used to avoid the configuration routine asking for confirmation of the directories to install to (which we pass using switches to configure anyways).
--with-DIR_MAN=/usr/share/man : This is used because despite the fact we pass --prefix=/usr, the configure routine tries to install the man pages in /usr/local/man instead of the correct place.
As with most libraries, there is no configuration to do, save that the library directory i.e. /usr/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.
The libtiff package contains fax2ps, fax2tiff, gif2tiff, pal2rgb, ppm2tiff, ras2tiff, rgb2ycbcr, thumbnail, tiff2bw, tiff2ps, tiff2rgba, tiffcmp, tiffcp, tiffdither, tiffdump, tiffinfo, tiffmedian, tiffsplit and tiff libraries.
Download location (HTTP): http://www.linuxpackages.net/packages/Slackware-8/robert/libungif-4.1.0b1/source/libungif-4.1.0b1.tar.gz Download location (FTP): Version used: 4.1.0b1 Package size: 343 KB Estimated Disk space required: 3.1 MB Estimated build time: 0.24 SBU |
The libungif package contains libraries for reading all gifs and writing uncompressed ones 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.
The reason libungif only writes uncompressed gifs is due to a legal issue with LZW compression (which Unisys claims a patent on). Reading gifs is not a problem as the uncompression routines do not seem to be limited in this way. Note that this has in the past been disputed. The best way to avoid this whole mess is to simply use libungif for looking at gif images on the web, while in any pages which you design, use the open source png format instead (which uses, not surprisingly, the libpng library) which has no patent issues at all.
Install libungif by running the following commands:
./configure --prefix=/usr && make && make install |
Note: If you get an error during the make portion compiling lib/qprintf.c, edit the file and comment out or remove line 14: #include <config.h>
The libungif package contains gif2epsn, gif2ps, gif2rgb, 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, text2gif and libungif libraries.
Download location (HTTP): http://www.mirror.ac.uk/sites/download.sourceforge.net/pub/sourceforge/libmng/libmng-1.0.5.tar.gz Download location (FTP): ftp://unc.dl.sf.net/pub/sourceforge/libmng/libmng-1.0.5.tar.gz Version used: 1.0.5 Package size: 616 KB Estimated Disk space required: 5.8 MB Estimated build time: 0.93 SBU |
The libmng libraries are used by programs wanting to read and write mng files which are the animation equivalents to png files.
libmng depends on: libjpeg-6b and lcms-1.09 |
Install libmng by running the following commands:
./configure --prefix=/usr --with-zlib \ --with-jpeg --with-lcms && make && make install && cp doc/man/*.3 /usr/share/man/man3 && cp doc/man/*.5 /usr/share/man/man5 |
./configure --prefix=/usr --with-zlib \ --with-jpeg --with-lcms |
cp doc/man/*.X /usr/share/man/manX : The install procedure doesn't properly install the man pages so we do it manually.
libmng provides functions for programs wishing to read and write mng files which are animation files without the patent problems associated with certain other formats.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/imlib/1.9/imlib-1.9.14.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/imlib/1.9/imlib-1.9.14.tar.bz2 Version used: 1.9.14 Package size: 736 KB Estimated Disk space required: 8.6 MB |
The imlib package contains image libraries. These are useful for loading, rendering and dithering a wide variety of image data formats.
imlib depends on: xfree86-4.3.0, libjpeg-6b, libtiff-3.5.7, libungif-4.1.0b1, libpng-1.2.5 and GTK+-1.2.10 |
Install imlib by running the following commands:
CPPFLAGS=-w ./configure --prefix=/usr --sysconfdir=/etc/imlib && make && make install |
CPPFLAGS=-w : This disables gcc-3.2.1 warnings that confuse configure.
--sysconfdir=/etc/imlib : This installs and combines the configurations files into /etc instead of /usr/etc.
As with most libraries, there is no configuration to do, save that the library directory i.e. /usr/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.
imlib provides the functions for programs to display and edit a wide variety of image data formats.
Download location (HTTP): http://telia.dl.sourceforge.net/sourceforge/aa-project/aalib-1.4rc4.tar.gz Download location (FTP): ftp://ftp.sourceforge.net/pub/sourceforge/aa-project/aalib-1.4rc4.tar.gz Version used: 1.4rc4 Package size: 10 KB Estimated Disk space required: 1.2 MB Estimated build time: 0.31 SBU |
aalib is a library to render any graphic into ascii art.
aalib will utilize: xfree86-4.3.0 |
Install aalib by running the following commands:
./configure --prefix=/usr && make && make install |
As with most libraries, there is no configuration to do, save that the library directory i.e. /usr/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.
The aalib package contains the libaa libraries, aalib-config, aainfo, aatest and aasavefont.
The Ascii Art library 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.
Download location (HTTP): http://ftp.gnu.org/gnu/bc/bc-1.06.tar.gz Download location (FTP): ftp://ftp.gnu.org/gnu/bc/bc-1.06.tar.gz Version used: 1.06 Package size: 280 KB Estimated Disk space required: 1.6 MB Estimated build time: 0.07 SBU |
The bc package contains bc. This is an arbitrary precision numeric processing language.
bc depends on: readline-4.3 |
Download the patches for bc from http://downloads.linuxfromscratch.org/blfs-patches.
Install bc by running the following commands:
patch -Np1 -i ../bc-1.06-flex-invocation.patch && patch -Np1 -i ../bc-1.06-info.patch && patch -Np1 -i ../bc-1.06-readline.patch && ./configure --prefix=/usr --with-readline && make && make install |
Download location (HTTP): http://telia.dl.sourceforge.net/sourceforge/rep-gtk/rep-gtk-0.17.tar.gz Download location (FTP): Version used: 0.17 Package size: 144 KB Estimated Disk space required: 2.7 MB |
The rep-gtk package contains a Lisp and GTK binding. This is useful for extending GTK-2 and GDK libraries with Lisp. The rep-gtk-0.15 package contains the bindings to GTK and uses the same instructions. They can both can be installed, if needed.
rep-gtk depends on: GTK+-2.2.1, libglade-2.0.1 and librep-0.16.2 |
Install rep-gtk by running the following commands:
./configure --prefix=/usr && make && make install |
Lisp bindings are libraries stored in /usr/lib/rep/i686-pc-linux-gnu/gui/ that assist communications between Lisp and the GTK libraries.
Gpm (the general purpose mouse daemon) is a mouse server for applications running in the console. 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 generally. It is useful on desktops, especially if following (Beyond)LinuxFromScratch instructions - it's often much easier (and less error prone) to cut and paste between two console windows than to type everything by hand!
Download location (HTTP): Download location (FTP): ftp://arcana.linux.it/pub/gpm/gpm-1.20.1.tar.bz2 Version used: 1.20.1 Package size: 556 KB Estimated Disk space required: 3.2 MB |
The gpm package contains a mouse server for the console and xterm. This is useful for cutting and pasting text in console mode, and also because many console-based programs need it to compile mouse support into themselves.
Install gpm by running the following commands:
Note: The LDFLAGS environment variable must be set before configuring gpm.
LDFLAGS="-lm" ./configure --prefix=/usr && make && make install |
export LDFLAGS="-lm": The math library must be linked with gpm, as ceil() is used in some cursor scrolling logic. LDFLAGS is only needed if you optimize gpm for size.
The gpm init.d script can be created using the following commands: (This assumes that you have followed the LFS default of having your $rc_base set to /etc/rc.d)
cat > /etc/rc.d/init.d/gpm << "EOF" #!/bin/sh # Begin $rc_base/init.d/gpm # Based on sysklogd script from LFS-3.1 and earlier. # Rewritten by Gerard Beekmans - gerard@linuxfromscratch.org # GPM specific parts by Mark Hymers - markh@linuxfromscratch.org source /etc/sysconfig/rc source $rc_functions if [ -f /etc/sysconfig/mouse ] then source /etc/sysconfig/mouse fi if [ -z "$MDEVICE" ] || [ -z "$PROTOCOL" ] then echo "Please create an /etc/sysconfig/mouse file containing" echo "MDEVICE and PROTOCOL values" exit 1; fi case "$1" in start) echo "Starting gpm..." loadproc gpm -m $MDEVICE -t $PROTOCOL ;; stop) echo "Stopping gpm..." killproc gpm ;; restart) $0 stop sleep 1 $0 start ;; status) statusproc gpm ;; *) echo "Usage: $0 {start|stop|restart|status}" exit 1 ;; esac # End $rc_base/init.d/gpm EOF chmod 755 /etc/rc.d/init.d/gpm |
You then need to create symbolic links to this file in the relevant rc.d directories. For example:
cd /etc/rc.d/init.d && ln -sf ../init.d/gpm ../rc0.d/K10gpm && ln -sf ../init.d/gpm ../rc1.d/K10gpm && ln -sf ../init.d/gpm ../rc2.d/K10gpm && ln -sf ../init.d/gpm ../rc3.d/S70gpm && ln -sf ../init.d/gpm ../rc4.d/S70gpm && ln -sf ../init.d/gpm ../rc5.d/S70gpm && ln -sf ../init.d/gpm ../rc6.d/K10gpm |
/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:
cat > /etc/sysconfig/mouse << "EOF" # start /etc/sysconfig/mouse MDEVICE=yourdevice PROTOCOL=yourprotocol # end /etc/sysconfig/mouse EOF |
Examples of values to set MDEVICE and PROTOCOL to are
MDEVICE=/dev/psaux PROTOCOL=imps2 |
A list of which protocol values are known can be found by running gpm -t -help. Your 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. It is normally thought not a good idea to link /dev/mouse to the relevant device, but instead to reference it directly.
Download location (HTTP): http://fcron.free.fr/fcron-2.9.3.src.tar.gz Download location (FTP): ftp://ftp.seul.org/pub/fcron/fcron-2.9.3.src.tar.gz Version used: 2.9.3 Package size: 372 KB Estimated Disk space required: 2.7 MB |
The fcron package contains the fcron daemon. "It is a periodical command scheduler which aims at replacing Vixie Cron."
fcron recommends: local mail system (sendmail-8.12.9 or postfix-2.0.7, for example) fcron utilizes: Linux_PAM-0.77, openjade-1.3.2 and docbook-dsssl-1.78 |
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.
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.
/etc/rc.d/init.d/sysklogd reload |
Install fcron by running the following commands:
./configure && make && make install |
Fcron does not require a mail transfer agent (MTA) to run, but will use one if it is installed to email you the results of the fcron script. If you wish to install without a MTA, run the following commands:
./configure --without-sendmail && make && make install |
--with-dsssl-dir=/usr/share/sgml/docbook/dsssl-stylesheets-1.78 : Can be added IF you have installed openjade and dsssl-stylesheets.
After the files are installed, the make install script enters into a configuration routine. The first test will be for a group named fcron. If it does not exist, you will be given the command line that the script proposes to run and a prompt for a 'y' or 'n'. This is repeated to create a user named fcron and to install a script in the init.d directory with the appropriate symbolic links in runlevels 2, 3, 4, and 5. The final configuration step is to stop any current fcron processes and start the new fcron. A yes here will stop current fcron processes and will start the new fcron. The following commands will overwrite the fcron script with one based upon the BLFS template:
cat > /etc/rc.d/init.d/fcron << "EOF" #!/bin/sh # Begin $rc_base/init.d/fcron # Based on sysklogd script from LFS-3.1 and earlier. # Rewritten by Gerard Beekmans - gerard@linuxfromscratch.org source /etc/sysconfig/rc source $rc_functions case "$1" in start) echo "Starting fcron..." loadproc fcron ;; stop) echo "Stopping fcron..." killproc fcron ;; restart) $0 stop sleep 1 $0 start ;; status) statusproc fcron ;; *) echo "Usage: $0 {start|stop|restart|status}" exit 1 ;; esac # End $rc_base/init.d/fcron EOF chmod 755 /etc/rc.d/init.d/fcron && mv /etc/rc.d/rc0.d/K60fcron /etc/rc.d/rc0.d/K08fcron && mv /etc/rc.d/rc6.d/K60fcron /etc/rc.d/rc6.d/K08fcron |
/etc/fcron.conf, /etc/fcron.allow, /etc/fcron.deny
There are no required changes in any of these files. Configuration information can be found in the man page for fcron.conf.
fcron scripts are written using fcrontab. Refer to the man page for fcrontab for proper parameters for your situation.
Download location (HTTP): http://ftp.ibiblio.org/pub/Linux/system/hardware/hdparm-5.3.tar.gz Download location (FTP): ftp://ftp.ibiblio.org/pub/Linux/system/hardware/hdparm-5.3.tar.gz Version used: 5.3 Package size: 36 KB Estimated Disk space required: 257 KB |
The hdparm package contains the hdparm utility. This 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, we recommend you leave the default kernel parameters alone.
Install hdparm by running the following commands:
make && make install |
Note that by default, hdparm is installed in /sbin as some systems may require it on bootup before /usr is mounted. If you wish to install hdparm under the /usr hierarchy, then replace the above commands with the following:
make && make binprefix=/usr install |
hdparm provides a command line interface to various hard disk ioctls supported by the stock Linux ATA/IDE device driver subsystem.
The presence / absence of the which program in the main LFS book is probably one of the most contentious issues we have on the mailing lists. It has resulted in at least one flame war in the recent past. To hopefully put an end to this once and for all, we here present two of the options for equipping your system with "which".
The first option is to install the actual GNU program which.
Download location (HTTP): http://ftp.gnu.org/gnu/which/which-2.14.tar.gz Download location (FTP): ftp://ftp.gnu.org/gnu/which/which-2.14.tar.gz Version used: 2.14 Package size: 110 KB Estimated Disk space required: 719 KB |
Install which by running the following commands:
./configure --prefix=/usr && make && make install |
The second option (for those who don't want to install the program) is to create a simple script:
cat > /usr/bin/which << "EOF" #!/bin/bash type -p "$@" EOF chmod 755 /usr/bin/which chown root:root /usr/bin/which |
This should generally work OK and is probably the easiest solution for boxes which don't need a good user environment to work in.
Download location (HTTP): http://www.mirror.ac.uk/sites/ftp.info-zip.org/pub/infozip/src/unzip550.tar.gz Download location (FTP): ftp://ftp.info-zip.org/pub/infozip/src/unzip550.tar.gz Version used: 5.50 Package size: 1.1 MB Estimated Disk space required: 5.8 MB Estimated build time: 0.42 SBU |
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 ms-dos environment.
Download the two patches from http://downloads.linuxfromscratch.org/blfs-patches. The patches begin with unzip-5.50.
Install unzip by running the following commands:
patch -Np1 -i ../unzip-5.50-fix-Makefile.patch && patch -Np1 -i ../unzip-5.50-fix-libz.patch && cp unix/Makefile . && make prefix=/usr linux && make prefix=/usr linux_shlibz && make prefix=/usr install && cp -a libunzip.so* /usr/lib |
make prefix=/usr linux : This command overrides the prefix variable that is set to /usr/local in the Makefile and builds the executables for a linux system. The alternatives to 'linux' can be seen with a 'make list' command.
make prefix=/usr linux_shlibz : Build shared libunzip and link unzip against it and zlib.
unzip lists, tests or extracts files from a ZIP archive.
unzipfsx is the 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.
zipinfo produces technical information about the files in a ZIP archive, including file access permissions, encryption status, type of compression, etc.
Download location (HTTP): http://www.mirror.ac.uk/sites/ftp.info-zip.org/pub/infozip/src/zip23.tar.gz Download location (FTP): ftp://ftp.info-zip.org/pub/infozip/src/zip23.tar.gz Version used: 2.3 Package size: 839 KB Estimated Disk space required: 3.6 MB Estimated build time: 0.25 SBU |
The zip package contains ZIP utilities. These are useful for compressing files into ZIP archives.
Install zip by running the following commands:
cp unix/Makefile . && make prefix=/usr generic_gcc && make prefix=/usr install |
make prefix=/usr generic_gcc : This command overrides the prefix variable that is set to /usr/local in the Makefile and builds the executables for a linux system. The alternatives to 'generic_gcc' can be seen with a 'make list' command.
zip compresses files into a ZIP archive.
zipcloak is disabled in this version of zip. It will display a message about how to support encryption by recompiling with zcrypt27.zip.
Download location (HTTP): http://www.kernel.org/pub/software/utils/pciutils/pciutils-2.1.10.tar.bz2 Download location (FTP): ftp://ftp.kernel.org/pub/software/utils/pciutils/pciutils-2.1.10.tar.bz2 Version used: 2.1.10 Package size: 98 KB Estimated Disk space required: 638 KB |
The pciutils package contains lspci and setpci. These programs are useful for PCI bus configuration.
Install pciutils by running the following commands:
make PREFIX=/usr && make PREFIX=/usr install |
lspci is a utility for displaying information about all PCI buses in the system and all devices connected to them.
Download location (HTTP): http://www.freedesktop.org/software/pkgconfig/releases/pkgconfig-0.15.0.tar.gz Download location (FTP): Version used: 0.15.0 Package size: 604 KB Estimated Disk space required: 5.2 MB Estimated build time: 0.40 SBU |
The pkgconfig package contains pkg-config. This is useful for passing the include path and/or library path to the compiler during the make script.
Install pkgconfig by running the following commands:
./configure --prefix=/usr && make && make install |
Add to your system or personal profile:
export PKG_CONFIG_PATH=/usr/X11R6/lib/pkgconfig |
The default settings for PKG_CONFIG_PATH are /lib/pkgconfig, /usr/lib/pkgconfig and /usr/local/lib/pkgconfig. These settings are hard-coded and do not have to be exported with the additional paths.
pkg-config is a function that returns meta information for the specified library.
Download location (HTTP): http://ftp.gnu.org/pub/gnu/cpio/cpio-2.5.tar.gz Download location (FTP): ftp://ftp.gnu.org/pub/gnu/cpio/cpio-2.5.tar.gz Version used: 2.5 Package size: 188 KB Estimated Disk space required: 1 MB Estimated build time: 0.06 SBU |
The cpio package contains cpio. This is useful for archiving.
Install cpio by running the following commands:
./configure --prefix=/usr --libexec=/usr/sbin \ --bindir=/bin && make && make install |
--libexec=/usr/bin : This command installs rmt to /usr/sbin instead of /usr/libexec.
--bindir=/bin : This command installs cpio to /bin instead of /usr/bin as per FHS guidelines.
Download location (HTTP): http://www.python.org/ftp/python/2.2.2/Python-2.2.2.tgz Download location (FTP): ftp://ftp.python.org/pub/python/2.2.2/Python-2.2.2.tgz Version used: 2.2.2 Package size: 6.5 MB Estimated Disk space required: 59.7 MB Estimated build time: 2.45 SBU |
The Python package contains the python development environment. This is useful for object-oriented programming, writing scripts, prototyping large programs or developing them entirely.
Python will utilize: expat-1.95.6 |
Install Python by running the following commands:
./configure --prefix=/usr && make && make install |
The perl module packages add useful objects to the Perl language. Modules utilized by packages throughout BLFS are listed here along with their dependencies.
PDL-2.3.4 Astro-FITS-Header-2.2 Gtk-Perl-0.7008 XML-Writer-0.4 XML-Parser-2.31 Parse-RecDescent-1.80 |
Install perl modules by running the following commands:
perl Makefile.PL && make && make install |
Below are installation instructions for modules that happen to be broken at the present time.
Gtk-Perl-0.7008:
perl Makefile.PL --without-guessing && make cp Gtk/Makefile Gtk/Makefile.bak && sed '/^OBJECT/s/xs/./g' Gtk/Makefile.bak > Gtk/Makefile && cp Gtk/Makefile Gtk/Makefile.bak && sed '/^OBJECT/s/build/./g' Gtk/Makefile.bak > Gtk/Makefile && make && make install |
Download location (HTTP): http://telia.dl.sourceforge.net/sourceforge/librep/librep-0.16.2.tar.gz Download location (FTP): Version used: 0.16.2 Package size: 896 KB Estimated Disk space required: 6.8 MB Estimated build time: 1.46 SBU |
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.
librep depends on: gmp-4.1.2 and gdbm-1.8.3 librep will utilize: readline-4.3 |
Install librep by running the following commands:
./configure --prefix=/usr --libexec=/usr/lib --mandir=/usr/share/man \ --infodir=/usr/share/info && make && make install |
--libexec=/usr/lib : This command installs files to /usr/lib/rep instead of /user/libexec/rep.
Download location (HTTP): http://freshmeat.net/projects/sunjdk Download location (FTP): Version used (binary): 1.4.1_02 Version used (source): 1.4.1 Package size (binary): 59 MB Package size (source): 77 MB Estimated Disk space required: 1810 MB |
The j2sdk 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. The precompiled binary is linked against gcc2 libraries. Due to the incompatibilities between gcc2 and gcc3, the precompiled java plugin causes problems when gcc3 compiled packages (for example mozilla) try to load the java plugin. The source package requires registration at the Sun developer site and accepting the Sun Community Source License. The source code cannot be downloaded from some countries, so for users from those countries, the binary may be the only option.
Even if you plan on compiling the jdk source, you will need to download the binary version to bootstrap the jdk build. Follow the above link to download both source and binary packages. When downloading the source also download the mozilla headers package available at the same location.
Download the patches for j2sdk source from http://downloads.linuxfromscratch.org/blfs-patches.
If you have difficulties in building the jdk, check out the javafromscratch hint at http://www.linuxfromscratch.org/~tushar/ for some workarounds.
For users who cannot download the j2sdk source owing to license restrictions, blackdown has a gcc3 based precompiled version. Check out http://www.blackdown.org/ for more information.
j2sdk depends on: xfree86-4.3.0, zip-2.3, unzip-5.50, cpio-2.5, tcsh-6.12 and gcc-2.95.3 |
Both versions will be installed in parallel. You may choose to keep either or both.
Install the binary version of the jdk by running the following commands:
VERSION=1.4.1_02 && MV=`echo $VERSION | cut -d "_" -f 1,1` && V=`echo ${VERSION} | sed -e "s/\./_/g"` && T=`grep -a tail j2sdk-${V}-linux-i?86.bin | cut -f 2 -d " "` && tail $T j2sdk-${V}-linux-i?86.bin > install.sfx.$$ && chmod +x install.sfx.$$ && ./install.sfx.$$ && cd j2sdk${VERSION} && install -d /opt/j2sdk/j2sdk-precompiled-${MV} && mv * /opt/j2sdk/j2sdk-precompiled-${MV} |
The binary version is now installed.
If you don't want to compile the source, skip ahead to the configuration section.
Add the recently compiled JDK to the path.
export JAVA_HOME=/opt/j2sdk/j2sdk-precompiled-${MV} && export PATH=$PATH:${JAVA_HOME}/bin |
Unzip and patch the source:
VERSION=1.4.1 && V=`echo $VERSION | sed -e "s/\./_/g"` && unzip j2sdk-${V}-src-scsl.zip && unzip j2sdk-${V}-mozilla_headers-unix.zip && patch -Np1 -i j2sdk-${VERSION}-fix-intl-files.patch && patch -Np1 -i j2sdk-${VERSION}-link-missing-libs.patch && patch -Np1 -i j2sdk-${VERSION}-remove-fixed-paths.patch && patch -Np1 -i j2sdk-${VERSION}-syntax-fixes.patch && patch -Np1 -i j2sdk-${VERSION}-use-included-motif.patch |
Set some vars which affect the build:
export ALT_BOOTDIR="$JAVA_HOME" && unset JAVA_HOME && unset CLASSPATH unset CFLAGS unset CXXFLAGS unset LDFLAGS export ALT_DEVTOOLS_PATH="/usr/bin" && export BUILD_NUMBER="blfs-`date +%s`" && export DEV_ONLY=true && export ALT_MOZILLA_PATH=$PWD && export INSANE=true && export MAKE_VERBOSE=true && export ALT_CACERTS_FILE=${ALT_BOOTDIR}/jre/lib/security/cacerts |
The included motif doesn't build properly with the current glibc/xfree86. A solution is to build the motif library before compiling the j2sdk. Note that the motif build fails during the first run owing to some syntax error. The brute force and easiest solution is to rerun the make command:)
cd motif/lib/Xm && make || make && cd ../../.. |
Make and Install j2sdk with the following commands. There will be a lot of messages about missing files that look like errors. As long as the build doesn't stop, the messages are harmless, so ignore them.
cd control/make && make && cd ../.. && cd control/build/linux-i?86 && cp -a j2sdk-image /opt/j2sdk/j2sdk-1.4.1 |
T=`grep... : Determines the part where the tarfile begins in the self extracting archive.
patch -Np1 -i j2sdk-${VERSION}-fix-intl-files.patch : Patch to fix duplicate messages in the intl files.
patch -Np1 -i j2sdk-${VERSION}-link-missing-libs.patch : Patch to add missing libs to fix unresolved symbols.
patch -Np1 -i j2sdk-${VERSION}-remove-fixed-paths.patch : The build wants the binaries in specific locations, this patch modifies this to use the current PATH environment to find binaries.
patch -Np1 -i j2sdk-${VERSION}-syntax-fixes.patch : Patch to fix syntax for gcc3.
patch -Np1 -i j2sdk-${VERSION}-use-included-motif.patch : Patch to rename the internal motif library to avoid conflicts with an incompatible system installed version.
export ALT_BOOTDIR="$JAVA_HOME" : This var sets location of the bootstrap JDK.
export ALT_MOZILLA_PATH=$PWD : This sets the variable that points to where you unzipped the mozilla headers.
export ALT_DEVTOOLS_PATH="/usr/bin" : This changes the location where the build finds the needed executables.
export BUILD_NUMBER="blfs-`date +%s`" : This will help you identify this compiled version of the runtime environment and virtual machine by appending this information to the version in the output to "java -version".
export DEV_ONLY=true : This command eliminates compiling the documentation and eliminates a dependency for rpm.
unset JAVA_HOME : This clears the JAVA_HOME variable and prevents misdirection during compile.
unset CLASSPATH : This clears the CLASSPATH variable and prevents misdirection during compile.
unset CFLAGS... : These flags cause miscompilation of the build. Never set these.
export INSANE=true : Unless you specify that you are insane the build will not proceed. The certified platform for the build is Redhat 6.1. The above variable ensures that all the errors related to compiling on a non-certified platform will be converted to warnings.
export MAKE_VERBOSE=true : Allows the current compilation command to be displayed on the console.
export ALT_CACERTS_FILE... : Specifies the certificate file to use.
We have two Java 2 SDK's installed in /opt/j2sdk. Decide on which one you would like to use as the default. For example if you decide to use the source compiled j2sdk, do the following:
ln -nsf j2sdk-1.4.1 /opt/j2sdk/j2sdk |
Add the following lines to your shell startup file (e.g. /etc/profile).
export JAVA_HOME=/opt/j2sdk/j2sdk export PATH=$PATH:$JAVA_HOME/bin |
Add $JAVA_HOME/man to your MANPATH variable or to /etc/man.conf
The java plugin is in the directory $JAVA_HOME/jre/plugin/i?86/ns610/. Make a symbolic link to the file in that directory from your plugins directory.
The j2sdk package contains appletviewer, extcheck, idlj, jar, jarsigner, java, javac, javadoc, javah, javap, jdb, keytool, native2ascii, orbd, policytool, rmic, rmid, rmiregistry, rmiregistry, serialver, servertool and tnameserv.
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.
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 that class's 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.
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.
rmic generates stub and skeleton class files for remote objects from the names of compiled Java classes that contain remote object implementations.
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.
Download location (HTTP): Download location (FTP): ftp://ftp.ruby-lang.org/pub/ruby/ruby-1.6.8.tar.gz Version used: 1.6.8 Package size: 1 MB Estimated Disk space required: 9.2 MB Estimated build time: 0.92 SBU |
The ruby package contains the ruby development environment. This is useful for object-oriented scripting.
Install ruby by running the following commands:
./configure --prefix=/usr && make && make install |
ruby is an interpreted scripting language for quick and easy object-oriented programming.
Download location (HTTP): Download location (FTP): ftp://cs.nyu.edu/pub/gnat/3.14p/gnat-3.14p-i686-pc-linux-gnu-bin.tar.gz Version used: 3.14p Package size: 10.5 MB Estimated Disk space required: 40 MB |
The gnat package contains a precompiled Ada compiler. This package is used to satisfy the circular dependency when you recompile gcc to include ada.
You may skip installation of gnat if you do not want to recompile gcc with ada support.
gnat depends on: tcsh-6.12 |
Install gnat by running the following commands:
./doconfig |
The above script will ask you how and where you would like to install gnat. To avoid conflicts with the system gcc, the package will be installed in a separate directory, that can later be removed from the system.
In response to the questions asked by the doconfig script, enter 3 in response to the first question and /opt/gnat in response to the second question.
To finish the install, run
./doinstall |
The gnat compiler can be invoked by executing the gcc binary installed by the above script. To avoid conflicts with the system gcc, we will rename the gcc command.
cd /opt/gnat/bin && mv gcc gnatgcc && cd real && mv gcc gnatgcc |
Download location (HTTP): http://mirrors.rcn.net/pub/sourceware/gcc/releases/gcc-3.2.1/gcc-3.2.1.tar.bz2 Download location (FTP): ftp://mirrors.rcn.net/pub/sourceware/gcc/releases/gcc-3.2.1/gcc-3.2.1.tar.bz2 Version used: 3.2.1 Package size: 20.1 MB Estimated Disk space required: 591 MB |
The gcc package contains GNU compilers. This is useful for compiling programs written in Ada, C, C++, Fortran, Java and Objective C.
Install gcc by running the following commands:
PATH_HOLD=$PATH && export PATH=$PATH:/opt/gnat/bin && cd gcc/ada && touch treeprs.ads [es]info.h nmake.ad[bs] && cd ../.. && mkdir ../gcc-build && cd ../gcc-build && ../gcc-3.2.1/configure --prefix=/usr --enable-shared \ --enable-languages=c,c++,objc,f77,ada,java --enable-threads=posix \ --enable-__cxa_atexit --enable-clocale=gnu && make bootstrap && make -C gcc gnatlib_and_tools && make install-no-fixedincludes && ln -sf g77 /usr/bin/f77 && export PATH=$PATH_HOLD |
You may remove the gnat installation:
rm -rf /opt/gnat |
PATH_HOLD=$PATH : This command stores your current path before it's modified so that it can be restored after installation.
export PATH=$PATH:/opt/gnat/bin : This command allows the build to find gnat's Ada compiler to build Ada.
touch treeprs.ads [es]info.h nmake.ad[bs] : This command creates necessary files for the Ada build. This step may be skipped if you don't want to compile the ada frontend.
--enable-languages=c,c++,objc,f77,ada,java : This command builds all available languages in the gcc package. You may modify this command to remove unwanted languages.
--enable-shared --enable-threads=posix --enable-__cxa_atexit : These commands are required to build the C++ libraries to published standards.
--enable-clocale=gnu : This command is a failsafe for incomplete locale data.
make gnatlib_and tools : This command completes the Ada build process. Skip this step if you have not enabled ADA as one of the languages.
The gcc package contains c++, c++filt, cpp, g++, g77, gcc, gccbug, gcov, glob, gnat, gnatbind, gnatbl, gnatchop, gnatfind, gnatkr, gnatlink, gnatls, gnatmake, gnatprep, gnatpsta, gnatpsys, gnatxref and gcc libraries.
The programs and libraries whose descriptions are missing here have been described in the LFS gcc-3.2.1 page.
add2line converts the ASCII form of the 2-line orbital elements in a file to binary form and appends them to the orbdata files.
gnatchop is useful for renaming files to meet the standard Ada default file naming conventions.
gnatkr is used to determine the crunched name for a given file, when crunched to a specified maximum length.
gnatmem is the GNAT utility that monitors dynamic allocation and deallocation activity in a program.
gnatpsta determines the values of all the relevant parameters in Standard and outputs to stdout.
gnatpsys determines the values of all the relevant parameters in System and outputs to stdout.
Download location (FTP): ftp://ftp.gnu.org/gnu/gcc/gcc-2.95.3.tar.gz Version used: 2.95.3 Package size: 7 MB Estimated Disk space required: 104 MB |
There are two reasons for installing gcc-2.95.3. The first is that the kernel developers have certified gcc-2.95.3 as the preferred compiler for compiling the kernel. The other (and more compelling reason) is that some commercial closed-source packages (such as Netscape Navigator, Yahoo Pager) and precompiled packages (such as Mozilla) are linked against gcc-2.95.3 libs.
Download the gcc patches from http://downloads.linuxfromscratch.org/blfs-patches.
Apply the two patches, one to fix compilation and the other to stop the fixincludes script from executing.
patch -Np1 -i ../gcc-2.95.3-1.patch && patch -Np1 -i ../gcc-2.95.3-no-fixinc.patch |
The gcc development team recommends building in a separate directory.
mkdir ../gcc-build && cd ../gcc-build |
Configure gcc to build the C and C++ compilers and enable the related C++ options.
../gcc-2.95.3/configure \ --prefix=/opt/gcc2 \ --enable-shared --enable-languages=c,c++ \ --enable-threads=posix |
Compile and install gcc and remove unneeded directories (adjust the machine triplet to match your architecture).
make bootstrap && make install && ln -sf gcc /opt/gcc2/bin/cc && rm -rf /opt/gcc2/{i686-pc-linux-gnu,info,man} |
Make note of the library that is installed.
L=`find /opt/gcc2/lib -name "*libstdc++*.so" -type f` && IL=`basename $L` |
Move the C++ libraries to the standard lib directory to avoid having to add /opt/gcc2/lib to /etc/ld.so.conf.
for i in /opt/gcc2/lib/*.so*; do mv -f $i /usr/lib; ln -sf /usr/lib/`basename $i` /opt/gcc2/lib; done |
Create symlinks required by commercial and precompiled packages.
ln -sf $IL /usr/lib/libstdc++-libc6.1-1.so.2 && ln -sf $IL /usr/lib/libstdc++-libc6.2-2.so.3 && ln -sf $IL /usr/lib/libstdc++-libc6.3-2.so.3 |
As with most libraries, there is no configuration to do, save that the library directory i.e. /usr/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.
The instructions given above make compatibility symlinks that pre-compiled packages in BLFS require. You may create additional compatibility links based on your requirements.
If you only need the gcc-2.95.3 libraries, you may delete /opt/gcc2.
Whenever you need to use gcc-2.95.3 instead of you system installed compiler, add /opt/gcc2/bin to the front of your PATH before compiling the concerned package.
The gcc-2.95.3 package contains the gcc-2.95.3 C and C++ compilers and gcc-2.95.3 libstdc++.so that is required by some commercial and pre-compiled packages.
The LFS book covers setting up networking with a static IP. There are however, other methods which are used to connect to networks and importantly the internet. We cover the most popular methods in this chapter.
Download location (HTTP): Download location (FTP): ftp://cs.anu.edu.au/pub/software/ppp/ppp-2.4.1.tar.gz Version used: 2.4.1 Package size: 524 KB Estimated Disk space required: 4.1 MB |
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 connection to an ISP.
ppp needs nothing to compile but you must have PPP support either compiled in or as a kernel module to use it. |
Install ppp by running the following commands:
./configure && make && make install |
/etc/ppp/*
The ppp daemon itself requires very little configuration. The main trick is script the connection. This can be done either using the chat program which comes with this package or by using wvdial-1.53.
The chat program 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's pppd process.
Download location (HTTP): http://open.nit.ca/download/wvdial-1.53.tar.gz Download location (FTP): Version used: 1.53 Package size: 66 KB Estimated Disk space required: 2.5 MB |
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.
wvdial depends on: wvstreams-3.70 and ppp-2.4.1 |
Install wvdial by running the following commands:
make PREFIX=/usr && make PREFIX=/usr install && |
/etc/wvdial.conf, /etc/ppp/*
wvdialconf /etc/wvdial.conf |
You then start wvdial with:
wvdial. |
For more information examine the wvdialconf, wvdial.conf and wvdial man pages.
DHCP stands for Dynamic Host Configuration Protocol. It is a protocol which is 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.
We currently provide installation instructions for two DHCP clients, dhclient (from the dhcp package) and dhcpcd. We begin with a page which shows how to alter the LFS bootscripts for generic DHCP support. We then present the two sets of installation instructions which also discuss how to create an appropriate configuration file to work with the DHCP client of your choice.
/etc/sysconfig/network, /etc/sysconfig/network-devices/ifup-eth0, /etc/sysconfig/network-devices/ifdown-eth0, /etc/sysconfig/network-devices/ifconfig.eth0
Note that on this and the following pages, we use eth0 as the example interface. If you want to configure a different (or more than one) interface, simply replace eth0 with the interface you wish to use.
These instructions will convert the configuration files from LFS (a static configuration) to a configuration using the DHCP protocol. Note that static and DHCP-based interfaces can co-exist on a LFS system. To do this, you should only make the alterations to those interfaces which need to support DHCP. All of the instructions on this page are applicable no matter which DHCP client you intend to use.
If the interface you intend to use as your default gateway is going to use DHCP, the first step is to remove the GATEWAY and GATEWAY_IF variables from /etc/sysconfig/network. This will only need to be done once.
cd /etc/sysconfig && cp network network.bak && sed "s/GATEWAY/# GATEWAY/" network.bak > network |
You then need to create scripts which will override the default network scripts and provide DHCP support. These two scripts are generic and so for use with both DHCP clients. First, the ifup-eth0 script:
cat > /etc/sysconfig/network-devices/ifup-eth0 << "EOF" #!/bin/sh source /etc/sysconfig/rc || exit source $rc_functions || exit source $network_devices/ifconfig.eth0 || exit echo "Bringing up the eth0 interface..." modprobe eth0 loadproc $DHCP_PROG $DHCP_START EOF |
Then the ifdown-eth0 script:
cat > /etc/sysconfig/network-devices/ifdown-eth0 << "EOF" #!/bin/sh source /etc/sysconfig/rc || exit source $rc_functions || exit source $network_devices/ifconfig.eth0 || exit echo "Bringing down the eth0 interface..." $DHCP_PROG $DHCP_STOP evaluate_retval EOF |
Finally, we need to make these scripts executable:
chmod 755 /etc/sysconfig/network-devices/ifup-eth0 && chmod 755 /etc/sysconfig/network-devices/ifdown-eth0 |
The dhcp package comes with both a client (called dhclient) and a server program for using DHCP. If you want to install this package, the instructions can be found at dhcp-3.0pl2. 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).
To configure dhclient, you need to create two files, /etc/sysconfig/network-devices/ifconfig.eth0 and /etc/dhclient.conf.
First, create the ifconfig.eth0 file with the following commands (note that this will overwrite any existing file):
cd /etc/sysconfig/network-devices && cat > /etc/sysconfig/network-devices/ifconfig.eth0 << "EOF" ONBOOT=yes DHCP_PROG=/sbin/dhclient DHCP_START=<appropriate start parameters> DHCP_STOP=-r EOF |
For more information on the appropriate DHCP_START and DHCP_STOP values, examine the man page for dhclient.
Next, you should then create the /etc/dhclient.conf using the following command:
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 |
Download location (HTTP): Download location (FTP): ftp://ftp.phystech.com/pub/dhcpcd-1.3.22-pl4.tar.gz Version used: 1.3.22-pl4 Package size: 145 KB Estimated Disk space required: 750 KB |
The dhcpcd package contains the dhcpcd client. This is useful for connecting your computer to a network which uses DHCP to assign network addresses.
Before installing dhcpcd, you need to download dhcpcd-1.3.22-pl4.patch from http://downloads.linuxfromscratch.org/blfs-patches and place it to your source directory.
Install dhcpcd by running the following commands:
patch -Np1 -i ../dhcpcd-1.3.22-pl4.patch && ./configure --prefix="" --sysconfdir=/var/lib \ --mandir=/usr/share/man && make && make install |
patch -Np1 -i ../dhcpcd-1.3.22-pl4.patch : Dhcpcd unpatched puts all configuration and temporary files in /etc/dhcpc. This becomes very annoying when dhcpcd tells you it's running and it's not. You look in /var/run for the pid file, but it's not there, the pid file that needs deleting is in /etc/dhcpc. This patch brings this program into FHS compliance, but more importantly, puts files where you expect them to be.
--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.
--sysconfdir=/var/lib : This command install configuration files in the /var/lib directory.
--mandir=/usr/share/man : This command install the man pages to the /usr/share/man directory.
/var/lib/dhcpc/*
To configure dhcpcd, create the ifconfig.eth0 file with the following commands (note that this will overwrite any existing file):
cd /etc/sysconfig/network-devices && cat > ifconfig.eth0 << "EOF" ONBOOT=yes DHCP_PROG=/sbin/dhcpcd DHCP_START=<appropriate start parameters> DHCP_STOP=-k EOF |
For more information on the appropriate DHCP_START and DHCP_STOP values, examine the man page for dhcpcd.
dhcpcd is an implementation of the DHCP client specified in RFC2131 and RFC1541 (depending on which options are specified).
Download location (HTTP): http://curl.haxx.se/download/curl-7.10.4.tar.bz2 Download location (FTP): ftp://ftp.sunet.se/pub/www/utilities/curl/curl-7.10.4.tar.bz2 Version used: 7.10.4 Package size: 860 KB Estimated Disk space required: 7.2 MB Estimated build time: 0.65 SBU |
The curl package contains curl and its support library. This is useful for transferring files with URL syntax. For example, curl http://curl.haxx.se/download/curl-7.10.4.tar.gz > curl-7.10.4.tar.gz would download this program's tarball to the current directory. This ability to both download and redirect files can be incorporated into other programs to support functions like streaming media.
curl will utilize: openssl-0.9.7a and openldap-2.1.17 |
Install curl by running the following commands:
./configure --prefix=/usr && make && make install |
curl is a client that can get documents from or send documents to any of the following protocols: HTTP, HTTPS (needs openssl), FTP, GOPHER, DICT, TELNET, LDAP (needs openldap) or FILE.
curl-config prints information about the last compile, like libraries linked to and prefix setting.
Download location (HTTP): http://open.nit.ca/download/wvstreams-3.70.tar.gz Download location (FTP): Version used: 3.70 Package size: 178 KB Estimated Disk space required: 9.6 MB |
The wvstreams package contains the libwvutils, libwvstreams and libwvcrypto libraries. These are needed to compile wvdial.
wvstreams depends on: openssl-0.9.7a to build the wvcrypto library |
Download the wvstreams patches from http://downloads.linuxfromscratch.org/blfs-patches. The wvcrypto patch is only necessary for openssl-0.9.7 or greater.
Install wvstreams by running the following commands:
patch -Np1 -i ../wvstreams-3.70-wvcrypto.patch && patch -Np1 -i ../wvstreams-3.70-wvresolver.patch && make PREFIX=/usr LDFLAGS="-lcrypt" && make PREFIX=/usr install |
As with most libraries, there is no configuration to do, save that the library directory i.e. /usr/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.
The wvstreams package contains the libwvcrypto libraries, libwvstreams libraries and libwvutils libraries.
Download location (HTTP): http://gnetlibrary.org/src/gnet-1.1.8.tar.gz Download location (FTP): Version used: 1.1.8 Package size: 348 KB Estimated Disk space required: 3.1 MB Estimated build time: 0.42 SBU |
The gnet package contains a simple network library. This is useful for supporting TCP sockets, UDP and IP multicast, asynchronous DNS lookup, and more.
gnet depends on: GLib-2.2.1 |
Install gnet by running the following commands:
./configure --prefix=/usr --enable-glib2 && make && make install |
--enable-glib2 : This switch ensures that gnet will link against GLib2. Configure defaults to GLib, if it is installed, instead of GLib2.
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). We currently have installation instructions for three console web browsers:
Download location (HTTP): http://artax.karlin.mff.cuni.cz/~mikulas/links/download/links-0.98.tar.gz Download location (FTP): Version used: 0.98 Package size: 540 KB Estimated Disk space required: 4.7 MB |
Links is a text-based, frame friendly, WWW browser.
Links will utilize: openssl-0.9.7a and gpm-1.20.1 |
Install links by running the following commands:
./configure --prefix=/usr && make && make install |
~/.links/*
Links stores its configuration in per-user files in the ~/.links directory. These files are created automatically when links is run.
Download location (HTTP): http://lynx.isc.org/release/lynx2.8.4.tar.bz2 Download location (FTP): Version used: 2.8.4 Package size: 1.9 MB Estimated Disk space required: 16 MB |
Lynx is a text based web browser.
lynx depends on: openssl-0.9.7a |
Install lynx by running the following commands.
./configure --prefix=/usr --libdir=/etc --with-ssl --with-zlib && make && make install && make DOCDIR=/usr/share/doc/lynx-2.8.4/lynx_doc \ HELPDIR=/usr/share/doc/lynx-2.8.4/lynx_help install-doc && make DOCDIR=/usr/share/doc/lynx-2.8.4/lynx_doc \ HELPDIR=/usr/share/doc/lynx-2.8.4/lynx_help install-help && sed s/"t\/etc"/"t\/usr\/share\/doc\/lynx\-2\.8\.4"/ \ /etc/lynx.cfg > /etc/lynx.bak && mv /etc/lynx.bak /etc/lynx.cfg |
--libdir=/etc : For some reason, the configure and make routine for lynx uses libdir as the prefix for the configuration file. We set this to /etc so that the system wide configuration file is /etc/lynx.cfg.
--with-ssl : This enables support for linking SSL into lynx.
--with-zlib : This enables support for linking zlib into lynx.
DOCDIR=... HELPDIR=... : We set these variables to avoid getting the help and documentation files installed under /etc.
sed... mv /etc/lynx.bak /etc/lynx.cfg : This sed command changes the /etc/lynx.cfg file so it looks for the help files in the correct place.
/etc/lynx.cfg
Various settings such as proxies can be set in the system-wide lynx.cfg file found in /etc.
lynx is a general purpose, text-based, distributed information browser for the World Wide Web.
Download location (HTTP): http://unc.dl.sourceforge.net/sourceforge/w3m/w3m-0.3.2.1.tar.gz Download location (FTP): Version used: 0.3.2.1 Package size: 1.1 MB Estimated Disk space required: 3 MB |
w3m is a text based web browser and pager.
We configure w3m to use the "monster" model, which includes color, menu, mouse, cookie, and SSL support. Other models include:
baby - bare minimum
little - color and menu support
mouse - color, menu, and mouse support
cookie - color, menu, mouse, and cookie support
Install w3m by running the following commands:
./configure -yes -lang=en -model=monster -prefix=/usr && make && make install |
w3m expects the GPM library to be located at /usr/lib/libgpm.so.1. To make w3m happy, we will create a symbolic link to the GPM library. You only need to do this if you compiled w3m with mouse support. To create this symbolic link, run the following command:
ln -sf /usr/lib/libgpm.so.?.* /usr/lib/libgpm.so.1 |
Depending on what version of GPM you are using, and whether or not any patches were applied to GPM, you might receive the following warning when starting w3m:
*** debug ***: [/usr/src/gpm-1.20.0/src/liblow.c(202)]: |
Currently, the only known solution to this problem is to disable mouse support via the -no-mouse parameter. The origin of this problem is currently unknown.
./configure -yes : Set all parameters to their default values.
-lang=en : Set the default language to English.
-model=monster : This sets the build model to monster. Alternative build models are discussed above.
Download location (HTTP): Download location (FTP): ftp://ftp.ncftp.com/ncftp/ncftp-3.1.5-src.tar.bz2 Version used: 3.1.5 Package size: 392 KB Estimated Disk space required: 4.8 MB |
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.
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 && cd libncftp && make shared && make soinstall && cd .. && make && make install |
To install ncftp using the second method (with the libncftp functionality linked in statically) run the following commands:
./configure --prefix=/usr && make && make install |
cd libncftp && make shared && make soinstall |
~/.ncftp/*; especially ~/.ncftp/prefs_v3
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.
The ncftp package contains ncftp, ncftpbatch, ncftpbookmarks, ncftpget, ncftpls, ncftpput and ncftpspooler.
The ssh client is a secure replacement for telnet. If you want to install it, the instructions can be found in Chapter 23 - openssh-3.6.1p1. 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!).
Download location (HTTP): http://ftp.cvshome.org/cvs-1.11.5/cvs-1.11.5.tar.gz Download location (FTP): ftp://ftp.cvshome.org/pub/cvs-1.11.5/cvs-1.11.5.tar.gz Version used: 1.11.5 Package size: 2.6 MB Estimated Disk space required: 14 MB |
CVS is the concurrent versioning system. This is useful for projects on which multiple people are working or where archives of previous versions of files need to be kept.
The cvs-1.11.5-zlib.patch patch is used to compile CVS dynamically against zlib instead of using the version included with the CVS source. This has the advantage that if (or when) there is a security vulnerability found in zlib, you don't need to wait for a new version of CVS to appear as once you have upgraded zlib, the problem will be fixed. You can download the cvs patch at http://downloads.linuxfromscratch.org/blfs-patches.
If you are going to use the patch mentioned above, first apply it:
patch -Np1 -i ../cvs-1.11.5-zlib.patch |
Install cvs by running the following commands:
./configure --prefix=/usr && make && make install |
~/.cvsrc, ~/.cvswrappers
~/.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.
Download location (HTTP): http://ftp.gnu.org/gnu/wget/wget-1.8.2.tar.gz Download location (FTP): ftp://ftp.gnu.org/gnu/wget/wget-1.8.2.tar.gz Version used: 1.8.2 Package size: 1.1 MB Estimated Disk space required: 5.4 MB |
The wget package contains wget. This is utility useful for non-interactive downloading of files from the Web.
wget will utilize: openssl-0.9.7a |
Install wget by running the following commands:
./configure --prefix=/usr --sysconfdir=/etc && make && make install |
--prefix=/usr " : This compiles and installs wget into the /usr hierarchy instead of /usr/local.
--sysconfigdir=/etc : This relocates the configuration file from /usr/etc to /etc.
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.
Download location (HTTP): http://files.ichilton.co.uk/nfs/tcp_wrappers_7.6.tar.gz Download location (FTP): Version used: 7.6 Package size: 100 KB Estimated Disk space required: 720 KB Estimated build time: 0.16 SBU |
Required patch: Download location (HTTP): http://files.ichilton.co.uk/nfs/tcp_wrappers_7.6.diff.gz |
The tcpwrappers package provides daemon wrapper programs that report the name of the client requesting network services and the requested service.
Install tcpwrappers with the following commands:
patch -Np1 -i ../tcp_wrappers_7.6.diff && make REAL_DAEMON_DIR=/usr/sbin linux && cp libwrap.a /usr/lib && cp tcpd.h /usr/include && cp safe_finger /usr/sbin && cp tcpd /usr/sbin && cp tcpdchk /usr/sbin && cp tcpdmatch /usr/sbin && cp try-from /usr/sbin && cp -av *.3 /usr/share/man/man3 && cp -av *.5 /usr/share/man/man5 && cp -av *.8 /usr/share/man/man8 |
patch -Np1 -i ../tcp_wrappers_7.6.diff : This patch alters the original path and logging facility of the original tcpwrappers program.
/etc/hosts.allow, /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.
Then perform the following edits on the /etc/inetd.conf configuration file :
finger stream tcp nowait nobody /usr/sbin/in.fingerd in.fingerd |
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.
The tcpwrappers package contains safe_finger tcpd tcpdchk tcpdmatch try-from tcpd, tcpdchk, tcpdmatch, try-from and safe_finger.
tcpd is the main access control daemon for all internet services, which inetd or xinetd will run instead of running the requested service daemon.
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.
Download location (HTTP): http://files.ichilton.co.uk/nfs/portmap_5.orig.tar.gz Download location (FTP): Version used: 5 Package size: 20 KB Estimated Disk space required: 250 KB Estimated build time: 0.03 SBU |
Required patch: Download location (HTTP): http://files.ichilton.co.uk/nfs/portmap_5-1.diff.gz |
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.
portmap depends on: tcpwrappers-7.6 |
Install portmap with the following commands:
patch -Np1 -i ../portmap_5-1.diff && mkdir /usr/share/doc/portmap && make && make install |
patch -Np1 -i ../portmap_5-1.diff : This patch provides added security for the portmap package, including only allowing portmap table changes from the local host.
mkdir /usr/share/doc/portmap : This directory must be created before installation.
/etc/rc.d/init.d/portmap
cat > /etc/rc.d/init.d/portmap << "EOF" #!/bin/sh # Begin /etc/rc.d/init.d/portmap source /etc/rc.d/init.d/functions case "$1" in start) echo "Starting RPC Portmap" loadproc /sbin/portmap ;; stop) echo "Stopping Portmap" killproc /sbin/portmap ;; restart) $0 stop /bin/sleep 1 $0 start ;; *) echo "Usage: $0 {start|stop|restart}" exit 1 ;; esac # End /etc/rc.d/init.d/portmap EOF chmod 754 /etc/rc.d/init.d/portmap && cd /etc/rc.d/init.d && ln -sf ../init.d/portmap ../rc0.d/K49portmap && ln -sf ../init.d/portmap ../rc1.d/K49portmap && ln -sf ../init.d/portmap ../rc2.d/K49portmap && ln -sf ../init.d/portmap ../rc3.d/S22portmap && ln -sf ../init.d/portmap ../rc4.d/S22portmap && ln -sf ../init.d/portmap ../rc5.d/S22portmap && ln -sf ../init.d/portmap ../rc6.d/K49portmap |
Download location (HTTP): Download location (FTP): ftp://ftp.gnu.org/gnu/inetutils/inetutils-1.4.2.tar.gz Version used: 1.4.2 Package size: 1018 KB Estimated Disk space required: 2.3 MB |
The inetutils package contains network client's and server's.
inetutils will utilize: Linux_PAM-0.77 |
Install inetutils by running the following commands:
./configure --prefix=/usr --disable-syslogd \ --libexecdir=/usr/sbin --infodir=/usr/share/info \ --mandir=/usr/share/man --with-wrap && make && make install |
--disable-dependancy-tracking : This option speeds up one time builds.
--disable-syslogd : This option prevents inetutils installing the System Log Daemon, which is installed in the LFS Book.
--with-wrap : This option makes inetutils compile against tcp-wrappers. Omit this option if you didn't install tcp-wrappers.
--with-pam : This option makes inetutils compile against for Linux-PAM. Add this option if you want to utilize PAM.
Download location (HTTP): Download location (FTP): ftp://ftp.ee.lbl.gov/traceroute.tar.gz Version used: 1.4a12 Package size: 35 KB Estimated Disk space required: 75 KB |
The traceroute package contains the traceroute 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.
Install traceroute by running the following commands:
cp Makefile.in Makefile.in.bak && sed 's/-o bin/-o root/' Makefile.in.bak > Makefile.in && ./configure --prefix=/usr && make && make install && make install-man |
sed 's/-o bin/-o root/'... |
make install : Installs traceroute setuid root in the /usr/sbin directory. This makes it possible for all users to execute traceroute. For absolute security, turn off the setuid bit in traceroute's file permissions with the command:
chmod 0755 /usr/sbin/traceroute |
The risk is that if a security problem such as a buffer overflow were ever found in the traceroute code, a regular user on your system could gain root access if the program is setuid root. Removing the setuid permission of course also makes it impossible for users other than root to utilize traceroute, so decide what's right for your individual situation.
Now, to be completely FHS compliant, as is our aim, if you do leave the traceroute binary setuid root, then you should move traceroute to /usr/bin with the following command:
mv /usr/sbin/traceroute /usr/bin |
This ensures that the binary is in the path for non-root users.
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 steps (routers) along the way.
Download location (HTTP): http://download.insecure.org/nmap/dist/nmap-3.20.tgz Download location (FTP): Version used: 3.20 Package size: 901 KB Estimated Disk space required: 8 MB |
Nmap is a utility for network exploration and security auditing. It supports ping scanning, port scanning and TCP/IP fingerprinting.
Install nmap by running the following commands:
./configure --prefix=/usr && make && make install |
Nmap is a utility for network exploration and security auditing. It supports ping scanning, port scanning and TCP/IP fingerprinting.
Download location (HTTP): http://www.linux.it/~md/software/whois_4.6.3.tar.gz Download location (FTP): ftp://ftp.debian.org/debian/pool/main/w/whois/whois_4.6.3.tar.gz Version used: 4.6.3 Package size: 34 KB Estimated Disk space required: 60 KB |
whois is a client-side application which queries the whois directory service for information pertaining to a particular domain name.
Install whois by running the following commands:
make && make prefix=/usr install |
whois is a client-side application which queries the whois directory service for information pertaining to a particular domain name.
Download location (HTTP): http://www.procmail.org/procmail-3.22.tar.gz Download location (FTP): ftp://ftp.procmail.net/pub/procmail/procmail-3.22.tar.gz Version used: 3.22 Package size: 338 KB Estimated Disk space required: 1.5 MB |
The procmail package contains an autonomous mail processor. This is useful for filtering and sorting incoming mail.
Install procmail by running the following commands:
make BASENAME=/usr install && make install-suid |
BASENAME=/usr : The equivalent of ./configure --prefix=/usr on other package installations.
make install-suid : Modifies permissions of the installed files.
/etc/procmailrc, ~/.procmailrc
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.
procmail is an autonomous mail processor. It performs all the functions of a MDA (Mail Delivery Agent).
mailstat prints a summary report of mail that has been filtered by procmail since the last time mailstat was ran.
Download location (HTTP): http://www.catb.org/~esr/fetchmail/fetchmail-6.2.2.tar.gz Download location (FTP): Version used: 6.2.2 Package size: 1.2 MB Estimated Disk space required: 5.7 MB Estimated build time: 0.22 SBU |
The fetchmail package contains the fetchmail 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."
fetchmail depends on: openssl-0.9.7a and a local MDA (procmail-3.22) |
Install fetchmail by running the following commands:
./configure --prefix=/usr --with-ssl --enable-fallback=procmail && make && make install |
--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.
~/.fetchmailrc
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"; |
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 too. There are countless other config options once you get used to it.
When executed as a user this will source that users ~/.fetchmailrc and download the appropriate mail. When run as root ALL users who have a .fetchmailrc will have their mail downloaded and delivered accordingly.
This program provides a Tk GUI interface to your ~/.fetchmailrc making it much easier to configure. However you will require, Python, and it must have the Tkinker module available.
Download location (HTTP): Download location (FTP): ftp://ftp.mutt.org/mutt/mutt-1.4.1i.tar.gz Version used: 1.4.1i Package size: 2.5 MB Estimated Disk space required: 12 MB Estimated build time: 0.69 SBU |
The mutt package contains a Mail User Agent. This is useful for reading, writing, replying, saving, and deleting your email.
Mutt requires a group named 'mail'. You can add this group, if it does not exist, with this command:
groupadd mail |
If you did not install a MTA, such as postfix-2.0.7 or sendmail-8.12.9, you need to modify the ownership of /var/mail with this command:
chgrp mail /var/mail |
Install mutt by running the following commands:
./configure --prefix=/usr --sysconfdir=/etc && make && make install |
--sysconfdir=/etc : This installs the configuration files into /etc instead of /usr/etc.
/etc/Muttrc, ~/.muttrc, /etc/mime.types, ~/.mime.types
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.
mutt is a Mail User Agent (MUA) which enables you to read, write and delete your email.
Download location (HTTP): http://mirror.sit.wisc.edu/pub/net/mail/pine/pine4.53.tar.bz2 Download location (FTP): ftp://ftp.cac.washington.edu/pine/pine4.53.tar.bz2 Version used: 4.53 Package size: 2.7 MB Estimated Disk space required: 48 MB |
Required patches: Download location (FTP): ftp://ftp.linuxfromscratch.org/blfs-patches/cvs/pine-4.44-fhs.patch.bz2 |
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.
Install Pine by running the following commands:
patch -Np1 -i ../pine-4.44-fhs.patch && ./build slx DEBUG='-Os ' MAILSPOOL='/var/mail' \ SSLDIR=/usr SSLCERTS=/etc/ssl/certs && cp doc/pine.1 /usr/share/man/man1 && cd bin && install pine /usr/bin |
patch -Np1 -i ../pine-4.44-fhs.patch : This patch will make Pine use /etc for configuration files.
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='-Os ' : Optimize binaries for size.
MAILSPOOL='/var/mail' : Location of mail spool files, /var/mail.
cd bin && install pine /usr/bin |
~/.pinerc
The pine executable needs no global configuration to use. Users set Pine options in ~/.pinerc using an internal configuration menu.
The pine package contains pine, pico, pilot, imapd, ipop2d, ipop3d, mtest, rpload and rpdump.
pine is the Pine mail user agent.
rpload is the Pine remote data utility, used to convert local Pine configuration files or address books into remote configurations or address books.
rpdump is used to copy data from remote Pine configuration files or address books into a local file.
Download location (HTTP): http://telia.dl.sourceforge.net/sourceforge/slrn/slrn-0.9.7.4.tar.bz2 Download location (FTP): ftp://ftp.fu-berlin.de/pub/unix/news/slrn/slrn-0.9.7.4.tar.gz Version used: 0.9.7.4 Package size: 850 KB Estimated Disk space required: 2.1 MB |
slrn is a slang-based newsreader, capable of reading local news spools as well as groups from an NNTP server. Small local news spools can also be created with the use of the slrnpull program included in the slrn distribution.
slrn depends on: slang and an MTA, found in Chapter 22. |
Install slrn by running the following commands:
./configure --prefix=/usr --with-slrnpull && make LDFLAGS="-ldl" && make install |
./configure --prefix=/usr : Specify /usr to install to instead of /usr/local.
./configure --with-slrnpull : Build the slrnpull executable.
$HOME/.jnewsrc, $HOME/.jnewsrc.time, $HOME/.slrnrc
The first time slrn is run, the $HOME/.jnewsrc file must be created.Create the $HOME/.jnewsrc file with the following command:
slrn -f $HOME/.jnewsrc --create |
pan-0.13.4 is a GTK2 based newsreader program.
KNode is a QT based newsreader program from kdenetwork-3.1.
KMail is a QT based mail client from kdenetwork-3.1.
balsa-2.0.10 is a GTK2 based mail client.
mozilla-1.3 includes both a mail client and newsreader in its installation.
Download location (HTTP): http://cr.yp.to/daemontools/daemontools-0.76.tar.gz Download location (FTP): Version used: 0.76 Package size: 162 KB Estimated Disk space required: 1.8 MB |
Additional downloads: daemontools errno patch |
The daemontools package is a replacement for inetd or xinetd. The main reason for using it here is because it is recommended for use with qmail and djbdns.
Install daemontools by running the following commands:
cd admin/daemontools-0.76 && patch -Np1 -i ../../daemontools-0.76.errno.patch && package/compile && cd package && sed 's|command|usr/sbin|' boot.inittab > boot.inittab~ && mv boot.inittab~ boot.inittab && cd ../command && sed -e 's|/command:/usr/local/bin:/usr/local/sbin:||' \ -e 's|command|usr/sbin|' \ -e 's|/service|/etc/service|g' svscanboot > svscanboot~ && mv svscanboot~ svscanboot && chmod 555 svscanboot && cp * /usr/sbin && cd ../package && cat /etc/inittab boot.inittab > /etc/inittab~ && mv -f /etc/inittab~ /etc/inittab && mkdir /etc/service && telinit Q |
The first thing to understand in installing any package written by Daniel J. Bernstein, and this includes qmail, djbdns and ucspi-tcp in addition to daemontools, is that he is willing to completely disregard standards if his idea of the correct thing to do differs from an particular standard. Professor Bernstein is a standards body unto himself when it comes to his own software.
It is therefore necessary to make quite a few changes to the installation commands for his packages to get them to install in a manner that is compliant with the Filesystem Hierarchy Standard (FHS). Most of the following commands are due to this difficulty.
cd admin/daemontools-0.76 : First off, the package is unpacked in an admin directory. You will find the actual packages two directory levels below this.
package/compile : This command actually compiles the source and prepares the binaries.
Since we are installing the binaries in /usr/sbin rather than creating a non-standard /command directory, several paths have to be changed:
sed 's|command|usr/sbin|' boot.inittab > boot.inittab~ mv boot.inittab~ boot.inittab |
In boot.inittab, /command/svscanboot is changed to /usr/sbin/svscanboot.
sed -e 's|/command:/usr/local/bin:/usr/local/sbin:||' \ -e 's|command|usr/sbin|' \ -e 's|/service|/etc/service|g' svscanboot > svscanboot~ && |
Here various paths are adjusted in the svscanboot script. In our setup svscan will check the /etc/service directory instead of the /service directory for daemons to run.
cp * /usr/sbin : We must manually copy the binaries to the /usr/sbin directory.
cat /etc/inittab boot.inittab > /etc/inittab~ mv -f /etc/inittab~ /etc/inittab |
mkdir /etc/service : This command creates the daemontools control directory, which - even if empty - needs to exist for daemontools to run properly.
telinit Q : This command tells the init process to re-read its configuration file (inittab) and act upon any changes that have been made. The svscanboot script is started.
The daemontools package contains svscanboot, svscan, supervise, svc, svok, svstat, fghack, pgrphack, readproctitle, multilog, tai64n, tai64nlocal, setuidgid, envuidgid, envdir, softlimit and setlock. More detailed descriptions of these commands may be found at http://cr.yp.to/daemontools.html.
svscanboot is simply a script that calls svscan and pipes its output to readproctitle.
svscan checks the service directory for daemons to run and starts a supervise process for each run script that it finds.
supervise runs the run script passed to it by svscan and monitors the process the script starts so that if it dies, supervise restarts it.
multilog is a logging program. It takes output from a daemon and appends it to any number of logs.
envuidgid performs the same function as setuidgid, but sets environment variables $UID and $GID equal to the uid and gid of the account specified.
Download location (HTTP): http://smarden.org/pape/djb/manpages/daemontools-0.76-man.tar.gz Download location (FTP): Version used: 0.76 Package size: 8 KB Estimated Disk space required: 76 KB |
The Daemontools package does not come with man pages, so install this package if you want online help with the daemontools programs.
Install daemontools by running the following commands:
cd daemontools-man && gzip -9 *.8 && package/compile && cp *.8.gz /usr/share/man/man8/ |
gzip -9 *.8 : You can compress the man pages to save space, but it isn't needed for the man pages to work.
The daemontools-man package contains man pages for the daemontools commands envdir, envuidgid, fghack, multilog, pgrphack, readproctitle, setlock, setuidgid, softlimit, supervise, svc, svok, svscan, svscanboot, svstat, tai64n and tai64nlocal.
Download location (HTTP): http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz Download location (FTP): Version used: 0.88 Package size: 56 KB Estimated Disk space required: 2 MB |
Additional downloads: ucspi-tcp errno patch |
The ucspi-tcp package consists of a suite of tools that allow the easy creation of client-server tcp daemons. Tcpserver is a more secure alternative to inetd. It has built in functionality for rule based access control, and will gracefully defer connections when the configurable maximum load is reached, unlike inetd. Tcpserver is also recommended for use with Qmail, and was written by the same author.
Install ucspi-tcp by running the following commands:
patch -Np1 -i ../ucspi-tcp-0.88.errno.patch && sed 's|/usr/local|/usr|' conf-home > conf-home~ && mv conf-home~ conf-home && sed 's/bin/sbin/' hier.c > hier.c~ && mv hier.c~ hier.c && make && make setup check |
sed 's|/usr/local|/usr|' conf-home > conf-home~ mv conf-home~ conf-home sed 's/bin/sbin/' hier.c > hier.c~ mv hier.c~ hier.c |
cd /usr/sbin mv tcpclient *@ mconnect delcr addcr tcpcat /usr/bin |
The ucspi-tcp package contains tcpserver, tcprules, tcprulescheck, argv0, fixcrio, recordio, rblsmtpd, tcpclient, who@, date@, finger@, http@, tcpcat, mconnect, addcr and delcr
You can also find detailed descriptions of each of these programs at http://cr.yp.to/ucspi-tcp/tcpserver.html, but here is a brief summary:
tcpserver listens for incoming tcp connections on a given port, and runs a program of your choosing in response to a connection.
tcprules compiles rules that govern access control for tcpserver into a fast access database format.
tcprulescheck makes it possible to see how tcpserver will react to connections from a given address without actually having to connect via that address. This is useful for checking to see if the access control rules you are using are doing what you expected.
rblsmtpd is a spam blocking program that works in conjunction with your smtp daemon and tcpserver.
who@ is a demonstration program using tcpclient that has the functionality of the rwho program. It requires a server running sysstat on port 11.
date@ is a demonstration program using tcpclient that will return the system time of a remote host which is running a daytime service on port 13.
finger@ is a demonstration program using tcpclient that mimics the functionality of the finger program. It requires a server running fingerd on port 79.
mconnect connects to a tcp port, delivers any input specified to the port, and prints any output from the port.
addcr adds carriage returns to files. This and delcr are useful for converting between Windows to UNIX file formats.
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). An IMAP server (Courier-IMAP) is available for inclusion in the next version.
Download location (HTTP): Download location (FTP): ftp://ftp.porcupine.org/mirrors/postfix-release/official/postfix-2.0.7.tar.gz Version used: 2.0.7 Package size: 1.3 MB Estimated Disk space required: 71.9 MB Estimated build time: 0.92 |
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).
postfix depends on: db-4.1.25 |
Before you compile the program, you need to create users and groups that will be expected to be in place when the install script executes. Add the users and groups with the following commands:
groupadd postfix && groupadd postdrop && groupadd -g 65534 nogroup && useradd -c postfix -d /dev/null -g postfix -s /bin/false postfix && useradd -c nobody -d /home -g nogroup -s /bin/bash -u 65534 nobody && chown postfix:postfix /var/mail |
Install postfix by running the following commands:
make && make install |
The install script will enter an interactive stage with questions in the form of '*_directory:[default]input'. Defaults can be accepted in all but three cases. The following shows the three cases and the modified response.
daemon_directory:[/usr/libexec/postfix]/usr/sbin manpage_directory:[/usr/local/man]/usr/share/man sample_directory:[/etc/postfix]/usr/share/doc/postfix |
The final installation step is to install the program's documentation with this command:
cp -rf html/* /usr/share/doc/postfix |
/etc/aliases, /etc/postfix/main.cf and /etc/postfix/master.cf
cat > /etc/aliases << "EOF" # Begin /etc/aliases MAILER-DAEMON: postmaster postmaster: root root: LOGIN # End /etc/aliases EOF |
The /etc/aliases file that was just created, 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.
cp /etc/aliases /etc/aliases.bak cp /etc/postfix/main.cf /etc/postfix/main.cf.bak cp /etc/postfix/master.cf /etc/postfix/master.cf.bak sed "s/LOGIN/[user]/" /etc/aliases.bak > /etc/aliases sed "s/#myhostname = host.domain.tld/myhostname = \ [localhost.localdomain]/" \ /etc/postfix/main.cf.bak > /etc/postfix/main.cf /usr/bin/newaliases /usr/sbin/postfix start |
To automate the running of postfix, use following command to create the init.d script:
cat > /etc/rc.d/init.d/postfix << "EOF" #!/bin/sh # Begin $rc_base/init.d/postfix # Based on sysklogd script from LFS-3.1 and earlier. # Rewritten by Gerard Beekmans - gerard@linuxfromscratch.org source /etc/sysconfig/rc source $rc_functions case "$1" in start) echo "Starting Postfix..." loadproc postfix start ;; stop) echo "Stopping Postfix..." loadproc postfix stop ;; reload) echo "Reloading Postfix..." loadproc postfix reload ;; restart) $0 stop sleep 1 $0 start ;; *) echo "Usage: $0 {start|stop|reload|restart}" exit 1 ;; esac # End $rc_base/init.d/postfix EOF chmod 755 /etc/rc.d/init.d/postfix |
Create the symbolic links to this file in the relevant rc.d directory with the following commands:
cd /etc/rc.d/init.d && ln -sf ../init.d/postfix ../rc0.d/K25postfix && ln -sf ../init.d/postfix ../rc1.d/K25postfix && ln -sf ../init.d/postfix ../rc2.d/K25postfix && ln -sf ../init.d/postfix ../rc3.d/S35postfix && ln -sf ../init.d/postfix ../rc4.d/S35postfix && ln -sf ../init.d/postfix ../rc5.d/S35postfix && ln -sf ../init.d/postfix ../rc6.d/K25postfix |
The postfix package contains bounce, cleanup, error, flush, lmtp, local, mailq, master, newaliases, nqmgr, pickup, pipe, postalias, postcat, postconf, postdrop, postfix, postkick, postlock, postlog, postmap, postqueue, postsuper, qmgr, qmqpd, sendmail, showq, smtp, smtpd, spawn, trivial-rewrite, and virtual.
postfix is the program that starts and stops the mail delivery system.
master is the resident process that runs bounce, cleanup, error, flush, lmtp, local, nqmgr, pickup, pipe, qmgr, qmqpd, showq, smtp, smtpd, spawn, trivial-rewrite and virtual on demand. These programs are not designed to work as user commands.
postqueue implements the Postfix user interface for queue management. It implements all the operations that are traditionally available via the sendmail command.
sendmail implements the Postfix to Sendmail compatibility interface. mailq and newaliases are symlinks to sendmail.
postdrop creates a file in the maildrop directory and copies its standard input to the file.
Download location (HTTP): http://www.qmail.org/qmail-1.03.tar.gz Download location (FTP): Version used: 1.03 Package size: 225 KB Estimated Disk space required: 4.6 MB |
Additional downloads: qmail errno patch |
The qmail package contains Dan Bernstein's Mail Transport Agent (MTA). qmail provides local and remote mail delivery/relaying.
qmail needs certain user and group account to be added before installation of the software. Add the users and groups with the following commands:
mkdir /var/qmail && groupadd nofiles && useradd -g nofiles -d /var/qmail/alias alias && useradd -g nofiles -d /var/qmail qmaild && useradd -g nofiles -d /var/qmail qmaill && useradd -g nofiles -d /var/qmail qmailp && groupadd qmail && useradd -g qmail -d /var/qmail qmailq && useradd -g qmail -d /var/qmail qmailr && useradd -g qmail -d /var/qmail qmails |
Install qmail by running the following commands:
patch -Np1 -i ../qmail-1.03.errno.patch && make setup check && ./config-fast `hostname` && cd /var/qmail && touch .qmail-postmaster .qmail-mailer-daemon .qmail-root && chmod 644 .qmail-* && ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail && mv /var/qmail/boot/home /var/qmail/rc && for mandir in 1 5 7 8; do mv /var/qmail/man/man$mandir/* \ /usr/man/man$mandir; done && rm -rf /var/qmail/man |
/etc/inetd.conf and boot scripts
If inetd is used, the following command will add the qmaild entry to /etc/inetd.conf:
echo "smtp stream tcp nowait qmaild /var/qmail/bin/tcp-env \ tcp-env /var/qmail/bin/qmail-smtpd" >> /etc/inetd.conf |
If xinetd is used, the following command will add the qmaild entry to /etc/xinetd.conf:
cat >> /etc/xinetd.conf << "EOF" service smtp { disable = no identifier = smtp-local socket_type = stream protocol = tcp wait = no user = qmaild server = /var/qmail/bin/tcp-env server_args = /var/qmail/bin/qmail-smtpd env = RELAYCLIENT= only_from = 127.0.0.1 log_on_failture += USERID } EOF |
To automate the running of qmail, use following command to create the init.d script:
cat > /etc/rc.d/init.d/qmail << "EOF" #!/bin/sh # Begin $rc_base/init.d/qmail # Based on sysklogd script from LFS-3.1 and earlier. # Rewritten by Gerard Beekmans - gerard@linuxfromscratch.org source /etc/sysconfig/rc source $rc_functions case "$1" in start) echo "Starting Qmail..." /var/qmail/rc & ;; stop) echo "Stopping Qmail..." killall qmail-send ;; restart) $0 stop sleep 1 $0 start ;; *) echo "Usage: $0 {start|stop|restart}" exit 1 ;; esac # End $rc_base/init.d/qmail EOF chmod 755 /etc/rc.d/init.d/qmail |
Create the symbolic links to this file in the relevant rc.d directory with the following commands:
cd /etc/rc.d/init.d && ln -sf ../init.d/qmail ../rc0.d/K25qmail && ln -sf ../init.d/qmail ../rc1.d/K25qmail && ln -sf ../init.d/qmail ../rc2.d/K25qmail && ln -sf ../init.d/qmail ../rc3.d/S35qmail && ln -sf ../init.d/qmail ../rc4.d/S35qmail && ln -sf ../init.d/qmail ../rc5.d/S35qmail && ln -sf ../init.d/qmail ../rc6.d/K25qmail |
Configuration information for some commonly used MUAs can be found in the /var/qmail/doc/INSTALL.mbox file. Most MUAs can be configured to use qmail Mailbox format buy putting the following in ~/.profile:
MAIL=$HOME/Mailbox; export MAIL |
The qmail package contains bouncesaying, condredirect, except, forward, maildir2mbox, maildirmake, maildirwatch, mailsubj, preline, qbiff, qreceipt, qmail-clean, qmail-inject, qmail-local, qmail-pop3d, qmail-popup, qmail-qstat, qmail-send, qmail-smtpd and qmail-start.
bouncesaying processes, possibly bouncing, incoming messages.
maildir2mbox moves current email from an maildir-format directory to an mbox-format file.
mailsubj sends a mail message with a subject supplied on the command line. The body of the message is read from standard input.
qmail-start enables mail delivery services, spawning qmail-send, qmail-lspawn, qmail-rspawn, and qmail-clean.
Download location (HTTP): http://www.sendmail.org/ftp/sendmail.8.12.9.tar.gz Download location (FTP): ftp://ftp.sendmail.org/pub/sendmail/sendmail.8.12.9.tar.gz Version used: 8.12.9 Package size: 1.9 MB Estimated Disk space required: 13 MB |
The sendmail package contains a Mail Transport Agent (MTA).
sendmail depends on: db-4.1.25, procmail-3.22 |
Before building sendmail, we need to create users, groups and directories that sendmail uses with the following commands:
groupadd smmsp && groupadd mail && useradd -g smmsp -G mail smmsp && chmod 1777 /tmp && chmod 1777 /var/mail && mkdir /var/spool/mqueue |
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 && mkdir /etc/mail && sh Build sendmail.mc && sh Build install-cf && cd ../../ && sh Build install |
/etc/mail/aliases.db, /etc/mail/sendmail.cf, /etc/mail/submit.cf and /etc/mail/local-host-names
echo `hostname` > /etc/mail/local-host-names cat > /etc/mail/aliases << "EOF" postmaster: root MAILER-DAEMON: root EOF cd /etc/mail && cp -R /usr/src/sendmail-8.12.9/cf/* . && cp -R /usr/src/sendmail-8.12.9/cf/cf/submit.mc . && cp -R /usr/src/sendmail-8.12.9/cf/cf/sendmail.mc . && newaliases -v |
To start and stop sendmail on system boot/shutdown create the sendmail boot script with the following commands:
Note: The -qNm option, where N is number of minutes, controls how often Sendmail will process the mail queue. A default of 5 minutes is used here. Individual workstation users may want to set this as low as 1 minute, large installations handling more mail will want to set it higher.
cat > /etc/rc.d/init.d/sendmail << "EOF" #!/bin/sh # Begin $rc_base/init.d/sendmail # Based on sysklogd script from LFS-3.1 and earlier. # Rewritten by Gerard Beekmans - gerard@linuxfromscratch.org source /etc/sysconfig/rc source $rc_functions case "$1" in start) echo "Starting sendmail..." loadproc /usr/sbin/sendmail -bs -bd -q5m start ;; stop) echo "Stopping Sendmail..." killproc sendmail ;; status) statusproc sendmail ;; restart) $0 stop sleep 1 $0 start ;; *) echo "Usage: $0 {start|stop|status|restart}" exit 1 ;; esac # End $rc_base/init.d/sendmail EOF chmod 755 /etc/rc.d/init.d/sendmail |
Create the run level symlinks with the following commands:
cd /etc/rc.d/init.d && ln -sf ../init.d/sendmail ../rc0.d/K25sendmail && ln -sf ../init.d/sendmail ../rc1.d/K25sendmail && ln -sf ../init.d/sendmail ../rc2.d/K25sendmail && ln -sf ../init.d/sendmail ../rc3.d/S35sendmail && ln -sf ../init.d/sendmail ../rc4.d/S35sendmail && ln -sf ../init.d/sendmail ../rc5.d/S35sendmail && ln -sf ../init.d/sendmail ../rc6.d/K25sendmail |
The sendmail package contains mail.local, rmail, smrsh, editmap, makemap, mailq, newaliases, sendmail, vacation, praliases and mailstats.
Download location (HTTP): Download location (FTP): ftp://ftp.exim.org/pub/exim/exim4/exim-4.14.tar.bz2 Version used: 4.14 Package size: 1.2 MB Estimated Disk space required: 8.7 MB |
The exim package contains a Mail Transport Agent written by the University of Cambridge, released under the GNU Public License.
exim depends on: db-4.1.25 |
Before building exim, we need to create a user and group for exim with the following commands:
groupadd exim useradd -d /dev/null -g exim -s /bin/false exim |
Install exim with the following commands:
sed -e 's/^BIN_DIR.*$/BIN_DIRECTORY=\/usr\/sbin/' src/EDITME | \ sed -e 's/^CONF.*$/CONFIGURE_FILE=\/etc\/exim.conf/' | \ sed -e 's/^EXIM_USER.*$/EXIM_USER=exim/' | \ sed -e 's/^EXIM_MONITOR/#EXIM_MONITOR/' > Local/Makefile && make && make install && ln -s /usr/sbin/exim /usr/sbin/sendmail |
/etc/exim.conf, /etc/aliases
Create the exim configuration files with the following commands:
cat >> /etc/aliases << "EOF" postmaster: root MAILER-DAEMON: root EOF exim -v -bi && /usr/sbin/exim -bd -q1m |
Note: To protect an existing /etc/aliases file, we will append these aliases to it if it exists. This file should be checked and duplicate aliases removed, if present.
To start and stop exim on system boot/shutdown create the exim boot script with the following commands:
cat > /etc/rc.d/init.d/exim << "EOF" #!/bin/sh # Begin $rc_base/init.d/exim # Based on sysklogd script from LFS-3.1 and earlier. # Rewritten by Gerard Beekmans - gerard@linuxfromscratch.org source /etc/sysconfig/rc source $rc_functions case "$1" in start) echo "Starting exim..." loadproc /usr/sbin/exim -bd -q1m ;; stop) echo "Stopping exim..." killproc exim ;; status) statusproc exim ;; restart) $0 stop sleep 1 $0 start ;; *) echo "Usage: $0 {start|stop|status|restart}" exit 1 ;; esac # End $rc_base/init.d/exim EOF chmod 755 /etc/rc.d/init.d/exim |
Create the run level symlinks with the following commands:
cd /etc/rc.d/init.d && ln -sf ../init.d/exim ../rc0.d/K25exim && ln -sf ../init.d/exim ../rc1.d/K25exim && ln -sf ../init.d/exim ../rc2.d/K25exim && ln -sf ../init.d/exim ../rc3.d/S35exim && ln -sf ../init.d/exim ../rc4.d/S35exim && ln -sf ../init.d/exim ../rc5.d/S35exim && ln -sf ../init.d/exim ../rc6.d/K25exim |
groupadd exim useradd -g exim exim |
sed -e 's/^BIN_DIR.*$/BIN_DIRECTORY=\/usr\/sbin/' src/EDITME | \ sed -e 's/^CONF.*$/CONFIGURE_FILE=\/etc\/exim.conf/' | \ sed -e 's/^EXIM_USER.*$/EXIM_USER=exim/' | \ sed -e 's/^EXIM_MONITOR/#EXIM_MONITOR/' > Local/Makefile |
ln -s /usr/sbin/exim /usr/sbin/sendmail : Create a link to sendmail for applications which need it. exim will accept most Sendmail command line options.
The exim package contains exim, exim_dumpdb, exim_fixdb, exim_tidydb, exinext, exiwhat, exim_dbmbuild, exicyclog, exigrep, eximstats, exiqsumm, exim_lock and exim_checkaccess.
exim is the Mail Transport Agent daemon.
exim_checkaccess states whether a given recipient address from a given host is acceptable or not.
Download location (HTTP): Download location (FTP): ftp://ftp.qualcomm.com/eudora/servers/unix/popper/qpopper4.0.5.tar.gz Version used: 4.0.5 Package size: 2.2 MB Estimated Disk space required: 9 MB |
The qpopper package contains a POP 3 mail server.
qpopper depends on: sendmail-8.12.9 or postfix-2.0.7 or qmail-1.03 |
Install qpopper with the following commands:
./configure --prefix=/usr && make && make install |
/etc/inetd.conf and /etc/syslogd.conf
If you use inetd, the following command will add the qpopper entry to /etc/inetd.conf:
echo "pop stream tcp nowait root /usr/sbin/popper popper" >> \ /etc/inetd.conf && echo "pop 110/tcp" >> /etc/services && killall inetd || inetd && echo "local0.notice;local0.debug /var/log/POP.log" >> \ /etc/syslog.conf && killall -HUP syslogd |
Issue a killall -HUP inetd to reread the changed inetd.conf file.
If you use xinetd, the following command will add the qpopper entry to /etc/xinetd.conf:
cat >> /etc/xinetd.conf << "EOF" service pop { port = 110 socket_type = stream protocol = tcp wait = no user = root passenv = PATH server = /usr/sbin/popper server_args = popper } EOF |
Issue a killall -HUP xinetd to reread the changed xinetd.conf file.
Download location (HTTP): Download location (FTP): ftp://ftp.isc.org/isc/bind9/9.2.2/bind-9.2.2.tar.gz Version used: 9.2.2 Package size: 4.8 MB Estimated Disk space required: 38 MB |
The Bind package provides a DNS server and client utilities.
Install BIND by running the following commands:
./configure --prefix=/usr && make && make install |
We will configure BIND 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
First we set up some files and directories needed by BIND:
groupadd -g 200 named && useradd -m -g named -u 200 -s /bin/false named && cd /home/named && mkdir -p dev etc/namedb/slave var/run && mknod /home/named/dev/null c 1 3 && mknod /home/named/dev/random c 1 8 && chmod 666 /home/named/dev/{null,random} && mkdir /home/named/etc/namedb/pz && cp /etc/localtime /home/named/etc |
named.conf, root.hints, 127.0.0 and rndc.conf
Create the named.conf file with the following commands:
cat > /home/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 "c3Ryb25nIGVub3VnaCBmb3IgYSBtYW4gYnV0IG1hZGUgZm9yIGEgd29tYW4K"; }; zone "." { type hint; file "root.hints"; }; zone "0.0.127.in-addr.arpa" { type master; file "pz/127.0.0"; }; EOF |
Create a zone file with the following contents:
cat > /home/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 insure no leading spaces in this file.
cat > /home/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 128.9.0.107 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 |
Create the rndc.conf with the following commands:
cat > /etc/rndc.conf << "EOF" key rndc_key { algorithm "hmac-md5"; secret "c3Ryb25nIGVub3VnaCBmb3IgYSBtYW4gYnV0IG1hZGUgZm9yIGEgd29tYW4K"; }; options { default-server localhost; default-key rndc_key; }; EOF |
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 /home/named |
Create the BIND boot script:
cat > /etc/rc.d/init.d/bind << "EOF" #!/bin/bash # Begin $rc_base/init.d/bind # Based on sysklogd script from LFS-3.1 and earlier. # Rewritten by Gerard Beekmans - gerard@linuxfromscratch.org source /etc/sysconfig/rc source $rc_functions case "$1" in start) echo "Starting named..." loadproc /usr/sbin/named -u named -t /home/named -c \ /etc/named.conf ;; stop) echo "Stopping named..." killproc /usr/sbin/named ;; restart) $0 stop sleep 1 $0 start ;; reload) echo "Reloading named..." /usr/sbin/rndc -c /etc/rndc.conf reload ;; status) statusproc /usr/sbin/named ;; *) echo "Usage: $0 {start|stop|restart|status}" exit 1 ;; esac # End $rc_base/init.d/bind EOF |
Add the run level symlinks:
chmod 754 /etc/rc.d/init.d/bind && ln -s /etc/rc.d/init.d/bind /etc/rc.d/rc0.d/K49bind && ln -s /etc/rc.d/init.d/bind /etc/rc.d/rc1.d/K49bind && ln -s /etc/rc.d/init.d/bind /etc/rc.d/rc2.d/K49bind && ln -s /etc/rc.d/init.d/bind /etc/rc.d/rc3.d/S22bind && ln -s /etc/rc.d/init.d/bind /etc/rc.d/rc4.d/S22bind && ln -s /etc/rc.d/init.d/bind /etc/rc.d/rc5.d/S22bind && ln -s /etc/rc.d/init.d/bind /etc/rc.d/rc6.d/K49bind |
Now start BIND with the new boot script:
/etc/rc.d/init.d/bind start |
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 beyond.linuxfromscratch.org && dig beyond.linuxfromscratch.org |
groupadd -g 200 named useradd -m -g named -u 200 -s /bin/false named cd /home/named mkdir -p dev etc/namedb/slave var/run mknod /home/named/dev/null c 1 3 mknod /home/named/dev/random c 1 8 chmod 666 /home/named/dev/{null,random} mkdir /home/named/etc/namedb/pz cp /etc/localtime /home/named/etc |
cat > /home/named/etc/named.conf << "EOF" : Create the BIND configuration file, from which named will read the location of zone files, root name servers and secure DNS keys.
cat > /home/named/etc/namedb/pz/127.0.0 << "EOF" : Create a single zone file.
cat > /home/named/etc/namedb/root.hints << "EOF" : The root.hints file is a list of root name servers. This file must be updated periodically with the dig utility. Consult the BIND 9 Administrator Reference Manual for details.
cat > /etc/rndc.conf << "EOF" : The rndc.conf file contains information for controlling named operations with the rndc utility.
cat > /etc/resolv.conf << "EOF" : The resolv.conf file will specify the local host(127.0.0.1) as the name server.
cat > /etc/rc.d/init.d/bind << "EOF" : Create the boot script for BIND 9, used to start and stop the name server daemon, named.
The BIND package contains dig, host, rndc, rndc-confgen, named-checkconf, named-checkzone, lwresd, named, dnssec-signzone, dnssec-signkey, dnssec-keygen, dnssec-makekeyset and nsupdate.
dig interrogates DNS servers.
dnssec-makekeyset generates a key set from one or more keys created by dnssec-keygen.
This section will describe how to set up, administer and secure a CVS server.
CVS server depends on: cvs-1.11.5 and openssh-3.6.1p1 |
We will discuss setting up a CVS server 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 our CVS server consists of four steps:
Create a new CVS repository with the following commands, logged in as root:
mkdir /cvsroot && chmod 1777 /cvsroot && export CVSROOT=/cvsroot && cvs init |
Import a source module into the repository with the following commands, issued from a user account on the same machine as the CVS repository:
export CVSROOT=/cvsroot && cd sourcedir && cvs import -m "repository test" cvstest vendortag releasetag |
Test access to the CVS repository from the same user account with the following command:
cvs co cvstest |
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 ofthe CVS repository machine. You will be prompted for the user's shellaccount password before CVS checkout can continue.
export CVS_RSH=/usr/bin/ssh && cvs -d:ext:servername:/cvsroot co cvstest |
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) && echo anonymous: > /cvsroot/CVSROOT/passwd && echo anonymous > /cvsroot/CVSROOT/readers |
If you use inetd, the following command will add the pserver entry to /etc/inetd.conf:
echo "2401 stream tcp nowait root /usr/bin/cvs cvs -f \ --allow-root=/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 add the pserver entry to /etc/xinetd.conf:
cat >> /etc/xinetd.conf << "EOF" service cvspserver { port = 2401 socket_type = stream protocol = tcp wait = no user = root passenv = PATH server = /usr/bin/cvs server_args = -f --allow-root=/cvsroot pserver } EOF |
Issue a killall -HUP xinetd 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:/cvsroot co cvstest |
Note: Replace "servername" with the IP address or hostname of the CVS server
mkdir /cvsroot : Create the CVS repository directory.
chmod 1777 /cvsroot : Sticky bit permissions for CVSROOT.
export CVSROOT=/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) : Check for an existing anonymous user and create one if not found.
echo anonymous: > /cvsroot/CVSROOT/passwd : Add the anonymous user to the CVS passwd file, which is unused for anything else in this configuration.
echo anonymous > /cvsroot/CVSROOT/readers : Add the anonymous user to the CVS readers file, a list of users who have read only access to the repository.
Download location (HTTP): Download location (FTP): ftp://ftp.isc.org/isc/dhcp/dhcp-3.0pl2.tar.gz Version used: 3.0pl2 Package size: 852 KB Estimated Disk space required: 29.6 MB |
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.
dhcp needs nothing to compile but you must have Packet Socket support compiled in the kernel and Socket Filtering either compiled in or as a kernel module to use it. |
Install dhcp by running the following commands:
./configure && make && make LIBDIR=/usr/lib INCDIR=/usr/include install |
LIBDIR=/usr/lib INCDIR=/usr/include : This command installs the library and include files in /usr instead of /usr/local.
/etc/dhclient.conf
Information on configuring the dhcp client can be found in Chapter 14.
Note that you only want to start 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. With that in mind the dhcp init.d script can be created using the following commands.
cat > /etc/rc.d/init.d/dhcp << "EOF" #!/bin/sh # Begin $rc_base/init.d/dhcp # Based on sysklogd script from LFS-3.1 and earlier. # Rewritten by Gerard Beekmans - gerard@linuxfromscratch.org source /etc/sysconfig/rc source $rc_functions case "$1" in start) echo "Starting DHCP Server..." loadproc dhcpd -q eth1 ;; stop) echo "Stopping DHCP Server..." killproc dhcpd ;; reload) echo "Reloading DHCP Server..." reloadproc dhcpd ;; restart) $0 stop sleep 1 $0 start ;; status) statusproc dhcpd ;; *) echo "Usage: $0 {start|stop|reload|restart|status}" exit 1 ;; esac # End $rc_base/init.d/dhcp EOF chmod 755 /etc/rc.d/init.d/dhcp |
The lease file must exist on startup. The following command will satisfy that requirement:
touch /var/state/dhcp/dhcpd.leases |
The follow 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 195.168.5.255; option routers 192.168.5.1; } EOF |
All addresses should be changed to meet your circumstance.
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.
Download location (HTTP): http://unc.dl.sourceforge.net/sourceforge/leafnode/leafnode-1.9.33.rel.tar.bz2 Download location (FTP): ftp://unc.dl.sourceforge.net/pub/sourceforge/leafnode/leafnode-1.9.33.rel.tar.bz2 Version used: 1.9.33 Package size: 602 KB Estimated Disk space required: 4.5 MB |
leafnode is an NNTP server designed for small sites to provide a local USENET spool.
leafnode depends on: pcre-4.1 |
Install leafnode by running the following commands:
groupadd news useradd -g news news ./configure --localstatedir=/var --prefix=/usr \ --sysconfdir=/etc/news --with-lockfile=/var/lock/fetchnews.lck && make && make install && ldconfig && make update |
groupadd news useradd -g news news :
Create the group and user news, if not present. Errors resulting from an already existing user or group news may be ignored.
--prefix=/usr : Change the default installation directory of /usr/local.
--localstatedir=/var : Change the default spool directory of /usr/var.
--sysconfdir=/etc/news : leafnode reads its configuration data from an file called config, this with be created in /etc/news to avoid any potential conflict with other packages.
make update : Create an initial /etc/news/config.example file, which must be renamed to /etc/news/config.
/etc/leafnode/config, /etc/inetd.conf and /etc/xinetd.conf
leafnode may be configured to use inetd or xinetd as follows:
inetd configuration
Add a leafnode 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 |
xinetd configuration
Add a leafnode entry to the /etc/xinetd.conf file with the following command:
cat >> /etc/xinetd.conf << "EOF" 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 } EOF |
The /etc/news/config file must be edited to reflect the name of the upstream NNTP provider. Copy the example configuration file to /etc/news/config and save the original for reference :
cp /etc/news/config.example /etc/news/config |
Change the
server = |
entry to reflect your news provider.
The NNTPSERVER environment variable must be set to 127.0.0.1 to prevent news clients from reading news from the upstream feed, add the following to /etc/profile or $HOME/.bash_profile :
export NNTPSERVER=127.0.0.1 |
The leafnode package contains leafnode, applyfilter, texpire, checkgroups, fetchnews and newsq.
leafnode is the NNTP server daemon.
fetchnews sends posted articles to and retrieves new articles from an upstream news server.
Download location (HTTP): http://sunsite.ualberta.ca/pub/OpenBSD/OpenSSH/portable/openssh-3.6.1p1.tar.gz Download location (FTP): ftp://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-3.6.1p1.tar.gz Version used: 3.6.1p1 Package size: 855 KB Estimated Disk space required: 8.3 MB |
The OpenSSH package contains ssh clients and the sshd daemon. This is useful for encrypting all traffic over a network.
OpenSSH depends on: openssl-0.9.7a OpenSSH will utilize: X11-ssh-askpass and Linux_PAM-0.77 |
OpenSSH runs as two processes when connecting to other computers. The first process is a priviledged 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:
mkdir /var/empty && chown root:sys /var/empty && groupadd sshd && useradd -g sshd sshd |
Install OpenSSH by running the following commands:
./configure --prefix=/usr --sysconfdir=/etc/ssh \ --libexecdir=/usr/sbin --with-md5-passwords && make && make install |
--sysconfigdir=/etc/ssh : This prevents the configuration files from going to /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/sbin : OpenSSH puts programs called by programs in /usr/libexec. sftp-server is a sshd utility and ssh-askpass is a ssh-add utility that is installed as a link to X11-ssh-askpass. Both of these should go in /usr/sbin not /usr/libexec.
/etc/ssh/ssh_config, /etc/ssh/sshd_config
There are no required changes in either of these files. However you may wish to view them to make changes for appropriate security to your system. Configuration information can be found in the man pages for sshd, ssh and ssh-agent
Note that you only want to start the sshd server if you want to be able to ssh into your machine. The ssh client doesn't need this script to be used. Having said that, if you want to run the ssh daemon, the sshd init.d script can be created using the following commands:
cat > /etc/rc.d/init.d/sshd << "EOF" #!/bin/sh # Begin $rc_base/init.d/sshd # Based on sysklogd script from LFS-3.1 and earlier. # Rewritten by Gerard Beekmans - gerard@linuxfromscratch.org source /etc/sysconfig/rc source $rc_functions case "$1" in start) echo "Starting SSH Server..." loadproc /usr/sbin/sshd ;; stop) echo "Stopping SSH Server..." killproc /usr/sbin/sshd ;; reload) echo "Reloading SSH Server..." reloadproc /usr/sbin/sshd ;; restart) $0 stop sleep 1 $0 start ;; status) statusproc /usr/sbin/sshd ;; *) echo "Usage: $0 {start|stop|reload|restart|status}" exit 1 ;; esac # End $rc_base/init.d/sshd EOF chmod 755 /etc/rc.d/init.d/sshd |
Create the symbolic links to this file in the relevant rc.d directories with the following commands:
cd /etc/rc.d/init.d && ln -sf ../init.d/sshd ../rc0.d/K30sshd && ln -sf ../init.d/sshd ../rc1.d/K30sshd && ln -sf ../init.d/sshd ../rc2.d/K30sshd && ln -sf ../init.d/sshd ../rc3.d/S30sshd && ln -sf ../init.d/sshd ../rc4.d/S30sshd && ln -sf ../init.d/sshd ../rc5.d/S30sshd && ln -sf ../init.d/sshd ../rc6.d/K30sshd |
The OpenSSH package contains ssh, sshd, ssh-agent, ssh-add, sftp, scp, ssh-keygen, sftp-server and ssh-keyscan.
Download location (HTTP): Download location (FTP): ftp://ftp.OpenLDAP.org/pub/OpenLDAP/openldap-release/openldap-2.1.17.tgz Version used: 2.1.17 Package size: 2.0 MB Estimated Disk space required: 102 MB |
The OpenLDAP package provides an open source implementation of the Lightweight Directory Access Protocol.
OpenLDAP depends on: db-4.1.25 |
Install OpenLDAP by running the following commands:
./configure --prefix=/usr --sysconfdir=/etc --disable-debug \ --libexecdir=/usr/sbin --enable-ldbm && make depend && make && make test && make install && |
--prefix=/usr : Sets the prefix for almost all the file paths to /usr.
--sysconfdir=/etc : Sets the configuration file directory to avoid the default of /usr/etc.
--libexecdir=/usr/sbin : Puts the server executables in /usr/sbin instead of /usr/libexec.
--enable-ldbm : Enable the most recent version of the Berkeley DB.
--disable-debug : Disable debugging code.
make test: Validate correct build of the package.
The only configuration needed for ldap is to run ldconfig. The LDAP server can be started by /usr/sbin/slapd as described in the man page slapd(8).
Data can be added to the LDAP database via ldapadd. Other programs that can use the database include ldapsearch, ldapmodify, ldapdelete, and ldappasswd. For more information see the appropriate man page.
The OpenLDAP package contains slapd, slurpd, libldap libraries and various utilities, tools, and sample clients.
slapd is the stand-alone LDAP server.
LDAP libraries support the LDAP programs and provide functionality for other programs interacting with LDAP.
Download location (HTTP): http://us1.samba.org/samba/ftp/samba-2.2.8a.tar.bz2 Download location (FTP): Version used: 2.2.8a Package size: 4.4 MB Estimated Disk space required: 43 MB Estimated build time: 5.40 SBU |
The Samba package provides file and print services to SMB/CIFS clients.
Install Samba by running the following commands:
Note: Samba is installed from the samba-2.2.8a/source directory.
mkdir -p /etc/samba/private && mkdir -p /var/cache/samba && ./configure \ --prefix=/usr \ --sysconfdir=/etc \ --localstatedir=/var \ --with-piddir=/var/run \ --with-fhs \ --with-smbmount && make && make install && mv /usr/bin/smbmount /usr/bin/mount.smbfs && rm -rf /usr/private && echo "swat 901/tcp" >> /etc/services && echo "swat stream tcp nowait.400 root /usr/sbin/swat swat" >> \ /etc/inetd.conf |
mkdir -p /etc/samba/private mkdir -p /var/cache/samba |
--prefix=/usr : Sets the prefix for almost all the file paths to /usr.
--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.
--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.
rm -rf /usr/private : Removes a directory erroneously created by source/scripts/installbin.sh during the make install.
We will configure one Samba server (SAMBABOX) to act as a primary domain controller, as well as configure one domain client running Windows 2000 Server(WIN2KBOX) and acting as a member server of the domain. Detailed instructions will be given for adding WIN2KBOX to the domain due to the extra steps necessary. Instructions for adding Windows 95/98/XP clients can be found in the newly installed documentation by pointing a web browser to:
file:///usr/share/samba/swat/using_samba/ch03_01.html#ch03-55770. |
/etc/samba/smb.conf, /etc/rc.d/init.d/samba
First we set up some directories needed by Samba:
mkdir /var/lib/samba && mkdir /var/lib/samba/netlogon && mkdir /var/lib/samba/ntprofile && mkdir /var/lib/samba/profiles && chmod -R 1777 /var/lib/samba |
And the Samba configuration file:
cat > /etc/samba/smb.conf << "EOF" [global] netbios name = SAMBABOX workgroup = DOMAIN01 os level = 64 preferred master = yes domain master = yes local master = yes security = user encrypt passwords = yes domain logons = yes log file = /var/log/log.%m log level = 1 logon path = \\%N\home\%u logon drive = H: logon home = \\homeserver\%u logon script = logon.cmd [netlogon] path = /var/lib/samba/netlogon read only = yes write list = ntadmin [profiles] path = /var/lib/samba/ntprofile read only = no create mask = 0600 directory mask = 0700 ; World writable share for testing [tmp] comment = Temporary file space path = /tmp read only = no public = yes [home] comment = Users' home directories path = /home read only = no public = no EOF |
Now add the machine trust account for WIN2KBOX:
/usr/sbin/useradd -g 100 -d /dev/null -c \ "machine nickname" -s /bin/false win2kbox$ && passwd -l win2kbox$ && smbpasswd -a -m win2kbox |
Create the Samba boot script:
cat > /etc/rc.d/init.d/samba << "EOF" #!/bin/bash # Begin $rc_base/init.d/samba # Based on sysklogd script from LFS-3.1 and earlier. # Rewritten by Gerard Beekmans - gerard@linuxfromscratch.org source /etc/sysconfig/rc source $rc_functions case "$1" in start) echo "Starting nmbd..." loadproc /usr/sbin/nmbd -D echo "Starting smbd..." loadproc /usr/sbin/smbd -D ;; stop) echo "Stopping smbd..." killproc /usr/sbin/smbd echo "Stopping nmbd..." killproc /usr/sbin/nmbd ;; reload) echo "Reloading smbd..." reloadproc /usr/sbin/smbd echo "Reloading nmbd..." reloadproc /usr/sbin/nmbd ;; restart) $0 stop sleep 1 $0 start ;; status) statusproc /usr/sbin/nmbd statusproc /usr/sbin/smbd ;; *) echo "Usage: $0 {start|stop|reload|restart|status}" exit 1 ;; esac # End $rc_base/init.d/samba EOF |
Add the run level symlinks:
chmod 754 /etc/rc.d/init.d/samba && ln -s /etc/rc.d/init.d/samba /etc/rc.d/rc0.d/K48samba && ln -s /etc/rc.d/init.d/samba /etc/rc.d/rc1.d/K48samba && ln -s /etc/rc.d/init.d/samba /etc/rc.d/rc2.d/K48samba && ln -s /etc/rc.d/init.d/samba /etc/rc.d/rc3.d/S24samba && ln -s /etc/rc.d/init.d/samba /etc/rc.d/rc4.d/S24samba && ln -s /etc/rc.d/init.d/samba /etc/rc.d/rc5.d/S24samba && ln -s /etc/rc.d/init.d/samba /etc/rc.d/rc6.d/K48samba |
Now, we'll use our new boot script to start Samba:
/etc/rc.d/init.d/samba start |
We have to add the SAMBABOX root account to the Samba user list first in order to join WIN2KBOX to the DOMAIN01 domain:
smbpasswd -a root |
After starting Samba and adding root to the Samba user list, the first machine we'll join to DOMAIN01 will be WIN2KBOX, the Windows 2000 Server box we created the machine trust account for. On WIN2KBOX:
1. Right click on My Computer. 2. Click on Properties. 3. Click on the Network Identification notebook tab. 4. Click on the Properties button. 5. In the Computer Name: edit field enter WIN2KBOX. 6. Click on the Domain: radio button and enter DOMAIN01 in the edit field and click OK. 7. When presented with the Domain Username And Password dialog box, enter root and root's password on SAMBABOX and click OK. 8. After the machine trust is negotiated, click the OK button in the dialog box welcoming you to the DOMAIN01 domain. 9. Click OK in the reboot reminder dialog box. 10. Click OK to close the System Properties window. 11. Click Yes to reboot WIN2KBOX. |
Before logging on to WIN2KBOX, we will create a new user with the following commands:
useradd -m win2kuser01 && passwd win2kuser01 && smbpasswd -a win2kuser01 |
Now we will log on the domain as our newly created user as follows:
1. Press Ctrl-Alt-Del to bring up the Log On to Windows dialog box. 2. Enter the win2kuser01 name and password. 3. Select DOMAIN01 from the Log on to: combination box and click OK. |
Add the swat entry to /etc/serviceswith the following command:
echo "swat 901/tcp" >> /etc/services |
If inetd is used, the following command will add the swat entry to /etc/inetd.conf:
echo "swat stream tcp nowait.400 root /usr/sbin/swat swat" \ >> /etc/inetd.conf |
If xinetd is used, the following command will add the swat entry to /etc/xinetd.conf:
cat >> /etc/xinetd.conf << "EOF" service swat { port = 901 socket_type = stream wait = no only_from = 127.0.0.1 user = root server = /usr/sbin/swat log_on_failure += USERID } EOF |
The Samba Web Administration Tool, swat, can be launched with the following command on SAMBABOX:
lynx http://localhost:901 |
Note: Be sure inetd is running, and issue a killall -HUP inetd before starting swat.
The lynx browser is used in this demonstration, but is not necessary.
cat > /etc/samba/smb.conf << "EOF" : Create a default Samba configuration file. This configuration will allow Samba to act as a Primary Domain Controller for a Microsoft Windows based network. If this is not desired, a simpler default smb.conf file is bundled with the Samba distribution. See the samba2.2.8a/examples/smb.conf.default file. Primary Domain Controller configuration is slightly more complicated than ordinary member server configuration, so instructions for PDC configuration will be given here.
cat > /etc/rc.d/init.d/samba << "EOF" : Create the Samba boot script, used to start and stop Samba automatically on machine startup and shutdown.
/usr/sbin/useradd -g 100 -d /dev/null -c \ "Win2k Server" -s /bin/false win2kbox$ |
echo "swat 901/tcp" >> /etc/services : Register the swat service to run on port 901.
echo "swat stream tcp nowait.400 root /usr/sbin/swat swat" >> /etc/inetd.conf : Instruct inetd where to find and how to run swat.
ln -s /etc/rc.d/init.d/samba /etc/rc.d/rc3.d/S600samba etc. : Create the Samba boot scripts, used to start and stop Samba automatically on machine startup and shutdown.
The Samba package contains make_smbcodepage, make_unicodemap, mount.smbfs, nmbd, nmblookup, rpcclient, smbcacls, smbclient, smbcontrol, smbd, smbpasswd, smbspool, smbstatus, swat, testparm, testprns, wbinfo and winbindd.
make_smbcodepage converts text descriptions of code pages to binary code page files and vice versa.
make_unicodemap converts text unicode map files to binary, for use in mapping characters to 16 bit unicode.
mount.smbfs provides /bin/mount with a way to mount remote windows (or samba) fileshares.
Download location (HTTP): http://www.xinetd.org/xinetd-2.3.10.tar.gz Download location (FTP): Version used: 2.3.10 Package size: 300 KB Estimated Disk space required: 1.2 MB |
xinetd is the eXtended InterNET services Daemon, a secure replacement for inetd.
Install xinetd by running the following commands:
./configure --prefix=/usr && make && make install |
./configure --prefix=/usr : Change the default installation directory of /usr/local.
Create the xinetd.conf file with the following commands:
cp /etc/xinetd.conf /etc/xinetd.conf.bak sed -e 's/etc/sbin/g' xinetd/sample.conf > /etc/xinetd.conf |
/etc/xinetd.conf
Create the xinetd boot script:
cat > /etc/rc.d/init.d/xinetd << "EOF" #!/bin/bash # Begin $rc_base/init.d/xinetd # Based on sysklogd script from LFS-3.1 and earlier. # Rewritten by Gerard Beekmans - gerard@linuxfromscratch.org source /etc/sysconfig/rc source $rc_functions case "$1" in start) echo "Starting xinetd..." loadproc /usr/sbin/xinetd ;; stop) echo "Stopping xinetd..." killproc /usr/sbin/xinetd ;; reload) echo "Reloading xinetd..." killall -HUP xinetd ;; restart) $0 stop sleep 1 $0 start ;; status) statusproc /usr/sbin/xinetd ;; *) echo "Usage: $0 {start|stop|reload|restart|status}" exit 1 ;; esac # End $rc_base/init.d/xinetd EOF |
Add the run level symlinks:
chmod 754 /etc/rc.d/init.d/xinetd && ln -s /etc/rc.d/init.d/xinetd /etc/rc.d/rc0.d/K49xinetd && ln -s /etc/rc.d/init.d/xinetd /etc/rc.d/rc1.d/K49xinetd && ln -s /etc/rc.d/init.d/xinetd /etc/rc.d/rc2.d/K49xinetd && ln -s /etc/rc.d/init.d/xinetd /etc/rc.d/rc3.d/S23xinetd && ln -s /etc/rc.d/init.d/xinetd /etc/rc.d/rc4.d/S23xinetd && ln -s /etc/rc.d/init.d/xinetd /etc/rc.d/rc5.d/S23xinetd && ln -s /etc/rc.d/init.d/xinetd /etc/rc.d/rc6.d/K49xinetd |
Now, we'll use our 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 due to the fact that we don't have most of the servers that xinetd is trying to control installed yet.
cp /etc/xinetd.conf /etc/xinetd.conf.bak : Save the current xinetd.conf file, if it exists.
sed -e 's/etc/sbin/g' xinetd/sample.config > /etc/xinetd.conf : insure the path to all daemons is /usr/sbin, rather than the default path of /usr/etc.
ln -s /etc/rc.d/init.d/xinetd /etc/rc.d/rc3.d/S23xinetd : Create the xinetd runlevel symlinks to the xinetd boot script, used to start and stop xinetd automatically on machine startup and shutdown.
The format of the /etc/xinetd.conf is documented in the xinetd.conf man page. Further information can be found at http://www.xinetd.org.
xinetd is the internet services daemon.
xconv.pl is a perl script used for converting inetd.conf files to xinetd.conf format, similar to itox.
Download location (HTTP): http://www.sleepycat.com/update/snapshot/db-4.1.25.tar.gz Download location (FTP): Version used: 4.1.25 Package size: 3 MB Estimated Disk space required: 27 MB |
The db package contains db_archive, db_checkpoint, db_deadlock, db_dump, db_load, db_printlog, db_recover, db_stat, db_upgrade, db_verify and the db libraries. These are used by many other programs for db related functions.
Install db by running the following commands:
cd build_unix && ../dist/configure --prefix=/usr \ --enable-compat185 \ --enable-cxx && make && make docdir=/usr/share/doc/db-4.1.25 install |
Note: If you wish to enable Java support in db-4.1.25, add --enable-java to the configure options. Java support is needed if you plan to use system installed db when compiling OpenOffice.
cd build_unix && ../dist/configure --prefix=/usr --enable-compat185 : This replaces the normal ./configure command as db comes with the various build directories for different platforms.
make docdir=/usr/share/doc/db-4.1.25 install : This installs db installing the documentation in the correct place.
As with most libraries, there is no configuration to do, save that the library directory i.e. /usr/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.
If you recompile perl after installing db-4.1.25 you will need to apply the perl-5.8.0-db-4.1.patch available at http://downloads.linuxfromscratch.org/blfs-patches.
The db package contains db_archive, db_checkpoint, db_deadlock, db_dump, db_load, db_printlog, db_recover, db_stat, db_upgrade and db_verify.
Download location (HTTP): http://www.sleepycat.com/update/snapshot/db-3.3.11.tar.gz Download location (FTP): Version used: 3.3.11 Package size: 2.3 MB Estimated Disk space required: 19 MB |
The db-3.3.11 package contains version 3.3.11 of the Berkeley Database.
Install db-3.3.11 by running the following commands:
cd build_unix && ../dist/configure --prefix=/opt/db-3.3 --enable-compat185 && make && make docdir=/opt/db-3.3/doc/Berkeley-DB install && cd /opt/db-3.3/lib/ && rm -f libdb.so && for i in $(ls); do mv $i /usr/lib; ln -sf /usr/lib/$i; done && cd /opt/db-3.3/include/ && sed 's/^DB185/DB/' db_185.h > db_185.h.new && mv db_185.h.new db_185.h && ln -nsf /opt/db-3.3/include /usr/include/db3 |
sed 's/^DB185/DB/' /usr/include/db_185.h > /usr/include/db_185.h.new : Change the DB185 database pointer to DB.
As with most libraries, there is no configuration to do, save that the library directory i.e. /usr/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.
The db-3.3.11 package contains db_archive, db_checkpoint, db_deadlock, db_dump, db_load, db_printlog, db_recover, db_stat, db_upgrade and db_verify.
Download location (HTTP): http://mysql.he.net/Downloads/MySQL-3.23/mysql-3.23.55.tar.gz Download location (FTP): ftp://mirror.mcs.anl.gov/pub/mysql/Downloads/MySQL-3.23/mysql-3.23.55.tar.gz Version used: 3.23.55 Package size: 11 MB Estimated Disk space required: 70 MB |
The MySQL package contains the mysql library, server and client utilities.
For security reasons, running the server as an unpriviledged user and group is strongly encouraged:
groupadd mysql && useradd -c mysql -d /dev/null -g mysql -s /bin/false mysql |
Build and install mysql by running the following commands:
cp configure configure.old && sed -e "s%mysql-test/Makefile%%" -e "s% mysql-test%%" configure.old > configure && ./configure --prefix=/usr \ --sysconfdir=/etc \ --libexecdir=/usr/sbin \ --localstatedir=/var/lib/mysql \ --enable-thread-safe-client \ --without-debug \ --without-bench && make && make install |
sed -e "s%mysql-test/Makefile%%" -e "s% mysql-test%%" configure.old > configure: This sed is used to disable the mysql test suite.
/etc/my.cnf, ~/.my.cnf
There are several default configurations file available in /usr/share/mysql which you can use.
cp /usr/share/mysql/my-medium.cnf /etc/my.cnf |
We can now install a database and change the ownership to the unpriviledged user and group.
mysql_install_db chown -R mysql:mysql /var/lib/mysql |
Further configuration requires that the mysql server be running:
safe_mysqld 2>&1 >/dev/null & |
A default installation, does not setup a password for the administrator. So here we will login and set one. We strongly suggest changing 'new-password' to your own.
mysql -uroot mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 to server version: 3.23.51-log Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> UPDATE user SET password=password('new-password') WHERE user='root'; Query OK, 2 rows affected (0.00 sec) Rows matched: 2 Changed: 2 Warnings: 0 mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec) mysql> EXIT; bye |
Now that we are done with the configuration of the server, we can shut it down.
kill `pidof -x safe_mysqld mysqld` |
To automate the running of mysql, use the following command to create the init.d script:
cat > /etc/rc.d/init.d/mysql << "EOF" #!/bin/bash # Begin $rc_base/init.d/ # Based on sysklogd script from LFS-3.1 and earlier. # Rewritten by Gerard Beekmans - gerard@linuxfromscratch.org source /etc/sysconfig/rc source $rc_functions case "$1" in start) echo "Starting MySQL daemon..." /usr/bin/safe_mysqld 2>&1 >/dev/null & evaluate_retval ;; stop) echo "Stopping MySQL daemon..." killproc mysqld ;; restart) $0 stop sleep 1 $0 start ;; status) statusproc /usr/sbin/mysqld ;; *) echo "Usage: $0 {start|stop|restart|status}" exit 1 ;; esac # End $rc_base/init.d/ EOF chmod 755 /etc/rc.d/init.d/mysql |
Create the symbolic links to this file in the relevant rc.d directory with the following commands:
cd /etc/rc.d/init.d && ln -sf ../init.d/mysql ../rc0.d/K26mysql && ln -sf ../init.d/mysql ../rc1.d/K26mysql && ln -sf ../init.d/mysql ../rc2.d/K26mysql && ln -sf ../init.d/mysql ../rc3.d/S34mysql && ln -sf ../init.d/mysql ../rc4.d/S34mysql && ln -sf ../init.d/mysql ../rc5.d/S34mysql && ln -sf ../init.d/mysql ../rc6.d/K26mysql |
The mysql package contains mysql, mysqladmin, mysqlcheck, mysqlshow, mysqldump, mysqlimport, mysqltest, mysqlbinlog, replace, comp_err, perror, resolveip, my_print_defaults, resolve_stack_dump, isamchk, isamlog, pack_isam, myisamchk, myisamlog, myisampack, safe_mysqld, mysql_install_db, msql2mysql, mysql_config, mysql_fix_privilege_tables, mysql_setpermission, mysql_zap, mysqlacess, mysqlbug, mysql_convert_table_format, mysql_find_rows, mysqlhotcopy, mysqldumbslow, mysqld_multi and mysqld
A package listing would be several pages long, we suggest consulting the mysql documentation for full details, instead.
Certain mysql support programs may require the perl DBI modules to be installed to function properly.
Download location (HTTP): http://www.ca.postgresql.org/ftpsite/v7.3.2/postgresql-7.3.2.tar.gz Download location (FTP): ftp://ftp8.us.postgresql.org/pub/pgsql/source/v7.3.2/postgresql-7.3.2.tar.gz Version used: 7.3.2 Package size: 11 MB Estimated Disk space required: 68 MB |
The PostgreSQL package contains the PostgreSQL RDBMS, client utilities and language bindings.
Note: The C++ and ODBC bindings have been removed from the main source distribution. They can be found at the PostgreSQL Projects Web Site at: http://gborg.postgresql.org.
PostgreSQL depends on: readline-4.3 |
Install PostgreSQL with the following commands:
./configure --prefix=/usr && make && make install |
Initialize a database cluster with the following commands:
mkdir -p /var/pgsql/data && useradd -d /var/pgsql/data postgres && chown postgres /var/pgsql/data && su - postgres -c '/usr/bin/initdb -D /var/pgsql/data' |
Start the database server with the following command:
su - postgres -c '/usr/bin/postmaster -D /var/pgsql/data > \ /var/pgsql/data/logfile 2>&1 &' |
Now we can 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 ') |
useradd -d /var/pgsql/data postgres : Add an unprivileged user to run the database server. Running the server as root is dangerous, and moreover simply will not work.
su - postgres -c '/usr/bin/initdb -D /var/pgsql/data' : Initialize the database tablespace. This command may not be executed by root.
su - postgres -c '/usr/bin/postmaster -D /var/pgsql/data > \ /var/pgsql/data/logfile 2>&1 &' : Start the database server. User postgres must execute this command as well.
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.
$PGDATA/pg_ident.con, $PGDATA/pg_hba.conf, $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/tutorial.html
postgres init.d script
Create the postgres, boot script with the following :
cat > /etc/rc.d/init.d/postgres << "EOF" #!/bin/bash # Begin $rc_base/init.d/postgres # Based on sysklogd script from LFS-3.1 and earlier. # Rewritten by Gerard Beekmans - gerard@linuxfromscratch.org source /etc/sysconfig/rc source $rc_functions case "$1" in start) echo "Starting PostgreSQL daemon..." su - postgres -c '/usr/bin/pg_ctl start -W -D /var/pgsql/data \ -l /var/pgsql/data/logfile -o "-i" ' evaluate_retval ;; stop) echo "Stopping PostgreSQL daemon..." /usr/bin/pg_ctl stop -m smart -D /var/pgsql/data evaluate_retval ;; restart) $0 stop sleep 1 $0 start ;; status) /usr/bin/pg_ctl status -D /var/pgsql/data ;; *) echo "Usage: $0 {start|stop|restart|status}" exit 1 ;; esac # End $rc_base/init.d/ EOF chmod 755 /etc/rc.d/init.d/postgres |
Create the symbolic links to this file in the relevant rc.d directory with the following commands:
cd /etc/rc.d/init.d && ln -sf ../init.d/postgres ../rc0.d/K26postgres && ln -sf ../init.d/postgres ../rc1.d/K26postgres && ln -sf ../init.d/postgres ../rc2.d/K26postgres && ln -sf ../init.d/postgres ../rc3.d/S34postgres && ln -sf ../init.d/postgres ../rc4.d/S34postgres && ln -sf ../init.d/postgres ../rc5.d/S34postgres && ln -sf ../init.d/postgres ../rc6.d/K26postgres |
The PostgreSQL RDBMS contains createdb, createlang, createuser, dropdb, droplang, dropuser, ecpg, initdb, initlocation, ipcclean, pg_config, pg_ctl, pg_dump, pg_dumpall, pg_passwd, pg_restore, pgaccess, pgtclsh, pgtksh, postgres, postmaster, psql and vacuumdb.
createdb creates a new PostgreSQL database.
pg_dump dumps database data and metadata into scripts which are used to recreate the database.
Download location (HTTP): http://www.apache.org/dist/httpd/apache_1.3.27.tar.gz Download location (FTP): ftp://ftp.tux.org/pub/net/apache/dist/httpd/apache_1.3.27.tar.gz Version used: 1.3.27 Package size: 2.2 MB Estimated disk space required: 13 MB |
The Apache package contains an open-source HTTP server. It is useful for creating local intranet web sites or running huge web serving operations.
For security reasons, running the server as an unpriviledged user and group is strongly encouraged.
groupadd apache && useradd -c apache -d /dev/null -g apache -s /bin/false apache |
Build and install Apache by running the following commands:
./configure --prefix=/usr \ --sbindir=/usr/sbin \ --libexecdir=/usr/lib/apache \ --sysconfdir=/etc/apache \ --includedir=/usr/include/apache \ --datadir=/var/www \ --localstatedir=/var/www \ --logfiledir=/var/log/apache \ --runtimedir=/var/run \ --enable-module=all \ --enable-shared=max \ --disable-module=auth_db \ --disable-module=auth_dbm \ --server-uid=apache \ --server-gid=apache && make && make install |
Download location (HTTP): Download location (FTP): ftp://ftp.xfree86.org/pub/XFree86/4.3.0/source/ Version used: 4.3.0 Package size: 137 MB Estimated Disk space required: 633 MB Estimated build time: 75m (667 MHz) |
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).
XFree86 depends on: freetype-2.1.3, expat-1.95.6 and libpng-1.2.5 |
There are several files that need to be fetched from the download location:
X430src-1.tgz 10736 KB X430src-2.tgz 7776 KB X430src-3.tgz 12077 KB X430src-4.tgz 12604 KB X430src-5.tgz 4286 KB X430src-6.tgz 7886 KB X430src-7.tgz 9099 KB |
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. There are also two packages doctools-1.3.1.tgz, which contain programs to regenerate hardcopy documentation, and utils-1.1.0.tgz, which contain gnutar and zlib which are already installed on an LFS system.
To check your downloads for integrity, download the SUMS.md5sum file. Then:
md5sum X430src* > md5sums && diff md5sums SUMS.md5sum |
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 doing:
cat /proc/pci |
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. If you do enable DRI here, make sure you select the video card(s) you want to support as a module.
If you made any changes to the kernel configuration, recompile with
make dep && make bzImage && make modules && make modules_install |
Copy /usr/src/linux/arch/i386/boot/bzImage and /usr/src/linux/System.map to /boot, edit /etc/lilo.conf appropriately and run lilo. If you use grub, edit /boot/grub/grub.conf and add the new kernel to the boot menu.
Note: If you build XFree86 in a chroot environment, make sure the kernel version of the base system and the target system are the same. This is especially important if you enabled DRI support as a module as instructed above.
Although XFree86 will compile without a host.def file, the following file is recommended for customizing the installation. Start from the xc directory.
cat > config/cf/host.def << "EOF" /* Begin XFree86 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. 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 -fomit-frame-pointer -march=i686 */ /* #define DefaultGcc2AxpOpt -O2 -mcpu=ev6 */ /* #define DefaultGcc2PpcOpt -O2 -mcpu=750 */ /* The following definitions are normally set properly by XFree86's scripts. * You can uncomment them if you want to make sure. ************************/ /* #define HasMTRRSupport YES */ /* Enabled in kernel see kernel docs*/ /* #define HasMMXSupport NO */ /* Any i586 or above */ /* #define HasKatmaiSupport NO */ /* PIII SSE instuctions */ /* #define Has3DNowSupport NO */ /* AMD instructions */ /* 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 AgpGartDrivers DevelDrivers ark \ cyrix siliconmotion \ vesa vga \ dummy XF86OSCardDrivers XF86ExtraCardDrivers /* FONT SERVER AND LIBRARY SETTINGS ****************************************/ /* These settings are the defaults ***************************************/ /* #define BuildFontServer YES */ /* For GhostScript Print Server*/ /* #define SharedLibFont YES */ /* #define CompressAllFonts YES */ /* #define GzipFontCompression YES */ /* These settings ensure we use our libraries ******************************/ #define HasFreetype2 YES #define HasExpat YES #define HasLibpng YES #define HasZlib YES /* The font path can be redefined in the XF86Config file *******************/ /* #define DefaultFontPath $(FONTDIR)/misc/,$(FONTDIR)/75dpi/,\ $(FONTDIR)/100dpi/,$(FONTDIR)/Type1,$(FONTDIR)/local,\ $(FONTDIR)/TrueType,$(FONTDIR)/CID,$(FONTDIR)/Speedo */ /* INTERNATIONAL FONTS. Change to YES if you need any of them. These are * the defaults. ***********************************************************/ /* #define BuildCyrillicFonts NO */ /* #define BuildArabicFonts NO */ /* #define BuildISO8859_6Fonts NO */ /* #define BuildGreekFonts NO */ /* #define BuildISO8859_7Fonts NO */ /* #define BuildHebrewFonts NO */ /* #define BuildISO8859_8Fonts NO */ /* #define BuildKOI8_RFonts NO */ /* #define BuildJapaneseFonts NO */ /* #define BuildJISX0201Fonts NO */ /* #define BuildKoreanFonts NO */ /* #define BuildChineseFonts NO */ /* DOCUMENTATION SETTINGS **************************************************/ /* These setting are the defaults. *****************************************/ /* #define BuildLinuxDocHtml NO */ /* X Docs in Html format */ /* #define BuildLinuxDocPS NO */ /* PostScript format */ /* #define BuildAllSpecsDocs NO */ /* Various docs */ /* #define BuildHtmlManPages NO */ /* GENERAL SETTINGS: You generally want to leave these alone when * building X on an LFS system *********************************************/ #define GccWarningOptions -pipe /* Speed up compiles */ #define TermcapLibrary -lncurses #define XprtServer YES /* Needed by realplayer */ #define XnestServer YES #define XAppLoadDir EtcX11Directory/app-defaults #define VarLibDir /var/lib #define XFree86Devel NO #define FSUseSyslog YES #define ThreadedX YES #define HasPam NO #define SystemManDirectory /usr/share/man /* Instead of /usr/man */ #define HasLibCrypt YES #define InstallXinitConfig YES #define InstallXdmConfig YES #define ForceNormalLib YES #define BuildSpecsDocs NO /* End XFree86 host.def file */ EOF |
Edit the file for your hardware and desires.
Install XFree86 by running the following commands:
WORLDOPTS="" make World 2>&1 | tee xfree-compile.log && make install && make install.man && ln -sf /usr/X11R6/bin /usr/bin/X11 && ln -sf /usr/X11R6/lib/X11 /usr/lib/X11 && ln -sf /usr/X11R6/include/X11 /usr/include/X11 |
If you have one of the supported DRI cards and have enabled DRI kernel modules as explained above, you now need to update the kernel modules to ensure they are compatible with the current version of XFree86. To do this, perform the following:
cd programs/Xserver/hw/xfree86/os-support/linux/drm/kernel && make -f Makefile.linux && mkdir -p /lib/modules/`uname -r`/kernel/drivers/char/drm/ && cp gamma.o radeon.o sis.o r128.o i810.o i830.o mga.o tdfx.o \ /lib/modules/`uname -r`/kernel/drivers/char/drm/ && depmod -a |
Warning |
If you recompile or upgrade your kernel, you will need to re-copy the driver modules to the kernel module library and rerun depmod. |
WORLDOPTS="" make World 2>&1 | tee xfree-compile.log : This command runs multiple makefiles to completely rebuild the system. WORLDOPTS="" disables the default setting to continue after encountering an error. 2>&1 redirects error messages to the same location as normal output. The tee command allows viewing of the output while logging the results to a file.
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 -sf /usr/X11R6/bin /usr/bin/X11, ln -sf /usr/X11R6/lib/X11 /usr/lib/X11, and ln -sf /usr/X11R6/include/X11 /usr/include/X11 : These commands are present to enable other (broken) packages to build against XFree86. We do this 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."
make -f Makefile.linux : This builds the XFree86 compatible kernel modules.
cp gamma.o radeon.o sis.o r128.o i810.o i830.o mga.o tdfx.o /lib/modules/`uname -r`/kernel/drivers/char/drm/ : Put the kernel modules where the kernel can find them.
depmod -a : Update the modules.dep file for module management.
Edit /etc/ld.so.conf and add /usr/X11R6/lib. Run
ldconfig |
Add /usr/X11R6/bin to your PATH environment variable in .bash_profile. The statement should look something like PATH=$PATH:/usr/X11R6/bin and be placed before the export PATH statement.
Run
source ~/.bash_profile |
Set up your mouse:
cd /dev ln -s psaux mouse |
Create the XF86Config file with
cd ~ XFree86 -configure |
Edit XF86Config.new to suit your system. The details of the file are located in the man page man XF86Config. 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". Remove or comment out some of the modules. The "glx" and "dri" sections are not operational until we install DRI below. Leaving modules in does not hurt anything.
Section "InputDevice". You may want to change the keyboard autorepeat rate by adding Option "Autorepeat" "250 30".
Section "Screen". Add a DefaultDepth statement such as: DefaultDepth 16. In the SubSection for your default depth, add a modes line such as: Modes "1280x1024" "1024x768". The first mode listed will normally be the starting resolution.
Test the system with
XFree86 -xf86config ~/XF86Config.new |
Move the configuration file to its final location
mv ~/XF86Config.new /etc/X11/XF86Config-4 |
Create .xinitrc
cat > ~/.xinitrc << "EOF" # Begin .xinitrc file xterm -g 80x40+0+0 & xclock -g 100x100-0+0 & twm EOF |
Start X with
startx |
The XFree86 package contains the X Windows 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 X Windows programs.
Note: The following list of programs is not comprehensive. The full list is in /usr/X11R6/bin. For additional information about these programs, see the respective man page.
A tool to configure XFree86 that can be used to either write the initial configuration file or make customizations to the current configuration.
DRI is a framework for allowing software to access graphics hardware in a safe and efficient manner. It is installed in XFree86 by default if you have a supported video card. To check if DRI is installed properly, check the log file /var/log/XFree86.0.log for statements like:
(II) R128(0): Direct rendering enabled |
From an xterm, run glxinfo and look for the phrase:
direct rendering: Yes |
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.
TrueType font support is built into XFree86. The following items need to be completed to make the fonts available.
Establish a directory for the fonts and move any TrueType fonts you want into that directory.
Create the fonts.scale and fonts.dir files in the TrueType font directory.
Ensure the truetype module is loaded in XF86Config.
Ensure the FontPath in XF86Config contains the TrueType font directory.
The build of XFree86 as given above automatically creates a TrueType font directory: /usr/X11R6/lib/X11/fonts/TTF. This directory already has some TrueType fonts and is set up correctly. If this directory is satisfactory, copy any other TrueType fonts you want into that directory. If not, create a new directory, preferably in the /usr/X11R6/lib/X11/fonts/ directory and put your TrueType fonts there.
Now change to the directory where you have your TrueType fonts and run
mkfontscale && mkfontdir |
The "Module" section should look like:
Section "Module" ... Load "freetype" ... EndSection |
The "Files" section should look like
Section "Files" ... FontPath "/usr/X11R6/lib/X11/fonts/<TruetypeDir>/" ... EndSection |
Finally, to update all the font cache files specified in /etc/fonts/fonts.conf, run
fc-cache |
XFree86 will now be able to use TrueType fonts when it is restarted. You can check to see if the new fonts are available with the xlsfonts or xfontsel program.
Note: You should re-run mkfontscale and mkfontdir any time you add or delete TrueType fonts. You should also rerun fc-cache each time you add or remove any fonts.
In this version of XFree86, it has been reported that 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 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.
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 |
There are many options that can be set in XFree86 and X clients via resources. Typically resources are set in the ~/.Xresources file.
The layout of the ~/.Xresources file consists if a list of specifications in the form of
object.subobject[.subobject...].attribute: value |
Typically, 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, XFree86 offers two new 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 XFree86'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.
Download location (HTTP): http://telia.dl.sourceforge.net/sourceforge/lesstif/lesstif-0.93.36.tar.bz2 Download location (FTP): Version used: 0.93.36 Package size: 2.4 MB Estimated Disk space required: 62 MB Estimated build time: 4.24 SBU |
The lesstif package contains an Open Source version of OSF/Motif(R).
lesstif depends on: xfree86-4.3.0 |
Install lesstif by running the following commands:
./configure --prefix=/usr \ --enable-build-20 \ --enable-build-21 \ --disable-debug \ --enable-production \ --disable-build-tests \ --with-xdnd && make && make install |
--enable-build-20 : Build the Motif 2.0 compatible version of the lesstif libraries.
--enable-build-21 : Also build the Motif 2.1 compatible versions.
--disable-debug : Do not generate debugging information.
--enable-production : Build the release version of the lesstif libraries.
--disable-build-tests : Do not build the test/ tree(see testing note below).
--with-xdnd : Enable XDND Gnome compatibility support.
As with most libraries, there is no configuration to do, save that the library directory i.e. /usr/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.
It is advisable to test the installation of lesstif with the test suite located in lesstif-0.93.36/test. It is not required to install any of the resulting binaries to validate the installation, the following commands, executed in lesstif-0.93.36/test, will suffice:
./configure && make |
Lesstif libraries are an OSF/Motif(R) source code compatible library for X Windows.
Download location (HTTP): http://telia.dl.sourceforge.net/sourceforge/freetype/freetype-2.1.3.tar.bz2 Download location (FTP): Version used: 2.1.3 Package size: 725 KB Estimated Disk space required: 14 MB |
The freetype2 package contains a library to allow XFree86 to properly render TrueType fonts.
Install freetype2 by running the following commands:
./configure --prefix=/usr && make && make install |
As with most libraries, there is no configuration to do, save that the library directory i.e. /usr/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.
Download location (HTTP): Download location (FTP): ftp://ftp.trolltech.com/qt/source/qt-x11-free-3.1.2.tar.bz2 Version used: 3.1.2 Package size: 13 MB Estimated Disk space required: 155 MB Estimated build time: 86.40 SBU |
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.
qt depends on: xfree86-4.3.0, libpng-1.2.5, libmng-1.0.5 and libjpeg-6b |
./configure -prefix /opt/qt-3.1.2 -qt-gif -system-libpng \ -system-libmng -system-zlib -system-libjpeg -no-g++-exceptions \ -thread && make && make install && ln -sfn /opt/qt-3.1.2 /opt/qt && ln -s /opt/qt/lib/libqt-mt.so /opt/qt/lib/libqt.so && cp -r doc/man /opt/qt/doc && cp -r examples /opt/qt/doc |
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 line above to:
make sub-tools
-prefix /opt/qt-3.1.2 : This command sets up the install destination.
-qt-gif : This command adds support for gif files to the libraries.
-system-libpng -system-libmng -system-zlib -system-libjpeg : This command forces the library to use the shared libraries that are on your system instead of recreating its own set of support libraries for these functions.
-no-g++-exceptions : This command disables the exceptions coding generated by the C++ compiler.
-thread : This command compiles the library to support multi-threading.
ln -sfn /opt/qt-3.1.2 /opt/qt : This command standardizes the location of the qt libraries to the ld.so.conf entry described below.
ln -s /opt/qt/lib/libqt-mt.so /opt/qt/lib/libqt.so : This command allows configure scripts to find a working QT installation.
cp -r doc/man /opt/qt/doc : This command installs the man directory which is missed by make install.
cp -r examples /opt/qt/doc : This command installs the examples directory which is missed by make install.
As with most libraries, there is no configuration to do, save that the library directory /opt/qt/lib should appear in /etc/ld.so.conf so that ldd can find the shared libraries. The following command will add it if it is missing:
cat >> /etc/ld.so.conf << "EOF" # Begin qt addition to /etc/ld.so.conf /opt/qt/lib # End qt addition EOF ldconfig |
You need to add the path for the qt man pages to the man.conf file. This can be done with the following command:
cat >> /etc/man.conf << "EOF" # Begin qt addition to man.conf MANPATH /opt/qt/doc/man # End qt addition to man.conf EOF |
Download location (HTTP): Download location (FTP): ftp://ftp.gtk.org/pub/gtk/v1.2/gtk+-1.2.10.tar.gz Version used: 1.2.10 Package size: 2.7 MB Estimated Disk space required: 54 MB Estimated build time: 7.04 SBU |
The GTK+ package contains GTK+ Libraries. This is useful for creating graphical user interfaces for applications.
GTK+ depends on: GLib-1.2.10, libpng-1.2.5, libtiff-3.5.7, libjpeg-6b and xfree86-4.3.0 |
Install GTK+ by running the following commands:
./configure --prefix=/usr --sysconfdir=/etc && make && make install |
--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.
As with most libraries, there is no configuration to do, save that the library directory i.e. /usr/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.
Download location (HTTP): Download location (FTP): ftp://ftp.gtk.org/pub/gtk/v2.2/pango-1.2.1.tar.gz Version used: 1.2.1 Package size: 776 KB Estimated Disk space required: 10.1 MB Estimated build time: 0.97 SBU |
The Pango package contains the pango library. This is useful for the layout and rendering of text.
Pango depends on: GLib-2.2.1 and freetype-2.1.3 Pango will utilize: qt-3.1.2, xfree86-4.3.0, gtk-doc-1.0 and xml-dtd-4.2 |
In order for pango to find xft2, the PKG_CONFIG_PATH must include /usr/X11R6/lib/pkgconfig. This is a good place to add it if you haven't already. Specific instructions for modifying this variable can be found in the pre-installation instructions for gnome.
Install Pango by running the following commands:
./configure --prefix=/usr --sysconfdir=/etc && make && make install |
--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.
Pango libraries contains low level layout rendering routines, a high level driver for laying out entire blocks of text, and routines to assist in editing internationalized text.
Download location (HTTP): Download location (FTP): ftp://ftp.gtk.org/pub/gtk/v2.2/atk-1.2.0.tar.bz2 Version used: 1.2.0 Package size: 284 KB Estimated Disk space required: 3.7 MB Estimated build time: 0.18 SBU |
The atk package contains the ATK libraries. They are useful for allowing accessibility solutions to be available for all GTK2 applications.
ATK depends on: GLib-2.2.1 ATK will utilize: gtk-doc-1.0 and sgml-dtd-3.1 |
Install ATK by running the following commands:
./configure --prefix=/usr && make && make install |
--enable-gtk-doc : This switch will rebuild the API documentation during the make command.
ATK Libraries contain the API used by assistive technologies in order to interact with the desktop and applications.
Download location (HTTP): Download location (FTP): ftp://ftp.gtk.org/pub/gtk/v2.2/gtk+-2.2.1.tar.bz2 Version used: 2.2.1 Package size: 6.3 MB Estimated Disk space required: 66.1 MB Estimated build time: 5.49 SBU |
The GTK+ package contains GTK+ Libraries. This is useful for creating graphical user interfaces for applications.
GTK+ depends on: GLib-2.2.1, xfree86-4.3.0, Pango-1.2.1, ATK-1.2.0, libpng-1.2.5, libtiff-3.5.7 and libjpeg-6b GTK+ will utilize: gtk-doc-1.0 |
Install GTK+ by running the following commands:
./configure --prefix=/usr --sysconfdir=/etc && make && make install |
--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.
As with most libraries, there is no configuration to do, save that the library directory i.e. /usr/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.
Download location (HTTP): http://www.freedesktop.org/software/startup-notification/releases/startup-notification-0.5.tar.gz Download location (FTP): Version used: 0.5 Package size: 212 KB Estimated Disk space required: 1.6 MB Estimated build time: 0.20 SBU |
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.
startup-notification depends on: xfree86-4.3.0 |
Install startup-notification by running the following commands:
./configure --prefix=/usr && make && make install |
startup-notification libraries provide the functions to assist applications in communicating with the cursor system to provide feedback to the user that the application is loading.
Window Mangers and Desktop Environments are the primary user interfaces into the X Windows 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 Mangers 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 Parts.
Download location (HTTP): http://telia.dl.sourceforge.net/sawmill/sawfish-1.3.tar.gz Download location (FTP): Version used: 1.3 Package size: 1.5 MB Estimated Disk space required: 13 MB Estimated build time: 0.80 SBU |
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.
sawfish-1.3 depends on: xfree86-4.3.0, librep-0.16.2, rep-gtk-0.17, esound-0.2.29 and GTK+-2.2.1 sawfish will utilize: libglade-2.0.1 |
Install sawfish by running the following commands:
./configure --prefix=/usr --libexec=/usr/sbin --infodir=/usr/share/info \ --with-gnome-prefix=/opt/gnome-2.2 && make && make install |
--with-audiofile : This command directs sawfish to use libaudiofile for sound manipulation.
--with-esd : This command directs sawfish to use the Enlightened Sound Daemon.
--with-gnome-prefix=/opt/gnome-2.2 : This command directs sawfish to GNOME's directory.
Be sure to backup your current .xinitrc before proceeding.
cat >> ~/.xinitrc << "EOF" exec sawfish EOF |
Download location (HTTP): http://telia.dl.sourceforge.net/sourceforge/fluxbox/fluxbox-0.1.14.tar.bz2 Download location (FTP): Version used: 0.1.14 Package size: 372 KB Estimated Disk space required: 6.5 MB Estimated build time: 2.21 SBU |
The fluxbox package contains a windows manager.
fluxbox depends on: xfree86-4.3.0 |
Install fluxbox by running the following commands:
./configure --prefix=/usr --enable-kde --enable-gnome && make && make install |
--enable-kde : This command activates fluxbox's ability to allow kde tray icons to be placed in the slit.
--enable-gnome : This command activates fluxbox's ability to support gnome.
~/.fluxbox/init, ~/.fluxbox/keys, ~/.fluxbox/menu
Be sure to backup your current .xinitrc before proceeding.
cat >> ~/.xinitrc << "EOF" exec fluxbox EOF |
mkdir ~/.fluxbox && cp /usr/share/fluxbox/init ~/.fluxbox/init && cp /usr/share/fluxbox/keys ~/.fluxbox/keys && cp /usr/share/fluxbox/menu ~/.fluxbox/menu |
Menu Items are added by editing~/.fluxbox/menu. The syntax is explained on the fluxbox man page.
fluxbox is a window manager for X11 based on Blackbox 0.61.0.
bsetbg is a utility that sets the background image. It needs display, Esetroot, wmsetbg, xv, qiv or xsri to be used.
Download location (HTTP): http://telia.dl.sourceforge.net/xfce/xfce-3.8.18.tar.gz Download location (FTP): Version used: 3.8.18 Package size: 5.1 MB Estimated Disk space required: 26.3 MB |
The XFce package contains a lightweight desktop environment.
XFce depends on: xfree86-4.3.0, GTK+-1.2.10 and GLib-1.2.10 XFce will utilize: gdk-pixbuf-0.22.0, imlib-1.9.14, libpng-1.2.5, libjpeg-6b, libungif-4.1.0b1 and libtiff-3.5.7 |
Install XFce by running the following commands:
./configure --prefix=/usr --datadir=/usr/share --sysconfdir=/etc && make && make install |
--datadir=/usr/share : This command puts resource files into /usr/share/xfce instead of /usr/local/share/xfce.
~/.xinitrc
XFce includes a script named xfce_setup which will set up xfce for the user. Also included is a script named xfce_remove which returns the configuration files to their previous state.
The XFce package contains CDE2Xfcepal, startxfce, xfbd, xfbdmgr, xfce, xfce_remove, xfce_setup, xfce_upgrade, xfclock, xfdiff, xfglob, xfgnome, xfhelp, xflock, xfmenu, xfmountdev, xfmouse, xfmouse, xfpager, xfplay, xfprint, xfrun, xfsamba, xfskin, xfsound, xfterm, xftrash, xftree, xfumed and xfwm.
CDE2Xfcepal converts CDE palettes to XFce palettes.
xfce_remove is a uninstall script to remove XFce as the desktop environment are restore the previous settings.
xfmountdev mounts a device on the specified mount point and launches xftree, then unmounts the device when xftree finishes.
xfprint is a minimalist printing wrapper to be used as a drag and drop action for the XFce front panel.
xfterm is a small terminal wrapper to be used as a drag and drop action for the XFce front panel.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/metacity/2.4/metacity-2.4.34.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/metacity/2.4/metacity-2.4.34.tar.bz2 Version used: 2.4.34 Package size: 1.2 MB Estimated Disk space required: 15.8 MB Estimated build time: 1.33 SBU |
The metacity package contains a window manager. This is useful for organizing and displaying windows.
metacity depends on: xfree86-4.3.0, intltool-0.25 and GTK+-2.2.1 metacity will utilize: startup-notification-0.5 and GConf-2.2.0 |
Install metacity by running the following commands:
./configure --prefix=/usr --libexec=/usr/sbin --sysconfdir=/etc && make && make install |
Be sure to backup your current .xinitrc before proceeding.
cat >> ~/.xinitrc << "EOF" xterm & exec metacity EOF |
KDE depends on: xfree86-4.3.0 and qt-3.1.2 |
KDE is a comprehensive desktop environment that builds on XFree86 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.
We divide the KDE instructions 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). Finally, we describe installation of other miscellaneous KDE packages.
As the instructions for compiling and installing KDE were developed, the options to configure were examined and the parameters presented are the most likely to compile correctly. 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.
KDE also has many internationalization packages in the form of: kde-i18n-xx-3.1.tar.bz2 where the xx is a two to five letter code for the country covered. We do not cover the installation of these packages here.
All the KDE packages comprise 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=/opt/kde... |
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.
Download location (FTP): ftp://ftp.kde.org/pub/kde/stable/3.1/src/arts-1.1.tar.bz2 Version used: 1.1 Package size: 947 KB Estimated build disk space: 35 MB Estimated installed space: 5.7 MB Estimated build time: 11 min (667 MHz) |
The Analog Real-time Synthesizer (aRts) provides sound support for KDE. It provides necessary libraries for kdelibs. The following package is required to install aRts:
qt-3.1.2 |
It will use the following recommended packages, if installed:
alsa-0.9.2, audiofile-0.2.3, and libvorbis-1.0 |
Before starting the build, ensure you have the QTDIR environment variable set
export QTDIR=/opt/qt |
./configure --prefix=/opt/kde-3.1 --disable-debug \ --disable-dependency-tracking && make && make install && ln -sfn /opt/kde-3.1 /opt/kde |
Note: Another configure option is --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.
--prefix=/opt/kde-3.1 : This option tells the process to install the package in /opt/kde-3.1. We put aRts here because this package is required before installing KDE.
--disable-debug : This option causes the system to be compiled without debugging code.
--disable-dependency-tracking : This option speeds up one time builds.
ln -sfn /opt/kde-3.1 /opt/kde : This command creates a link for access to KDE. If a newer version of KDE is released, the new system can be built by changing the --prefix location and then set up by changing the link as this command does.
The library directory /opt/kde/lib should appear in /etc/ld.so.conf so that ldd can find the shared libraries. The following command will add it if it is missing:
cat >> /etc/ld.so.conf << "EOF" # Begin kde addition to /etc/ld.so.conf /opt/kde/lib # End kde addition EOF ldconfig |
Download location (FTP): ftp://ftp.kde.org/pub/kde/stable/3.1/src/kdelibs-3.1.tar.bz2 Estimated build disk space: 115 MB Estimated installed space: 41 MB Package size: 7.2 MB Estimated build time: 62 min (667 MHz) |
The following package is required to install kdelibs:
arts-1.1 |
kdelibs can use many libraries and programs. The following are recommended:
openssl-0.9.7a, pcre-4.1, libxml2-2.5.6, libxslt-1.0.29, libfam-2.6.9, and libart_lgpl-2.3.11 |
Other optional programs and libraries that can be used by kdelibs are:
cups-1.1.18, sane-1.0.9, and openldap-2.1.17 |
Install kdelibs with:
./configure --prefix=/opt/kde-3.1 --disable-debug \ --disable-dependency-tracking --with-alsa --enable-fast-malloc=full && make && make install |
--prefix=/opt/kde-3.1 : This option tells the process to install the package in /opt/kde-3.1.
--disable-debug : This option causes the system to be compiled without debugging code.
--disable-dependency-tracking : This option speeds up one time builds.
--with-alsa : This option tells the build process to search for and use Alsa for sound support.
--enable-fast-malloc=full : This option tells KDE programs to use an internal memory allocation scheme optimized for KDE.
Download location (FTP): ftp://ftp.kde.org/pub/kde/stable/3.1/src/kdebase-3.1.tar.bz2 Estimated build disk space: 132 MB Estimated installed space: 45 MB Package size: 12.0 MB Estimated build time: 98 min (667 MHz) |
kdebase can use many optional libraries and programs. The following are recommended:
openssl-0.9.7a, lesstif-0.93.36, CDParanoia-III-9.8, libvorbis-1.0, shadow (in the LFS book), and cups-1.1.18 |
Other programs and libraries that can be used by kdebase are:
lame-3.93.1, and Linux_PAM-0.77 |
Check to see if /lib/libmisc.la exists. If not, run:
ln -sf /usr/lib/libmisc.la /lib/libmisc.la |
Install kdebase with:
./configure --prefix=/opt/kde-3.1 --disable-debug \ --disable-dependency-tracking --disable-lametest --with-shadow && make && make install |
--disable-lametest : Do not search for and use lame support. This package provides mp3 encoding. Omit this option if you installed lame.
--with-shadow : Use shadow password support.
Major programs in Kde-base include:
kdesktop - the program that handles desktop icons, popup menus, and the screensaver system.
kaddressbook - a simple addressbook
kappfinder - utility to add non-KDE applications to K-menu
kcontrol - KDE Control Center
kdeprint - Print job administration
kdm - KDE Display manager (a replacement for xdm
kfind - utility to find files
khelpcenter - kde help tool
khotkeys - handles hot keys for KDE
kicker - KDE control panel
klipper - a clipboard utility
kmenuedit - utility to reaggange or add to the K-menu
konqueror - a filesystem and Web browser
konsole - a highly configurable X terminal emulator
kscreensaver - program to set up screensavers
ktip - wizard to provide hints and KDE information
First create an /opt/kde symlink:
ln -sf /opt/kde-3.1 /opt/kde |
Then create an .xinitrc file to start KDE:
echo "exec startkde" > ~/.xinitrc |
ldconfig |
At this point you can bring up KDE with:
startx |
Download location (FTP): ftp://ftp.kde.org/pub/kde/stable/3.1/src/kdemultimedia-3.1.tar.bz2 Estimated build disk space: 78 MB Estimated installed space: 15 MB Package size: 5.8 MB Estimated build time: 44 min (667 MHz) |
kdemultimedia depends on:
kdebase-3.1 |
Install kdemultimedia with:
./configure --prefix=/opt/kde-3.1 --disable-debug \ --disable-dependency-tracking --with-arts-alsa && make && make install |
--with-arts-alsa : Use the alsa support built into aRts.
There is no explicit configuration for the kde multimedia package, however Kscd needs to find the CD drive. The default is /dev/cdrom which may not exist on your system. The easiest way to do this is to create a symbolic link to this from your CD drive (e.g. /dev/hdc, /dev/scd0, etc):
cd /dev && ln -s "CD Drive" /dev/cdrom |
The KDE Multimedia package provides:
kaboodle - A multimedia player
noatun - Another multimedia player
TiMidity - Midi player
kmidi - A front end for TiMidity
kmix - Sound mixer
Kscd - CD player
aKtion! - Video player
Download location (FTP): ftp://ftp.kde.org/pub/kde/stable/3.1/src/kdenetwork-3.1.tar.bz2 Estimated build disk space: 71 MB Estimated installed space: 16 MB Package size: 4.8 MB Estimated build time: 28 min (667 MHz) |
kdenetwork depends on:
kdebase-3.1 |
Install kdenetwork with:
./configure --prefix=/opt/kde-3.1 --disable-debug \ --disable-dependency-tracking && make && make install |
There is no explicit configuration for the kde network package, however individual packages need to be set up with user information.
The KDE Network package provides:
KMail - A mail client
KNewsTicker - News applet for the KDE Application Launcher Panel
KNode - A news reader
KPPP - Internet dial-up utility
KSirc - A chat client
Kit - An AOL messaging client (AIM)
Korn - A mail notification utility
Download location (FTP): ftp://ftp.kde.org/pub/kde/stable/3.1/src/kdegraphics-3.1.tar.bz2 Estimated build disk space: 38 MB Estimated installed space: 7 MB Package size: 4.4 MB Estimated build time: 24 min (667 MHz) |
kdegraphics depends on:
kdebase-3.1 and which-2.14 (or the which script) The kuickshow program requires imlib-1.9.14 The kooka program requires sane-1.0.9 |
Install kdegraphics with:
./configure --prefix=/opt/kde-3.1 --disable-debug \ --disable-dependency-tracking && make && make install |
The KDE Graphics package provides:
kcoloredit - color pallette editor
kdvi - DVI viewer
kfax - FAX viewer
kfract - A fractal generator
kghostview - PS/PDF viewer
kiconedit - An icon editor
kooka - Raster image scan program
kpaint - A paint program
kruler - Screen ruler
ksnapshot - Screen capture program
kuickshow - Image viewer
kview - Another image viewer
Download location (FTP): ftp://ftp.kde.org/pub/kde/stable/3.1/src/kdepim-3.1.tar.bz2 Estimated build disk space: 63 MB Estimated installed space: 7 MB Package size: 3.1 MB Estimated build time: 22 min (667 MHz) |
kdepim depends on:
kdebase-3.1 |
The kpilot application depends on pilot-link version 0.9.5 which can be found at http://www.slac.com/pilone/kpilot_home
Install kdepim with:
./configure --prefix=/opt/kde-3.1 --disable-debug \ --disable-dependency-tracking && make && make install |
The KDE PIM package provides:
kalarm - A system to provide reminder messages.
kandy - A program to synchronize mobile phone numbers
karm - A personal time tracker
knotes - Popup notes utility
korganizer - Personal calendar/todo system
kpilot - A program to synchrinize a Palm-Pilot
libical - A calendar library
Download location (FTP): ftp://ftp.kde.org/pub/kde/stable/3.1/src/kdeadmin-3.1.tar.bz2 Estimated build disk space: 23 MB Estimated installed space: 4 MB Package size: 1.5 MB Estimated build time: 10 min (667 MHz) |
kdeadmin depends on:
kdebase-3.1 The kpackage program can use rpm kuser can use shadow and Linux_PAM-0.77 |
Install kdeadmin with:
./configure --prefix=/opt/kde-3.1 --disable-debug \ --disable-dependency-tracking --with-shadow && make && make install |
--with-shadow : This option allows use of shadow passwords.
The KDE Admin package provides:
kpackage - A package manager
kcron - A task scheduler
kuser - Graphical user manager
kwuftpd - FTPD editor
ksysv - Sys V-Init Editor
Download location (FTP): ftp://ftp.kde.org/pub/kde/stable/3.1/src/kdegames-3.1.tar.bz2 Estimated build disk space: 70 MB Estimated installed space: 20 MB Package size: 8.0 MB Estimated build time: 24 min (667 MHz) |
kdegames depends on:
kdebase-3.1 |
Install kdegames with:
./configure --prefix=/opt/kde-3.1 --disable-debug \ --disable-dependency-tracking && make && make install |
The KDE Games package provides the following games:
Arcade: KAsteroids, KBounce, KFoulEggs, KSirtet, KSmileTris, KSnakeRace, KSpaceDuel, KTron
Boardgames: KBackgammon, KBattleship, KBlakBox, KMahjongg, KReversi, KWin4, Kenolaba, Shisen-Sho
Card Games: KPoker, Lieutnant, Patience
Strategy & Tactics: KAtomic, KJumpingCube, KMines, KSokoban, Kolor Lines, Konquest, SameGame
Download location (FTP): ftp://ftp.kde.org/pub/kde/stable/3.1/src/kdeutils-3.1.tar.bz2 Estimated build disk space: 26 MB Estimated installed space: 6 MB Package size: 1.4 MB Estimated build time: 13 min (667 MHz) |
kdeutils depends on:
kdebase-3.1 |
Install kdeutils with:
./configure --prefix=/opt/kde-3.1 --disable-debug \ --disable-dependency-tracking && make && make install |
The KDE Utils package provides the following:
kcalc - Scientific Calculator
charselectapplet - Character Selector Applet
arc - Archiving Tool
kdepasswd - Change passwords
kdf - View disk usage
kedit - Text editor
kfloppy - Floppy formatter
khexeditor - Binary editor
kjots - Note taker
kljtool - HP Laserjet control panel
klpq - View print job queues
ktimer - Task scheduler
Download location (FTP): ftp://ftp.kde.org/pub/kde/stable/3.1/src/kdeedu-3.1.tar.bz2 Estimated build disk space: 78 MB Estimated installed space: 15 MB Package size: 20 MB Estimated build time: 13 min (667 MHz) |
kdeedu depends on:
kdebase-3.1 |
Install kdeedu with:
./configure --prefix=/opt/kde-3.1 --disable-debug \ --disable-dependency-tracking && make && make install |
The KDE Edu package provides:
keduca - Tests and Exams
kgeo - Interactive geometry tutorial
klettres - Alphabet tutor (French)
kstars - Desktop planetarium
ktouch - Touch typing tutor
kvoctrain - Vocabulary trainer
Download location (FTP): ftp://ftp.kde.org/pub/kde/stable/3.1/src/kdeartwork-3.1.tar.bz2 Estimated build disk space: 47 MB Estimated installed space: 21 MB Package size: 12.0 MB Estimated build time: 8 min (667 MHz) |
kdeartwork depends on:
kdebase-3.1 |
Install kdeartwork with:
./configure --prefix=/opt/kde-3.1 --disable-debug \ --disable-dependency-tracking && make && make install |
The KDE Artwork package provides:
KDE themes including wallpapers, sounds, icons, and window decorations
kscreensaver - KDE screensavers
Download location (FTP): ftp://ftp.kde.org/pub/kde/stable/3.1/src/kdetoys-3.1.tar.bz2 Estimated build disk space: 12 MB Estimated installed space: 4 MB Package size: 1.8 MB Estimated build time: 4 min (667 MHz) |
kdetoys depends on:
kdebase-3.1 |
Install kdetoys with:
./configure --prefix=/opt/kde-3.1 --disable-debug \ --disable-dependency-tracking && make && make install |
The KDE toys package provides:
AMOR - Amusing Misuse of Resources
kaphorism - Aphorisms
kmoon - Moon phase indicator
kodo - Measure your desktop mileage
kteatime - Time your tea brewing
ktux - Small Tux crossing stars
Download location (FTP): ftp://ftp.kde.org/pub/kde/stable/3.1/src/kdeaddons-3.1.tar.bz2 Estimated build disk space: 23 MB Estimated installed space: 5 MB Package size: 1.1 MB Estimated build time: 15 min (667 MHz) |
kdeaddons depends on:
kdemultimedia-3.1 and kdenetwork-3.1 |
Install kdeaddons with:
./configure --prefix=/opt/kde-3.1 --disable-debug \ --disable-dependency-tracking && make && make install |
The KDE Addons package provides:
konquorer plugins
kicker applets
noatun plugins
newskicker scripts
Download location (FTP): http://www.ph.unimelb.edu.au/~ssk/kde/kdoc/kdoc-snapshot.tar.gz Estimated build disk space: 512 KB Estimated installed space: 304 KB Package size: 86 KB |
KDOC is a C++ and IDL interface documentation tool, initially written for the specific purpose of generating documentation for the KDE libraries.
Note: KDOC is still under development. This prcedure installs the latest snapshot.
Install kdoc with:
./configure --prefix=/opt/kde-3.1 && make && make install |
The kdoc package provides:
kdoc - C++ Documentation tool
makekdedoc - Generates HTML documentation of the KDE libraries
qt2kdoc - Generates KDoc reference index for the QT GUI toolkit
This chapter attempts to install a complete Gnome-2.2 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 are meant to follow the build order defined by the Gnome development team as published in the release notes, with two exceptions. If a package is in the release notes build list, but not in this chapter, it has been installed elsewhere in the book.
The installation of Gnome-2.2 is a large undertaking and one we would like to see you complete with the least amount of stress. One of our first goals in this installation is to protect your previously installed software, especially if you are testing Gnome on your machine. Gnome-2.2 packages utilize the --prefix= option for configure, so we will use that and an Environment variable (GNOME_PREFIX) to add flexibility to the install.
If you know that you want Gnome as your desktop, it is recommended that you install with --prefix=/usr. If you are not sure that you are going to keep Gnome on your installation, it is recommended that you install with --prefix=/opt/gnome-2.2. Setting the Environment variable and the additional edits required by the second option are covered on the pre-installation page.
If you choose the second option, removal of Gnome-2.2 is as easy as removing the edits from the pre-installation page and issue the following command:
rm /opt/gnome-2.2 -r |
If your system was completely built per LFS and BLFS instructions, you have a very good chance of using Gnome-2.2 after your first install. 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.2 into your unique setup, but you will have 28 to 33 packages installed before you can run Gnome through any testing (assuming your window manager is preinstalled and tested). We would anticipate that you will be rebuilding gnome at least once to make adjustments for your setup.
If you are building a Gnome 1.4 desktop 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 are simply installed with:
./configure --prefix=/opt/gnome && make && make install |
Gnome-2.2 requires: xfree86-4.3.0, GTK+-2.2.1, libpng-1.2.5, libjpeg-6b, libtiff-3.5.7, popt-1.7 Gnome-2.2 will utilize: libxml2-2.5.6, libxslt-1.0.29, xml-dtd-4.2, docbook-xsl-1.60.1 and libfam-2.6.9 |
Set an Environment variable to resolve the prefix destination.
If Gnome is your desktop of choice:
export GNOME_PREFIX=/usr |
export GNOME_PREFIX=/opt/gnome-2.2 |
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.2/bin export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/opt/gnome-2.2/lib/pkgconfig export GNOME_LIBCONFIG_PATH=/usr/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.2/lib # End gnome addition EOF |
Add to your /etc/man.conf:
cat >> /etc/man.conf << "EOF" # Begin gnome addition to man.conf MANPATH /opt/gnome-2.2/man # END gnome addition to man.conf EOF |
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/gtk-doc/1.0/gtk-doc-1.0.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/gtk-doc/1.0/gtk-doc-1.0.tar.bz2 Version used: 1.0 Package size: 120 KB Estimated Disk space required: 956 KB |
Additional downloads: png-support-3.1.dtd |
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 pre-built documentation to your system.
gtk-doc depends on: openjade-1.3.2, libxslt-1.0.29, xml-dtd-4.2, sgml-dtd-3.1 and sgml-dtd-4.2 |
Install gtk-doc by running the following commands:
./configure --prefix=/usr && make install |
You should either save png-support-3.1.dtd to /usr/share/sgml/docbook/sgml-dtd-3.1 or move the file to that location. Some configuration steps need to be performed that are listed at sgml-dtd-3.1.
The gtk-doc package contains gtkdoc-fixxref, gtkdoc-mkdb, gtkdoc-mkhtml, gtkdoc-mkman, gtkdoc-mktmpl, gtkdoc-scan, gtkdoc-scangobj and gtkdoc-scanobj.
This are all perl scripts used by Makefile scripts to generate documentation for the package.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/linc/1.0/linc-1.0.1.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/linc/1.0/linc-1.0.1.tar.bz2 Version used: 1.0.1 Package size: 188 KB Estimated Disk space required: 1.9 MB Estimated build time: 0.28 SBU |
The linc package contains a library that eases the task of writing networked servers and clients. This is used by ORBit to hand message transmissions and receptions.
linc depends on: GLib-2.2.1 and openssl-0.9.7a linc will utilize: gtk-doc-1.0 and sgml-dtd-3.1 |
Install linc by running the following commands:
./configure --prefix=$GNOME_PREFIX --with-openssl --disable-gtk-doc && make && make install |
--with-openssl : This switch compiles linc with OpenSSL support.
--disable-gtk-doc : This switch will prevent the rebuilding of the API documentation during the make command.
liblinc libraries provide the functions to take care of connection initiation and maintenance, and the details of various transports (IPv4, UNIX domain sockets, IPv6 and IrDA).
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/libIDL/0.8/libIDL-0.8.0.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/libIDL/0.8/libIDL-0.8.0.tar.bz2 Version used: 0.8.0 Package size: 348 KB Estimated Disk space required: 2.6 MB Estimated build time: 0.24 SBU |
The libIDL package contains libraries for Interface Definition Language files. This is a specification for defining portable interfaces.
libIDL depends on: GLib-2.2.1 |
Install libIDL by running the following commands:
./configure --prefix=$GNOME_PREFIX && make && make install |
libIDL libraries provide the functions to create and maintain trees of CORBA Interface Definition Language (IDL) files.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/ORBit2/2.6/ORBit2-2.6.1.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/ORBit2/2.6/ORBit2-2.6.1.tar.bz2 Version used: 2.6.1 Package size: 432 KB Estimated Disk space required: 10.8 MB Estimated build time: 1.95 SBU |
The ORBit2 package contains a high-performance CORBA Object Request Broker. This allows programs to send requests and receive replies from other programs.
ORBit2 depends on: GLib-2.2.1, linc-1.0.1, libIDL-0.8.0 and popt-1.7 |
Install ORBit2 by running the following commands:
ldconfig && ./configure --prefix=$GNOME_PREFIX && make && make install |
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/intltool/0.25/intltool-0.25.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/intltool/0.25/intltool-0.25.tar.bz2 Version used: 0.25 Package size: 100 KB Estimated Disk space required: 952 KB |
The intltool package contains an internationalization tool. This is useful for extracting translatable strings from source files, collects the extracted strings with messages from traditional source files (<source directory>/<package>/po) and merging the translations into .xml, .desktop and .oaf files.
Install intltool by running the following commands:
./configure --prefix=/usr --mandir=/usr/share/man && make && make install |
The intltool package contains intltoolize, intltool-update, intltool-extract, intltool-merge, intltool-prepare and intltool-unicodify.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/bonobo-activation/2.2/bonobo-activation-2.2.1.1.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/bonobo-activation/2.2/bonobo-activation-2.2.1.1.tar.bz2 Version used: 2.2.1.1 Package size: 447 KB Estimated Disk space required: 5.2 MB Estimated build time: 0.60 SBU |
The bonobo-activation package contains libbonobo-activation libraries. This is the new Object Activation Framework (OAF) for GNOME.
bonobo-activation depends on: ORBit2-2.6.1 bonobo-activation will utilize: gtk-doc-1.0 and sgml-dtd-3.1 |
Install bonobo-activation by running the following commands:
./configure --prefix=$GNOME_PREFIX --libexecdir=$GNOME_PREFIX/sbin \ --sysconfdir=/etc/gnome --disable-gtk-doc && make && make install |
--libexecdir=$GNOME_PREFIX/sbin : This switch puts libexec files in $GNOME_PREFIX/sbin instead of $GNOME_PREFIX/libexec.
--sysconfdir=/etc/gnome : This switch puts configuration files in /etc/gnome instead of $GNOME_PREFIX/etc.
--disable-gtk-doc : This switch will prevent the rebuilding of documentation during the make command.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/libbonobo/2.2/libbonobo-2.2.1.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/libbonobo/2.2/libbonobo-2.2.1.tar.bz2 Version used: 2.2.1 Package size: 557 KB Estimated Disk space required: 8.8 MB Estimated build time: 1.72 SBU |
The libbonobo package contains libbonobo libraries. This is a component and compound document system for GNOME.
libbonobo depends on: ORBit2-2.6.1 and bonobo-activation-2.2.1.1 libbonobo will utilize: gtk-doc-1.0 and xml-dtd-4.2 |
Install libbonobo by running the following commands:
./configure --prefix=$GNOME_PREFIX --disable-gtk-doc && make && make install |
libbonobo libraries are a set of language and system independent CORBA interfaces for creating reusable components and compound documents.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/GConf/2.2/GConf-2.2.0.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/GConf/2.2/GConf-2.2.0.tar.bz2 Version used: 2.2.0 Package size: 1 MB Estimated Disk space required: 11.1 MB Estimated build time: 1.11 SBU |
The GConf package contains a configuration database system.
GConf depends on: ORBit2-2.6.1 and GTK+-2.2.1 GConf will utilize: gtk-doc-1.0 and sgml-dtd-3.1 |
Install GConf by running the following commands:
./configure --prefix=$GNOME_PREFIX --libexecdir=$GNOME_PREFIX/sbin \ --sysconfdir=/etc/gnome --disable-gtk-doc && make && make install |
--libexecdir=$GNOME_PREFIX/sbin : This switch puts libexec files in $GNOME_PREFIX/sbin instead of $GNOME_PREFIX/libexec.
--sysconfdir=/etc/gnome : This switch puts configuration files in /etc/gnome instead of $GNOME_PREFIX/etc. This installation controls all future installations of schemas, changes in location, including eliminating this command must be consistent.
--disable-gtk-doc : This switch will prevent the rebuilding of documentation during the make command.
libgconf libraries provide the functions necessary to maintain the configuration database.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/gnome-mime-data/2.2/gnome-mime-data-2.2.0.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/gnome-mime-data/2.2/gnome-mime-data-2.2.0.tar.bz2 Version used: 2.2.0 Package size: 1.1 MB Estimated Disk space required: 4.4 MB Estimated build time: 0.02 SBU |
The gnome-mime-data package contains the base set of file types and applications for GNOME.
Install gnome-mime-data by running the following commands:
./configure --prefix=$GNOME_PREFIX --sysconfdir=/etc/gnome && make && make install |
--sysconfdir=/etc/gnome : This switch puts configuration files in /etc/gnome instead of $GNOME_PREFIX/etc.
The gnome-mime-data package contains $GNOME_PREFIX/share/icons, $GNOME_PREFIX/share/application-registry and $GNOME_PREFIX/share/mime-info.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/gnome-vfs/2.2/gnome-vfs-2.2.3.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/gnome-vfs/2.2/gnome-vfs-2.2.3.tar.bz2 Version used: 2.2.3 Package size: 972 KB Estimated Disk space required: 13.6 MB Estimated build time: 2.17 SBU |
The gnome-vfs package contains virtual file system libraries. This is used as one of the foundations of the Nautilus file manager.
gnome-vfs depends on: ORBit2-2.6.1, GConf-2.2.0, bonobo-activation-2.2.1.1 and gnome-mime-data-2.2.0 gnome-vfs will utilize: libfam-2.6.9, openssl-0.9.7a, CDParanoia-III-9.8, gtk-doc-1.0 and xml-dtd-4.2 |
Install gnome-vfs by running the following commands:
./configure --prefix=$GNOME_PREFIX --sysconfdir=/etc/gnome --disable-gtk-doc && make && make install |
--sysconfdir=/etc/gnome : This switch puts configuration files in /etc/gnome instead of $GNOME_PREFIX/etc.
--disable-gtk-doc : This switch will prevent the rebuilding of documentation during the make command.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/libgnome/2.2/libgnome-2.2.0.1.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/libgnome/2.2/libgnome-2.2.0.1.tar.bz2 Version used: 2.2.0.1 Package size: 704 KB Estimated Disk space required: 7.6 MB Estimated build time: 0.56 SBU |
The libgnome package contains the libgnome library.
libgnome depends on: esound-0.2.29, audiofile-0.2.3, ORBit2-2.6.1, GConf-2.2.0, bonobo-activation-2.2.1.1, gtk-doc-1.0 and sgml-dtd-3.1 |
Install libgnome by running the following commands:
./configure --prefix=$GNOME_PREFIX --libexecdir=$GNOME_PREFIX/sbin \ --sysconfdir=/etc/gnome --disable-gtk-doc && make && make install |
--libexecdir=$GNOME_PREFIX/sbin : This switch puts libexec files in $GNOME_PREFIX/sbin instead of $GNOME_PREFIX/libexec.
--sysconfdir=/etc/gnome : This switch puts configuration files in /etc/gnome instead of $GNOME_PREFIX/etc.
--disable-gtk-doc : This switch prevents the rebuilding of documentation during the make command.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/libart_lgpl/2.3/libart_lgpl-2.3.11.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/libart_lgpl/2.3/libart_lgpl-2.3.11.tar.bz2 Version used: 2.3.11 Package size: 212 KB Estimated Disk space required: 2.3 MB Estimated build time: 0.31 SBU |
The libart_lgpl package contains the libart libraries. This is useful for high-performance 2D graphics.
Install libart_lgpl by running the following commands:
./configure --prefix=/usr && make && make install |
libart_lgpl is used as the antialiased rendering engine for gnome canvas.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/libglade/2.0/libglade-2.0.1.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/libglade/2.0/libglade-2.0.1.tar.bz2 Version used: 2.0.1 Package size: 352 KB Estimated Disk space required: 2.7 MB |
The libglade package contains libglade libraries. This is useful for loading glade interface files in a program at runtime.
libglade depends on: libxml2-2.5.6 and GTK+-2.2.1 libglade will utilize: Python-2.2.2 if compiled utilizing expat-1.95.6, gtk-doc-1.0 and sgml-dtd-3.1 |
Install libglade by running the following commands:
./configure --prefix=$GNOME_PREFIX && make && make install |
libglade libraries contain the functions necessary to load glade interface files.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/libgnomecanvas/2.2/libgnomecanvas-2.2.0.2.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/libgnomecanvas/2.2/libgnomecanvas-2.2.0.2.tar.bz2 Version used: 2.2.0.2 Package size: 391 KB Estimated Disk space required: 4.6 MB Estimated build time: 0.68 SBU |
The libgnomecanvas package contains libgnomecanvas libraries.
libgnomecanvas depends on: libglade-2.0.1 |
Install libgnomecanvas by running the following commands:
./configure --prefix=$GNOME_PREFIX --disable-gtk-doc && make && make install |
--disable-gtk-doc : This switch will prevent the rebuilding of the API documentation during the make command.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/libbonoboui/2.2/libbonoboui-2.2.0.1.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/libbonoboui/2.2/libbonoboui-2.2.0.1.tar.bz2 Version used: 2.2.0.1 Package size: 557 KB Estimated Disk space required: 9.6 MB Estimated build time: 3.85 SBU |
The libbonoboui package contains libbonoboui libraries.
libbonoboui depends on: libgnome-2.2.0.1, libbonobo-2.2.1 and libgnomecanvas-2.2.0.2 |
Install libbonoboui by running the following commands:
./configure --prefix=$GNOME_PREFIX --disable-gtk-doc && make && make install |
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/gnome-icon-theme/1.0/gnome-icon-theme-1.0.1.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/gnome-icon-theme/1.0/gnome-icon-theme-1.0.1.tar.bz2 Version used: 1.0.1 Package size: 866 KB Estimated Disk space required: 3.5 MB Estimated build time: 0.02 SBU |
The gnome-icon-themes package contains an assortment of scalable and non-scalable icons of different sizes and themes.
Install gnome-icon-themes by running the following commands:
./configure --prefix=$GNOME_PREFIX && make && make install |
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/libgnomeui/2.2/libgnomeui-2.2.0.1.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/libgnomeui/2.2/libgnomeui-2.2.0.1.tar.bz2 Version used: 2.2.0.1 Package size: 1.1 MB Estimated Disk space required: 14.2 MB Estimated build time: 2.48 SBU |
The libgnomeui package contains libgnomeui libraries.
libgnomeui depends on: libgnome-2.2.0.1, libgnomecanvas-2.2.0.2, libbonoboui-2.2.0.1 libgnomeui will utilize: gtk-doc-1.0 and sgml-dtd-3.1 |
Install libgnomeui by running the following commands:
./configure --prefix=$GNOME_PREFIX --libexecdir=$GNOME_PREFIX/sbin \ --disable-gtk-doc && make && make install |
--libexecdir=$GNOME_PREFIX/sbin : This switch puts libexec files in $GNOME_PREFIX/sbin instead of $GNOME_PREFIX/libexec.
--disable-gtk-doc : This switch prevents rebuilding the documentation during the make command.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/libwnck/2.2/libwnck-2.2.1.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/libwnck/2.2/libwnck-2.2.1.tar.bz2 Version used: 2.2.1 Package size: 234 KB Estimated Disk space required: 2.9 MB Estimated build time: 0.77 SBU |
The libwnck package contains a Window Navigator Construction Kit.
libwnck depends on: GTK+-2.2.1 and startup-notification-0.5 |
Install libwnck by running the following commands:
./configure --prefix=$GNOME_PREFIX && make && make install |
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/gtk-engines/2.2/gtk-engines-2.2.0.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/gtk-engines/2.2/gtk-engines-2.2.0.tar.bz2 Version used: 2.2.0 Package size: 400 KB Estimated Disk space required: 1.9 MB Estimated build time: 0.21 SBU |
The gtk-engines package contains three themes for GTK2.
gtk-engines depends on: GTK+-2.2.1 |
Install gtk-engines by running the following commands:
./configure --prefix=/usr && make && make install |
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/gtk-thinice-engine/2.0/gtk-thinice-engine-2.0.2.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/gtk-thinice-engine/2.0/gtk-thinice-engine-2.0.2.tar.bz2 Version used: 2.0.2 Package size: 136 KB Estimated Disk space required: Estimated build time: 0.01 SBU |
The gtk-thinice-engine package contains theme sets.
gtk-thinice-engine depends on: GTK+-2.2.1 |
Install gtk-thinice-engine by running the following commands:
./configure --prefix=/usr && make && make install |
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/gnome-themes/2.2/gnome-themes-2.2.1.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/gnome-themes/2.2/gnome-themes-2.2.1.tar.bz2 Version used: 2.2.1 Package size: 2.3 MB Estimated Disk space required: 14.4 MB Estimated build time: 0.72 SBU |
The gnome-themes package contains several more theme sets.
gnome-themes depends on: gtk-thinice-engine-2.0.2 |
Install gnome-themes by running the following commands:
./configure --prefix=/usr && make && make install |
Download location (HTTP): http://telia.dl.sourceforge.net/sourceforge/scrollkeeper/scrollkeeper-0.3.11.tar.gz Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/scrollkeeper/0.3/scrollkeeper-0.3.11.tar.bz2 Version used: 0.3.11 Package size: 432 KB Estimated Disk space required: 4.5 MB Estimated build time: 0.20 SBU |
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.
scrollkeeper depends on: libxml2-2.5.6, libxslt-1.0.29, intltool-0.25 and xml-dtd-4.2 |
Install scrollkeeper by running the following commands:
./configure --prefix=/usr --sysconfdir=/etc \ --localstatedir=/var --disable-static \ --with-omfdirs=/usr/share/omf:/opt/gnome/share/omf:\ /opt/kde/share/omf:/opt/gnome-2.2/share/omf && make && make install |
--sysconfdir=/etc : This switch puts the configuration files in /etc/scrollkeeper.
--localstatedir=/var : This switch puts scrollkeepers database directory in /var/lib/scrollkeeper.
--disable-static : This switch prevents the static library from being built.
--omfdirs=/usr/share/omf:/opt/gnome/share/omf:/opt/kde/share/omf:/opt/gnome-2.2/share/omf : This switch sets all the locations for OMF files for scrollkeeper.
scrollkeeper libraries provide the API necessary for help browsers to interact with documentation written to utilize scrollkeeper.
utility scripts for performing installation, building, getting and updating of table of contents files.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/vte/0.10/vte-0.10.26.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/vte/0.10/vte-0.10.26.tar.bz2 Version used: 0.10.26 Package size: 760 KB Estimated Disk space required: 12.8 MB Estimated build time: 1.31 SBU |
The vte package contains a termcap file implementation for terminal emulators.
vte depends on: Python-2.2.2 and GTK+-2.2.1 |
Install vte by running the following commands:
./configure --prefix=/usr --libexecdir=/usr/sbin --disable-gtk-doc && make && make install |
--libexecdir=/usr/sbin : This switch puts libexec files in /usr/sbin instead of /usr/libexec.
--disable-gtk-doc : This switch prevents the building of documentation as the directories are currently empty and will cause errors in the make command if this switch is missing.
vte libraries provide the functions necessary to implement a "termcap file" for terminal emulators.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/libgtop/2.0/libgtop-2.0.1.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/libgtop/2.0/libgtop-2.0.1.tar.bz2 Version used: 2.0.1 Package size: 744 KB Estimated Disk space required: 8.3 MB Estimated build time: 0.63 SBU |
The libgtop package contains the gnome top libraries.
libgtop depends on: GLib-2.2.1 |
Install libgtop by running the following commands:
./configure --prefix=$GNOME_PREFIX && make && make install |
libgtop libraries contain the functions that allow access to System performance data.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/gail/1.2/gail-1.2.0.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/gail/1.2/gail-1.2.0.tar.bz2 Version used: 1.2.0 Package size: 316 KB Estimated Disk space required: 5 MB Estimated build time: 1.74 SBU |
The gail package contains the Gnome Accessibility Implementation Libraries.
gail depends on: GTK+-2.2.1 and libgnomecanvas-2.2.0.2 gail will utilize: gtk-doc-1.0 and sgml-dtd-3.1 |
Install gail by running the following commands:
./configure --prefix=$GNOME_PREFIX --disable-gtk-doc && make && make install |
libgailutil libraries provide the functions that solve accessibility problems in a consistent manner across GNOME.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/at-spi/1.1/at-spi-1.1.8.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/at-spi/1.1/at-spi-1.1.8.tar.bz2 Version used: 1.1.8 Package size: 356 KB Estimated Disk space required: 3.8 MB Estimated build time: 1.47 SBU |
The at-spi package contains Assistive Technology Service Provider Interface. This is useful for redirecting UI events to accessible applications and adaptive/assistive technologies.
at-spi depends on: gail-1.2.0 and libbonobo-2.2.1 at-spi will utilize: gtk-doc-1.0 and sgml-dtd-3.1 |
Install at-spi by running the following commands:
./configure --prefix=$GNOME_PREFIX --libexecdir=$GNOME_PREFIX/sbin \ --disable-gtk-doc && make && make install |
--libexecdir=$GNOME_PREFIX/sbin : This switch puts libexec files in $GNOME_PREFIX/sbin instead of $GNOME_PREFIX/libexec.
--disable-gtk-doc : This switch prevent the rebuilding of the documentation during the make command.
No description available.
at-spi-registryd is the registry daemon that allows communication between the UI and assistance devices.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/libgail-gnome/1.0/libgail-gnome-1.0.2.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/libgail-gnome/1.0/libgail-gnome-1.0.2.tar.bz2 Version used: 1.0.2 Package size: 140 KB Estimated Disk space required: 1.4 MB Estimated build time: 0.30 SBU |
The libgail-gnome package contains a binder between gail and GNOME.
libgail-gnome depends on: libgnomeui-2.2.0.1 and at-spi-1.1.8 |
Install libgail-gnome by running the following commands:
./configure --prefix=$GNOME_PREFIX && make && make install |
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/librsvg/2.2/librsvg-2.2.4.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/librsvg/2.2/librsvg-2.2.4.tar.bz2 Version used: 2.2.4 Package size: 218 KB Estimated Disk space required: 2.6 MB Estimated build time: 0.69 SBU |
The librsvg package contains librsvg libraries.
librsvg depends on: GTK+-2.2.1, libxml2-2.5.6 and libart_lgpl-2.3.11 librsvg will utilize: libgsf |
Install librsvg by running the following commands:
./configure --prefix=$GNOME_PREFIX --sysconfdir=/etc/gnome --disable-gtk-doc && make && make install |
librsvg libraries provide the functions to render Scalable Vector Graphics (SVG).
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/eel/2.2/eel-2.2.2.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/eel/2.2/eel-2.2.2.tar.bz2 Version used: 2.2.2 Package size: 474 KB Estimated Disk space required: 8.1 MB Estimated build time: 1.98 SBU |
The eel package contains the Eazel Extensions Library. This is a collection of widgets and extensions to the GNOME platform.
eel depends on: libgnomeui-2.2.0.1 |
Install eel by running the following commands:
./configure --prefix=$GNOME_PREFIX && make && make install |
libeel libraries is a collection of widgets developed by the Nautilus project.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/libgtkhtml/2.2/libgtkhtml-2.2.1.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/libgtkhtml/2.2/libgtkhtml-2.2.1.tar.bz2 Version used: 2.2.1 Package size: 325 KB Estimated Disk space required: 7 MB Estimated build time: 3.50 SBU |
The libgtkhtml package contains libgtkhtml libraries.
libgtkhtml depends on: gail-1.2.0 and gnome-vfs-2.2.3 |
Install libgtkhtml by running the following commands:
./configure --prefix=$GNOME_PREFIX && make && make install |
libgtkhtml libraries provide the functions necessary to render and/or edit HTML.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/libgnomeprint/2.2/libgnomeprint-2.2.1.2.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/libgnomeprint/2.2/libgnomeprint-2.2.1.2.tar.bz2 Version used: 2.2.1.2 Package size: 542 KB Estimated Disk space required: 8.8 MB Estimated build time: 1.33 SBU |
The libgnomeprint package contains libgnomeprint libraries.
libgnomeprint depends on: libbonobo-2.2.1 and libart_lgpl-2.3.11 libgnomeprint will utilize: gtk-doc-1.0, sgml-dtd-3.1 and cups-1.1.18 |
Install libgnomeprint by running the following commands:
./configure --prefix=$GNOME_PREFIX --sysconfdir=/etc/gnome && make && make install |
--sysconfdir=/etc/gnome : This switch puts configuration files in /etc/gnome instead of $GNOME_PREFIX/etc.
--enable-gtk-doc : This switch rebuilds the documentation during the make command.
libgnomeprint libraries implement the Gnome Printing Architecture.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/libgnomeprintui/2.2/libgnomeprintui-2.2.1.2.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/libgnomeprintui/2.2/libgnomeprintui-2.2.1.2.tar.bz2 Version used: 2.2.1.2 Package size: 422 KB Estimated Disk space required: 4.9 MB Estimated build time: 0.66 SBU |
The libgnomeprintui package contains the libgnomeprintui libraries.
libgnomeprintui depends on: libgnomeprint-2.2.1.2 and libgnomeui-2.2.0.1 |
Install libgnomeprintui by running the following commands:
./configure --prefix=$GNOME_PREFIX && make && make install |
--enable-gtk-doc : This switch rebuilds the documentation during the make command.
libgnomeprintui libraries is the GUI portion of the implementation of the Gnome Printing Architecture.
This section contains required elements of the GNOME environment to display a functional desktop.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/gnome-desktop/2.2/gnome-desktop-2.2.1.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/gnome-desktop/2.2/gnome-desktop-2.2.1.tar.bz2 Version used: 2.2.1 Package size: 1 MB Estimated Disk space required: 6.9 MB Estimated build time: 0.69 SBU |
The gnome-desktop package contains GNOME's .desktop files, the gnome-about program, man pages and GNOME's core graphics files and icons.
gnome-desktop depends on: libgnomeui-2.2.0.1 |
Install gnome-desktop by running the following commands:
./configure --prefix=$GNOME_PREFIX --sysconfdir=/etc/gnome && make && make install |
--sysconfdir=/etc/gnome : This switch puts configuration files in /etc/gnome instead of $GNOME_PREFIX/etc.
libgnome-desktop libraries contain API's being tested for inclusion in libgnome or libgnomeui.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/gnome-panel/2.2/gnome-panel-2.2.1.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/gnome-panel/2.2/gnome-panel-2.2.1.tar.bz2 Version used: 2.2.1 Package size: 1.8 MB Estimated Disk space required: 19.8 MB Estimated build time: 4.06 SBU |
The gnome-panel package contains the menu and applet systems.
gnome-panel depends on: libgnomeui-2.2.0.1 and scrollkeeper-0.3.11 gnome-panel will utilize: gtk-doc-1.0 and sgml-dtd-3.1 |
Install gnome-panel by running the following commands:
./configure --prefix=$GNOME_PREFIX --libexecdir=$GNOME_PREFIX/sbin \ --localstatedir=/var/lib --sysconfdir=/etc/gnome --disable-gtk-doc && make && make install |
--libexecdir=$GNOME_PREFIX/sbin : This switch puts libexec files in $GNOME_PREFIX/sbin instead of $GNOME_PREFIX/libexec.
--localstatedir=/var/lib : This switch puts scrollkeeper files in /var/lib/scrollkeeper instead of $GNOME_PREFIX/var/scrollkeeper.
--sysconfdir=/etc/gnome : This switch puts configuration files in /etc/gnome instead of $GNOME_PREFIX/etc.
--disable-gtk-doc : This switch prevents the rebuilding of documentation during the make command.
libpanel-applet libraries allow development of small applications which may be embedded in the panel called applets.
applets included are Workspace Switcher, Window List, Inbox Monitor, Clock and 'Wanda the Fish'.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/gnome-session/2.2/gnome-session-2.2.1.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/gnome-session/2.2/gnome-session-2.2.1.tar.bz2 Version used: 2.2.1 Package size: 709 KB Estimated Disk space required: 6.6 MB Estimated build time: 0.88 SBU |
The gnome-session package contains the GNOME session manager.
gnome-session depends on: libgnomeui-2.2.0.1 |
Install gnome-session by running the following commands:
export PATH=$PATH:$GNOME_PREFIX/sbin:/sbin && ./configure --prefix=$GNOME_PREFIX --localstatedir=/var/lib \ --sysconfdir=/etc/gnome && make && make install |
--localstatedir=/var/lib : This switch puts scrollkeeper files in /var/lib/scrollkeeper instead of $GNOME_PREFIX/var/scrollkeeper.
--sysconfdir=/etc/gnome : This switch puts configuration files in /etc/gnome instead of $GNOME_PREFIX/etc.
gnome-session starts up the GNOME desktop.
session utilities includes a configuration program and other session management related utilities.
manager proxy handles basic session management for applications that do not support XSM.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/control-center/2.2/control-center-2.2.1.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/control-center/2.2/control-center-2.2.1.tar.bz2 Version used: 2.2.1 Package size: 1.4 MB Estimated Disk space required: 18.1 MB Estimated build time: 2.95 SBU |
The control-center package contains the GNOME settings managers.
control-center depends on: gnome-desktop-2.2.1 and metacity-2.4.34 |
Install control-center by running the following commands:
./configure --prefix=$GNOME_PREFIX --localstatedir=/var/lib \ --sysconfdir=/etc/gnome && make && make install |
--localstatedir=/var/lib : This switch puts scrollkeeper files in /var/lib/scrollkeeper instead of $GNOME_PREFIX/var/scrollkeeper.
--sysconfdir=/etc/gnome : This switch puts configuration files in /etc/gnome instead of $GNOME_PREFIX/etc.
The control-center package contains gnome-control-center, gnome-settings-daemon, gnome-background-properties, gnome-default-applications-properties, gnome-file-types-properties, gnome-font-properties, gnome-keybinding-properties, gnome-keyboard-properties, gnome-mouse-properties, gnome-network-preferences, gnome-sound-properties, gnome-theme-properties and gnome-ui-properties.
These packages are modular and add desktop applications to the GNOME environment. Feel free to install them on an as-needed or as-wanted basis.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/gnome-terminal/2.2/gnome-terminal-2.2.1.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/gnome-terminal/2.2/gnome-terminal-2.2.1.tar.bz2 Version used: 2.2.1 Package size: 854 KB Estimated Disk space required: 8.7 MB Estimated build time: 0.79 SBU |
The gnome-terminal package contains the console. This is useful for executing programs from a command prompt.
gnome-terminal depends on: libgnomeui-2.2.0.1, startup-notification-0.5 and vte-0.10.26 |
Install gnome-terminal by running the following commands:
./configure --prefix=$GNOME_PREFIX --localstatedir=/var/lib \ --sysconfdir=/etc/gnome && make && make install |
--localstatedir=/var/lib : This switch puts scrollkeeper files in /var/lib/scrollkeeper instead of $GNOME_PREFIX/var/scrollkeeper.
--sysconfdir=/etc/gnome : This switch puts configuration files in /etc/gnome instead of $GNOME_PREFIX/etc.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/gnome-system-monitor/2.0/gnome-system-monitor-2.0.4.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/gnome-system-monitor/2.0/gnome-system-monitor-2.0.4.tar.bz2 Version used: 2.0.4 Package size: 512 KB Estimated Disk space required: 3.2 MB Estimated build time: 0.30 SBU |
The gnome-system-monitor package contains procman, GNOME's replacement to gtop.
gnome-system-monitor depends on: libgnomeui-2.2.0.1 and startup-notification-0.5 |
Install gnome-system-monitor by running the following commands:
./configure --prefix=$GNOME_PREFIX --localstatedir=/var/lib \ --sysconfdir=/etc/gnome && make && make install |
Note: make install will need path access to $GNOME_PREFIX/bin. If your preinstallation changes were made only to the user account, you will need to adjust your path prior to running make install.
--localstatedir=/var/lib : This switch puts scrollkeeper files in /var/lib/scrollkeeper instead of $GNOME_PREFIX/var/scrollkeeper.
--sysconfdir=/etc/gnome : This switch puts configuration files in /etc/gnome instead of $GNOME_PREFIX/etc.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/gnome-applets/2.2/gnome-applets-2.2.1.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/gnome-applets/2.2/gnome-applets-2.2.1.tar.bz2 Version used: 2.2.1 Package size: 1.9 MB Estimated Disk space required: 22.6 MB Estimated build time: 2.76 SBU |
The gnome-applets package contains small applications which generally run in the background and display their output to the gnome panel.
gnome-applets depends on: gail-1.2.0, libgtop-2.0.1 and gnome-panel-2.2.1 |
Install gnome-applets by running the following commands:
./configure --prefix=$GNOME_PREFIX --libexecdir=$GNOME_PREFIX/sbin \ --localstatedir=/var/lib --sysconfdir=/etc/gnome && make && make install |
--libexecdir=$GNOME_PREFIX/sbin : This switch puts libexec files in $GNOME_PREFIX/sbin instead of $GNOME_PREFIX/libexec.
--localstatedir=/var/lib : This switch puts scrollkeeper files in /var/lib/scrollkeeper instead of $GNOME_PREFIX/var/scrollkeeper.
--sysconfdir=/etc/gnome : This switch puts configuration files in /etc/gnome instead of $GNOME_PREFIX/etc.
The gnome-applets package contains battstat, cdplayer, charpick, drivemount, geyes, gkb, gtik2, gweather, mini-commander, mixer, modemlights and multiload applets.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/gnome-utils/2.2/gnome-utils-2.2.1.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/gnome-utils/2.2/gnome-utils-2.2.1.tar.bz2 Version used: 2.2.1 Package size: 1.5 MB Estimated Disk space required: 15.4 MB Estimated build time: 1.44 SBU |
The gnome-utils package contains a collection of small applications designed to make your life a little easier.
gnome-utils depends on: libgnomeui-2.2.0.1 |
Install gnome-utils by running the following commands:
./configure --prefix=$GNOME_PREFIX --libexecdir=$GNOME_PREFIX/sbin \ --localstatedir=/var/lib --sysconfdir=/etc/gnome && make && make install |
--libexecdir=$GNOME_PREFIX/sbin : This switch puts libexec files in $GNOME_PREFIX/sbin instead of $GNOME_PREFIX/libexec.
--localstatedir=/var/lib : This switch puts scrollkeeper files in /var/lib/scrollkeeper instead of $GNOME_PREFIX/var/scrollkeeper.
--sysconfdir=/etc/gnome : This switch puts configuration files in /etc/gnome instead of $GNOME_PREFIX/etc.
--with-pam-prefix=/etc/pam.d : This switch puts PAM file in /etc/pam.d instead of /etc/gnome.
The gnome-utils package contains gnome-system-log, gnome-character-map, gnome-calculator, gnome-search-tool, gnome-dictionary, archive-generator, gfloppy and gdialog.
gnome-system-log allows you to monitor and view system log files.
gnome-character-map allows you to select characters from a table and insert them into your applications.
gnome-calculator is a simple mathematical and scientific calculator that includes arithmetic, trigonometric and logarithmic functions.
gnome-search-tool allows you to search for files on your system using simple and advanced search options.
archive-generator creates archives from collections of files and folders using gzip compressed archive files.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/gnome-games/2.2/gnome-games-2.2.0.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/gnome-games/2.2/gnome-games-2.2.0.tar.bz2 Version used: 2.2.0 Package size: 9.4 MB Estimated Disk space required: 32.1 MB Estimated build time: 3.34 SBU |
The gnome-games package contains games.
gnome-games depends on: libgnomeui-2.2.0.1 gnome-games will utilize: guile-1.4.1 |
Install gnome-games by running the following commands:
./configure --prefix=$GNOME_PREFIX --localstatedir=/var/lib \ --sysconfdir=/etc/gnome && make && make install |
--localstatedir=/var/lib : This switch puts scrollkeeper files in /var/lib/scrollkeeper instead of $GNOME_PREFIX/var/scrollkeeper.
--sysconfdir=/etc/gnome : This switch puts configuration files in /etc/gnome instead of $GNOME_PREFIX/etc.
The gnome-games package contains aisleriot, freecell, gataxx, glines, gnect, gnibbles, gnobots2, gnome-stones, gnome-xbill, gnometris, gnomine, gnotravex, gnotski, gtali, iagno, mahjongg and same-gnome.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/nautilus/2.2/nautilus-2.2.2.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/nautilus/2.2/nautilus-2.2.2.tar.bz2 Version used: 2.2.2 Package size: 4.2 MB Estimated Disk space required: 40.3 MB Estimated build time: 5.14 SBU |
The nautilus package contains the GNOME shell and file manager.
nautilus depends on: libgnomeui-2.2.0.1 nautilus will utilize: medusa |
Install nautilus by running the following commands:
./configure --prefix=$GNOME_PREFIX --sysconfdir=/etc/gnome \ --libexecdir=$GNOME_PREFIX/sbin && make && make install |
--sysconfdir=/etc/gnome : This switch puts configuration files in /etc/gnome instead of $GNOME_PREFIX/etc.
--libexecdir=$GNOME_PREFIX/sbin : This switch puts libexec files in $GNOME_PREFIX/sbin instead of $GNOME_PREFIX/libexec.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/yelp/2.2/yelp-2.2.0.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/yelp/2.2/yelp-2.2.0.tar.bz2 Version used: 2.2.0 Package size: 484 KB Estimated Disk space required: 6 MB Estimated build time: 0.42 SBU |
The yelp package contains the help browser. This is useful for viewing help files.
yelp depends on: libgnomeui-2.2.0.1 |
Install yelp by running the following commands:
./configure --prefix=$GNOME_PREFIX --libexecdir=$GNOME_PREFIX/sbin && make && make install |
--libexecdir=$GNOME_PREFIX/sbin : This switch puts libexec files in $GNOME_PREFIX/sbin instead of $GNOME_PREFIX/libexec.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/bug-buddy/2.2/bug-buddy-2.2.103.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/bug-buddy/2.2/bug-buddy-2.2.103.tar.bz2 Version used: 2.2.103 Package size: 478 KB Estimated Disk space required: 4.7 MB Estimated build time: 0.82 SBU |
The bug-buddy package contains a graphical bug reporting tool. This can extract debugging information from a core file or crashed application.
bug-buddy depends on: libgnomeui-2.2.0.1 |
Install bug-buddy by running the following commands:
./configure --prefix=$GNOME_PREFIX --localstatedir=/var/lib && make && make install |
--localstatedir=/var/lib : This switch puts scrollkeeper files in /var/lib/scrollkeeper instead of $GNOME_PREFIX/var/scrollkeeper.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/gedit/2.2/gedit-2.2.1.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/gedit/2.2/gedit-2.2.1.tar.bz2 Version used: 2.2.1 Package size: 1.5 MB Estimated Disk space required: 16.2 MB Estimated build time: 2.30 SBU |
The gedit package contains a lightweight UTF-8 text editor for the GNOME desktop.
gedit depends on: libgnomeui-2.2.0.1 |
Install gedit by running the following commands:
./configure --prefix=$GNOME_PREFIX --localstatedir=/var/lib \ --sysconfdir=/etc/gnome && make && make install |
--localstatedir=/var/lib : This switch puts scrollkeeper files in /var/lib/scrollkeeper instead of $GNOME_PREFIX/var/scrollkeeper.
--sysconfdir=/etc/gnome : This switch puts configuration files in /etc/gnome instead of $GNOME_PREFIX/etc.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/eog/2.2/eog-2.2.1.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/eog/2.2/eog-2.2.1.tar.bz2 Version used: 2.2.1 Package size: 470 KB Estimated Disk space required: 5.3 MB Estimated build time: 0.82 SBU |
The eog package contains Eyes of Gnome. This is useful for viewing and cataloging image files.
eog depends on: libgnomeui-2.2.0.1 and libgnomeprint-2.2.1.2 |
Install eog by running the following commands:
./configure --prefix=$GNOME_PREFIX --libexecdir=$GNOME_PREFIX/sbin \ --localstatedir=/var/lib --sysconfdir=/etc/gnome && make && make install |
--libexecdir=$GNOME_PREFIX/sbin : This switch puts libexec files in $GNOME_PREFIX/sbin instead of $GNOME_PREFIX/libexec.
--localstatedir=/var/lib : This switch puts scrollkeeper files in /var/lib/scrollkeeper instead of $GNOME_PREFIX/var/scrollkeeper.
--sysconfdir=/etc/gnome : This switch puts configuration files in /etc/gnome instead of $GNOME_PREFIX/etc.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/gstreamer/0.6/gstreamer-0.6.0.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/gstreamer/0.6/gstreamer-0.6.0.tar.bz2 Version used: 0.6.0 Package size: 1.1 MB Estimated Disk space required: 65.2 MB Estimated build time: 3.95 SBU |
The gstreamer package contains a framework for streaming media. This is useful for interfacing with binary codecs.
gstreamer depends on: libgnomeui-2.2.0.1 |
Install gstreamer by running the following commands:
./configure --prefix=$GNOME_PREFIX --localstatedir=/var/log && make && make install && gst-register |
--localstatedir=/var/lib : This switch puts gst-register's cache in /var/lib/cache instead of $GNOME_PREFIX/var/cache.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/gst-plugins/0.6/gst-plugins-0.6.0.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/gst-plugins/0.6/gst-plugins-0.6.0.tar.bz2 Version used: 0.6.0 Package size: 1.8 MB Estimated Disk space required: 98 MB |
The gst-plugins package contains codec interfaces.
gst-plugins depends on: gstreamer-0.6.0 |
Install gst-plugins by running the following commands:
./configure --prefix=$GNOME_PREFIX && make && make install && gst-register |
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/gnome-media/2.2/gnome-media-2.2.1.1.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/gnome-media/2.2/gnome-media-2.2.1.1.tar.bz2 Version used: 2.2.1.1 Package size: 1.1 MB Estimated Disk space required: 12.3 MB Estimated build time: 1.76 SBU |
The gnome-media package contains GNOME's media applications.
gnome-media depends on: libgnomeui-2.2.0.1 and gstreamer-0.6.0 |
Install gnome-media by running the following commands:
./configure --prefix=$GNOME_PREFIX --sysconfdir=/etc/gnome \ --localstatedir=/var/lib --libexecdir=$GNOME_PREFIX/sbin && make && make install |
--sysconfdir=/etc/gnome : This switch puts configuration files in /etc/gnome instead of $GNOME_PREFIX/etc.
--localstatedir=/var/lib : This switch puts scrollkeeper files in /var/lib/scrollkeeper instead of $GNOME_PREFIX/var/scrollkeeper.
--libexecdir=$GNOME_PREFIX/sbin : This command puts libexec files in $GNOME_PREFIX/sbin instead of $GNOME_PREFIX/libexec.
The gnome-media package contains gnome-sound-recorder, gnome-cd, gnome-volume-control and vumeter.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/nautilus-media/0.2/nautilus-media-0.2.1.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/nautilus-media/0.2/nautilus-media-0.2.1.tar.bz2 Version used: 0.2.1 Package size: 280 KB Estimated Disk space required: 4.6 MB Estimated build time: 0.94 SBU |
The nautilus-media package contains GNOME's media applications used by nautilus.
nautilus-media depends on: libgnomeui-2.2.0.1 and gstreamer-0.6.0 |
Install nautilus-media by running the following commands:
./configure --prefix=$GNOME_PREFIX --sysconfdir=/etc/gnome \ --localstatedir=/var/lib --libexecdir=$GNOME_PREFIX/sbin && make && make install |
--sysconfdir=/etc/gnome : This switch puts configuration files in /etc/gnome instead of $GNOME_PREFIX/etc.
--localstatedir=/var/lib : This switch puts scrollkeeper files in /var/lib/scrollkeeper instead of $GNOME_PREFIX/var/scrollkeeper.
--libexecdir=/opt/gnome2/sbin : This command puts libexec files in $GNOME_PREFIX/sbin instead of $GNOME_PREFIX/libexec.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/gnome2-user-docs/2.0/gnome2-user-docs-2.0.6.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/gnome2-user-docs/2.0/gnome2-user-docs-2.0.6.tar.bz2 Version used: 2.0.6 Package size: 7.2 MB Estimated Disk space required: 13.1 MB Estimated build time: 0.01 SBU |
The gnome2-user-docs package contains end user documents for GNOME.
gnome2-user-docs depends on: scrollkeeper-0.3.11 |
Install gnome2-user-docs by running the following commands:
./configure --prefix=$GNOME_PREFIX --localstatedir=/var/lib && make && make install |
--localstatedir=/var/lib : This switch puts scrollkeeper files in /var/lib/scrollkeeper instead of $GNOME_PREFIX/var/scrollkeeper.
OMF files contain user documentation. These include introductions and help on the core packages.
This section will contains other GNOME packages.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/gconf-editor/0.4/gconf-editor-0.4.0.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/gconf-editor/0.4/gconf-editor-0.4.0.tar.bz2 Version used: 0.4.0 Package size: 244 KB Estimated Disk space required: 2.4 MB Estimated build time: 0.13 SBU |
The gconf-editor package contains a GUI editor for the GConf configuration database.
gconf-editor depends on: GConf-2.2.0 |
Install gconf-editor by running the following commands:
./configure --prefix=$GNOME_PREFIX && make && make install |
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/gdm/2.4/gdm-2.4.1.3.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/gdm/2.4/gdm-2.4.1.3.tar.bz2 Version used: 2.4.1.3 Package size: 1.7 MB Estimated Disk space required: 34.8 MB Estimated build time: 2.28 SBU |
The gdm package contains GNOME's display manager daemon. This is useful for allowing configurable graphical logins.
gdm depends on: Linux_PAM-0.77, librsvg-2.2.4 and libgnome-2.2.0.1 gdm will utilize: tcpwrappers-7.6 |
Install gdm by running the following commands:
groupadd gdm && useradd -c gdm -d /dev/null -g gdm -s /bin/bash gdm && ./configure --prefix=$GNOME_PREFIX --sysconfdir=/etc/gnome \ --localstatedir=/var/lib --with-pam-prefix=/etc && make && make install |
--sysconfdir=/etc/gnome : This command puts configuration files in /etc/gnome instead of /opt/gnome2/etc.
--localstatedir=/var/lib : This command puts files in /var/lib instead of /opt/gnome2/var.
--with-pam-prefix=/etc : This command puts pam configuration files in /etc/pam.d instead of /etc/gnome.
/opt/gnome2/gdm.conf, /opt/gnome2/gnomerc
The gdm PAM config files contain modules not present in a BLFS installation. The following commands will replace those files:
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 |
gdm can be tested by executing it from a root console.
To automate the running of gdm, use the following command to create the init.d script if your GNOME_PREFIX=/opt/gnome-2.2. The fully qualified paths can be removed for GNOME_PREFIX=/usr:
cat > /etc/rc.d/init.d/gdm << "EOF" #!/bin/bash # Begin $rc_base/init.d/gdm # Based on sysklogd script from LFS-3.1 and earlier. # Rewritten by Gerard Beekmans - gerard@linuxfromscratch.org source /etc/sysconfig/rc source $rc_functions case "$1" in start) echo "Starting gdm..." loadproc /opt/gnome-2.2/bin/gdm ;; stop) echo "Stopping gdm..." if [ -f /var/run/gdm.pid ]; then loadproc /opt/gnome-2.2/sbin/gdm-stop fi ;; reload) echo "Reloading gdm..." reloadproc /opt/gnome-2.2/sbin/gdm-safe-restart ;; restart) echo "Restarting gdm..." loadproc /opt/gnome-2.2/sbin/gdm-restart ;; *) echo "Usage: $0 {start|stop|reload|restart}" exit 1 ;; esac # End $rc_base/init.d/gdm EOF chmod 755 /etc/rc.d/init.d/gdm |
Create the symbolic links to this file in the relevant rc.d directory with the following commands:
cd /etc/rc.d/init.d && ln -sf ../init.d/gdm ../rc0.d/K05gdm && ln -sf ../init.d/gdm ../rc1.d/K05gdm && ln -sf ../init.d/gdm ../rc2.d/K05gdm && ln -sf ../init.d/gdm ../rc3.d/K05gdm && ln -sf ../init.d/gdm ../rc4.d/K05gdm && ln -sf ../init.d/gdm ../rc5.d/S95gdm && ln -sf ../init.d/gdm ../rc6.d/K05gdm |
To autostart with a graphical login, edit /etc/inittab so that the line reading
id:3:initdefault: |
id:5:initdefault: |
The gdm package contains gdm, gdm-binary, gdmXnestchooser, gdmchooser, gdmflexiserver, gdmgreeter, gdmlogin, gdmmktemp, gdmphotosetup, gdmsetup, gdmthemetester, gdm-restart, gdm-safe-restart, gdm-stop, gdmaskpass, gdmconfig and gdmopen.
gdm is a wrapper script to execute gdm-binary, the configurable GNOME-based login prompt.
gdm-restart sends the HUP signal and gdm-safe-restart sends the USR1 signal to the daemon so that it restarts. They are used after the config file is edited.
gdmconfig is an application for managing the configuration of the entire GDM applications suite. It handles look and feel, security, XDMCP, GDMchooser and more.
Create an .xinitrc file to start GNOME:
echo "exec gnome-session" >> ~/.xinitrc |
ldconfig |
At this point you can bring up GNOME with startx
This section contains additional GNOME 1.4 libraries, needed by some applications that have not yet been ported to Gnome 2. None of these libraries are needed for a Gnome desktop install.
Add to your system or personal profile:
export PATH=$PATH:/opt/gnome/bin export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/opt/gnome/lib/pkgconfig export GNOME_LIBCONFIG_PATH=/usr/lib |
Add to your /etc/ld.so.conf:
cat >> /etc/ld.so.conf << "EOF" # Begin gnome addition to /etc/ld.so.conf /opt/gnome/lib # End gnome addition EOF |
Add to your /etc/man.conf:
cat >> /etc/man.conf << "EOF" # Begin gnome addition to man.conf MANPATH /opt/gnome/man # END gnome addition to man.conf EOF |
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/ORBit/0.5/ORBit-0.5.17.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/ORBit/0.5/ORBit-0.5.17.tar.bz2 Version used: 0.5.17 Package size: 1 MB Estimated Disk space required: 26 MB |
The ORBit package contains a high-performance CORBA Object Request Broker. This allows programs to send requests and receive replies from other programs.
ORBit depends on: popt-1.7 and GLib-1.2.10 |
Install ORBit by running the following commands:
./configure --prefix=/opt/gnome && make && make install |
As with most libraries, there is no configuration to do, save that the library directory i.e. /usr/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.
The ORBit package contains libIDL, libIIOP, libORBit, libORBitCosNaming and libORBitutil libraries.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/oaf/0.6/oaf-0.6.10.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/oaf/0.6/oaf-0.6.10.tar.bz2 Version used: 0.6.10 Package size: 548 KB Estimated Disk space required: 4.5 MB |
The oaf package contains the Object Activation Framework for GNOME.
oaf depends on: ORBit-0.5.17 and libxml-1.8.17 oaf will utilize: gtk-doc-1.0 |
Install oaf by running the following commands:
./configure --prefix=/opt/gnome --disable-gtk-doc && make && make install |
As with most libraries, there is no configuration to do, save that the library directory i.e. /usr/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.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/gnome-libs/1.4/gnome-libs-1.4.2.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/gnome-libs/1.4/gnome-libs-1.4.2.tar.bz2 Version used: 1.4.2 Package size: 3.7 MB Estimated Disk space required: 33 MB |
The gnome-libs package contains the gnome libraries. This is useful as a foundation for the GNOME desktop and applications.
gnome-libs depends on: ORBit-0.5.17, GTK+-1.2.10, imlib-1.9.14 and db-3.3.11 or db-4.1.25 gnome-libs will utilize: audiofile-0.2.3, esound-0.2.29 and gtk-doc-1.0 |
Install gnome-libs by running the following commands:
./configure --prefix=/opt/gnome --disable-gtk-doc && make && make install |
/opt/gnome/etc/mime-magic, /opt/gnome/etc/paper.config, /opt/gnome/etc/sound/events/gnome.soundlist and /opt/gnome/etc/sound/events/gtk-events.soundlist
As with most libraries, there is no configuration to do, save that the library directory i.e. /usr/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.
The gnome-libs package contains libgnome, libgnomeui, libgnomesupport, libart_lgpl, libgtk-xmhtml, libgnorbagtk and libzvt libraries.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/gdk-pixbuf/0.22/gdk-pixbuf-0.22.0.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/gdk-pixbuf/0.22/gdk-pixbuf-0.22.0.tar.bz2 Version used: 0.22.0 Package size: 396 KB Estimated Disk space required: 16 MB |
The gdk-pixbuf package is the GTK+ pixbuf library
gdk depends on: GLib-1.2.10, GTK+-1.2.10, libpng-1.2.5, libjpeg-6b and libtiff-3.5.7 gkd will utilize: gtk-doc-1.0 and gnome-libs-1.4.2 |
Install gdk-pixbuf by running the following commands:
./configure --prefix=/opt/gnome --disable-gtk-doc && make && make install |
As with most libraries, there is no configuration to do, save that the library directory i.e. /usr/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.
libdgk_pixbuf libraries contain the GTK+ pixbuf libraries for the Gimp Tool Kit.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/GConf/1.0/GConf-1.0.9.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/GConf/1.0/GConf-1.0.9.tar.bz2 Version used: 1.0.9 Package size: 1.2 MB Estimated Disk space required: 8.7 MB |
The GConf package contains a configuration database system.
GConf depends on: oaf-0.6.10, GTK+-1.2.10 and gdk-pixbuf-0.22.0 GConf will utilize: db-3.3.11 and guile-1.4.1 |
Install GConf by running the following commands:
./configure --prefix=/opt/gnome && make && make install |
As with most libraries, there is no configuration to do, save that the library directory i.e. /usr/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.
libgconf libraries provide the functions necessary to maintain the configuration database.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/gnome-vfs/1.0/gnome-vfs-1.0.5.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/gnome-vfs/1.0/gnome-vfs-1.0.5.tar.bz2 Version used: 1.0.5 Package size: 1.1 MB Estimated Disk space required: 9 MB |
The gnome-vfs package contains file system libraries.
gnome-vfs depends on: GConf-1.0.9 and gnome-libs-1.4.2 gnome-vfs will utilize: openssl-0.9.7a, gtk-doc-1.0 and CDParanoia-III-9.8 |
Install gnome-vfs by running the following commands:
./configure --prefix=/opt/gnome --disable-gtk-doc && make && make install |
As with most libraries, there is no configuration to do, save that the library directory i.e. /usr/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.
Download location (HTTP): http://ibiblio.org/pub/Linux/X11/gnome/sources/gnome-print/0.37/gnome-print-0.37.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/gnome-print/0.37/gnome-print-0.37.tar.bz2 Version used: 0.37 Package size: 756 KB Estimated Disk space required: 34 MB |
The gnome-print package contains the Gnome Printing Architecture, for Gnome 1.4.
Install gnome-print by running the following commands:
./configure --prefix=/opt/gnome --with-zlib=/usr && make && make install |
As with most libraries, there is no configuration to do, save that the library directory i.e. /usr/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.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/libglade/0.17/libglade-0.17.tar.gz Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/libglade/0.17/libglade-0.17.tar.gz Version used: 0.17 Package size: 416 KB Estimated Disk space required: 7.1 MB |
The libglade package contains libraries which allow applications to load glade interface files at runtime.
libglade depends on: libxml-1.8.17 and GTK+-1.2.10 libglade will utilize: gnome-libs-1.4.2 and Python-2.2.2 if compiled utilizing expat-1.95.6 |
Install libglade by running the following commands:
./configure --prefix=/opt/gnome --enable-bonobo \ --enable-gnomedb --disable-gtk-doc && make && make install |
--enable-bonobo : Enable bonobo support.
--enable-gnomedb : Enable gnomedb support.
As with most libraries, there is no configuration to do, save that the library directory i.e. /usr/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.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/libcapplet/1.5/libcapplet-1.5.11.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/libcapplet/1.5/libcapplet-1.5.11.tar.bz2 Version used: 1.5.11 Package size: 312 KB Estimated Disk space required: 2.4 MB |
The libcapplet package contains a control panel applet library.
Install libcapplet by running the following commands:
./configure --prefix=/opt/gnome && make && make install |
As with most libraries, there is no configuration to do, save that the library directory i.e. /usr/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.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/gal/0.22/gal-0.22.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/gal/0.22/gal-0.22.tar.bz2 Version used: 0.22 Package size: 1 MB Estimated Disk space required: 100 MB |
The gal package contains library functions that came from Gnumeric and Evolution. Currently only Evolution needs to have this installed, if you're not installing Evolution, you should not be installing gal.
Install gal by running the following commands:
./configure --prefix=/opt/gnome --disable-gtk-doc && make && make install |
As with most libraries, there is no configuration to do, save that the library directory i.e. /usr/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.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/gtkhtml/1.1/gtkhtml-1.1.7.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/gtkhtml/1.1/gtkhtml-1.1.7.tar.bz2 Version used: 1.1.7 Package size: 1.1 KB Estimated Disk space required: 62 MB |
The gtkhtml package contains is a lightweight HTML rendering/printing/editing engine.
gtkhtml depends on: gal-0.22, libglade-0.17 and libcapplet-1.5.11. |
Install gtkhtml by running the following commands:
./configure --prefix=/opt/gnome --disable-gtk-doc && make && make install |
As with most libraries, there is no configuration to do, save that the library directory i.e. /usr/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.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/libghttp/1.0/libghttp-1.0.9.tar.gz Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/libghttp/1.0/libghttp-1.0.9.tar.gz Version used: 1.0.9 Package size: 148 KB Estimated Disk space required: 1.6 MB |
The libghttp package contains a Gnome 1.4 HTTP client library.
Install libghttp by running the following commands:
./configure --prefix=/opt/gnome && make && make install |
As with most libraries, there is no configuration to do, save that the library directory i.e. /usr/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.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/bonobo/1.0/bonobo-1.0.22.tar.bz2 Download location (FTP): http://ftp.gnome.org/pub/GNOME/sources/bonobo/1.0/bonobo-1.0.22.tar.bz2 Version used: 1.0.22 Package size: 1.1 MB Estimated Disk space required: 20 MB |
The bonobo package contains a set of language and system independent CORBA interfaces for creating reusable components, controls and creating compound documents.
Install bonobo by running the following commands:
./configure --prefix=/opt/gnome && make && make install |
As with most libraries, there is no configuration to do, save that the library directory i.e. /usr/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.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/Guppi/0.40/Guppi-0.40.3.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/Guppi/0.40/Guppi-0.40.3.tar.bz2 Version used: 0.40.3 Package size: 990 KB Estimated Disk space required: 15 MB |
The Guppi package contains a guile-scriptable plot program with integrated statistics capabilities.
Install Guppi by running the following commands:
./configure --prefix=/opt/gnome && make && make install |
As with most libraries, there is no configuration to do, save that the library directory i.e. /usr/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.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/bonobo-conf/0.16/bonobo-conf-0.16.tar.gz Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/bonobo-conf/0.16/bonobo-conf-0.16.tar.gz Version used: 0.16 Package size: 449 KB Estimated Disk space required: 4.3 MB |
The bonobo-conf package contains the Bonobo configuration moniker. The system is built on top of GConf and provides a convenient way to handle configuration data.
bonobo-conf depends on: gnome-print-0.37 |
Install bonobo-conf by running the following commands:
./configure --prefix=/opt/gnome && make && make install |
As with most libraries, there is no configuration to do, save that the library directory i.e. /usr/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.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/soup/0.7/soup-0.7.4.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/soup/0.7/soup-0.7.4.tar.bz2 Version used: 0.7.4 Package size: 302 KB Estimated Disk space required: 4.1 MB |
The Soup package contains a SOAP (Simple Object Access Protocol) implementation in C.
Install Soup by running the following commands:
./configure --prefix=/opt/gnome && make && make install |
As with most libraries, there is no configuration to do, save that the library directory i.e. /usr/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.
Download location (HTTP): http://telia.dl.sourceforge.net/sourceforge/abiword/abiword-1.0.4.tar.gz Download location (FTP): Version used: 1.0.4 Package size: 19 MB Estimated Disk space required: 105.2 MB |
The AbiWord package contains a word processing application. This is useful for writing reports, letters and other formatted documents.
AbiWord depends on: GLib-1.2.10 and GTK+-1.2.10 AbiWord will utilize: expat-1.95.6, libpng-1.2.5, popt-1.7, gnome-libs-1.4.2, gnome-vfs-1.0.5, gdk-pixbuf-0.22.0, gal-0.22, bonobo-1.0.22, gnome-print-0.37 and ispell |
Install AbiWord by running the following commands:
cd abi && ./configure --prefix=/usr && make && make install |
--enable-gnome : This command can be added to the configure command for AbiWord to utilize GNOME libraries listed in the introduction.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/gnumeric/1.0/gnumeric-1.0.12.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/gnumeric/1.0/gnumeric-1.0.12.tar.bz2 Version used: 1.0.12 Package size: 9.6 MB Estimated Disk space required: 75.9 MB Estimated build time: 10.35 SBU |
The gnumeric package contains a spreadsheet program. This is useful for financial analysis.
gnumeric depends on: libxml-1.8.17, gnome-libs-1.4.2, libole2-0.2.4, gnome-print-0.37 and gal-0.22 gnumeric will utilize: Python-2.2.2, guile >= 1.5, bonobo-1.0.22, gb >=0.0.17, gda > 0.2.92, guppi-0.40.3 and evolution-1.2.1 |
Install gnumeric by running the following commands:
./configure --prefix=/opt/gnome && make && make install |
Download location (HTTP): http://www.gnucash.org/gnucash/sources/stable/gnucash-1.8.2.tar.gz Download location (FTP): Version used: 1.8.2 Package size: 6.3 MB Estimated Disk space required: 144 MB |
GnuCash is a personal finance manager.
gnucash depends on: gnome-print-0.37, libglade-0.17, db-3.3.11, gal-0.22, libcapplet-1.5.11, gtkhtml-1.1.7, libghttp-1.0.9, bonobo-1.0.22, guppi-0.40.3, guile-1.4.1, slib-2d5 and gwrap-1.3.4 |
Install GnuCash by running the following commands:
./configure --prefix=/opt/gnome && make && make install |
Note: GnuCash must be run as root once before use. Simply executing GnuCash from an X terminal and clicking on the cancel button is sufficient. This must be done prior to setting up accounts as an unprivileged user, due to the fact that GnuCash must create scheme catalogs for itself before it is used.
Download location (HTTP): Download location (FTP): ftp://ftp.gimp.org/pub/gimp/v1.2/v1.2.3/gimp-1.2.3.tar.bz2 Version used: 1.2.3 Package size: 10.6 MB Estimated Disk space required: 226 MB |
Additional Downloads: ftp://ftp.gimp.org/pub/gimp/fonts/freefonts-0.10.tar.gz ftp://ftp.gimp.org/pub/gimp/v1.2/v1.2.3/gimp-data-extras-1.2.0.tar.bz2 |
The gimp package contains the GNU Image Manipulation Program. This is useful for photo retouching, image composition and image authoring.
gimp depends on: GTK+-1.2.10 gimp will utilize: libtiff-3.5.7, libpng-1.2.5, libjpeg-6b, aalib-1.4rc4, mpeg_lib-1.3.1, Python-2.2.2 and perl-modules:Gtk-Perl-0.7008, PDL-2.3.4 and Parse-RecDescent-1.80 |
Install gimp by running the following commands:
./configure --prefix=/usr --sysconfdir=/etc && make && make install |
~/.gimp-1.2
GIMP executes a configuration wizard for each users upon their initial invocation of the program.
gimp is an image manipulation program. It works with a variety of image formats and provides a large selection of tools.
gimp-remote is a small utility that tells a running gimp to open a local or remote image file.
Download location (HTTP): http://www.sleepycat.com/update/snapshot/db-3.1.17.tar.gz Download location (FTP): Version used: 3.1.17 Package size: 2 MB Estimated Disk space required: 18 MB |
The db-3.1.17 package contains version 3.1.17 of the Berkeley database. Evolution needs exactly this version and not any other, the details on "why" are in the README file distibuted with the evolution source code. Evolution links to the library statically, hence this book installs the db-3.1.17 in /opt, which can be removed once Evolution is compiled.
Install db-3.1.17 by running the following commands:
cd build_unix && ../dist/configure --prefix=/opt/db-3.1.17 --enable-compat185 && make && make install |
--enable-compat185 : Build support for older database files.
--prefix=/opt/db-3.1.17 : This version of the Berkeley Database should not be installed in /usr, as it is only needed for the building of Evolution.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/evolution/1.2/evolution-1.2.1.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/evolution/1.2/evolution-1.2.1.tar.bz2 Version used: 1.2.1 Package size: 12 MB Estimated Disk space required: 387 MB |
The Evolution package contains an integrated mail, calendar and address book suite.
evolution depends on: bonobo-1.0.22, bonobo-conf-0.16, gal-0.22, libcapplet-1.5.11, gtkhtml-1.1.7 and soup-0.7.4 |
Install evolution by running the following commands:
./configure --prefix=/opt/gnome --with-db3=/opt/db-3.1.17 && make && make install |
Optionally, you may remove the installed db-3.1.17
rm -rf /opt/db-3.1.17 |
--prefix=/opt/gnome : Install Evolution in the Gnome 1.4 area.
--with-db3=/opt/db-3.1.17 : Specify the location where db-3.1.17 is installed.
Download location (FTP): ftp://ftp.kde.org/pub/kde/stable/koffice-1.2.1/src/koffice-1.2.1.tar.bz2 Version used: 1.2.1 Package size: 8.9 MB Estimated Disk space required: 133 MB Estimated Install size: 35 MB |
KOffice is the integrated office suite for KDE.
KOffice depends on: kdebase-3.1 |
KOffice also has many internationalization packages in the form of:
koffice-i18n-xx-1.2.1.tar.bz2 |
Install koffice with:
./configure --prefix=/opt/kde-3.1 --disable-debug && make && make install |
The options are the same as for kde-base and are not repeated here.
The KOffice package provides:
KWord - Framemaker-like word processing and desktop publishing program
KSpread - Spreadsheet program (scriptable)
KPresenter - Presentation builder/display program
Kivio - Flowchart program
Kontour - Vector drawing program
Krita - Painting and image editing program
Kugar - A tool for creating reports
KPlato - Project management application (early stages of development)
KChart - Chart drawing application
KFormula - Formula editor
Download location (HTTP): http://sf1.mirror.openoffice.org/stable/1.0.2/OOo_1.0.2_source.tar.bz2 Download location (FTP): Version used: 1.0.2 Package size: 155 MB Estimated Disk space required: 2.1 GB Estimated Build time: 14 Hrs (850 MHz) Estimated Install size: 203 MB |
The openoffice is a office suite, the opensource sibling of StarOffice.
openoffice depends on: freetype-2.1.3, xfree86-4.3.0, j2sdk-1.4.1, zip-2.3, unzip-5.50, tcsh-6.12, db-4.1.25, STLport-4.5.3, which-2.14 and mktemp openoffice will utilize: ant |
Download the General Polygon Clipper Library from ftp://ftp.cs.man.ac.uk/pub/toby/gpc/gpc231.tar.Z.
Also download the various patches from http://downloads.linuxfromscratch.org/blfs-patches. The patches begin with openoffice-1.0.2. You will need most of the patches except for the patches that activate the use the system installed versions of packages (you need to select those based on your installation).
The source tarball only contains English language help. A localized help content file may be available at http://ftp.services.openoffice.org/pub/OpenOffice.org/contrib/helpcontent/.
If you have difficulties in building openoffice, check out the openoffice hint for detailed information at http://www.linuxfromscratch.org/~tushar/. The hint also discusses installation of auxiliary software.
Note that openoffice has problems with bison-1.875. Downgrade to bison-1.75 or install bison-1.75 with an alternate prefix (e.g. /opt/bison-1.75) and put $bison_prefix/bin as the first entry in the PATH.
Apply the downloaded patches and copy gpc files.
mv ../gpc231/* external/gpc && rm -rf ../gpc231 && for p in ../openoffice-1.0.2-*.patch do patch -Np1 -i $p done |
If you want to optimize the build, edit solenv/inc/unxlngi4.mk and add the desired optimization flags to CFLAGSOPT variable. 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 the above file.
cd solenv/inc && cp unxlngi4.mk unxlngi4.mk.orig && sed -e "s:\-mcpu=pentiumpro::" \ unxlngi4.mk.orig > unxlngi4.mk && cd ../.. |
Configure openoffice using the following commands. You may add additional languages based on your preferences. If a particular component is not available in the language of your choice, the default will be English.
cd config_office/ && ./configure --with-lang=ENUS --with-stlport4-home=/usr && cd .. && source LinuxIntelEnv.Set.sh |
Compile openoffice using the following commands.
./bootstrap && dmake |
If you have downloaded localized helpcontent zip files, you will need to unzip them to the appropriate directory as mentioned below and then recreate the installation set.
cd solver/641/unxlngi4.pro/pck && for i in $(ls ../../../../../helpcontent_*_unix.tgz) do tar -xvzf $i done && cd ../../../../instsetoo && rm -rf unxlngi4.pro && dmake && cd .. |
Install OpenOffice using the following commands. The following commands install the English language set. To install a localized version, replace the 01 by the international telephone country code for your country. Note that when installing, it needs a X Display, even though there is no visible X window. You can use Xvfb if you are compiling on a console.
cd instsetoo/unxlngi4.pro/01/normal && cp install install.orig && sed -e "s:^oo_home=.*:oo_home=openoffice:" install.orig > install && ./install --prefix=/opt && for appl in swriter scalc sdraw simpress smath soffice do ln -sf /opt/openoffice/program/$appl /usr/bin/$appl done |
mv ../gpc231/gpc.* external/gpc : Copy the gpc files to the appropriate location.
--with-lang=ENUS : Compile for US English, you may set more languages or all to compile all available languages.
./bootstrap : Create packages required to bootstrap the build.
dmake : Compile the package.
sed -e "s:^oo_home=...: Remove version specific installation directory
for appl in swriter scalc sdraw simpress smath soffice; do ... : Create links so that the package can be started from the command line without changes to the existing path.
Download location (HTTP): http://ftp.mozilla.org/pub/mozilla/releases/mozilla1.3/src/mozilla-source-1.3.tar.bz2 Download location (FTP): ftp://ftp.mozilla.org/pub/mozilla/releases/mozilla1.3/src/mozilla-source-1.3.tar.bz2 Version used: 1.3 Package size: 39 MB Estimated Disk space required: 550 MB Estimated Build time: 2 Hrs (850 MHz) Estimated Install size: 65 MB |
Mozilla is a browser suite, the opensource sibling of Netscape. It includes the browser, composer, mail client and an IRC client. A calendar component is also being built but it is not yet integrated into the stable mozilla releases.
mozilla depends on: freetype-2.1.3, xfree86-4.3.0, zip-2.3, GLib-2.2.1, GTK+-2.2.1, libIDL-0.8.0, lcms-1.09, libjpeg-6b, libmng-1.0.5, libpng-1.2.5 and which-2.14 |
Download the patch for various fixes to the build from http://downloads.linuxfromscratch.org/blfs-patches. The patches begin with mozilla-1.3
Note that the mozdev spellchecker instructions have been removed since the API for spellchecker was changed and it is currently broken.
If you have difficulties in building mozilla, check out the mozilla hint for detailed information at http://www.linuxfromscratch.org/~tushar/. The instructions that follow install the entire suite. To select specific components, refer to the hint.
Install mozilla by running the following commands:
export MOZILLA_OFFICIAL="1" && export BUILD_OFFICIAL="1" && export MOZ_INTERNAL_LIBART_LGPL="1" && for p in ../mozilla-1.3-*.patch do patch -Np1 -i $p done |
According to the financial institutions, the following hack makes your browser insecure. You have been warned. Many sites use an MS-IE specific tag (autocomplete=off) to prevent autocomplete from working in some forms. This tag is now supported in mozilla to appease the financial institutions. As per the requirements of the financial institutions, they will not even accept a solution where this a preference option. However our opinion is that it should be in the hands of the user. To enable autocomplete to bypass this restriction, we need to make a slight modification in the code.
Open the file extensions/wallet/src/wallet.cpp in the mozilla source tree and search for the line:
#define WALLET_DONT_CACHE_ALL_PASSWORDS |
./configure --prefix=/usr \ --enable-default-mozilla-five-home \ --enable-toolkit-gtk2 --enable-default-toolkit=gtk2 \ --with-x --with-system-zlib \ --with-system-jpeg --with-system-png --with-system-mng \ --enable-xft --enable-crypto \ --enable-java-supplement \ --disable-accessibility \ --disable-tests --disable-debug \ --disable-logging --enable-reorder \ --enable-strip \ --enable-cpp-rtti --enable-extensions=all \ --enable-svg && make && make install && install -d /usr/include/mozilla-1.3/nss && cp -Lf dist/private/nss/*.h dist/public/nss/*.h \ /usr/include/mozilla-1.3/nss && ln -nsf mozilla-1.3 /usr/include/mozilla && ln -nsf mozilla-1.3 /usr/lib/mozilla && cd /usr/lib/mozilla-1.3 && export LD_LIBRARY_PATH="/usr/lib/mozilla-1.3" && export MOZILLA_FIVE_HOME="/usr/lib/mozilla-1.3" && ./regxpcom && ./regchrome && touch `find /usr/lib/mozilla-1.3 -name *.rdf` |
Each of these switches can be added to the configure line in order to have the described effect on the mozilla compile.
--enable-elf-dynstr-gc : Removes unreferenced strings from ELF shared objects generated during the build. Note that this option breaks build on alpha.
--disable-mailnews : Disable the mail and news clients.
--disable-ldap : Disable LDAP Support, recommended if mail is disabled.
--enable-calendar : Build the calendar client. You will need to download the calendar source via cvs since it is not included with the release source. (Warning, this option is not yet stable).
--enable-xterm-updates : This option is for enabling the xterm title with the current command when compiling.
--enable-plaintext-editor-only : Disable support for HTML editing. Do not use this switch if you are building the mail-news component.
export MOZILLA_OFFICIAL="1" && export BUILD_OFFICIAL="1" && export MOZ_INTERNAL_LIBART_LGPL="1" |
--prefix=/usr: Previously mozilla did not support the make install option. Hence the package was installed in /opt. The package now supports "make install" and follows the FHS guidelines for installation. Hence the book now recommends installation in a system wide prefix such as /usr.
--enable-toolkit-gtk2 |
--with-system-zlib --with-system-jpeg \ --with-system-png --with-system-mng" |
--enable-xft : Enable the Xft support. You need fontconfig or the latest XFree86 version to enable xft.
--enable-crypto : Enable the Personal Security Manager to enable SSL connections.
--disable-jsd --disable-accessibility \ --disable-tests --disable-debug \ --disable-dtd-debug \ --disable-logging --enable-reorder \ --enable-strip \ --enable-cpp-rtti |
--enable-extensions=... : Enables extensions. If you want, you can disable all extensions other than the browser by changing this switch to --enable-extensions="default,-venkman,-inspector,-irc".
--enable-svg : Enable SVG (Scalable Vector Graphics) support.
install -d /usr/include/mozilla-1.3/nss cp -Lf dist/private/nss/*.h dist/public/nss/*.h \ /usr/include/mozilla-1.3/nss |
ln -nsf mozilla-1.3 ... : Mozilla installs headers and libraries in version specific directories. This link makes symbolic links so that applications that depend on Mozilla (such as OpenOffice, Galeon, etc.) don't need to know which version of mozilla is installed.
export LD_LIBRARY_PATH="/usr/lib/mozilla-1.3" && export MOZILLA_FIVE_HOME="/usr/lib/mozilla-1.3" && ./regxpcom && ./regchrome && touch `find /usr/lib/mozilla-${VERSION} -name *.rdf` |
The mozilla package contains mozilla.The various components such as composer, mail-news can be accessed from the menu after mozilla starts or via command line switches to the mozilla binary.
Download location (HTTP): http://telia.dl.sourceforge.net/sourceforge/galeon/galeon-1.3.3.tar.gz Download location (FTP): Version used: 1.3.3 Package size: 3.6 MB Estimated Disk space required: 28.3 MB Estimated build time: 5.30 SBU |
The galeon package contains a GNOME browser that utilizes the mozilla gecko rendering engine and presents the simplest interface possible for a browser.
galeon depends on: libgnomeui-2.2.0.1 and mozilla-1.3 |
Compiling must be done with the same compiler version and the same optimization settings that were used on mozilla.
Install galeon by running the following commands:
./configure --prefix=$GNOME_PREFIX --sysconfdir=/etc/gnome \ --localstatedir=/var/lib && make && make install |
galeon sets LD_LIBRARY_PATH and MOZILLA_FIVE_HOME before executing galeon-bin.
galeon-config-tool clears settings, installs schemas, removes schemas and fixes permissions in gconf.
Konqueror is the default graphical web browser for the KDE desktop environment. It is packaged and installed with kdebase-3.1.
Download location (HTTP): http://pan.rebelbase.com/download/releases/0.13.4/SOURCE/pan-0.13.4.tar.bz2 Download location (FTP): Version used: 0.13.4 Package size: 1.6 MB Estimated Disk space required: 19.2 MB Estimated build time: 1.92 SBU |
The pan package contains a graphical newsreader. This is useful for reading and writing news, threading articles and replying via email.
pan depends on: GTK+-2.2.1, gnet-1.1.8, intltool-0.25 and libxml2-2.5.6 pan will utilize: gtkspell-2.0.4 |
Install pan by running the following commands:
./configure --prefix=/usr && make && make install |
Download location (HTTP): http://balsa.gnome.org/balsa-2.0.10.tar.bz2 Download location (FTP): Version used: 2.0.10 Package size: 2.5MB Estimated Disk space required: 65MB |
The Balsa package contains a Gnome 2 based mail reader.
Balsa depends on: libgtkhtml-2.2.1, libgnome-2.2.0.1, openssl-0.9.7a, aspell-0.50.3 and libesmtp-0.8.12 Balsa will utilize: pcre-4.1. |
Install Balsa by running the following commands:
./configure --prefix=$GNOME_PREFIX --with-ssl && make && make install |
All configuration of Balsa is done through the Balsa menu system, with mailbox configuration done with the Settings->Preferences menu.
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.
The first question which people tend to ask about ALSA is why they should use it over the sound drivers included in the kernel - there are several reasons. Firstly, the ALSA drivers support more sound cards than those in the kernel. Secondly, the OSS emulation is in some cases faster and better than the original OSS driver itself. And finally, there are some programs which can use ALSA's enhanced features to better drive the soundcard.
ALSA is also likely to be the future of Linux Sound (hence the name Advanced Linux Sound Architecture), and the ALSA drivers will probably be included into the main linux kernel at some point during the 2.5 development series, leading eventually to ALSA being the "standard" sound drivers into the future 2.6 stable kernel.
The following five sections of the book deal with the five separate components of alsa: the drivers, the libraries, the utilities, the tools and the OSS compatibility libraries.
Download location (HTTP): http://www.alsa-project.org/alsa/ftp/driver/alsa-driver-0.9.2.tar.bz2 Download location (FTP): ftp://ftp.alsa-project.org/pub/driver/alsa-driver-0.9.2.tar.bz2 Version used: 0.9.2 Package size: 1.6 MB Estimated Disk space required: 22 MB (for all drivers) |
The alsa-driver package contains the alsa sound drivers. These are the next generation of sound drivers for Linux.
Before installing the alsa-drivers note that in your kernel configuration you should have Sound Card Support (CONFIG_SOUND) enabled but nothing else in the Sound menu (with the possible exception of TV Card Mixer support. In particular you should not have OSS Sound Modules enabled as this will cause problems when loading the alsa driver modules.
Install alsa-driver using the following commands as a template:
./configure \ --with-moddir=/lib/modules/<kernel-version>/kernel/drivers/sound/ \ --with-kernel=/lib/modules/<kernel-version>/build \ --with-sequencer=yes \ --with-oss=yes \ --with-isapnp=no \ --with-cards=<soundcards-to-compile> && make && make install |
If this is the first time you have installed the alsa drivers, you will need to create the /dev entries using the script provided in the alsa-driver source tree:
./snddevices |
<kernel-version> should be replaced with your kernel version, including any EXTRAVERSION such as -ac1 or -ac2. If you are using a normal kernel tarball, it will simply be the standard number (such as 2.4.19).
--with-sequencer=yes : This tells the alsa-driver package to build the sequencer modules for whichever soundcards you are building for. Most people want them so you will usually want to leave it set to yes.
--with-oss=yes : This tells the package to build the OSS/Free emulation modules. Again, most people want this so it's probably best to stick with yes.
--with-isapnp=no : Most sound cards these days are PCI and so ISA Plug and Play support isn't needed. If you are using an ISA soundcard, it's best to say yes here.
--with-cards=... : You can tell the script just to build the drivers for your particular sound card here. For full information on which drivers are available see ./configure --help. If you aren't sure which chipset your soundcard uses, have a look in CARDS-STATUS in the alsa-driver source tree. If you want to build all drivers (for some reason) then simply leave out the --with-cards statement entirely.
/etc/modules.conf
To configure the alsa drivers, you need to add some lines to /etc/modules.conf:
cat >> /etc/modules.conf << "EOF" alias char-major-14 soundcore alias char-major-116 snd alias snd-card-0 snd-<soundcard-name> alias sound-slot-0 snd-card-0 alias sound-service-0-0 snd-mixer-oss alias sound-service-0-1 snd-seq-oss alias sound-service-0-3 snd-pcm-oss alias sound-service-0-8 snd-seq-midi EOF |
<soundcard-name> needs to be replaced with the driver relevant to your soundcard. If you have more than one soundcard, you can add additional sections by repeating the above but changing the first 0 to 1 and so on.
After editing /etc/modules.conf you need to run depmod. If the drivers you have compiled are for the version of the kernel you are currently running, simply run
depmod |
depmod -a 2.4.19 -F /boot/System.map-2.4.19 |
These are kernel modules which provide audio and MIDI functionality to the operating system.
These are installed in /usr/include/sound and are required to compile certain packages such as alsa-lib.
Download location (HTTP): http://www.alsa-project.org/alsa/ftp/lib/alsa-lib-0.9.2.tar.bz2 Download location (FTP): ftp://ftp.alsa-project.org/pub/lib/alsa-lib-0.9.2.tar.bz2 Version used: 0.9.2 Package size: 485 KB Estimated Disk space required: 19 MB |
The alsa-lib package contains the alsa library. This is used by programs (including alsa-utils) which wish to use the alsa sound interface.
alsa-lib depends on: the header files from alsa-driver-0.9.2 |
Install alsa-lib by running the following commands:
./configure && make && make install |
As with most libraries, there is no configuration to do, save that the library directory i.e. /usr/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.
Download location (HTTP): http://www.alsa-project.org/alsa/ftp/utils/alsa-utils-0.9.2.tar.bz2 Download location (FTP): ftp://ftp.alsa-project.org/pub/utils/alsa-utils-0.9.2.tar.bz2 Version used: 0.9.2 Package size: 106 KB Estimated Disk space required: 1.8 MB |
The alsa-utils package contains various utilities which are useful for controlling your sound card.
alsa-utils depends on: alsa-lib-0.9.2 |
Install alsa-utils by running the following commands:
./configure && make && make install |
/etc/asound.state
Probably the easiest way to store mixer levels is to set and retrieve them using a bootscript. It is possible to do this with a post-install line in /etc/modules.conf but this is left as an exercise for those readers who wish to do this.
The alsa-drivers package installs a script as /etc/rc.d/init.d/alsasound. While it is possible to use this script, it contains a lot of extraneous detail which isn't needed on an LFS system and so we create our own script /etc/rc.d/init.d/alsa.
To create the alsa script, do the following:
cat > /etc/rc.d/init.d/alsa << "EOF" #!/bin/sh # Begin $rc_base/init.d/alsa # Based on sysklogd script from LFS-3.1 and earlier. # Rewritten by Gerard Beekmans - gerard@linuxfromscratch.org # ALSA specific parts by Mark Hymers - markh@linuxfromscratch.org # Stores mixer settings in the default location: /etc/asound.state source /etc/sysconfig/rc source $rc_functions case "$1" in start) echo "Starting alsa... Restoring volumes..." loadproc /usr/sbin/alsactl restore #echo " Loading MIDI font..." #loadproc sfxload /path/to/soundfont ;; stop) echo "Stopping alsa... Saving volumes......" loadproc /usr/sbin/alsactl store #echo " Removing MIDI font.........." #loadproc sfxload -i ;; restart) $0 stop /usr/bin/sleep 1 $0 start ;; *) echo "Usage: $0 {start|stop|restart}" exit 1 ;; esac # End $rc_base/init.d/alsa EOF chmod 755 /etc/rc.d/init.d/alsa |
You can then create the appropriate symlinks:
cd /etc/rc.d/init.d && ln -sf ../init.d/alsa ../rc0.d/K35alsa && ln -sf ../init.d/alsa ../rc1.d/K35alsa && ln -sf ../init.d/alsa ../rc2.d/S40alsa && ln -sf ../init.d/alsa ../rc3.d/S40alsa && ln -sf ../init.d/alsa ../rc4.d/S40alsa && ln -sf ../init.d/alsa ../rc5.d/S40alsa && ln -sf ../init.d/alsa ../rc6.d/K35alsa |
Note that all channels of your soundcard are muted by default. You can use the alsamixer program from alsa-utils (or any other OSS mixer) to change this.
Also, the first time the above script is run, it will complain that there is no state in /etc/asound.state. You can prevent this by running the following commands after installing alsa-utils:
touch /etc/asound.state && alsactl store |
A final note is that the lines loading sfxload are commented out. They are there as an example of other things you may wish to do in the startup script. sfxload is a separate package of interest to SoundBlaster AWE and Live! users. It is designed for loading "sound-fonts" (which are used for MIDI output). You may wish to delete these lines and add your own or, if you have the relevant soundcard, install sfxload and uncomment them.
The alsa-utils package contains aconnect, alsactl, alsamixer, amixer, aplay, arecord and aseqnet.
aconnect is a utility for connecting and disconnecting two existing ports in the ALSA sequencer system.
Download location (HTTP): http://www.alsa-project.org/alsa/ftp/tools/alsa-tools-0.9.1.tar.bz2 Download location (FTP): ftp://ftp.alsa-project.org/pub/tools/alsa-tools-0.9.1.tar.bz2 Version used: 0.9.1 Package size: 376 KB Estimated Disk space required: 6.8 MB (to compile all tools) |
The alsa-tools package contains advanced tools for certain soundcards.
alsa-tools depends on: alsa-lib-0.9.2 |
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 && make && make install |
The tools available in this package are ac3dec, as10k1, envy24control, sb16_csp and sbiload.
ac3dec is a free AC-3 stream decoder.
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.
This section is a placeholder for future releases of alsa in which the oss-compatibility libraries will be used.
Download location (HTTP): http://www.alsa-project.org/alsa/ftp/oss-lib/alsa-oss-0.9.1.tar.bz2 Download location (FTP): ftp://ftp.alsa-project.org/pub/oss-lib/alsa-oss-0.9.1.tar.bz2 Version used: 0.9.1 Package size: 131 KB Estimated Disk space required: 1.3 MB |
The alsa-oss package contains the alsa oss compatibility library. This is used by programs which wish to use the alsa oss sound interface
Install alsa-oss by running the following commands:
./configure && make && make install |
As with most libraries, there is no configuration to do, save that the library directory i.e. /usr/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.
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.1 portion of the KDE installation instructions.
Download location (HTTP): Download location (FTP): ftp://oss.sgi.com/projects/audiofile/download/audiofile-0.2.3.tar.gz Version used: 0.2.3 Package size: 332 KB Estimated Disk space required: 17 MB Estimated build time: 0.47 SBU |
The audiofile package contains the audiofile libraries and two sound file support programs. These are useful to support basic sound file formats.
Install audiofile by running the following commands:
./configure --prefix=/usr && make && make install |
The audiofile package contains libaudiofile libraries, audiofile-config, sfinfo and sfconvert.
The audiofile library is used by programs to support AIFF, AIFF-compressed, SUN/NeXT, WAVE and BICS audio formats.
The audiofile-config script is used during the compile process by programs linking to this library.
The sfinfo program displays the sound file format, audio encoding, sampling rate and duration for audio formats supported by this library.
The sfconvert program converts sound file formats where the original format and destination format are supported by this library.
Download location (HTTP): http://ftp.gnome.org/pub/GNOME/sources/esound/0.2/esound-0.2.29.tar.bz2 Download location (FTP): ftp://ftp.gnome.org/pub/GNOME/sources/esound/0.2/esound-0.2.29.tar.bz2 Version used: 0.2.29 Package size: 348 KB Estimated Disk space required: 2.3 MB Estimated build time: 0.17 SBU |
The esound package contains Enlightened Sound Daemon. This is useful for mixing together several digitized audio streams for playback by a single device.
esound depends on: audiofile-0.2.3 |
Install esound by running the following commands:
./configure --prefix=/usr --sysconfdir=/etc && make && make install |
--sysconfdir=/etc : This command put esounds configuration files in /etc instead of /use/etc.
/etc/esd.conf
Instructions and information about the configuration file is located in the TIPS file in the esound source directory.
The esound package contains esd, esdcat, esdctl, esdloop, esdmon, esdrec, esdsample and libesd libraries.
Download location (HTTP): http://www.libsdl.org/release/SDL-1.2.5.tar.gz Download location (FTP): Version used: 1.2.5 Package size: 1.8 MB Estimated Disk space required: 14 MB |
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.
SDL will utilize: oss, alsa-0.9.2, esound-0.2.29, arts-1.1, nas-1.6, nasm, xfree86-4.3.0, aalib-1.4rc4 and DirectFB |
Install SDL by running the following commands:
./configure --prefix=/usr --disable-debug && make && make install |
--disable-debug : This switch configures SDL to build with aggressive optimizations.
--enable-video-aalib : This optional switch is required to build SDL with AAlib video support.
As with most libraries, there is no configuration to do, save that the library directory i.e. /usr/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.
The Simple DirectMedia Layer is a generic API that provides low level access to audio, keyboard, mouse, joystick, 3D hardware via OpenGL, and 2D framebuffer across multiple platforms.
Download location (HTTP): http://fatpipe.vorbis.com/files/1.0/unix/libao-0.8.3.tar.gz Download location (FTP): Version used: 0.8.3 Package size: 212 KB Estimated Disk space required: 1.7 MB |
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) and ALSA (Advanced Linux Sound Architecture).
Install libao by running the following commands:
./configure --prefix=/usr && make && make install |
libao provides functions for programs wishing to output sound over supported platforms.
Download location (HTTP): http://fatpipe.vorbis.com/files/1.0/unix/libogg-1.0.tar.gz Download location (FTP): Version used: 1.0 Package size: 224 KB Estimated Disk space required: 1.6 MB Estimated build time: 0.03 SBU |
The libogg package contains the ogg file structure. This is useful for creating (encoding) or playing (decoding) a single physical bitstream.
Install libogg by running the following commands:
./configure --prefix=/usr && make && make install |
libogg provides the functions for programs wishing to read or write ogg formatted bitstreams.
Download location (HTTP): http://fatpipe.vorbis.com/files/1.0/unix/libvorbis-1.0.tar.gz Download location (FTP): Version used: 1.0 Package size: 736 KB Estimated Disk space required: 24 MB Estimated build time: 0.57 SBU |
The libvorbis package contains a general purpose audio and music encoding format. This is useful for creating (encoding) and playing (decoding) sound in a public domain format.
libvorbis depends on: libogg-1.0 |
Install libvorbis by running the following commands:
./configure --prefix=/usr && make && make install |
libvorbis is known to cause compiler errors on certain machines. If you get errors, try these commands to install libvorbis:
./configure --prefix=/usr && cd lib && cp Makefile Makefile.bak && sed s/-mno-ieee-fp// Makefile.bak > Makefile && cd .. && make && make install |
Download location (HTTP): http://radscan.com/nas/nas-1.6.src.tar.gz Download location (FTP): Version used: 1.6 Package size: 2 MB Estimated Disk space required: 12 MB |
The Network Audio System is a network transparent, client/server audio transport system. It can be described as the audio equivalent of an X server.
Download the nas patch from http://downloads.linuxfromscratch.org/blfs-patches.
Install nas by running the following commands:
xmkmf && make Makefiles && make includes && make depend && make && make INCROOT=/usr/include USRLIBDIR=/usr/lib \ MANPATH=/usr/share/man BINDIR=/usr/bin \ LIBDIR=/usr/lib/X11 CONFIGDIR=/usr/X11R6/lib/X11/config \ install install.man |
xmkmf... : Compile using the standard way for compiling X based apps.
make INCROOT=... : Install with /usr prefix instead of the default /usr/X11R6. Also install man pages.
As with most libraries, there is no configuration to do, save that the library directory i.e. /usr/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.
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. To use much of this software, you will require either the kernel sound drivers installed, or alsa-0.9.2 installed. Note that in the 2.5 kernel development tree, the old drivers are being replaced with ALSA and so when the stable 2.6 series arrives; most people will be using it by default.
Download location (HTTP): http://www.mpg123.de/mpg123/mpg123-0.59r.tar.gz Download location (FTP): Version used: 0.59r Package size: 155 KB Estimated Disk space required: 1.3 MB |
The mpg123 package contains a console-based mp3-player. It claims to be the fastest mp3-decoder for unix.
mpg123 depends on: oss or alsa-oss-0.9.1 |
Install mpg123 by running the following commands:
make PREFIX=/usr linux && make PREFIX=/usr install |
You can optimize the build of mpg123 for your processor. To do this, type
make linux-help |
and select the optimization appropriate for your machine. However, this may not always work. There have been problems reported with using optimizations with mpg123; make PREFIX=/usr linux always seems to work.
make linux : This command builds mpg123 for linux.
make linux-help : This command lists all build-options for mpg123.
make install : This command installs mpg123 in /usr/local/bin.
Download location (HTTP): http://fatpipe.vorbis.com/files/1.0/unix/vorbis-tools-1.0.tar.gz Download location (FTP): Version used: 1.0 Package size: 420 KB Estimated Disk space required: 3 MB Estimated build time: 0.12 SBU |
The vorbis-tools package contains command line tools for ogg audio files. This is useful for encoding, playing or editing files using the ogg CODEX.
vorbis-tools depends on: curl-7.10.4, libao-0.8.3, libogg-1.0 and libvorbis-1.0 |
Install vorbis-tools by running the following commands:
./configure --prefix=/usr && make && make install |
oggdec is a simple decoder which converts Ogg Vorbis file into PCM audio files (WAV or RAW).
Download location (HTTP): http://www.xmms.org/files/1.2.x/xmms-1.2.7.tar.bz2 Download location (FTP): ftp://ftp.xmms.org/xmms/1.2.x/xmms-1.2.7.tar.bz2 Version used: 1.2.7 Package size: 11 MB Estimated Disk space required: 17 MB |
XMMS is an audio player for the X Window System.
XMMS depends on: a working soundcard, xfree86-4.3.0, GTK+-1.2.10 and GLib-1.2.10 XMMS will utilize: esound-0.2.29, gnome-libs-1.4.2, gnome-applets, libmikmod, libogg-1.0, libvorbis-1.0 and libxml-1.8.17 |
Install XMMS by running the following commands:
./configure --prefix=/usr \ --enable-one-plugin-dir && make && make install |
./configure --prefix=/usr \ --enable-one-plugin-dir && |
~/.xmms/config
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.
XMMS, which stands for X Multimedia System, is a program comparable in function with WinAMP. It's 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. It's look can be customized with WinAMP style skins.
This script is used by other programs which need to link with xmms to retrieve the library and include paths XMMS was compiled with.
This is an applet for the GNOME desktop environment that will dock into the GNOME panel. From the applet you can start and control xmms.
wmxmms is a dock applet for the Window Maker window manager. From the applet you ca start and control xmms.
Download location (HTTP): http://telia.dl.sourceforge.net/sourceforge/lame/lame-3.93.1.tar.gz Download location (FTP): Version used: 3.93.1 Package size: 1 MB Estimated Disk space required: 7.1 MB Estimated build time: 0.93 SBU |
The lame package contains a MP3 encoder. This is useful for creating compressed audio files.
Install lame by running the following commands:
./configure --prefix=/usr --mandir=/usr/share/man --with-gtk-prefix=/usr && make && make install |
lame creates mp3 audio files.
libmp3lame libraries provide the functions necessary to convert WAV files to MP3 files.
Download location (HTTP): http://www.xiph.org/paranoia/download/cdparanoia-III-alpha9.8.src.tgz Download location (FTP): Version used: III-9.8 Package size: 114 KB Estimated Disk space required: 1.3 MB |
The CDParanoia package contains cdparanoia. This is useful for extracting wave files from audio cd's. A CDDA capable CDROM drive is needed. Practically all drives supported by Linux can be used.
Install CDParanoia by running the following commands:
./configure --prefix=/usr && make && make install |
CDParanoia itself needs little configuration; information can be found from the man page.
As with most libraries, there is no configuration to do, save that the library directory i.e. /usr/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.
This is used for 'ripping' an audio-cd. Ripping is the process of digitally extracting music from an audio-cd.
Download location (HTTP): http://files.xvid.org/downloads/xvidcore-0.9.1.tar.bz2 Download location (FTP): Version used: 0.9.1 Package size: 464 KB Estimated Disk space required: 3.9 MB Estimated build time: 0.55 SBU |
Xvid is a mpeg4-compliant video codec.
Xvid will utilize: nasm |
Install Xvid by running the following commands:
cd build/generic && ./configure --prefix=/usr && make && make install && cp ../../src/divx4.h /usr/include |
cp ../../src/divx4.h /usr/include : This command puts this header files in the header search path in order for xine and mplayer to locate this package.
The Xvid core package contains the library libxvidcore and the appendant header files. The library itself provides functions to encode and decode most mpeg4 video data.
Following features of mpeg4 are supported:
I, P Frame encoding
I-Frames are image frames, while P-Frames are Pattern Frames. Image Frames contain full images. P-Frames contain patterns of what changes in the image, thusly saving a lot of space.
PMVFast and EPZS with diamond a sqare pattern motion estimation
Fast Motion detection that can refer a square or diamond shaped pattern to different directions.
inter4v mode
Fast interpolation ability.
fullpixel and halfpixel precision
Even halfpixel movements can be encoded. Better precision results in better compression at better quality.
both MPEG4 and H263 quantizations
MPEG4 is the standard DivX was derived from. H263 is a slightly changed subset of that standard made by Microsoft. Quantization means to map the quantity of color values to numbers.
custom quant matrices
The quantization can be done using custom matrices, possibly giving better results if the matrix is made to suit the video data. Every normal user should be fine with the default matrix that comes with Xvid.
Adaptive quantization / Luminance masking
Qantization and Luminance masking are variant, depending on the input material, therefore providing better results on dark or very contrasting images.
Download location (HTTP): http://telia.dl.sourceforge.net/sourceforge/ffmpeg/ffmpeg-0.4.6.tar.gz Download location (FTP): Version used: 0.4.6 Package size: 664 KB Estimated Disk space required: 20.6 MB Estimated build time 3.32 SBU |
ffmpeg is a solution to record, convert and stream audio and video. Due to heavy development, not all of this functions will work.
ffmpeg will utilize: libvorbis-1.0, lame-3.93.1 and Imlib2 |
Install ffmpeg by running the following commands:
Note: The package maintaners recommend compiling without any optimizations.
./configure --prefix=/usr && make && make install |
The ffmpeg package contains ffmpeg, ffserver, libavcodec libraries and libavformat libraries.
ffmpeg is a command line tool to convert video files, network streams, input from a TV card to several video formats.
ffserver is a streaming server for everything that ffmpeg could use as input (files, streams, TV card input, webcam, etc.).
libavcodec and libavformats are libraries for encoding/decoding video streams and putting them into files or network packets. Since they're well documented, you can easily include them in your software, like some other packages already do.
Download location (HTTP): http://avifile.sourceforge.net/avifile-0.7.34-20030319.tgz Download location (FTP): Version used: 0.7.34 Package size: 2.7 MB Estimated Disk space required: 26.6 MB |
Additional downloads: http://avifile.sourceforge.net/binaries-011002.tgz |
The avifile package contains an AVI video file player, tools and support libraries. This is useful for viewing and editing AVI files.
avifile depends on: x86 processor, xfree86-4.3.0, libjpeg-6b and SDL-1.2.5 avifile will utilize: qt (< 3.1.0), oss, ffmpeg-0.4.6 and xvid-0.9.1 |
Install avifile by running the following commands:
install -d /usr/lib/win32 && tar -xzvf ../binaries-011002.tgz -C /usr/lib && ./configure --prefix=/usr && make && make install |
The avifile package contains aviplay, avibench, avifile-config, mmxnow-config, avirecompress, avicap, avirec, kv4lsetup, avicat, avitype and avimake.
aviplay manages the input formats, the codecs and the output formats to display AVI video files on your screen.
avifile-config is run by configure for programs wishing to link to the avifile library.
avirecompress is a widget that takes an input file of one codec type and converts it into a video file of another codec.
avicap is a widget that displays acquired video fro a Video For Windows (vfw) compatible device, like a webcam or a TV-tuner.
Download location (HTTP): http://ftp.lug.udel.edu/MPlayer/releases/MPlayer-0.90.tar.bz2 Download location (FTP): ftp://ftp.lug.udel.edu/MPlayer/releases/MPlayer-0.90.tar.bz2 Version used: 0.90 Package size: 3.3 MB Estimated Disk space required: 44 MB Estimated build time: 6.91 SBU |
Additional downloads: Win32 codecs Fonts for OSD Default Skin QuickTime 5 codecs QuickTime 6 codecs QuickTime extra codecs RealPlayer 9 codecs |
The MPlayer package contains an audio/video player that is able to play almost every audio and video codec and can be controlled by command line or GUI.
MPlayer depends on: xfree86-4.3.0 or DirectFB, GTK+-1.2.10 and libvorbis-1.0 MPlayer will utilize: freetype-2.1.3, libpng-1.2.5, libjpeg-6b, libungif-4.1.0b1, aalib-1.4rc4, SDL-1.2.5, ffmpeg-0.4.6, xvid-0.9.1, oss, arts-1.1, alsa-0.9.2, LZO, libdvdnav, MAD, and CDParanoia-III-9.8 |
The extra downloads should be located in your source directory with the bzip2 files decompressed.
Note: The package maintainers recommend building without any optimization
Install MPlayer by running the following commands:
install -d /usr/lib/win32 && tar -xvf ../win32codecs.tar -C /usr/lib/win32 && tar -xvf ../qt5dlls.tar -C /usr/lib/win32 && tar -xvf ../qt6dlls.tar -C /usr/lib/win32 && tar -xvf ../qtextras.tar -C /usr/lib/win32 && tar -xvf ../rp9codecs.tar -C /usr/lib/win32 && ./configure --prefix=/usr --confdir=/etc/mplayer --enable-largefiles \ --enable-gui --enable-menu --enable-new-conf --enable-qtx-codecs \ --enable-vorbis --with-reallibdir=/usr/lib/win32/rp9codecs \ --enable-freetype --enable-shared-pp && make && make install |
Each user of MPlayer should complete the install by running the following commands:
mkdir ~/.mplayer && cp etc/codecs.conf ~/.mplayer && cp etc/example.conf ~/.mplayer/example.conf |
If freetype is in use, the only advantage of prerendered fonts is that they are faster. Install them like this:
install -d /usr/share/mplayer/font && tar -xvf ../font-arial-iso-8859-1.tar -C /usr/share/mplayer/font && for i in /usr/share/mplayer/font/font-arial-<size>* do ln -s $i /usr/share/mplayer/font; done |
Replace <size> with either 14, 18, 24 or 28.
If you want DVD playback with MPlayer, you need to make a link from your DVD drive to /dev/dvd:
ln -s /dev/<dvd drive> /dev/dvd |
replace <dvd drive> with whatever device is appropriate, for example /dev/hdc. if you don't know which device to choose, type:
dmesg | grep DVD |
It should result in an output like:
hdc: Pioneer DVD-ROM ATAPIModel DVD-114 0110, ATAPI CD/DVD-ROM drive |
If you have SCSI-Emulation activated for the drives, you'll need to get the right SCSI-device. Every CD/DVD-ROM drive is mapped in the same order as in IDE to the devices named /dev/scd0, /dev/scd1 and so on.
--enable-freetype : This switch tells MPlayer to utilize freetype fonts instead of the fonts provided by mplayer.
--enable-gui : This switch tells MPlayer to compile the gui code.
--enable-menu --enable-new-conf : These switches enable the new menu support. It's like an OSD, but you can also run a shell with it.
--enable-shared-pp : This enables the building of a shared libpostproc (library for post processing, featuring filters like sharpen).
cp etc/codecs.conf ~/.mplayer : This command copies the standard codecs.conf file to the user. MPlayer expects this file at startup.
cp etc/example.conf ~/.mplayer : This command copies the self documented configuration file to the user. We will create an new config file if you installed the gui or you can copy this file to config and edit it for your situation.
~/.mplayer/config, ~/.mplayer/codec.conf
If you wish to utilize a freetype font, you need to link a TTF file to your ~/.mplayer directory. For example:
ln -sf /usr/X11R6/lib/X11/fonts/TTF/luxisri.ttf ~/.mplayer/subfont.ttf |
ln -sf /usr/share/mplayer/font/iso-8859-1/arial-14 ~/.mplayer/font |
Set up the GUI with the following commands executed from your source directory:
cat > ~/.mplayer/config << "EOF" gui = yes skin = default EOF mkdir ~/.mplayer/Skin && tar -xvf ../default.tar -C ~/.mplayer/Skin |
The first line, gui = yes, will make MPlayer start in gui mode automatically. If you want to decide whether to start in gui mode or not, leave that line out and start mplayer with -gui or as gmplayer (e.g. when starting from a Window Manager menu or command prompt).
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 informations 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, have a look at the very good documentation included in the package in the subdirectory DOCS/.
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> |
Download location (HTTP): http://telia.dl.sourceforge.net/sourceforge/xine/xine-lib-1-beta9.tar.gz Download location (FTP): Version used: 1-beta9 Package size: 3.7 MB Estimated Disk space required: 39.5 MB Estimated build time: 6.95 SBU |
The xine-lib 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.
xine-lib depends on: xfree86-4.3.0 and esound-0.2.29 or oss or alsa-0.9.2 or arts-1.1 xine-lib will utilize: aalib-1.4rc4, SDL-1.2.5, DirectFB, DXR3, FLAC, FAME, libogg-1.0, libvorbis-1.0, ffmpeg-0.4.6, and xvid-0.9.1 |
Install xine-lib by running the following commands:
./configure --prefix=/usr && make && make install |
xine-config provides information to programs trying to link with the xine libraries.
Download location (HTTP): http://telia.dl.sourceforge.net/sourceforge/xine/xine-ui-0.9.19.tar.gz Download location (FTP): Version used: 0.9.19 Package size: 2.4 MB Estimated Disk space required: 14.4 MB Estimated build time: 1.78 SBU |
The xine-ui package contains a user interface for xine. This is useful for controlling the operations of your movie.
xine-ui depends on: xine-lib-1-beta9 xine-ui will utilize: curl-7.10.4, aalib-1.4rc4 and libpng-1.2.5 |
Install xine-ui by running the following commands:
./configure --prefix=/usr && make && make install |
~/.xine/config
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.
xine plays MPEG streams (audio and video), mpeg elementary streams (mp3), mpeg transport streams, ogg files, avi files, asf files, some quicktime files, VCD's and DVD's (non-encrypted).
Download location (HTTP): http://www.theorie.physik.uni-goettingen.de/~ostreich/transcode/ Version used: 0.6.2 Package size: 2.3 MB Estimated Disk space required: 89.3 MB |
transcode is a fast versatile command line based audio/video everything to everything converter.
transcode will utilize: xfree86-4.3.0, MPlayer-0.90 (libpostproc), ImageMagick, libdv, SDL-1.2.5, qt-3.1.2, avifile-0.7.34, lame-3.93.1, FAME, xvid-0.9.1, LZO, ffmpeg-0.4.6, libdvdnav/read, MAD, curl-7.10.4 and libogg-1.0 |
Everything that can be utilized by transcode should be installed first.
Install transcode by running the following commands:
./configure --prefix=/usr --with-ogg --with-vorbis\ --with-libfame --with-lame --with-avifile \ --with-libpostproc-builddir=/usr/src/MPlayer-0.90 && make && make install |
--prefix=/usr : This switch tells transcode where to install binaries, libraries and other files.
--with-... : This switches are used to tell transcode which additional libraries to use.
The transcode package contains transcode, tccat, tcdecode, tcdemux, tcextract, tcframe, tcprobe, tcscan, avicodec, avidump, avimerge, avisplit, avisync and a merry lot of input/filter/output modules.
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 either the homepage or the documentation included in the package.
tcframe processes single video frames for different color encodings (RGB >-< YUV or similar).
avidump dumps audio or video stream of an given avifile to stdout (for avi conversion or extraction of audio streams).
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!).
avisync can shift audio in avi files for better synchronizing of audio and video data signal.
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 filetype of choice. Read the documentation.
This chapter contains information on CD-writing in Linux. You will first have to configure your kernel for cd-writing. We start by discussing how to do this, then discuss installing the actual utilities.
Additional sources of information on CD-writing include:
In the kernel configuration, check your settings with those listed below for your CD-ROM interface type:
SCSI CD-writer:
SCSI support menu SCSI support: Y or M SCSI CD-ROM support: Y or M SCSI generic support: Y or M Vendor-specific extensions: [1] Also include the low-level driver for your SCSI card if applicable. |
IDE CD-writer:
ATA/IDE/MFM/RLL support menu IDE/ATAPI CDROM support: N SCSI emulation support: Y or M SCSI support menu SCSI support: Y or M SCSI CD-ROM support: Y or M SCSI generic support: Y or M Vendor-specific extensions: [1] |
[1] Read the help to determine if this selection is applicable for your hardware.
If necessary, recompile the kernel with
make dep && make bzImage&& make modules && make modules_install |
Copy /usr/src/linux/arch/i386/boot/bzImage and /usr/src/linux/System.map to /boot, edit /etc/lilo.conf appropriately and run lilo.
For more information about these settings and the drivers they install, read The Linux 2.4 SCSI subsystem HOWTO.
Download location (HTTP): Download location (FTP): ftp://ftp.berlios.de/pub/cdrecord/cdrtools-2.0.tar.gz Version used: 2.0 Package size: 1.6 MB Estimated Disk space required: 15.5 MB |
The cdrtools package contains cd recording utilities. These are useful for reading, creating or writing (burning) Compact Discs.
Install cdrtools by running the following commands:
make INS_BASE=/usr DEFINSUSR=root DEFINSGRP=root && make INS_BASE=/usr DEFINSUSR=root DEFINSGRP=root install |
INS_BASE=/usr : This command moves the install directory from /opt/schily to /usr .
DEFINSUSR=root DEFINSGRP=root : These commands install all programs with root.root ownership instead of the default bin.bin.
The cdrtools package contains cdrecord, cdda2wav, mkisofs, readcd, scgcheck, isoinfo, isodump, isovfy, devdump, rscsi and support libraries.
cdrecord records audio or data Compact Discs.
isoinfo, isodump, isovfy and devdump are utility programs for dumping and verifying iso9660 images.
libdeflt, libfile, libhfs, librscg, libscg, libschily and libunls are the support libraries for this package.
Download location (HTTP): http://telia.dl.sourceforge.net/sourceforge/cdrdao/cdrdao-1.1.7.src.tar.bz2 Download location (FTP): Version used: 1.1.7 Package size: 1.1 MB Estimated Disk space required: 15.9 MB |
The cdrdao package contains cd recording utilities. These are useful for burning a CD in disk-at-once mode.
cdrdao will utilize: lame-3.93.1 cdrdao will utilize to build gui interface: GTK+-1.2.10 and gnome-libs-1.4.2 |
Install cdrdao by running the following commands:
./configure --prefix=/usr && make && make install |
cdrdao records audio or data CD-Rs in disk-at-once (DAO) mode based on a textual description of the CD contents.
Download location (HTTP): http://www.cups.org/software.html Download location (FTP): ftp://ftp.easysw.com/pub/cups/1.1.18/cups-1.1.18-source.tar.bz2 Version used: 1.1.18 Package size: 3.3 MB Estimated Disk space required: 21 MB |
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.
CUPS depends on: GhostScript-7.05.5 (for non-postscript printers) CUPS will utilize: libjpeg-6b, libpng-1.2.5 and libtiff-3.5.7 |
Install CUPS by running the following commands:
./configure && make && make install |
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.
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.
During the install, cups created the startup file /etc/rc.d/init.d/cups. The file works, but you may want to change it to a more conventional LFS startup file:
cat > /etc/rc.d/init.d/cups << "EOF" #!/bin/sh # Begin $rc_base/init.d/cups # Start or stop the CUPS server based upon the first argument to the script. source /etc/sysconfig/rc source $rc_functions case $1 in start) echo "Starting CUPS Printserver..." loadproc /usr/sbin/cupsd ;; stop) echo "Stopping CUPS Printserver..." killproc cupsd ;; reload) echo "Reloading CUPS Printserver..." reloadproc /usr/sbin/cupsd ;; restart) $0 stop sleep 1 $0 start ;; status) statusproc cupsd ;; *) echo "Usage: $0 {start|stop|reload|restart|status}" exit 1 ;; esac # End $rc_base/init.d/cups startup script. EOF |
The CUPS install also copies the initialization script to the /etc/rc.d/rc{0,2,3,5} directories. You may want to delete those files and add symbolic links to /etc/rc.d/init.d/cups.
CUPS provides:
/usr/sbin/lpc - line printer control program
/usr/sbin/cupsd - common unix printing system daemon
/usr/sbin/accept - accept jobs sent to a destination
/usr/sbin/reject - reject jobs sent to a destination
/usr/sbin/cupsaddsmb - export printers to samba for windows clients
/usr/sbin/lpadmin - configure cups printers and classes
/usr/sbin/lpinfo - show available devices or drivers
/usr/sbin/lpmove - move a job to a new destination
/usr/sbin/cupstestppd - test conformance of ppd files
/usr/bin/lpq - show printer queue status
/usr/bin/lpr - print files
/usr/bin/lprm - cancel print jobs
/usr/bin/cancel - cancel jobs
/usr/bin/disable - start printers and classes
/usr/bin/enable - start printers and classes
/usr/bin/lp - print files
/usr/bin/lpoptions - display or set printer options and defaults
/usr/bin/lpstat - print cups status information
/usr/bin/lppasswd - add, change, or delete digest passwords
/usr/bin/cups-config - get cups api, compiler, directory, and link information
Download location (HTTP): http://telia.dl.sourceforge.net/sourceforge/ghostscript/ghostscript-8.00.tar.bz2 Download location (FTP): ftp://ftp.sourceforge.net/pub/sourceforge/ghostscript/ghostscript-8.00.tar.bz2 Version used: 8.00 Package size: 5.2 MB Estimated Disk space required: 31-40 MB (depends on if libgs.so is installed) Estimated build time: |
Additional Downloads: gnu ghostscript fonts - standard gnu ghostscript fonts - other cyrillic fonts |
Ghostscript is a versatile processor for Postscript data with the ability to render Postscript to different targets.
Install Ghostscript by running the following commands:
./configure --prefix=/usr --libexecdir=/usr/lib/gs \ --sysconfdir=/etc/gs --enable-shared --enable-static && make && make install |
To install the shared library libgs.so, run the following commands additionally:
make so && make soinstall |
Note: The shared library is only used in external programs like gsview-4.3.
To finish the installation, unpack all fonts you've loaded to /usr/share/ghostscript.
--libexecdir=/usr/lib/gs : executable libraries of Ghostscript will be installed to /usr/lib/gs.
--sysconfdir=/etc/gs : Configuration data goes to /etc/gs instead of /usr/etc.
Ghostscript comes with a lot of filters to render Postscript/PDF files back and forth. Please refer to the HTML documentation or try man gs.
Download location (HTTP): http://telia.dl.sourceforge.net/sourceforge/espgs/espgs-7.05.5-source.tar.bz2 Download location (FTP): Version used: 7.05.5 Package size: 5.2 MB Estimated Disk space required: 33 MB Estimated build time: |
Additional downloads: gnu ghostscript fonts - standard gnu ghostscript fonts - other cyrillic fonts |
Ghostscript is a versatile processor for Postscript data with the ability to render Postscript to different targets.
Ghostscript will utilize: cups-1.1.18 and gimp-print |
Install Ghostscript by running the following commands:
./configure --prefix=/usr && make && make install |
To finish the installation, unpack the font packages into /usr/share/ghostscript.
--enable-gimp-print : This switch enables the building of the gimp-print driver.
--enable-ijs : This switch enables the IJS driver support.
gs is the ghostscript interpreter. It is responsible for rendering the postscript data.
pstoraster allows CUPS to filter output to non-postscript printers. It is built and installed if cups-1.1.18 is found.
Download location (HTTP): http://www.lprng.com/DISTRIB/LPRng/LPRng-3.8.20.tgz Download location (FTP): ftp://ftp.lprng.com/pub/LPRng/LPRng/LPRng-3.8.20.tgz Version used: 3.8.20 Package size: 9.6 MB Estimated Disk space required: 46.2 MB Estimated build time: 0.70 SBU |
The LPRng package contains an enhanced, extended and portable implementation of the Berkeley LPR print spooler. This is useful for queueing print jobs.
Install LPRng by running the following commands:
./configure --prefix=/usr --libexecdir=/usr/sbin --sysconfdir=/etc && make && make install |
--libexecdir=/usr/sbin --sysconfdir=/etc : These switches prevent the default use of /usr/libexec and /usr/etc.
/etc/printcap
There is no generic printcap for all printers. A sample printcap is loaded into the etc directory which can be some help. Information is also available at http://www.lprng.org and http://www.linuxprinting.org.
The init script installed by LPRng is not consistent with BLFS scripts; therefore, we will create a new one with the following commands:
mv /etc/rc.d/init.d/lpd /etc/rc.d/init.d/lpd.orig && cat > /etc/rc.d/init.d/lpd << "EOF" #!/bin/sh # Begin $rc_base/init.d/lpd # Based on sysklogd script from LFS-3.1 and earlier. # Rewritten by Gerard Beekmans - gerard@linuxfromscratch.org source /etc/sysconfig/rc source $rc_functions case "$1" in start) echo "Starting lpd..." loadproc /usr/sbin/lpd ;; stop) echo "Stopping lpd..." killproc /usr/sbin/lpd ;; reload) echo "Reloading lpd..." reloadproc /usr/sbin/lpd ;; restart) $0 stop sleep 1 $0 start ;; status) statusproc /usr/sbin/lpd ;; *) echo "Usage: $0 {start|stop|reload|restart|status}" exit 1 ;; esac # End $rc_base/init.d/lpd EOF chmod 755 /etc/rc.d/init.d/lpd |
Create the symbolic links to the lprng init script in the relevant rc.d directories with the following commands:
cd /etc/rc.d/init.d && ln -sf ../init.d/lpd ../rc0.d/K00lprng && ln -sf ../init.d/lpd ../rc1.d/K00lprng && ln -sf ../init.d/lpd ../rc2.d/S99lprng && ln -sf ../init.d/lpd ../rc3.d/S99lprng && ln -sf ../init.d/lpd ../rc4.d/S99lprng && ln -sf ../init.d/lpd ../rc5.d/S99lprng && ln -sf ../init.d/lpd ../rc6.d/K00lprng |
Download location (HTTP): http://www.mostang.com/sane Download location (FTP): ftp://ftp.mostang.com/pub/sane/sane-backends-1.0.9.tar.gz Download location (FTP): ftp://ftp.mostang.com/pub/sane/sane-frontends-1.0.9.tar.gz Version used: 1.0.9 Package size: 2.2 MB (Backends), 174 kb (Frontends) Estimated Disk space required: 31 MB (Backends), 3.1 MB (Frontends) |
SANE is short for Scanner Access Now Easy. Alas, scanner access is not really easy, since every vendor has 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, so the vendor drivers can't be used.
SANE is split into backends and frontends. The backends are drivers for the supported scanners. The frontends are user interfaces to access the backends.
SANE will utilize: xfree86-4.3.0, GTK+-1.2.10 and gimp-1.2.3 |
To access your scanner, you will probably need the related kernel drivers. A SCSI scanner will need SCSI drivers, a parallel port scanner needs parallel port support (you should use enhanced EPP modes, too) and an USB scanner will need the USB scanner module and a SCSI system for emulation. Be sure that you have got the necessary devices to access the drivers.
Install sane-backends by running the following commands:
./configure --prefix=/usr && make && make install |
To install sane-frontends, use the following commands:
./configure --prefix=/usr && make && make install |
--prefix=/usr : All software is going to be installed in directories relative to/usr.
See http://www.mostang.com/sane/sane-supported-devices.html for a list of available backends.
scanimage : Command line interface for scanning.
xscanimage : Graphical user interface for scanning.
gimp-plugin : xscanimage as Gimp-plugin.
Download location (HTTP): http://www.xsane.org Download location (FTP): ftp://ftp.mostang.com/pub/sane/xsane/xsane-0.90.tar.gz Version used: 0.90 Package size: 2.5 MB Estimated Disk space required: 16 MB |
xsane is another frontend for sane-1.0.9. It has additional features to improve the image quality compared to xscanimage.
xsane depends on: sane-1.0.9, xfree86-4.3.0, libpng-1.2.5, GTK+-1.2.10 and gimp-1.2.3 |
Install xsane by running the following commands:
./configure --prefix=/usr && make && make install |
--prefix=/usr : All software is going to be installed in directories relative to/usr.
xsane comes with a graphical user interface, and (if gimp 1.2 is available) a gimp plugin with advanced features. Please refer to the documentation for further support.
Download location (HTTP): Download location (FTP): ftp://sources.redhat.com/pub/docbook-tools/new-trials/SOURCES/sgml-common-0.6.3.tgz Version used: 0.6.3 Package size: 75 KB Estimated Disk space required: 648 KB Estimated build time: 0.01 SBU |
The sgml-common package contains install-catalog. This is useful for creating and maintaining centralized sgml catalogs.
Install sgml-common by running the following commands:
ln -s /usr/share/automake-1.6 /usr/share/automake && ./configure --prefix=/usr --sysconfdir=/etc --mandir=/usr/share/man && make && 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 && rm /usr/share/automake |
Update hint: Remove the above catalog items prior to upgrading 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
ln -s /usr/share/automake-1.6 /usr/share/automake : This command sets up a symlink for the configure file to find the automake tools it needs.
rm /usr/share/automake : This command removes the above symlink.
The sgml-common package contains install-catalog, sgmlwhich, sgml entities files and xml entities files.
install-catalog creates a centralized catalog that maintains references to catalogs scattered throughout the /usr/share/sgml directory tree.
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.
Download location (HTTP): http://www.docbook.org/sgml/3.1/docbk31.zip Download location (FTP): Version used: 3.1 Package size: 60 KB Estimated Disk space required: 336 KB |
The 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.
sgml-dtd depends on: unzip-5.50 and sgml-common-0.6.3 |
Install sgml-dtd by running the following commands:
cp docbook.cat docbook.cat.orig && sed -e '/ISO 8879/d' docbook.cat.orig > docbook.cat && cp docbook.cat docbook.cat.orig && sed -e '/gml/d' docbook.cat.orig > docbook.cat && cp docbook.cat docbook.cat.orig && sed -e 's|DTDDECL "-//OASIS//DTD DocBook V3.1//EN"|SGMLDECL|g' \ docbook.cat.orig > docbook.cat && install -d /usr/share/sgml/docbook/sgml-dtd-3.1 && chown -R root:root . && chmod -R 755 . && install docbook.cat /usr/share/sgml/docbook/sgml-dtd-3.1/catalog && cp -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 |
cp docbook.cat docbook.cat.orig sed -e '/ISO 8879/d' docbook.cat.orig > docbook.cat cp docbook.cat docbook.cat.orig sed -e '/gml/d' docbook.cat.orig > docbook.cat |
cp docbook.cat docbook.cat.orig sed -e 's|DTDDECL "-//OASIS//DTD Docbook V3.1//EN"|SGMLDECL|g' \ docbook.cat.orig > docbook.cat |
/etc/sgml/catalog
The above installation script updates the catalog.
Using sgml-dtd with gnome requires the following:
cat >> /usr/share/sgml/docbook/sgml-dtd-3.1/catalog << "EOF" -- Begin Gnome addition to catalog -- PUBLIC "-//GNOME//DTD DocBook PNG Variant V1.1//EN" "png-support-3.1.dtd" -- End Gnome addition to catalog -- EOF |
Using only the most current 3.x version of sgml-dtd requires the following:
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 |
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.
MOD files contain components of the document type definition that are sourced into the DTD files.
Download location (HTTP): http://www.docbook.org/sgml/4.2/docbook-4.2.zip Download location (FTP): Version used: 4.2 Package size: 68 KB Estimated Disk space required: 376 KB |
The 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.
sgml-dtd depends on: unzip-5.50 and sgml-common-0.6.3 |
Install sgml-dtd by running the following commands:
cp docbook.cat docbook.cat.orig && sed -e '/ISO 8879/d' docbook.cat.orig > docbook.cat && cp docbook.cat docbook.cat.orig && sed -e '/gml/d' docbook.cat.orig > docbook.cat && install -d /usr/share/sgml/docbook/sgml-dtd-4.2 && chown -R root:root . && chmod -R 755 . && install docbook.cat /usr/share/sgml/docbook/sgml-dtd-4.2/catalog && cp -af *.dtd *.mod *.dcl /usr/share/sgml/docbook/sgml-dtd-4.2 && install-catalog --add /etc/sgml/sgml-docbook-dtd-4.2.cat \ /usr/share/sgml/docbook/sgml-dtd-4.2/catalog && install-catalog --add /etc/sgml/sgml-docbook-dtd-4.2.cat \ /etc/sgml/sgml-docbook.cat |
cp docbook.cat docbook.cat.orig sed -e '/ISO 8879/d' docbook.cat.orig > docbook.cat cp docbook.cat docbook.cat.orig sed -e '/gml/d' docbook.cat.orig > docbook.cat |
/etc/sgml/catalog
The above installation script updates the catalog.
Using only the most current 4.x version of sgml-dtd requires the following:
cat >> /usr/share/sgml/docbook/sgml-dtd-4.2/catalog << "EOF" -- Begin Single Major Version catalog changes -- 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 |
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.
MOD files contain components of the document type definition that are sourced into the DTD files.
Download location (HTTP): http://download.sourceforge.net/openjade/OpenSP-1.5.tar.gz Download location (FTP): Version used: 1.5 Package size: 1.3 MB Estimated Disk space required: 16.1 MB Estimated build time: 7.51 SBU |
The OpenSP package contains a C++ Library for using SGML/XMLfiles. This is useful for validating, parsing and manipulating SGML and XML documents.
OpenSP depends on: sgml-common-0.6.3 |
Install OpenSP by running the following commands:
./configure --prefix=/usr --disable-static --enable-http \ --enable-default-catalog=/etc/sgml/catalog \ --enable-default-search-path=/usr/share/sgml --enable-xml-messages && make pkgdatadir=/usr/share/sgml/OpenSP-1.5 && make pkgdatadir=/usr/share/sgml/OpenSP-1.5 install && ln -sf onsgmls /usr/bin/nsgmls && ln -sf osgmlnorm /usr/bin/sgmlnorm && ln -sf ospam /usr/bin/spam && ln -sf ospcat /usr/bin/spcat && ln -sf ospent /usr/bin/spent && ln -sf osx /usr/bin/sx && ln -sf osx /usr/bin/sgml2xml && ln -sf libosp.so /usr/lib/libsp.so && install-catalog --add /etc/sgml/OpenSP-1.5.cat \ /usr/share/sgml/OpenSP-1.5/catalog && install-catalog --add /etc/sgml/sgml-docbook.cat \ /etc/sgml/OpenSP-1.5.cat |
Update hint: Remove the above catalog items prior to upgrading with:
install-catalog --remove /etc/sgml/OpenSP-{version}.cat \ /usr/share/sgml/OpenSP-{version}/catalog && install-catalog --remove /etc/sgml/sgml-docbook.cat \ /etc/sgml/OpenSP-{version}.cat
--disable-static : This switch prevents the building of the static library.
--enable-http : This switch add support for http.
--enable-default-catalog=/etc/sgml/catalog : This switch sets the path to our 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.
make pkgdatadir=/usr/share/sgml/OpenSP-1.5 : This sets the pkgdatadir variable in the Makefile from /usr/share/OpenSP to /usr/share/sgml/OpenSP-1.5.
ln -sf onsgmls /usr/bin/nsgmls ln -sf osgmlnorm /usr/bin/sgmlnorm ln -sf ospam /usr/bin/spam ln -sf ospcat /usr/bin/spcat ln -sf ospent /usr/bin/spent ln -sf osx /usr/bin/sx ln -sf osx /usr/bin/sgml2xml ln -sf libosp.so /usr/lib/libsp.so |
Download location (HTTP): http://telia.dl.sourceforge.net/openjade/openjade-1.3.2.tar.gz Download location (FTP): Version used: 1.3.2 Package size: 880 KB Estimated Disk space required: 14.5 MB Estimated build time: 4.23 SBU |
The OpenJade package contains a DSSSL engine. This is useful for SGML and XML transformations into RTF, Tex, SGML and XML.
OpenJade depends on: opensp-1.5 |
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 && make install && ln -sf openjade /usr/bin/jade && ln -sf libogrove.so /usr/lib/libgrove.so && ln -sf libospgrove.so /usr/lib/libspgrove.so && ln -sf libostyle.so /usr/lib/libstyle.so && install -m644 dsssl/catalog /usr/share/sgml/openjade-1.3.2/ && install -m644 dsssl/*.dtd dsssl/*.dsl dsssl/*.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 |
--disable-static : This switch prevents the building of the static library.
--enable-http : This switch add support for http.
--enable-default-catalog=/etc/sgml/catalog : This switch sets the path to our 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 -sf openjade /usr/bin/jade ln -sf libogrove.so /usr/lib/libgrove.so ln -sf libospgrove.so /usr/lib/libspgrove.so ln -sf libostyle.so /usr/lib/libstyle.so |
echo "SYSTEM \"/usr/share/docbook/docbookx.dtd\" \ \"/usr/share/xml/docbook/xml-dtd-4.2/docbookx.dtd\"" >> \ /usr/share/sgml/openjade-1.3.2/catalog |
Download location (HTTP): http://telia.dl.sourceforge.net/sourceforge/docbook/docbook-dsssl-1.78.tar.gz Download location (FTP): Version used: 1.78 Package size: 384 KB Estimated Disk space required: 4 MB |
The docbook-dsssl package contains dsssl stylesheets. These are used by openjade or other tools to transform SGML and XML DocBook files.
Install docbook-dsssl by running the following commands:
mkdir -p /usr/share/sgml/docbook/dsssl-stylesheets-1.78/dtds/decls && mkdir -p /usr/share/sgml/docbook/dsssl-stylesheets-1.78/lib && mkdir -p /usr/share/sgml/docbook/dsssl-stylesheets-1.78/common && mkdir -p /usr/share/sgml/docbook/dsssl-stylesheets-1.78/html && mkdir -p /usr/share/sgml/docbook/dsssl-stylesheets-1.78/print && mkdir -p /usr/share/sgml/docbook/dsssl-stylesheets-1.78/test && mkdir -p /usr/share/sgml/docbook/dsssl-stylesheets-1.78/images && install bin/collateindex.pl /usr/bin && cp catalog VERSION /usr/share/sgml/docbook/dsssl-stylesheets-1.78 && cp dtds/decls/*.dcl \ /usr/share/sgml/docbook/dsssl-stylesheets-1.78/dtds/decls && cp lib/dblib.dsl /usr/share/sgml/docbook/dsssl-stylesheets-1.78/lib && cp common/*.dsl /usr/share/sgml/docbook/dsssl-stylesheets-1.78/common && cp common/*.ent /usr/share/sgml/docbook/dsssl-stylesheets-1.78/common && cp html/*.dsl /usr/share/sgml/docbook/dsssl-stylesheets-1.78/html && cp lib/*.dsl /usr/share/sgml/docbook/dsssl-stylesheets-1.78/lib && cp print/*.dsl /usr/share/sgml/docbook/dsssl-stylesheets-1.78/print && cp images/*.gif /usr/share/sgml/docbook/dsssl-stylesheets-1.78/images && install-catalog --add /etc/sgml/dsssl-docbook-stylesheets.cat \ /usr/share/sgml/docbook/dsssl-stylesheets-1.78/catalog && install-catalog --add /etc/sgml/sgml-docbook.cat \ /etc/sgml/dsssl-docbook-stylesheets.cat |
The following configuration is necessary in order to utilize openjade to convert the BLFS Book from XML to HTML:
ln -sf {your home directory}/BLFS/BOOK/blfs.dsl \ /usr/share/sgml/docbook/dsssl-stylesheets-1.78/html/ |
If you would like to test xml-dtd, dsssl-stylesheets and openjade against the BLFS book, use the following command. The commands are written for a cvs checkout to your home directory with output going to the present working directory, so make any necessary modifications for your setup.
mkdir introduction postlfs general connect basicnet server \ content x kde gnome xsoft multimedia pst preface appendices other && openjade -t sgml \ -d /usr/share/sgml/docbook/dsssl-stylesheets-1.78/html/blfs.dsl \ /usr/share/sgml/docbook/dsssl-stylesheets-1.78/dtds/decls/xml.dcl \ ~/BLFS/BOOK/index.xml |
collateindex.pl is a pearl script that creates a DocBook index from raw index data.
Download location (HTTP): http://www.docbook.org/xml/4.2/docbook-xml-4.2.zip Download location (FTP): Version used: 4.2 Package size: 84 KB Estimated Disk space required: 468 KB |
The xml-dtd-4.2 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.
DocBook depends on: libxml2-2.5.6 and unzip-5.50 |
Install DocBook by running the following commands:
install -d /usr/share/xml/docbook/xml-dtd-4.2 && cp -af docbook.cat *.dtd ent/ *.mod /usr/share/xml/docbook/xml-dtd-4.2 && if [ ! -e /etc/xml/catalog ]; then mkdir -p /etc/xml; xmlcatalog --noout \ --create /etc/xml/catalog; fi && if [ ! -e /etc/xml/docbook ]; then xmlcatalog --noout --create \ /etc/xml/docbook; fi && xmlcatalog --noout --add "public" \ "-//OASIS//ELEMENTS DocBook XML Information Pool V4.2//EN" \ "file:///usr/share/xml/docbook/xml-dtd-4.2/dbpoolx.mod" \ /etc/xml/docbook && xmlcatalog --noout --add "public" \ "-//OASIS//DTD DocBook XML V4.2//EN" \ "http://oasis-open.org/docbook/xml/4.2/docbookx.dtd" \ /etc/xml/docbook && xmlcatalog --noout --add "public" \ "-//OASIS//ENTITIES DocBook XML Character Entities V4.2//EN" \ "file:///usr/share/xml/docbook/xml-dtd-4.2/dbcentx.mod" \ /etc/xml/docbook && xmlcatalog --noout --add "public" \ "-//OASIS//ENTITIES DocBook XML Notations V4.2//EN" \ "file:///usr/share/xml/docbook/xml-dtd-4.2/dbnotnx.mod" \ /etc/xml/docbook && xmlcatalog --noout --add "public" \ "-//OASIS//ENTITIES DocBook XML Additional General Entities V4.2//EN" \ "file:///usr/share/xml/docbook/xml-dtd-4.2/dbgenent.mod" \ /etc/xml/docbook && xmlcatalog --noout --add "public" \ "-//OASIS//ELEMENTS DocBook XML Document Hierarchy V4.2//EN" \ "file:///usr/share/xml/docbook/xml-dtd-4.2/dbhierx.mod" \ /etc/xml/docbook && xmlcatalog --noout --add "public" \ "-//OASIS//DTD XML Exchange Table Model 19990315//EN" \ "file:///usr/share/xml/docbook/xml-dtd-4.2/soextblx.dtd" \ /etc/xml/docbook && xmlcatalog --noout --add "public" \ "-//OASIS//DTD DocBook XML CALS Table Model V4.2//EN" \ "file:///usr/share/xml/docbook/xml-dtd-4.2/calstblx.dtd" \ /etc/xml/docbook && xmlcatalog --noout --add "rewriteSystem" \ "http://www.oasis-open.org/docbook/xml/4.2" \ "file:///usr/share/xml/docbook/xml-dtd-4.2" \ /etc/xml/docbook && xmlcatalog --noout --add "rewriteURI" \ "http://www.oasis-open.org/docbook/xml/4.2" \ "file:///usr/share/xml/docbook/xml-dtd-4.2" \ /etc/xml/docbook && 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 |
/etc/xml/catalog, /etc/xml/docbook
The above installation script creates the files and updates the catalog. We need to make additional entries in order to process the BLFS book:
xmlcatalog --noout --add "delegateSystem" \ "/usr/share/docbook/" \ "file:///etc/xml/docbook" /etc/xml/catalog && xmlcatalog --noout --add "delegateURI" \ "/usr/share/docbook/" \ "file:///etc/xml/docbook" /etc/xml/catalog && xmlcatalog --noout --add "rewriteSystem" \ "/usr/share/docbook" \ "file:///usr/share/xml/docbook/xml-dtd-4.2" \ /etc/xml/docbook && xmlcatalog --noout --add "rewriteURI" \ "/usr/share/docbook" \ "file:///usr/share/xml/docbook/xml-dtd-4.2" \ /etc/xml/docbook |
In order to install scrollkeeper, make the following entry:
xmlcatalog --noout --add "public" \ "-//OASIS//DTD DocBook XML V4.1.2//EN" \ "http://oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" \ /etc/xml/docbook && xmlcatalog --noout --add "delegateSystem" \ "http://oasis-open.org/docbook/xml/4.1.2/" \ "file:///etc/xml/docbook" /etc/xml/catalog && xmlcatalog --noout --add "delegateURI" \ "http://oasis-open.org/docbook/xml/4.1.2/" \ "file:///etc/xml/docbook" /etc/xml/catalog && xmlcatalog --noout --add "rewriteSystem" \ "http://oasis-open.org/docbook" \ "file:///usr/share/xml/docbook/xml-dtd-4.2" \ /etc/xml/docbook && xmlcatalog --noout --add "rewriteURI" \ "http://oasis-open.org/docbook" \ "file:///usr/share/xml/docbook/xml-dtd-4.2" \ /etc/xml/docbook |
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 contain components of the document type definition that are sourced into the DTD files.
Download location (HTTP): http://telia.dl.sourceforge.net/sourceforge/docbook/docbook-xsl-1.60.1.tar.gz Download location (FTP): Version used: 1.60.1 Package size: 1.2 MB Estimated Disk space required: 11.1 MB |
The docbook-xsl package contains xsl stylesheets. These are useful for performing transformations on XML DocBook files.
docbook-xsl depends on: libxslt-1.0.29 |
Install docbook-xsl by running the following commands:
install -d /usr/share/xml/docbook/xsl-stylesheets-1.60.1 && cp -af VERSION common extensions fo html htmlhelp images javahelp lib \ manpages params profiling template tools xhtml \ /usr/share/xml/docbook/xsl-stylesheets-1.60.1 && install -d /usr/share/doc/xml && cp -af doc/* /usr/share/doc/xml && if [ ! -f /etc/xml/catalog ]; then mkdir -p /etc/xml; xmlcatalog --noout \ --create /etc/xml/catalog; fi && if [ ! -e /etc/xml/docbook ]; then xmlcatalog --noout --create \ /etc/xml/docbook; fi && xmlcatalog --noout --add "rewriteSystem" \ "http://docbook.sourceforge.net/release/xsl/1.45" \ "/usr/share/xml/docbook/xsl-stylesheets-1.60.1" /etc/xml/catalog && xmlcatalog --noout --add "rewriteURI" \ "http://docbook.sourceforge.net/release/xsl/1.45" \ "/usr/share/xml/docbook/xsl-stylesheets-1.60.1" /etc/xml/catalog && xmlcatalog --noout --add "rewriteSystem" \ "http://docbook.sourceforge.net/release/xsl/current" \ "/usr/share/xml/docbook/xsl-stylesheets-1.60.1" /etc/xml/catalog && xmlcatalog --noout --add "rewriteURI" \ "http://docbook.sourceforge.net/release/xsl/current" \ "/usr/share/xml/docbook/xsl-stylesheets-1.60.1" /etc/xml/catalog && xmlcatalog --noout --add "delegateSystem" \ "http://docbook.sourceforge.net/release/xsl/" \ "file:///etc/xml/docbook" /etc/xml/catalog && xmlcatalog --noout --add "delegateURI" \ "http://docbook.sourceforge.net/release/xsl/" \ "file:///etc/xml/docbook" /etc/xml/catalog |
/etc/xml/catalog
The above installation script creates the files and updates the catalog.
If you would like to test xml-dtd and docbook-xsl against the BLFS book, use the following command. The command is written for a cvs checkout to your home directory with output going to the present working directory, so make any necessary modifications for your setup.
xsltproc --nonet -o index.html \ http://docbook.sourceforge.net/release/xsl/current/html/docbook.xsl \ ~/BLFS/BOOK/index.xml |
Download location (HTTP): http://ftp.gnu.org/gnu/a2ps/a2ps-4.13b.tar.gz Download location (FTP): ftp://ftp.gnu.org/gnu/a2ps/a2ps-4.13b.tar.gz Version used: 4.13b Package size: 1.8 MB Estimated Disk space required: 19 MB Estimated build time: 0.60 SBU |
Additional Downloads: International fonts |
a2ps is a utility used mostly in the background to convert almost every input format into postscript output, hence the name "a2ps" which means "all to Postscript".
a2ps is an almost typical autoconf based package, but tries to install to unusual directories.
Install a2ps by running the following commands:
cd contrib && cp Makefile.in Makefile.in.orig && sed -e "s:emacs::" Makefile.in.orig > Makefile.in && cd .. && ./configure --prefix=/usr \ --sysconfdir=/etc/a2ps --localstatedir=/var \ --with-medium=letter && make && make install |
cd contrib && cp Makefile.in Makefile.in.orig && sed -e "s:emacs::" Makefile.in.orig > Makefile.in && cd .. && |
--sysconfdir=/etc/a2ps : Configuration data goes to /etc/a2ps instead of /usr/etc.
--with-medium=letter : This switch changes the default paper format of A4 to letter. Locations that utilize A4 would eliminate this switch.
/etc/a2ps/a2ps.cfg, /etc/a2ps/a2ps-site.cfg
Information about configuring a2ps can be found in the comments contained in the above files, and also by running info a2ps.
a2ps is a filter program. The package consists of the program a2ps and a lot of filter data to convert nearly everything to Postscript.
Download location (HTTP): http://ftp.gnu.org/gnu/enscript/enscript-1.6.1.tar.gz Download location (FTP): ftp://ftp.gnu.org/gnu/enscript/enscript-1.6.1.tar.gz Version used: 1.6.1 Package size: 631 kb Estimated Disk space required: 6.4 MB Estimated build time: 0.23 SBU |
enscript converts ASCII files to Postscript.
enscript is an almost typical autoconf based package, but tries to install to unusual directories.
Install enscript by running the following commands:
./configure --prefix=/usr \ --sysconfdir=/etc/enscript --localstatedir=/var && make && make install |
Note: Add "--with-media=letter" to the configure options if that medium format is common to you.
--sysconfdir=/etc/enscript : Configuration data goes to /etc/enscript instead of /usr/etc.
--localstatedir=/var : directory for runtime data is set to /var instead of /usr/var.
enscript is a filter program. The package consists of the program enscript and some files of filter data to convert ASCII files to Postscript.
Download location (HTTP): http://mirror.cs.wisc.edu/pub/mirrors/ghost/ghostgum/old/gsview-4.3.tar.gz Download location (FTP): ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/ghostgum/old/gsview-4.3.tar.gz Version used: 4.3 Package size: 711 kb Estimated Disk space required: 3.1 MB |
gsview is a viewer for Postscript and PDF using X.
gsview depends on: xfree86-4.3.0, GTK+-1.2.10 and GhostScript-8.00 (with libgs.so installed) |
gsview is an almost typical autoconf based package, but tries to install to unusual directories.
gsview uses netscape to browse through the online help. The usual LFS user doesn't want to install netscape, but uses mozilla or another browser. So simply edit srcunx/gvxreg.c using the following sed script:
mv srcunx/gvxreg.c srcunx/gvxreg.old && cat srcunx/gvxreg.old | sed s/netscape/<browser>/ > srcunx/gvxreg.c |
Note: Replace <browser> with the executable name of the browser you intend to use.
Install gsview by running the following commands:
sed 's|GSVIEW_ROOT=/usr/local|GSVIEW_ROOT=/usr|' \ srcunx/unx.mak > Makefile && make && make install |
sed 's|GSVIEW_ROOT=/usr/local|GSVIEW_ROOT=/usr|' |
Download location (HTTP): http://knackered.org/angus/psutils/ Download location (FTP): ftp://ftp.knackered.org/pub/psutils/psutils-p17.tar.gz Version used: p17 Package size: 62 kb Estimated Disk space required: 688 kb |
psutils is a set of utilities to manipulate Postscript files.
Install psutils by running the following commands:
cat Makefile.unix | sed -e 's/\/usr\/local/\/usr/g' > Makefile && make && make install |
cat ... | sed ... : creates a Makefile that uses the directories common to the BLFS installation. If you prefer other directories, edit the Makefile manually before executing the other commands.
psutils is a set of filter programs for Postscript files:
psbook rearranges pages into signatures
psselect selects pages and page ranges
pstops Performs general page rearrangements and selection
psnup Put multiple pages per physical sheet of paper
psresize Alter document paper size
epsffit Fits and EPSF file to a given bounding box
Additionally, psutils provide a set of scripts:
getafm, showchar, fixdlsrps, fixfmps, fixmacps, fixpsditps, fixpspps, fixscribeps, fixtpps, fixwfwps, fixwpps, fixwwps, extractres, includeres, psmerge.
Please refer to the man pages for further information.
Download location (HTTP): Download location (FTP): ftp://ftp.foolabs.com/pub/xpdf/xpdf-2.02.tar.gz Version used: 2.02 Package size: 472 KB Estimated Disk space required: 8.2 MB Estimated build time: 1.05 SBU |
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.
xpdf depends on: xfree86-4.3.0 and lesstif-0.93.36 xpdf will utilize: Installed fonts: GhostScript-8.00, freetype-2.1.3, t1lib and truetype |
Install xpdf by running the following commands:
./configure --prefix=/usr --sysconfdir=/etc --mandir=/usr/share/man \ --with-freetype2-includes=/usr/include/freetype2 \ --with-freetype2-library=/usr/lib \ --with-appdef-dir=/usr/X11R6/lib/X11/app-defaults/ && make && make install |
--enable-a4-paper : This switch must be added to set DIN A4 as the standard paper format.
xpdf displays files in PDF format.
pdftops converts PDF files to Postscript format.
pdftotext parses ASCII text from PDF files.
pdftopbm converts PDF files to PBM (Portable BitMap) format.
In the etc directory you will find a sample xpdfrc that can be either copied to ~/.xpdfrc or taken as example to write your own configuration file.
# 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/X11R6/lib/X11/fonts/truetype psFile "|lpr" psPaperSize a4 textEOL unix t1libControl low freetypeControl low urlCommand "links -g %s" |
Required: Download location (FTP): ftp://sunsite.informatik.rwth-aachen.de/pub/comp/tex/teTeX/2.0/distrib/tetex-src-2.0.2.tar.gz Download location (FTP): ftp://sunsite.informatik.rwth-aachen.de/pub/comp/tex/teTeX/2.0/distrib/tetex-texmf-2.0.2.tar.gz Optional: Download location (FTP): ftp://sunsite.informatik.rwth-aachen.de/pub/comp/tex/teTeX/2.0/distrib/tetex-texmfsrc-2.0.2.tar.gz Version used: 2.0.2 Package size: 52 MB Estimated Disk space required: 175 MB |
TeX is a typesetting package, able to create documents in a variety of formats. The optional texmfsrc tarball contains source code for packages that are contained in the texmf tarball, including the docstrip sources.
TeX is installed slightly differently than a typical GNU package, these instructions will assume /usr/src to be the current working directory, containing the three TeX tarballs.
Install TeX by running the following commands:
mkdir -p /usr/share/texmf && tar zxvf tetex-src-2.0.2.tar.gz && cd tetex-src-2.0.2 && gzip -dc ../tetex-texmf-2.0.2.tar.gz \ | (umask 0; cd /usr/share/texmf; tar xvf -) |
If the optional texmf source code tarball was downloaded, untar it now:
gzip -dc ../tetex-texmfsrc-2.0.2.tar.gz \ | (umask 0; cd /usr/share/texmf; tar xvf -) |
./configure --with-x=no --prefix=/usr \ --without-texinfo --with-system-ncurses --with-system-zlib \ --exec-prefix=/usr --bindir=/usr/bin && make world && texconfig dvips paper letter && texconfig font rw |
Note: LFS Systems prior to version 4.0 did not install zlib by default. Remove the --with-system-zlib option from the above commands if you do not have zlib installed.
gzip -dc ../teTeX-texmf-2.0.2.tar.gz \ | (umask 0; cd /usr/share/texmf; tar xvf -) |
--with-x=no : Avoid any X-Windows dependencies. TeX can be compiled with X-Windows support, notably for xdvi. If this is desired, remove this configure option.
--exec-prefix=/usr --bindir=/usr/bin : Insure that TeX binaries will be installed in /usr/bin.
--without-texinfo : A default LFS installation already has the texinfo package installed, we will avoid overwriting it with the included texinfo package.
--with-system-ncurses : Specify using the already installed ncurses library.
--with-system-zlib : LFS Systems starting with version 4.0 have zlib installed as part of the base operating system, we can avoid building it here.
texconfig dvips paper letter : Set the default paper size for TeX.
texconfig font rw : Specify writable fonts.
The TeX package contains 125 separate binaries. Please refer to file:///usr/share/texmf/doc/index.html for details, as well as a tour of the expansive TeX documentation.
This section lists all of the symlinks used by the lfs-bootscripts package (correct as of version 1.9) and all of the scripts in the BLFS book. This is for two reasons: first, so that you can see at a glance which number we have used for each package, and second so that we can see which number we have used for each package! Without this, it would make our lives more difficult (as we'd probably end up with conflicts).
It should go without saying that this is not the only (or some would argue even optimal) setup for the symlinks. In the LFS tradition, you should find what suits you and use that; our recommendations are only a template.
Table A-1. rc0.d symlinks
Number | Title | Link | Explanation |
K00 | cups | ../init.d/cups | Shut down Common Unix printing system: cups-1.1.18 |
K00 | lprng | ../init.d/lprng | Shut down LPR print spooler: LPRng-3.8.20 |
K05 | gdm | ../init.d/gdm | Shut down Gnome display manager Daemon: gdm-2.4.1.3 |
K08 | fcron | ../init.d/fcron | Shut down Cron Daemon: fcron-2.9.3 |
K10 | gpm | ../init.d/gpm | Shut down General Purpose Mouse Daemon: gpm-1.20.1 |
K25 | postfix | ../init.d/postfix | Shut down Postfix MTA: postfix-2.0.7 |
K26 | mysql | ../init.d/mysql | Shut down MySQL Daemon: MySQL-3.23.55 |
K26 | postgres | ../init.d/postgres | Shut down PostgreSQL Daemon: Postgres-7.3.2 |
K30 | sshd | ../init.d/sshd | Shut down Secure Shell Daemon: openssh-3.6.1p1 |
K35 | alsa | ../init.d/alsa | Save volume settings: alsa-0.9.2 |
K40 | sysklogd | ../init.d/sysklogd | Stop system and kernel logging: Part of LFS base. |
K45 | random | ../init.d/random | Save random seed: random |
K48 | samba | ../init.d/samba | Stop network file system: samba-2.2.8a |
K48 | NFS | ../init.d/nfs | Stop network file system: |
K49 | portmap | ../init.d/portmap | Stop Forwarding RPC requests: portmap-5 |
K49 | xinetd | ../init.d/xinetd | Stop internet services daemon: xinetd-2.3.10 |
K49 | bind | ../init.d/bind | Stop named services daemon (DNS): bind-9.2.2 |
K50 | sendsignals | ../init.d/sendsignals | Kill processes: Part of LFS base. |
K59 | firewall | ../init.d/firewall | Unset firewall settings: Firewalling |
K60 | mountfs | ../init.d/mountfs | Unmount all filesystems: Part of LFS base. |
K70 | swap | ../init.d/swap | Turn off swap: Part of LFS base. |
K80 | network | ../init.d/network | Shut down networking: Part of LFS base. |
K90 | localnet | ../init.d/localnet | Remove loopback interface: Part of LFS base. |
K99 | halt | ../init.d/halt | Shut down system: Part of LFS base. |
Table A-2. rc1.d symlinks
Number | Title | Link | Explanation |
K00 | lprng | ../init.d/lprng | Shut down LPR print spooler: LPRng-3.8.20 |
K05 | gdm | ../init.d/gdm | Shut down Gnome display manager Daemon: gdm-2.4.1.3 |
K10 | gpm | ../init.d/gpm | Shut down General Purpose Mouse Daemon: gpm-1.20.1 |
K25 | postfix | ../init.d/postfix | Shut down Postfix MTA: postfix-2.0.7 |
K26 | mysql | ../init.d/mysql | Shut down MySQL Daemon: MySQL-3.23.55 |
K26 | postgres | ../init.d/postgres | Shut down PostgreSQL Daemon: Postgres-7.3.2 |
K30 | sshd | ../init.d/sshd | Shut down Secure Shell Daemon: openssh-3.6.1p1 |
K35 | alsa | ../init.d/alsa | Save volume settings: alsa-0.9.2 |
K48 | samba | ../init.d/samba | Stop network file system: samba-2.2.8a |
K48 | NFS | ../init.d/nfs | Stop network file system: |
K49 | portmap | ../init.d/portmap | Stop Forwarding RPC requests: portmap-5 |
K49 | xinetd | ../init.d/xinetd | Stop internet services daemon: xinetd-2.3.10 |
K49 | bind | ../init.d/bind | Stop named services daemon (DNS): bind-9.2.2 |
K59 | firewall | ../init.d/firewall | Unset firewall settings: Firewalling |
K80 | sysklogd | ../init.d/sysklogd | Shut down networking: Part of LFS base. |
K90 | network | ../init.d/network | Shut down networking: Part of LFS base. |
Table A-3. rc2.d symlinks
Number | Title | Link | Explanation |
K05 | gdm | ../init.d/gdm | Shut down Gnome display manager Daemon: gdm-2.4.1.3 |
K10 | gpm | ../init.d/gpm | Shut down General Purpose Mouse Daemon: gpm-1.20.1 |
K25 | postfix | ../init.d/postfix | Shut down Postfix MTA: postfix-2.0.7 |
K26 | mysql | ../init.d/mysql | Shut down MySQL Daemon: MySQL-3.23.55 |
K26 | postgres | ../init.d/postgres | Shut down PostgreSQL Daemon: Postgres-7.3.2 |
K30 | sshd | ../init.d/sshd | Shut down Secure Shell Daemon: openssh-3.6.1p1 |
K48 | samba | ../init.d/samba | Stop network file system: samba-2.2.8a |
K48 | NFS | ../init.d/nfs | Stop network file system: |
K49 | portmap | ../init.d/portmap | Stop Forwarding RPC requests: portmap-5 |
K49 | xinetd | ../init.d/xinetd | Stop internet services daemon: xinetd-2.3.10 |
K49 | bind | ../init.d/bind | Stop named services daemon (DNS): bind-9.2.2 |
K59 | firewall | ../init.d/firewall | Unset firewall settings: Firewalling |
K90 | network | ../init.d/network | Shut down networking: Part of LFS base. |
S10 | sysklogd | ../init.d/sysklogd | Start system and kernel logging: Part of LFS base. |
S25 | random | ../init.d/random | Restore random seed: random |
S40 | alsa | ../init.d/alsa | Start up sound system: alsa-0.9.2 |
S40 | fcron | ../init.d/fcron | Start Cron Daemon: fcron-2.9.3 |
S99 | cups | ../init.d/cups | Start the Common Unix printing system: cups-1.1.18 |
S99 | lprng | ../init.d/lprng | Start the LPR print spooler: LPRng-3.8.20 |
Table A-4. rc3.d symlinks
Number | Title | Link | Explanation |
K05 | gdm | ../init.d/gdm | Shut down Gnome display manager Daemon: gdm-2.4.1.3 |
S10 | sysklogd | ../init.d/sysklogd | Start system and kernel logging: Part of LFS base. |
S20 | network | ../init.d/network | Start networking: Part of LFS base. |
S21 | firewall | ../init.d/firewall | Load firewall settings: Firewalling |
S22 | bind | ../init.d/bind | Start named services daemon (DNS): bind-9.2.2 |
S22 | portmap | ../init.d/portmap | Forwards RPC requests: portmap-5 |
S23 | xinetd | ../init.d/xinetd | Load internet services daemon: xinetd-2.3.10 |
S24 | NFS | ../init.d/nfs | Start network file system: |
S24 | samba | ../init.d/samba | Start network file system: samba-2.2.8a |
S25 | random | ../init.d/random | Restore random seed: random |
S30 | sshd | ../init.d/sshd | Start Secure Shell Daemon: openssh-3.6.1p1 |
S34 | mysql | ../init.d/mysql | Start MySQL Daemon: MySQL-3.23.55 |
S34 | postgres | ../init.d/postgres | Start PostgreSQL Daemon: Postgres-7.3.2 |
S35 | postfix | ../init.d/postfix | Start Postfix MTA: postfix-2.0.7 |
S40 | alsa | ../init.d/alsa | Start up sound system: alsa-0.9.2 |
S40 | fcron | ../init.d/fcron | Start Cron Daemon: fcron-2.9.3 |
S70 | gpm | ../init.d/gpm | Start the General Purpose Mouse Daemon: gpm-1.20.1 |
S99 | cups | ../init.d/cups | Start the Common Unix printing system: cups-1.1.18 |
S99 | lprng | ../init.d/lprng | Start the LPR print spooler: LPRng-3.8.20 |
Table A-5. rc4.d symlinks
Number | Title | Link | Explanation |
K05 | gdm | ../init.d/gdm | Shut down Gnome display manager Daemon: gdm-2.4.1.3 |
S10 | sysklogd | ../init.d/sysklogd | Start system and kernel logging: Part of LFS base. |
S20 | network | ../init.d/network | Start networking: Part of LFS base. |
S21 | firewall | ../init.d/firewall | Load firewall settings: Firewalling |
S22 | bind | ../init.d/bind | Start named services daemon (DNS): bind-9.2.2 |
S22 | portmap | ../init.d/portmap | Forwards RPC request: portmap-5 |
S23 | xinetd | ../init.d/xinetd | Load internet services daemon: xinetd-2.3.10 |
S24 | NFS | ../init.d/nfs | Start network file system: |
S24 | samba | ../init.d/samba | Start network file system: samba-2.2.8a |
S25 | random | ../init.d/random | Restore random seed: random |
S30 | sshd | ../init.d/sshd | Start Secure Shell Daemon: openssh-3.6.1p1 |
S34 | mysql | ../init.d/mysql | Start MySQL Daemon: MySQL-3.23.55 |
S34 | postgres | ../init.d/postgres | Start PostgreSQL Daemon: Postgres-7.3.2 |
S35 | postfix | ../init.d/postfix | Start Postfix MTA: postfix-2.0.7 |
S40 | alsa | ../init.d/alsa | Start up sound system: alsa-0.9.2 |
S40 | fcron | ../init.d/fcron | Start Cron Daemon: fcron-2.9.3 |
S70 | gpm | ../init.d/gpm | Start the General Purpose Mouse Daemon: gpm-1.20.1 |
S99 | lprng | ../init.d/lprng | Start the LPR print spooler: LPRng-3.8.20 |
Table A-6. rc5.d symlinks
Number | Title | Link | Explanation |
S10 | sysklogd | ../init.d/sysklogd | Start system and kernel logging: Part of LFS base. |
S20 | network | ../init.d/network | Start networking: Part of LFS base. |
S21 | firewall | ../init.d/firewall | Load firewall settings: Firewalling |
S22 | bind | ../init.d/bind | Start named services daemon (DNS): bind-9.2.2 |
S22 | portmap | ../init.d/portmap | Forwards RPC requests: portmap-5 |
S23 | xinetd | ../init.d/xinetd | Load internet services daemon: xinetd-2.3.10 |
S24 | NFS | ../init.d/nfs | Start network file system: |
S24 | samba | ../init.d/samba | Start network file system: samba-2.2.8a |
S25 | random | ../init.d/random | Restore random seed: random |
S30 | sshd | ../init.d/sshd | Start Secure Shell Daemon: openssh-3.6.1p1 |
S34 | mysql | ../init.d/mysql | Start MySQL Daemon: MySQL-3.23.55 |
S34 | postgres | ../init.d/postgres | Start PostgreSQL Daemon: Postgres-7.3.2 |
S35 | postfix | ../init.d/postfix | Start Postfix MTA: postfix-2.0.7 |
S40 | alsa | ../init.d/alsa | Start up sound system: alsa-0.9.2 |
S40 | fcron | ../init.d/fcron | Start Cron Daemon: fcron-2.9.3 |
S70 | gpm | ../init.d/gpm | Start the General Purpose Mouse Daemon: gpm-1.20.1 |
S95 | gdm | ../init.d/gdm | Start the Gnome display manager Daemon: gdm-2.4.1.3 |
S99 | cups | ../init.d/cups | Start the Common Unix printing system: cups-1.1.18 |
S99 | lprng | ../init.d/lprng | Start the LPR print spooler: LPRng-3.8.20 |
Table A-7. rc6.d symlinks
Number | Title | Link | Explanation |
K00 | lprng | ../init.d/lprng | Shut down LPR print spooler: LPRng-3.8.20 |
K05 | gdm | ../init.d/gdm | Shut down Gnome display manager Daemon: gdm-2.4.1.3 |
K08 | fcron | ../init.d/fcron | Shut down Cron Daemon: fcron-2.9.3 |
K10 | gpm | ../init.d/gpm | Shut down General Purpose Mouse Daemon: gpm-1.20.1 |
K25 | postfix | ../init.d/postfix | Shut down Postfix MTA: postfix-2.0.7 |
K26 | mysql | ../init.d/mysql | Shut down MySQL Daemon: MySQL-3.23.55 |
K26 | postgres | ../init.d/postgres | Shut down PostgreSQL Daemon: Postgres-7.3.2 |
K30 | sshd | ../init.d/sshd | Shut down Secure Shell Daemon: openssh-3.6.1p1 |
K35 | alsa | ../init.d/alsa | Save volume settings: alsa-0.9.2 |
K40 | sysklogd | ../init.d/sysklogd | Stop system and kernel logging: Part of LFS base. |
K45 | random | ../init.d/random | Save random seed: random |
K48 | samba | ../init.d/samba | Stop network file system: samba-2.2.8a |
K48 | NFS | ../init.d/samba | Stop network file system: |
K49 | portmap | ../init.d/portmap | Stop Forwarding RPC requests: portmap-5 |
K49 | xinetd | ../init.d/xinetd | Stop internet services daemon: xinetd-2.3.10 |
K49 | bind | ../init.d/bind | Stop named services daemon (DNS): bind-9.2.2 |
K50 | sendsignals | ../init.d/sendsignals | Kill processes: Part of LFS base. |
K59 | firewall | ../init.d/firewall | Unset firewall settings: Firewalling |
K60 | mountfs | ../init.d/mountfs | Unmount all filesystems: Part of LFS base. |
K70 | swap | ../init.d/swap | Turn off swap: Part of LFS base. |
K80 | network | ../init.d/network | Shut down networking: Part of LFS base. |
K90 | localnet | ../init.d/localnet | Remove loopback interface: Part of LFS base. |
K99 | reboot | ../init.d/halt | Reboot system: Part of LFS base. |
When you want to install a package to a location other than /, or /usr, you are installing outside the default envionment 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.
Add $PREFIX/man to /etc/man.conf or expand MANPATH.
Add $PREFIX/info to INFOPATH.
Add $PREFIX/lib/pkgconfig to PKG_CONFIG_PATH.
Add $PREFIX/include to CPPFLAGS when compiling packages that depend on the package you installed.
[1] | 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 |
[2] | If you needed assistance howto configure, compile and install a new kernel, refer back to chapter VIII of the LinuxFromScratch book, Installing a kernel and eventually Making the LFS system bootable ; note, that you'll need to reboot to actually run your new kernel. |
[3] | Think of a name server giving answers that make your bind crash, or, even worse, that implement a worm via a buffer-overflow. |