Copyright © 2001-2017 The BLFS Development Team
Copyright © 2001-2017, The BLFS Development Team
All rights reserved.
This book is licensed under a Creative Commons License.
Computer instructions may be extracted from the book under the MIT License.
Linux® is a registered trademark of Linus Torvalds.
2017-09-01
Revision History | ||
---|---|---|
Revision 8.1 | 2017-09-01 | Sixteenth Release |
Revision 8.0 | 2017-02-25 | Fifteenth release |
Revision 7.10 | 2016-09-07 | Fourteenth release |
Revision 7.9 | 2016-03-08 | Thirteenth release |
Revision 7.8 | 2015-10-01 | Twelfth release |
Revision 7.7 | 2015-03-06 | Eleventh release |
Revision 7.6 | 2014-09-23 | Tenth release |
Revision 7.5 | 2014-03-05 | Ninth release |
Revision 7.4 | 2013-09-14 | Eighth release |
Revision 6.3 | 2008-08-24 | Seventh release |
Revision 6.2.0 | 2007-02-14 | Sixth release |
Revision 6.1 | 2005-08-14 | Fifth release |
Revision 6.0 | 2005-04-02 | Fourth release |
Revision 5.1 | 2004-06-05 | Third release |
Revision 5.0 | 2003-11-06 | Second release |
Revision 1.0 | 2003-04-25 | First release |
Abstract
This book follows on from the Linux From Scratch book. It introduces and guides the reader through additions to the system including networking, graphical interfaces, sound support, and printer and scanner support.
Having helped out with Linux From Scratch for a short time, I noticed that we were getting many queries as to how to do things beyond the base LFS system. At the time, the only assistance specifically offered relating to LFS were the LFS hints (http://www.linuxfromscratch.org/hints). Most of the LFS hints are extremely good and well written but I (and others) could still see a need for more comprehensive help to go Beyond LFS - hence BLFS.
BLFS aims to be more than the LFS-hints converted to XML although much of our work is based around the hints and indeed some authors write both hints and the relevant BLFS sections. We hope that we can provide you with enough information to not only manage to build your system up to what you want, whether it be a web server or a multimedia desktop system, but also that you will learn a lot about system configuration as you go.
Thanks as ever go to everyone in the LFS/BLFS community; especially those who have contributed instructions, written text, answered questions and generally shouted when things were wrong!
Finally, we encourage you to become involved in the community; ask questions on the mailing list or news gateway and join in the fun on #lfs at irc.linuxfromscratch.org. You can find more details about all of these in the Introduction section of the book.
Enjoy using BLFS.
Mark Hymers
markh <at> linuxfromscratch.org
BLFS Editor (July 2001–March 2003)
I still remember how I found the BLFS project and started using the instructions that were completed at the time. I could not believe how wonderful it was to get an application up and running very quickly, with explanations as to why things were done a certain way. Unfortunately, for me, it wasn't long before I was opening applications that had nothing more than "To be done" on the page. I did what most would do, I waited for someone else to do it. It wasn't too long before I am looking through Bugzilla for something easy to do. As with any learning experience, the definition of what was easy kept changing.
We still encourage you to become involved as BLFS is never really finished. Contributing or just using, we hope you enjoy your BLFS experience.
Larry Lawrence
larry <at> linuxfromscratch.org
BLFS Editor (March 2003–June 2004)
The BLFS project is a natural progression of LFS. Together, these projects provide a unique resource for the Open Source Community. They take the mystery out of the process of building a complete, functional software system from the source code contributed by many talented individuals throughout the world. They truly allow users to implement the slogan "Your distro, your rules."
Our goal is to continue to provide the best resource available that shows you how to integrate many significant Open Source applications. Since these applications are constantly updated and new applications are developed, this book will never be complete. Additionally, there is always room for improvement in explaining the nuances of how to install the different packages. To make these improvements, we need your feedback. I encourage you to participate on the different mailing lists, news groups, and IRC channels to help meet these goals.
Bruce Dubbs
bdubbs <at> linuxfromscratch.org
BLFS Editor (June 2004–December 2006)
My introduction to the [B]LFS project was actually by accident. I was trying to build a GNOME environment using some how-tos and other information I found on the web. A couple of times I ran into some build issues and Googling pulled up some old BLFS mailing list messages. Out for curiosity, I visited the Linux From Scratch web site and shortly thereafter was hooked. I've not used any other Linux distribution for personal use since.
I can't promise anyone will feel the sense of satisfaction I felt after building my first few systems using [B]LFS instructions, but I sincerely hope that your BLFS experience is as rewarding for you as it has been for me.
The BLFS project has grown significantly the last couple of years. There are more package instructions and related dependencies than ever before. The project requires your input for continued success. If you discover that you enjoy building BLFS, please consider helping out in any way you can. BLFS requires hundreds of hours of maintenance to keep it even semi-current. If you feel confident enough in your editing skills, please consider joining the BLFS team. Simply contributing to the mailing list discussions with sound advice and/or providing patches to the book's XML will probably result in you receiving an invitation to join the team.
Randy McMurchy
randy <at> linuxfromscratch.org
BLFS Editor (December 2006–January 2011)
This version of the book is intended to be used when building on top of a system built using the LFS book. Every effort has been made to ensure accuracy and reliability of the instructions. Many people find that using the instructions in this book after building the current stable or development version of LFS provides a stable and very modern Linux system.
Enjoy!
Randy McMurchy
August 24th, 2008
Last updated on 2016-04-17 13:16:17 -0700
This book is mainly aimed at those who have built a system based on the LFS book. It will also be useful for those who are using other distributions, but for one reason or another want to manually build software and are in need of some assistance. Note that the material contained in this book, in particular the dependency listings, is based upon the assumption that you are using a base LFS system with every package listed in the LFS book already installed and configured. BLFS can be used to create a range of diverse systems and so the target audience is probably nearly as wide as that of the LFS book. If you found LFS useful, you should also like this!
Last updated on 2015-09-20 15:38:20 -0700
This book is divided into the following parts.
This part contains information which is essential to the rest of the book.
Here we introduce basic configuration and security issues. We also discuss a range of editors, file systems, and shells which aren't covered in the main LFS book.
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 are also covered here.
Here we deal with setting up mail and other servers (such as SSH, Apache, etc.).
This part explains how to set up a basic X Window System 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.
Xfce is a lightweight alternative to GNOME and KDE.
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 document handling with applications like Ghostscript, CUPS and DocBook to installing texlive.
The Appendices cover information which doesn't belong in the main book; they are mainly there as a reference.
Last updated on 2015-09-20 15:38:20 -0700
The Beyond Linux From Scratch book is designed to carry on from where the LFS book leaves off. But unlike the LFS book, it isn't designed to be followed straight through. Reading the Which sections of the book? part of this chapter should help guide you through the book.
Please read most of this part of the book carefully as it explains quite a few of the conventions used throughout the book.
Unlike the Linux From Scratch book, BLFS isn't designed to be followed in a linear manner. This is because LFS provides instructions on how to create a base system which is capable of turning into anything from a web server to a multimedia desktop system. BLFS attempts to guide you in the process of going from the base system to your intended destination. Choice is very much involved.
Everyone who reads the book will want to read certain sections. The Introduction part, which you are currently reading, contains generic information. Especially take note of the information in Chapter 2, Important Information, as this contains comments about how to unpack software, issues related to using different locales and various other aspects which apply throughout the book.
The part on Post LFS Configuration and Extra Software is where most people will want to turn next. This deals with not just configuration but also Security (Chapter 4, Security), File Systems (Chapter 5, File Systems and Disk Management), Editors (Chapter 6, Editors) and Shells (Chapter 7, Shells). Indeed, you may wish to reference certain parts of this chapter (especially the sections on Editors and File Systems) while building your LFS system.
Following these basic items, most people will want to at least browse through the General Libraries and Utilities part of the book. This part contains information on many items which are prerequisites for other sections of the book as well as some items (such as Chapter 13, Programming) which are useful in their own right. Note that you don't have to install all of these libraries and packages found in this part to start with as each BLFS installation procedure tells you which packages it depends upon so you can choose the program you want to install and see what it needs.
Likewise, most people will probably want to look at the Networking part. It deals with connecting to the Internet or your LAN (Chapter 14, Connecting to a Network) using a variety of methods such as DHCP and PPP, and with items such as Networking Libraries (Chapter 17, Networking Libraries) and various basic networking programs and utilities.
Once you have dealt with these basics, you may wish to configure more advanced network services. These are dealt with in the Servers part of the book. Those wanting to build servers should find a good starting point there. Note that this section also contains information on various database packages.
The next parts of the book principally deal with desktop systems. This portion of the book starts with a part talking about X plus Window and Display Managers. This part also deals with some generic X-based libraries (Chapter 25, X Libraries). After this, KDE and GNOME are given their own parts which are followed by one on X Software.
The book then moves on to deal with Multimedia packages. Note that many people may want to use the ALSA-1.1.4 instructions from this chapter quite near the start of their BLFS journey; they are placed here simply because it is the most logical place for them.
The final part of the main BLFS book deals with Printing, Scanning and Typesetting. This is useful for most people with desktop systems and even those who are creating mainly server systems will find it useful.
We hope you enjoy using BLFS and find it useful.
Last updated on 2012-12-19 11:57:20 -0800
To make things easy to follow, there are a number of conventions used throughout the book. Following are some examples:
./configure --prefix=/usr
This form of text is designed to be typed exactly as seen unless otherwise noted in the surrounding text. It is also used to identify references to specific commands.
install-info: unknown option
`--dir-file=/mnt/lfs/usr/info/dir'
This form of text (fixed width text) is showing screen output, probably a result from issuing a command. It is also used to show filenames such as
/boot/grub/grub.conf
Emphasis
This form of text is used for several purposes in the book but mainly to emphasize important points or to give examples as to what to type.
http://www.linuxfromscratch.org/
This form of text is used for hypertext links external to the book such as HowTos, download locations, websites, etc.
This form of text is used for links internal to the book such as another section describing a different package.
cat > $LFS/etc/group << "EOF"
root:x:0:
bin:x:1:
......
EOF
This type of section is used mainly when creating configuration files. The first command (in bold) tells the system to create the file
$LFS/etc/group
from whatever is typed on the following lines until the sequence EOF is encountered. Therefore, this whole section is generally typed as seen.
<REPLACED
TEXT>
This form of text is used to encapsulate text that should be modified and is not to be typed as seen, or copy and pasted. Note that the square brackets are not part of the text, but should be substituted for as well.
root
This form of text is used to show a specific system user or group reference in the instructions.
When packages are created, the authors depend on prior work. In order to build a package in BLFS, these dependencies must be built prior to the desired package. For each package, any prerequsite packages are listed in one or more separate sections: Required, Recommended, and Optional.
These dependencies are the minimum prerequsite packages required to build the package. Omitted from the list are packages in LFS and required dependencies of other required packages.
These dependencies are those that the BLFS editors have determined are important to give the package reasonable capabilities. Package installation instructions assume thay are installed. If a recommended package is not desired, the instructions may need to be modified to accommodate the missing package.
These dependencies are those that the package may use. Integration of optional dependencies may be automatic by the package or may need additional instructions not presented by BLFS. Optional packages may be listed without corresponding BLFS instructions. In this case it is up to the user to determine appropriate installation instructions.
Some packages have specific needs regarding the kernel configuration. The general layout is the following:
Master section --->
Subsection --->
[*] Required parameter [CONFIG_REQU_PAR]
<*> Required parameter (not as module) [CONFIG_REQU_PAR_NMOD]
<*/M> Required parameter (could be a module) [CONFIG_REQU_PAR_MOD]
<*/M/ > Optional parameter [CONFIG_OPT_PAR]
[ ] Incompatible parameter [CONFIG_INCOMP_PAR]
< > Incompatible parameter (even as module) [CONFIG_INCOMP_PAR_MOD]
[CONFIG_...] on the right gives the name of the option, so
you can easily check whether it is set in your config
file. The meaning of the various
entries is:
Master section top level menu item Subsection submenu item Required parameter the option could be either built-in or not selected: it must be selected Required parameter (not as module) the option could be either built-in, module, or not selected: it must be selected as built-in Required parameter (could be a module) the option could be either built-in, module, or not selected: it must be selected, either as built-in or module Optional parameter rarely used: the option could be either built-in, module, or not selected: it may be selected at will Incompatible parameter the option could be either built-in or not selected: it must not be selected Incompatible parameter (even as module) the option could be either built-in, module, or not selected: it must not be selected
Note that, depending on other selections, the angle brackets (<>) may appear as braces ({}), if the option cannot be unselected, or even dashes (-*- or -M-), when the choice is imposed. The help text about the option specifies the other selections on which this option relies, and how those other selections are set.
As in LFS, each package in BLFS has a build time listed in Standard Build Units (SBUs). These times are relative to the time it took to build binutils in LFS and are intended to provide some insight into how long it will take to build a package. Most times listed are for a single processor or core to build the package. In some cases, large, long running builds tested on multi-core systems have SBU times listed with comments such as '(parallelism=4)'. These values indicate testing was done using multiple cores. Note that while this speeds up the build on systems with the appropriate hardware, the speedup is not linear and to some extent depends on the individual package and specific hardware used.
Some packages do not support parallel builds and using -j1 for the make command is required. Packages that are known to have such limits are marked as such in the text.
Last updated on 2015-11-13 06:24:57 -0800
This is BLFS-BOOK version 8.1 dated September 1st, 2017. This is the 8.1 branch of the BLFS book, currently targeting the LFS 8.1 book. For development versions, if this version is older than a month, it's likely that your mirror hasn't been synchronized recently and a newer version is probably available for download or viewing. Check one of the mirror sites at http://www.linuxfromscratch.org/mirrors.html for an updated version.
Last updated on 2016-04-17 13:16:17 -0700
The BLFS project has a number of mirrors set up world-wide to make it easier and more convenient for you to access the website. Please visit the http://www.linuxfromscratch.org/mirrors.html website for the list of current mirrors.
Last updated on 2007-04-04 12:42:53 -0700
Within the BLFS instructions, each package has two references for finding the source files for the package—an HTTP link and an FTP link (some packages may only list one of these links). Every effort has been made to ensure that these links are accurate. However, the World Wide Web is in continuous flux. Packages are sometimes moved or updated and the exact URL specified is not always available.
To overcome this problem, the BLFS Team, with the assistance of Oregon State University Open Source Lab, has made an HTTP/FTP site available through world wide mirrors. See http://www.linuxfromscratch.org/blfs/download.html#sources for a list. These sites have all the sources of the exact versions of the packages used in BLFS. If you can't find the BLFS package you need at the listed addresses, get it from these sites.
We would like to ask a favor, however. Although this is a public resource for you to use, please do not abuse it. We have already had one unthinking individual download over 3 GB of data, including multiple copies of the same files that are placed at different locations (via symlinks) to make finding the right package easier. This person clearly did not know what files he needed and downloaded everything. The best place to download files is the site or sites set up by the source code developer. Please try there first.
Last updated on 2017-02-11 20:17:33 -0800
Current release: 8.1 – September 1st, 2017
Changelog Entries:
September 1st, 2017
August 31st, 2017
[pierre] - Update to Dovecot-2.2.32. Fixes #9673.
[pierre] - Update to Unbound-1.6.5. Fixes #9656.
[pierre] - Change download links for lxqt applications, and update to obconf-qt-0.11.1.
[pierre] - Change download links for lxqt desktop, and update to lxqt-build-tools-0.3.2 and pcmanfm-qt-0.11.3.
[dj] - Correct QT5 bindir for /usr installation.
[renodr] - Update to Thunderbird-52.3.0. Fixes #9630.
[dj] - Build Cogl with Wayland support by default in systemd book.
August 30th, 2017
[pierre] - Fix midori build with newer vala. Thanks to Christoph Feikes for the report. Fix taken from Archlinux.
[dj] - Update root hints to 2017-08-29 for bind.
August 29th, 2017
August 28th, 2017
[renodr] - Update to geocode-glib-3.24.0. Fixes #9628.
[ken] - gegl-0.3.20. Fixes #9620.
[ken] - babl-0.1.30. Fixes #9619.
[ken] - cups-filters-1.17.2. Fixes #9641.
[ken] - firefox-55.0.3. Fixes #9629.
[bdubbs] - Update to ImageMagick-7.0.6-10. Fixes #9648.
[bdubbs] - Update to zsh-5.4.2. Fixes #9684.
[bdubbs] - Update to nano-2.8.7. Fixes #9683.
[ken] - Update to rustc-1.19.0 and drop separate LLVM-3 and Cargo. Fixes #9652.
August 27th, 2017
August 26th, 2017
[bdubbs] - Update to kf5-apps-17.08.0. Fixes #9334.
[renodr] - Update to libwacom-0.26. Fixes #9666.
[bdubbs] - Update to librep_0.92.7. Fixes #9680.
[bdubbs] - Update to feh-2.19.3. Fixes #9659.
[bdubbs] - Update to xdg-user-dirs-0.16. Fixes #9655.
[bdubbs] - Update to unrar-5.5.8. Fixes #9614.
[bdubbs] - Update to libva intel-vaapi-driver 1.8.3. Fixes #9626.
[bdubbs] - Added MANPATH entry to xorg.sh profile script. Fixes #9637.
[bdubbs] - Update to xf86-video-intel-20170826. Fixes #9650.
[ken] - Update low-level perl module dependencies used by biber (Specio now wants Sub-Quote). Fixes #9678.
[pierre] - Fix SWIG tests for perl-5.26. Fixes #9365.
[dj] - Fixed build issue for Dovecot by explictly linking to libtirpc.
August 25th, 2017
August 24th, 2017
[bdubbs] - Update to sysstat-11.6.0. Fixes #9613.
[bdubbs] - Update to graphviz-2.40.1. Fixes #9625.
[ken] - Update to audacious-3.9. Fixes #9645.
[ken] - Update to ImageMagick-6.9.9-9. Fixes #9647.
[renodr] - Update to yaml-0.1.7. Fixes #9623.
[dj] - Add rpcsvc-proto-1.2 and libnsl-1.1.0. Add dependencies to Postfix and NFS-Utils. Fixes #9285.
August 23rd, 2017
August 22nd, 2017
[bdubbs] - Update to qca-2.1.3. Fixes #9635.
[bdubbs] - Update to xvidcore-1.3.4. Fixes #9633.
[bdubbs] - Update to speex-1.2.0. Fixes #9632.
[bdubbs] - Update to faac-1.29.4. Fixes #9631.
[bdubbs] - Update to mariadb-10.2.8. Fixes #9640.
[bdubbs] - Update to pycairo-1.15.1 (python module). Fixes #9643.
[dj] - Update to Chromium-60.0.3112.101. Fixes #9622.
[dj] - Update to Node.js-8.4.0. Fixes #9502.
August 21st, 2017
[bdubbs] - Update to pcre2-10.30. Fixes #9618.
[bdubbs] - Update to Net-DNS-1.12 (Perl module). Fixes #9638.
[bdubbs] - Add six-1.10.0 as a runtime dependency for gtk-doc.
[dj] - Update to pango-1.40.10. Fixes #9627.
[dj] - Update to Samba-4.6.7. Fixes #9594.
[dj] - Update to p11-kit-0.23.8. Fixes #9617.
[dj] - Update to nghttp2-1.25.0. Fixes #9639.
[dj] - Update to dbus-1.10.22. Fixes #9534.
August 20th, 2017
[ken] - Update the mupdf openjpeg patch so that it builds when only openjpeg-2.2 has been installed. Fixes #9646.
August 19th, 2017
[bdubbs] - Add a patch to llvm (for compiler-rt) to provide comatibility with glibc-2.26.
[pierre] - Add DjVuLibre to optional dependencies of Okular. Fixes #9611.
August 18th, 2017
[bdubbs] - Update to curl-7.55.1. Fixes #9615.
August 17th, 2017
[pierre] - Add fix for GlibC-2.26 in gpm. Thanks to Thierry Nuttens at Nutyx for the patch.
[dj] - Add fix for GlibC-2.26 in libtirpc. Thanks to Snarkster in IRC for the fix.
August 16th, 2017
[renodr] - Archive appstream-glib.
August 15th, 2017
[ken] - Add optional instructions to fftw for installing the threaded libfftw3f lib(s) (needs a separate build from the regular fftw build).
[pierre] - Update to GCC and GCC-Ada 7.2.0. Fixes #9612.
August 14th, 2017
[bdubbs] - Update to poppler-data-0.4.8. Fixes #9610.
August 13th, 2017
[ken] - Update to firefox-55.0.1. Fixes #9605.
[ken] - Update to inkscape-0.92.2 and add recommended deps Scour (Python module) and Potrace. Fixes #9590.
[bdubbs] - Update to cups-filters-1.16.1. Fixes #9609.
[bdubbs] - Update to mpg123-1.25.6. Fixes #9608.
[bdubbs] - Update to feh-2.19.2. Fixes #9607.
[bdubbs] - Update to gtk-doc-1.26. Fixes #9606.
August 11th, 2017
[bdubbs] - Update to postgresql-9.6.4. Fixes #9604.
[bdubbs] - Update to cmake-3.9.1. Fixes #9601.
[bdubbs] - Update to clutter-gtk-1.8.4. Fixes #9596.
[bdubbs] - Update to curl-7.55.0. Fixes #9595.
[bdubbs] - Update to tcl-core-8.6.7 and tk-8.6.7. Fixes #9593.
[bdubbs] - Update to openjpeg2-2.2.0. Fixes #9592.
[bdubbs] - Update to gnupg-2.1.23. Fixes #9591.
[pierre] - Update to libsoup-2.8.2. Fixes #9603.
[pierre] - Update to mercurial-4.3.1. Fixes #9602.
August 10th, 2017
August 9th, 2017
[ken] - Correct the link for GNU freefont, reported by Jocelyn Fréchot.
[bdubbs] - Update to mpg123-1.25.5. Fixes #9589.
[bdubbs] - Update to harfbuzz-1.4.8. Fixes #9588.
[bdubbs] - Update to wayland-1.14.0. Fixes #9587.
[bdubbs] - Update to libmbim-1.14.2. Fixes #9586.
[bdubbs] - Update to pango-1.40.8. Fixes #9583.
[bdubbs] - Update to gtk+3-3.22.18. Fixes #9582.
[bdubbs] - Update to gdk-pixbuf-2.36.8. Fixes #9581.
[bdubbs] - Update to zsh and zsh-doc 5.4.1. Fixes #9578.
August 8th, 2017
[bdubbs] - Update to evolution and evolution-data-server 3.24.5. Fixes #9584.
[bdubbs] - Update to gnome-online-accounts-3.24.2. Fixes #9567.
[bdubbs] - Update to brasero-3.12.2. Fixes #9553.
[bdubbs] - Update to gnome-logs-3.24.2. Fixes #9544.
[bdubbs] - Update to mutter-3.24.4. Fixes #9507.
[bdubbs] - Update to gparted 0.29.0. Fixes #9585.
[bdubbs] - Update to pango 1.40.8. Fixes #9583.
[bdubbs] - Update to webkitgtk-2.16.6. Fixes #9523.
[ken] - Update to fontforge-20170731. Fixes #9554.
[dj] - Update to Chromium-60.0.3112.90. Fixes #9566.
August 7th, 2017
August 6th, 2017
[bdubbs] - Update to Parse-Yapp-1.21 (perl module). Fixes #9572.
[bdubbs] - Update to libxkbcommon-0.7.2. Fixes #9570.
[bdubbs] - Update to sshfs-3.1.0. Fixes #9569.
[bdubbs] - Update to exempi-2.4.3. Fixes #9561.
[bdubbs] - Update to sqlite-3.20.0. Fixes #9557.
[bdubbs] - Update to nmap-7.60. Fixes #9557.
[bdubbs] - Update to dhcp-4.3.6. Fixes #9552.
[bdubbs] - Update to poppler-0.57.0. Fixes #9550.
[bdubbs] - Update to ffmpeg-3.3.3. Fixes #9545.
August 5th, 2017
[ken] - Update to git-2.14.0 and add optional JIT configure switch to pcre2 and pcre. Fixes #9568.
August 4th, 2017
[bdubbs] - Update to elfutils-0.170. Fixes #9564.
[bdubbs] - Update to libpng-1.6.31. Fixes #9562.
[bdubbs] - Update to autovivification-0.17 (Perl Module). Fixes #9551.
[bdubbs] - Update to wayland-protocols-1.10. Fixes #9549.
[bdubbs] - Update to udisks2-2.7.2. Fixes #9563.
[bdubbs] - Update to libbytesize-0.11. Fixes #9560.
[bdubbs] - Update to libblockdev-2.11-1. Fixes #9548.
[bdubbs] - Update to bind9-9.11.2. Fixes #9542.
August 2nd, 2017
[bdubbs] - Update to gedit-3.22.1. Fixes #9546.
[bdubbs] - Update to gjs-1.48.6. Fixes #9537.
[bdubbs] - Update to highlight-3.39. Fixes #9530.
[bdubbs] - Update to libwnck-3.24.1. Fixes #9538.
[bdubbs] - Update to feh-2.19.1. Fixes #9528.
[bdubbs] - Update to libgusb-0.2.11. Fixes #9520.
[bdubbs] - Update to tumbler-0.2.0. Fixes #9491.
[bdubbs] - Update to stunnel-5.42. Fixes #9486.
[ken] - Update to icewm-1.4.2. Fixes #9559.
August 1st, 2017
[bdubbs] - Update to seamonkey-2.48. Fixes #9508.
[ken] - Update to icewm-1.4.1. Fixes #9536.
[ken] - Update to nspr-4.16. Fixes #9533.
[ken] - Update to libdrm-2.4.82. Fixes #9505.
[ken] - Update to gtk+-3.22.17. Fixes #9500.
[ken] - Update to gdk-pixbuf-2.36.7. Fixes #9499.
[ken] - Update to cmake-3.9.0. Fixes #9496.
[ken] - Update to harfbuzz-1.4.7. Fixes #9495.
[ken] - Update to pango-1.40.7. Fixes #9488.
[pierre] - Update to libreoffice-5.4.0.3. Fixes #9543.
[pierre] - Update to boost-1.64.0. Fixes #9541.
[pierre] - Update to gptfdisk-1.0.3. Fixes #9529.
[pierre] - Update to cups-filters-1.16.0. Fixes #9525.
[pierre] - Update to upower-0.99.5. Fixes #9521.
[pierre] - Update to reiserfsprogs-3.6.27. Fixes #9519.
[pierre] - Update to openjdk-1.8.0.141. Fixes #9511.
[pierre] - Update to icedtea-web-1.7. Fixes #9510.
[pierre] - Update to xfsprogs-4.12.0. Fixes #9509.
[pierre] - Update to wireshark-2.4.0. Fixes #9497.
[ken] - Update to Text::BibTeX-0.81 (perl module). Fixes #9504.
[ken] - Update to URI-1.72 (perl module). Fixes #9527.
July 31st, 2017
[bdubbs] - Update to btrfs-progs-4.12. Fixes #9540.
[bdubbs] - Update to whois-5.2.17. Fixes #9535.
[bdubbs] - Update to unrar-5.5.7. Fixes #9526.
[bdubbs] - Update to libinput-1.8.1. Fixes #9498.
[bdubbs] - Update to bluez-5.46. Fixes #9481.
[bdubbs] - Remove unneeded paragraph in NFS-Utils. Also remove references to quotas in nfs-server bootscript. Fixes #9532.
[bdubbs] - Update to mpg123-1.25.4. Fixes #9447.
July 30th, 2017
[bdubbs] - Update to pycairo-1.15.0 (python module). Fixes #9522.
[bdubbs] - Update to gnupg-2.1.22. Fixes #9539.
[bdubbs] - Update to libgcrypt-1.8.0. Fixes #9494.
[bdubbs] - Update to mpg123-1.25.3. Fixes #9501.
[bdubbs] - Update to nano-2.8.6 and configuration. Fixes #9512and #9517.
[bdubbs] - Update to faad-2.8.1. Fixes #9492.
[bdubbs] - Update to faac-1.29.3. Fixes #9416.
[bdubbs] - Update to xfce4-terminal-0.8.6. Fixes #9485.
[dj] - Update to Node.js-8.2.1. Fixes #9502.
[pierre] - Fix Cups-2.2.4 failure to find printers when no default printer is defined. Fixes #9471.
July 29th, 2017
[dj] - Fix incorrect hardlinks in fuse-2.9.7.
[dj] - Update to chromium-60.0.3112.78. Fixes #9531.
July 25th, 2017
July 24th, 2017
[dj] - Update to Flash Player 26.0.0.137. Fixes #9493.
[ken] - Update to evince-3.24.1. Fixes #9515.
[dj] - Restore Fuse2 package as dependency for gvfs. Fixes #9484.
[dj] - Update to talloc-1.2.10. Fixes #9513.
[dj] - Update to gnome-shell-3.24.3 and gnome-shell-extensions-3.24.3. Fixes #9506.
[dj] - Update to gnome-settings-daemon-3.24.3. Fixes #9514.
[dj] - Update to nautilus-3.24.2.1. Fixes #9490.
July 22nd, 2017
[dj] - Update to systemd-234. Fixes #9479.
July 19th, 2017
July 17th, 2017
July 14th, 2017
[ken] - Add optional patch for clisp, required if building it against libffcall. Fixes #9474.
[bdubbs] - Update to mariadb-10.2.7. Fixes #9478.
[bdubbs] - Update to git-2.13.3. Fixes #9475.
[bdubbs] - Update to avahi-0.7. Fixes #9470.
[bdubbs] - Update to httpd-2.4.27. Fixes #9468.
[bdubbs] - Update to pycairo-1.14.0 (python module). Fixes #9476.
[bdubbs] - Update to libarchive-3.3.2. Fixes #9469.
[bdubbs] - Update to wayland-protocols-1.9. Fixes #9473.
[bdubbs] - Update to x265-2.5. Fixes #9480.
[bdubbs] - Update to fuse3-3.1.0. Archive fuse 2.9.x. Fixes #9465.
[bdubbs] - Update to sshfs-3.0.0. Fixes #9466.
July 11th, 2017
[renodr] - Update systemd configure options. Fixes #9439.
July 9th, 2017
[dj] - Add individual i18n settings for
~/.bashrc
and
~/.profile
.
[bdubbs] - Update to gnumeric-1.12.35. Fixes #9459.
[bdubbs] - Update to goffice-0.10.35. Fixes #9458.
[bdubbs] - Update to xscreensaver 5.37. Fixes #9455.
[bdubbs] - Update to mercurial 4.2.2. Fixes #9452.
[dj] - Introduce missing patches for balsa and transmission when using OpenSSL-1.1.0.
July 8th, 2017
[bdubbs] - Update to faad2-2.8.0. Fixes #9463.
[bdubbs] - Update to bind9-9.11.1-P3. Fixes #9462.
[bdubbs] - Update to libjpeg-turbo-1.5.2. Fixes #9460.
[bdubbs] - Update to php-7.1.7. Fixes #9457.
[bdubbs] - Update to libtirpc 1.0.2. Fixes #9454.
[bdubbs] - Update to sysstat 11.5.7 Fixes #9451.
[bdubbs] - Update to libblockdev-2.10-1. Fixes #9447.
July 7th, 2017
July 6th, 2017
July 5th, 2017
[bdubbs] - Update to xf86-input-wacom-0.35.0. Fixes #9410.
[bdubbs] - Update to folks-0.11.4. Fixes #9442.
[bdubbs] - Update to gnome-keyring-3.20.1. Fixes #9446.
[bdubbs] - Update to QScintilla_gpl-2.10.1. Fixes #9445.
[bdubbs] - Update to faac-1.29. Fixes #9443.
[bdubbs] - Update to libinput-1.8.0. Fixes #9441.
[bdubbs] - Update to udisks2-2.7.1. Fixes #9440.
July 4th, 2017
July 3rd, 2017
July 2nd, 2017
[bdubbs] - Update to cups 2.2.4. Fixes #9434.
[bdubbs] - Update to thunar 1.16.12. Fixes #9433.
[bdubbs] - Update to mesa 17.1.4. Fixes #9431.
[bdubbs] - Update to btrfs-progs 4.11.1. Fixes #9430.
[dj] - Use install for Fuse-2.9.7 to ensure that owner and group get updated as well as suid bit for fusermount.
July 1st, 2017
[bdubbs] - Update to Qt and QtWebEngine-5.9.1. Fixes #9432.
[pierre] - Update “innodb_xxx” variables to their current default values in MariaDB configuration file, and remove an obsolete variable. Report by J. Burrell and akh.
[dj] - Install Flash Player control appliation along with NPAPI plugin.
June 30th, 2017
[dj] - Use Arch build fix for Inkscape with GCC-7.1.
[bdubbs] - Update to libgcrypt-1.7.8. Fixes #9418.
[bdubbs] - Update to dbus-1.10.20. Fixes #9420.
[bdubbs] - Update to bind-utils and bind-9.11.1-P2. Fixes #9421.
[bdubbs] - Update to cups-filters 1.14.1. Fixes #9423.
[ken] - Update to firefox-54.0.1. Fixes #9422.
[dj] - Use gtk+3.x for Chromium.
[dj] - XML::LibXML now depends on XML::SAX.
June 29th, 2017
June 28th, 2017
[bdubbs] - Update to webkitgtk-2.16.5. Fixes #9416.
[pierre] - Make OpenSSL a recommended dependency of Lynx.
[pierre] - Update to unbound-1.6.4. Fixes #9415.
[pierre] - Reinstate firebird-sdbc in libreoffice.
[pierre] - Patch lynx for building with openssl-1.1.
[dj] - Add dosfstools-4.1.
[dj] - Reintroduce cdrtools-3.02a07.
June 27th, 2017
[bdubbs] - Update to opus-1.2.1. Fixes #9414.
[bdubbs] - Update to frei0r-plugins-1.6.1. Fixes #9413.
[bdubbs] - Update to xfdesktop-4.12.4. Fixes #9411.
[bdubbs] - Update to vala-0.36.4. Fixes #9408.
[bdubbs] - Update to Net-DNS-1.11 (Perl module). Fixes #9407.
[pierre] - Update to git-2.13.2. Fixes #9405.
[pierre] - Update to libreoffice-5.3.4.2. Fixes #9013.
June 26th, 2017
[bdubbs] - Update to nano-2.8.5. Fixes #9406.
June 25th, 2017
June 24th, 2017
June 23rd, 2017
[bdubbs] - Update to thunderbird-52.2.1. Fixes #9402.
[bdubbs] - Update to llvm-4.0.1. Fixes #9399.
[bdubbs] - Update to mutter-3.24.3. Fixes #9401.
[bdubbs] - Update to gtkmm3- 2.33.1. Fixes #9400.
[bdubbs] - Update to glibmm-2.52.0. Fixes #9398.
[bdubbs] - Update to evolution/evolution-data-server-3.24.3. Fixes #9381.
[bdubbs] - Update to glib 2.52.3. Fixes #9397.
[bdubbs] - Update to reiserfsprogs-3.6.26. Fixes #9395.
[bdubbs] - Update to gucharmap-10.0.0. Fixes #9393.
[bdubbs] - Update to gstreamer-1.12.0 and plugins. Fixes #9385.
[dj] - Fix a build issue with QT and MariaDB-10.2.
June 22nd, 2017
[bdubbs] - Update to totem-pl-parser-3.10.8. Fixes #9392.
[bdubbs] - Update to gjs-1.48.5. Fixes #9391.
[bdubbs] - Update to highlight-3.38. Fixes #9390.
[bdubbs] - Update to poppler-0.56.0. Fixes #9389.
[bdubbs] - Update to opus-1.2. Fixes #9394.
[bdubbs] - Update to webkitgtk-2.16.4. Fixes #9384.
[bdubbs] - Update to gtk+3.22.16. Fixes #9383.
[bdubbs] - Update to xterm-330. Fixes #9382.
[bdubbs] - Update to mesa-17.1.3. Fixes #9380.
[bdubbs] - Update to gsl-2.4. Fixes #9379.
[bdubbs] - Update to thunderbird-52.2.0. Fixes #9368.
[bdubbs] - Update to fuse3-3.0.2. Fixes #9277.
[bdubbs] - Update to mercurial-4.2.1. Fixes #9317.
[bdubbs] - Update volume_key-0.3.9 url.
[pierre] - Update to apr-util-1.6.0. Fixes #9388.
[pierre] - Update to apr-1.6.2. Fixes #9387.
[pierre] - Add a patch to exim-4.89, preventing repeated use of -p and -oMr options. Fixes #9386.
[pierre] - Update to cairo-1.14.10. Fixes #9369.
[pierre] - Update to curl-7.54.1. Fixes #9367.
[pierre] - Update to unbound-1.6.3. Fixes #9362.
[pierre] - Update to dovecot-2.2.30.2. Fixes #9299.
[dj] - Update to nodejs-8.1.2. Fixes #9294.
June 21st, 2017
[dj] - Update to samba-4.6.5. Fixes #9332.
[bdubbs] - Add volume_key-0.3.9 as a required dependency of libblockdev.
[bdubbs] - Add libbytesize-0.10 as a required depedency of libblockdev.
[bdubbs] - Add cryptsetup-1.7.5 as a dependency of libblockdev and required for udisks2.
[bdubbs] - Add libblockdev-2.9-1 as required depencency for udisks2-2.7.0.
[bdubbs] - Update to udisks2-2.7.0. Fixes #9313.
June 19th, 2017
[bdubbs] - Revise boot configuration for wicd. Fixes #9373.
[bdubbs] - Update to gtksourceview-3.24.3. Fixes #9378.
[bdubbs] - Update to postfix-3.2.2. Fixes #9377.
[bdubbs] - Update to Beaker-1.9.0 (Python Module). Fixes #9376.
[bdubbs] - Update to unrar-5.5.5. Fixes #9375.
[bdubbs] - Update to mariadb-10.2.6. Fixes #9269.
June 18th, 2017
[bdubbs] - Update to gtk-vnc-0.7.1. Fixes #9262.
[bdubbs] - Update to evolution-3.24.2. Fixes #9218.
[bdubbs] - Update to gnome-maps-3.24.3. Fixes #9214.
[bdubbs] - Update to epiphany-3.24.2. Fixes #9213.
[bdubbs] - Update to network-manager-applet-1.8.2. Fixes #9363.
[bdubbs] - Update to libgweather-3.24.1. Fixes #9323.
[bdubbs] - Update to GeoClue-2.4.7. Fixes #9290.
[bdubbs] - Update to valgrind-3.13.0. Fixes #9371.
[bdubbs] - Update to gjs-1.48.4. Fixes #9370.
[bdubbs] - Update to bind9-9.11.1-P1. Fixes #9366.
[bdubbs] - Update to postfix-3.2.1. Fixes #9349.
[bdubbs] - Update to gnome-online-accounts-3.24.1. Fixes #9291.
[bdubbs] - Update to lxml-3.8.0 (Python module). Fixes #9316.
[bdubbs] - Update to ModemManager-1.6.8. Fixes #9374.
[bdubbs] - Update to nmap-7.50. Fixes #9361.
[bdubbs] - Update gnome-calculator debendencies. Fixes #9360.
[bdubbs] - Update to gnome-tweak-tool-3.24.1. Fixes #9358.
[bdubbs] - Simplify fix for kdelibs4support.
[bdubbs] - Update to wayland-protocols-1.8. Fixes #9355.
[bdubbs] - Update to xterm-329. Fixes #9357.
[bdubbs] - Update to whois-5.2.16. Fixes #9356.
[bdubbs] - Update to garcon-0.6.1. Fixes #9351.
[bdubbs] - Update to Parse-Yapp-1,2. Fixes #9364.
[bdubbs] - Update to unrar-5.5.4. Fixes #9348.
June 17th, 2017
[pierre] - Apply the fix found by Bruce for building kdelibs4support from KDE Frameworks, with openssl-1.0.
June 14th, 2017
[bdubbs] - Update patch to liboauth. Fixes #9345.
June 13th, 2017
June 11th, 2017
[renodr] - Fix location of nfs-utils binaries so that the systemd units and sysvinit bootscripts match properly. Discussed in IRC with Bruce and DJ.
[ken] - Update to nss-3.31. Fixes #9350.
June 10th, 2017
[ken] - Patch texlive-2017 for a luatex issue. Fixes #9347.
[ken] - Update to mutt-1.8.3. Fixes #9329.
[ken] - Add new perl module deps for DateTime::Locale. Fixes #9325.
[bdubbs] - Fix links in git docs. Fixes #9346.
[bdubbs] - Update to libinput-1.7.3. Fixes #9344.
[bdubbs] - Update to sqlite-3.19.3. Fixes #9343.
[bdubbs] - Update to php-7.1.6. Fixes #9342.
June 8th, 2017
June 6th, 2017
[bdubbs] - Update to ffmpeg-3.3.2. Fixes #9338.
[bdubbs] - Update to feh-2.19. Fixes #9337.
[bdubbs] - Update to libepoxy-1.4.3. Fixes #9333.
[bdubbs] - Update to p11-kit-0.23.7. Fixes #9331.
[bdubbs] - Update to sudo-1.8.20p2. Fixes #9326.
[bdubbs] - Update to wireshark-2.2.7. Fixes #9306.
[bdubbs] - Update to nghttp2-1.23.0. Fixes #9289.
[bdubbs] - Update to gdb-8.0. Fixes #9328.
[bdubbs] - Update to pycairo-1.13.3 (python module). Fixes #9322.
[ken] - A few of the perl modules need the 'unsafe' variant of the Standard Installation of Pel Modules when perl-5.26.0 or later and manual installation are used. Document that for the modules known to be affected. Fixes #9324.
[ken] - Update TeX Live to 2017. Fixes #9320.
[bdubbs] - Update to mesa-17.1.2. Fixes #9330.
[bdubbs] - Update to nspr-4.15. Fixes #9327.
[bdubbs] - Update to git-2.13.1. Fixes #9321.
[bdubbs] - Update to nano-2.8.4. Fixes #9263.
[bdubbs] - Update to pango-1.40.6. Fixes #9272.
[bdubbs] - Update to p11-kit-0.23.6. Fixes #9287.
[bdubbs] - Update to libtasn1-4.12. Fixes #9288.
[bdubbs] - Update to libass-0.13.7. Fixes #9318.
June 5th, 2017
[bdubbs] - Update to sqlite-3.19.2. Fixes #9270.
[bdubbs] - Update to vlc-2.2.6. Fixes #9279.
[bdubbs] - Update to cmake-3.8.2. Fixes #9303.
[bdubbs] - Update to mpg123-1.25.0. Fixes #9301.
[bdubbs] - Update to sudo-1.8.20p1. Fixes #9293.
[bdubbs] - Update to autofs-5.1.3. Fixes #9274.
[renodr] - Update to mutter-3.24.2. Fixes #9241.
[renodr] - Update to gnome-shell-extensions-3.24.2. Partially fixes #9240.
[renodr] - Update to gnome-shell-3.24.2. Fully fixes #9240.
[renodr] - Update to gdm-3.24.2. Fixes #9224.
[renodr] - Update to gnome-user-docs-3.24.2. Fixes #9212.
[renodr] - Update to gnome-control-center-3.24.2. Fixes #9223.
[renodr] - Update to appstream-glib-0.6.13. Fixes #9219.
[renodr] - Update to highlight-3.37. Fixes #9297.
June 4th, 2017
June 3rd, 2017
[bdubbs] - Update to lmdb-0.9.21. Fixes #9307.
[bdubbs] - Update to alsa-lib-1.1.4.1. Fixes #9310.
[bdubbs] - Update to libgcrypt-1.7.7. Fixes #9311.
[bdubbs] - Update to npth-1.5. Fixes #9312.
[dj] - Update to OpenSSL-1.1.0f. Fixes #8214.
[dj] - Add OpenSSL-1.0 Libraries for compatibility with programs not yet patched for OpenSSL-1.1.0 and udpate to OpenSSL-1.0.2l. Fixes #9282.
[dj] - Remove Re-alpine and replace with Alpine-2.21.
[bdubbs] - Update to fontconfig-2.12.3. Fixes #9302.
[bdubbs] - Update to mesa-17.1.1. Fixes #9283.
[bdubbs] - Update to xterm-328. Fixes #9309.
[bdubbs] - Update to xkeyboard-config-2.21. Fixes #9304.
[bdubbs] - Update to libva/intel-vaapi-1.6.2 xorg drivers. Fixes #9268.
[bdubbs] - Update to Regexp-Common-2017060201 (Perl Module). Fixes #9314.
[bdubbs] - Update to Module-Build-0.4224 (Perl module). Fixes #9298.
[bdubbs] - Update to jasper 2.0.12. Fixes #8953.
June 1st, 2017
May 31st, 2017
[ken] - Update the firmware page for intel microcode. Fixes #9292.
[bdubbs] - Update to gegl-0.3.18. Fixes #9296.
[bdubbs] - Update to babl-0.1.28. Fixes #9295.
[bdubbs] - Update to libpwquality-1.4.0. Fixes #9286.
[bdubbs] - Update to libatomic_ops-7.4.6. Fixes #9281.
[bdubbs] - Update to libdrm-2.4.81. Fixes #9278.
May 30th, 2017
[ken] - Patch rpcbind and libtirpc for the so-called rpcbomb vulnerability. Fixes #9284.
May 28th, 2017
[dj] - Fix build error in ptlib with gcc-7.1.0. Thanks to Chris Staub for assisting with the fix.
May 27th, 2017
May 26th, 2017
[dj] - Update to Chromium-58.0.3029.110. Fixes #9235.
[dj] - Update to Flash Player 25.0.0.171.
[renodr] - Update to evolution-data-server-3.24.2. Partially fixes #9218.
[renodr] - Update to bluez-5.45. Fixes #8922.
[renodr] - Update to gnome-desktop-3.24.2. Fixes #9216.
[renodr] - Update to NetworkManager-1.8.0. Partially fixes #9231.
[renodr] - Update to network-manager-applet-1.8.0. Fully fixes #9231.
May 25th, 2017
[renodr] - Update to WebKitGTK+-2.16.3. Fixes #9276.
May 24th, 2017
May 23rd, 2017
May 22nd, 2017
[bdubbs] - Update to pycairo-1.13.2. Combines build for python2 and python3. Py2cairo archived. Fixes #9267.
[bdubbs] - Update to gucharmap-9.0.4. Fixes #9226.
[bdubbs] - Update to v4l-utils-1.12.4. Fixes #9208.
[bdubbs] - Update to poppler-0.55.0. Fixes #9264.
[bdubbs] - Update to gtksourceview-3.24.2. Fixes #9266.
[bdubbs] - Update to libtiff-4.0.8. Fixes #9265.
May 19th, 2017
[bdubbs] - Update to vte-0.48.3. Fixes #9230.
[bdubbs] - Update to gnome-terminal-3.24.2. Fixes #9225.
[bdubbs] - Update to tigervnc-1.8.0. Fixes #9255.
[bdubbs] - Update to alsa-1.1.4 (libs, plugins, utils). Fixes #9256.
[bdubbs] - Update to btrfs-progs-4.11. Fixes #9260.
[bdubbs] - Update to nano-2.8.3. Fixes #9259.
[bdubbs] - Update to udisks-2.6.5. Fixes #9258.
[bdubbs] - Update to npth-1.4. Fixes #9254.
[bdubbs] - Update to gnupg-2.1.21. Fixes #9253.
[ken] - Use separate QtWebEngine instead of building it as part of Qt5. Fixes #9248.
[bdubbs] - Add xf86-input-libinput-0.25.1. Fixes #9210.
May 18th, 2017
[bdubbs] - Update to shadow-4.5. Fixes #9257.
May 17th, 2017
May 16th, 2017
[bdubbs] - Update to cups-filters-1.14.0. Fixes #9252.
[bdubbs] - Update to thunderbird-52.1.1. Fixes #9251.
[bdubbs] - Update to gegl-0.3.16. Fixes #9249.
[bdubbs] - Update to clutter-1.26.2. Fixes #9243.
[bdubbs] - Update to freetype-2.8. Fixes #9244.
[bdubbs] - Update to sysstat-11.5.6. Fixes #9245.
[bdubbs] - Update to xfce4-terminal-0.8.5.1. Fixes #9246.
[bdubbs] - Update to ffmpeg-3.3.1. Fixes #9247.
May 15th, 2017
May 14th, 2017
May 11th, 2017
May 10th, 2017
[ken] - Update to graphite2-1.3.10. Fixes #9200.
[ken] - Remove spurious '&&' at the end of the texlive instructions, and clarify that the shared ghostscript library is needed by texlive itself as well as by asymptote. Fixes #9198.
[ken] - Update to git-2.13.0. Fixes #9228.
[pierre] - Update to libdrm-2.4.80. Fixes #9102.
[renodr] - Update to libsoup-2.58.1. Fixes #9215.
[renodr] - Update to glib2-2.52.1. Fixes #9217.
[renodr] - Fix NSS build with GCC-7
May 9th, 2017
May 8th, 2017
[bdubbs] - Update to libinput-1.7.2. Fixes #9203.
[bdubbs] - Update to elfutils-0.169. Fixes #9202.
[bdubbs] - Update to mariadb-10.1.23. Fixes #9193.
[bdubbs] - Update to Net-DNS-1.10 (Perl module). Fixes #9201.
[bdubbs] - Update to xfsprogs-4.11.0. Fixes #9199.
[bdubbs] - Update to LVM2-2.2.02.171. Fixes #9190.
[renodr] - Archive Weston.
May 7th, 2017
[renodr] - Update to gnome-weather-3.24.0. Partially fixes #9025.
[renodr] - Update to gnome-system-monitor-3.24.0. Partially fixes #9025.
[renodr] - Update to gnome-power-manager-3.24.0. Partially fixes #9025.
[renodr] - Update to gucharmap-9.0.3. Fully fixes #9025.
[renodr] - Update to gnome-logs-3.24.1. Partially fixes #9025.
[renodr] - Update to gnome-disk-utility-3.24.1. Fixes #9204.
[renodr] - Update to gnome-calculator-3.24.0. Partially fixes #9025.
[renodr] - Update to gjs-1.48.3. Fixes #9207.
[renodr] - Update to gnome-maps-3.24.1. Partially fixes #9025.
[renodr] - Update to file-roller-3.24.1. Partially fixes #9025.
May 6th, 2017
May 5th, 2017
[bdubbs] - Update to nano-2.8.2. Fixes #9196.
[bdubbs] - Update to libevdev-1.5.7. Fixes #9194.
[bdubbs] - Update to libnl-3.3.0. Fixes #9192.
[bdubbs] - Update to vala-0.36.3. Fixes #9189.
[bdubbs] - Update to nasm-2.13.01. Fixes #9188.
[bdubbs] - Update to mercurial-4.2. Fixes #9187.
[bdubbs] - Update to cmake-3.8.1. Fixes #9185.
May 3rd, 2017
[renodr] - Update to eog-3.24.1. Partially fixes #9025.
[renodr] - Update to baobab-3.24.0. Partially fixes #9025.
[renodr] - Update to evince-3.24.0. Partially fixes #9025.
[renodr] - Update to gnome-disk-utility-3.24.0. Partially fixes #9024.
[renodr] - Update to gnome-terminal-3.24.1. Partially fixes #9025.
[renodr] - Update to epiphany-3.24.1. Partially fixes #9025.
[renodr] - Update to gtksourceview-3.24.1. Partially fixes #9024.
[renodr] - Update to gnome-tweak-tool-3.24.0. Partially fixes #9024.
[ken] - Firefox by default requires both gtk+-3 and gtk+-2.
May 2nd, 2017
[renodr] - Update to zenity-3.24.0. Partially fixes #9024.
[renodr] - Update to nautilus-3.24.1. Partially fixes #9024.
[renodr] - Update to mutter-3.24.1. Partially fixes #9024.
[renodr] - Update to gvfs-1.32.1. Partially fixes #9024.
[renodr] - Update to gnome-session-3.24.1. Partially fixes #9024.
[renodr] - Update to gnome-shell-extensions-3.24.1. Partially fixes #9024.
[renodr] - Update to gnome-shell-3.24.1. Partially fixes #9024.
[renodr] - Update to gnome-control-center-3.24.1. Partially fixes #9024.
[renodr] - Update to gnome-color-manager-3.24.0. Partially fixes #9024.
[renodr] - Update to gnome-settings-daemon-3.24.1. Partially fixes #9024.
[renodr] - Update to gnome-backgrounds-3.24.0. Partially fixes #9024.
[renodr] - Update to gdm-3.24.1. Partially fixes #9024.
[renodr] - Update to Cheese-3.24.0. Partially fixes #9025.
[renodr] - Update to Appstream-GLib-0.6.12. Fixes #8974.
[renodr] - Update to gnome-user-docs-3.24.0. No ticket.
[renodr] - Modified dependencies for babl and mutter. Fixes #9149.
[renodr] - Update to libgweather-3.24.0. Partially fixes #9024.
[renodr] - Update to libgtop-2.36.0. Partially fixes #9024.
[renodr] - Update to libgee-0.20.0. Partially fixes #9024.
[renodr] - Update to libgdata-0.17.8. Fixes #9153.
[renodr] - Update to libchamplain-0.12.15. Partially fixes #9024.
[renodr] - Update to evolution-data-server-3.24.1. Partially fixes #9024.
[bdubbs] - Update to xkbcomp-1.4.0 (xorg app). Fixes #9184.
[bdubbs] - Update to hdparm-9.52. Fixes #9183.
[bdubbs] - Update to thunderbird-52.1.0. Fixes #9182.
[bdubbs] - Update to libepoxy-1.4.2. Fixes #9181.
[bdubbs] - Update to cups-filters-1.13.4. Fixes #9176.
May 1st, 2017
April 30th, 2017
[renodr] - Update to gnome-desktop-3.24.1. Partially fixes #9024.
[renodr] - Update to gnome-autoar-0.2.2. Partially fixes #9024.
[renodr] - Update to AccountsService-0.6.45. Partially fixes #9024.
[renodr] - Update to vte-0.48.2. Partially fixes #9024.
[renodr] - Update to gnome-online-accounts-3.24.0. Partially fixes #9024.
[dj] - Updated to samba-4.6.3. Fixes #9173.
[bdubbs] - Added kwave-16.12.2.
[bdubbs] - Added fftw-3.3.6-pl2.
[renodr] - Update to gjs-1.48.2. Fixes #9152.
[bdubbs] - Update to unrar-5.5.3. Fixes #9178.
[bdubbs] - Update to nasm-2.13. Fixes #9179.
[bdubbs] - Update to unbound-1.6.2. Fixes #9180.
[dj] - Fix build issue with gegl and gobject-introspection >= 1.52.1.
April 29th, 2017
[pierre] - Update to FOP-2.2, reinstate OFFO hyphenation patterns and fix tests running. Fixes #9117.
[pierre] - Update to OpenJDK-1.8.0.131. Fixes #9144.
[bdubbs] - Update to unbound-1.6.1. Fixes #8910.
[dj] - Fix build issue with icu-59 for QTWebKit.
[renodr] - Update to xf86-video-nouveau-1.0.15 (Xorg Driver). Fixes #9155.
[renodr] - Update to Mesa-17.0.5. Fixes #9177.
[dj] - Fix build issue with gperf >= 3.1 for fontconfig.
[dj] - Fix build issue with gperf >= 3.1 for systemd.
April 27th, 2017
[bdubbs] - Update to Text-CSV-1.95 (Perl Module). Fixes #9175.
[bdubbs] - Update to Lingua-Translit-0.27 (Perl Module). Fixes #9174.
[bdubbs] - Update to libinput-1.7.1. Fixes #9169.
[bdubbs] - Update to nghttp2-1.22.0. Fixes #9167.
[bdubbs] - Update to harfbuzz-1.4.6. Fixes #9166.
[bdubbs] - Update to xapian-core-1.4.4. Fixes #9165.
[dj] - Update to ibus-1.5.15. Fixes #8975. Thanks to Armin for the fix.
April 26th, 2017
April 25th, 2017
[dj] - Update to p11-kit-0.23.5. Fixes #9162.
[dj] - Update to make-ca.sh-20170425.
April 24th, 2017
[renodr] - Fix cifs-utils dependencies by making Talloc a requirement.
[renodr] - Update to Jinja2-2.9.6. Fixes #9079.
April 23rd, 2017
April 22nd, 2017
[renodr] - Update to highlight-3.36. Fixes #9084.
[bdubbs] - Update to libepoxy-1.4.1. Fixes #9160.
[bdubbs] - Update to nss-3.30.2. Fixes #9159.
[bdubbs] - Update to bind9-9.11.1. Fixes #9158.
[bdubbs] - Update to poppler-0.54.0. Fixes #9157.
[bdubbs] - Update to thunderbird-52.0.1. Fixes #9066.
[bdubbs] - Update to emacs-25.2. Fixes #8579.
April 21st, 2017
April 19th, 2017
April 18th, 2017
April 16th, 2017
April 15th, 2017
April 14th, 2017
[bdubbs] - Update to LVM2-2.2.02.170. Fixes #9122.
[bdubbs] - Update to cmake-3.8.0. Fixes #9113.
[bdubbs] - Update to bind9-9.11.0-P5. Fixes #9125.
[ken] - Update to firefox-52.0.2. Fixes #9054.
[ken] - Update to mutt-1.8.1. Fixes #9121.
[bdubbs] - Update to libwww-perl-6.26 (perl-module). Fixes #9124.
[bdubbs] - Update to nano-2.8.1. Fixes #9123.
[bdubbs] - Update to Unicode-LineBreak-2017.004 (Perl Module). Fixes #9119.
[bdubbs] - Update to Text-CSV-1.94 (Perl Module). Fixes #9118.
[bdubbs] - Update to libva-1.8.1. Fixes #9116.
[bdubbs] - Update to pygobject3-3.24.1. Fixes #9114.
[bdubbs] - Update to libgusb-0.2.10. Fixes #9112.
[bdubbs] - Update to gobject-introspection-1.52.1. Fixes #9111.
[ken] - Reinstate llvm-3.9.1 (for rust), but in /opt and with altered build instructions. Fixes #8931.
[ken] - Add rustc-1.16.0 (the rust compiler) and cargo-0.17.0 (its so-called Package Manager). Fixes #8951.
April 12th, 2017
April 11th, 2017
[bdubbs] - Update to fuse-3.0.1.
[dj] - Added fuse-3.0.0. Fixes #8626.
[dj] - Install only library and utilities for fuse-2.x.
[dj] - Use internal fuse library by default for ntfs-3g.
April 10th, 2017
April 9th, 2017
April 8th, 2017
April 7th, 2017
April 6th, 2017
April 5th, 2017
[renodr] - Archived Geoclue. Fixes #9089.
[renodr] - Update to WebkitGTK+-2.16.0. Fixes #9033.
[renodr] - Update to geoclue-2.4.6. Partially fixes #9024.
[renodr] - Update to gjs-1.48.0. Partially fixes #9024.
[ken] - Update to asymptote-2.41. Fixes #9042.
[bdubbs] - Move mousepad to editors section. Fixes #9083.
[bdubbs] - Update to feh-2.18.3. Fixes #9088.
[bdubbs] - Update to libdrm-2.4.77. Fixes #9087.
[bdubbs] - Update to libpciaccess-0.13.5 (xorg-lib). Fixes #9086.
[bdubbs] - Update to Test-CSV-1.93 (perl-module). Fixes #9085.
April 4th, 2017
[bdubbs] - Update to tripwire-open-source-2.4.3.5. Fixes #9075.
[bdubbs] - Update to vala-0.36.1. Fixes #9082.
[bdubbs] - Update to mercurial-4.1.2. Fixes #9081.
[bdubbs] - Update to libwww-perl-6.25 (perl-module). Fixes #9080.
[bdubbs] - Update to gnupg-2.1.20. Fixes #9078.
[bdubbs] - Update to qemu-2.8.1. Fixes #9077.
[bdubbs] - Update to libsndfile-1.0.28. Fixes #9076.
[dj] - Fix installation of mozjs-38 headers.
April 3rd, 2017
[dj] - Update to ntfs-3g-2017.3.23. Fixes #9057.
April 2nd, 2017
[bdubbs] - Update to stunnel-5.41. Fixes #9073.
[bdubbs] - Update to mesa-17.0.3. Fixes #9072.
[bdubbs] - Update to libva-1.8.0. Fixes #9071.
[bdubbs] - Update to nano-2.8.0. Fixes #9070.
[bdubbs] - Update to Text-CSV-1.92 (Perl Module). Fixes #9074.
[bdubbs] - Update to btrfs-progs-4.10.2. Fixes #9069.
April 1st, 2017
March 31st, 2017
March 29th, 2017
[bdubbs] - Update to liblinear-211. Fixes #9058.
[bdubbs] - Update to LVM2-2.2.02.169. Fixes #9056.
[bdubbs] - Update to gpgme-1.9.0. Fixes #9055.
[bdubbs] - Update to nghttp2-1.21.0. Fixes #9053.
[bdubbs] - Update to gdk-pixbuf-2.36.6. Fixes #9052.
[bdubbs] - Update to cups-2.2.3. Fixes #9059.
[bdubbs] - Added libidn2 as an optional external dependency of GnuTLS. Fixes #9043.
March 26th, 2017
[bdubbs] - Add GnuTLS as an optional dependency of GnuPG. Fixes #9044.
[bdubbs] - Update libcdio aux file to libcdio-paranoia-10.2+0.94+1. Fixes #9051.
[bdubbs] - Update to Text-BibTeX-0.80 (Perl Mopdule). Fixes #9050.
[bdubbs] - Update to Net-DNS-1.09 (Perl Module). Fixes #9048.
[bdubbs] - Update to git 2.12.2. Fixes #9049.
[bdubbs] - Update to nspr 4.14. Fixes #9047.
[dj] - Enabled user session support in DBus and use real path for PID file and system socket.
[dj] - Added sed command to differentiate between Plasma sessions on Xorg and Wayland in display managers.
March 24th, 2017
[dj] - Remove unneeded '-DLIB_INSTALL_DIR' from KF5 and Plasma build instructions.
[dj] - Clean up Chromium instructions. Thanks Bruce.
March 23rd, 2017
[bdubbs] - Update to libinput 1.7.0. Fixes #9040.
[bdubbs] - Update to ruby 2.4.1. Fixes #9041.
[bdubbs] - Update to ntp-4.2.8p10. Fixes #9039.
[bdubbs] - python3-3.6.1. Fixes #9038.
[renodr] - Update to pyatspi2-2.24.0. Partially fixes #9024.
[renodr] - Update to pygobject-3.24.0. Partially fixes #9024.
March 21st, 2017
[ken] - Update to asymptote-2.40. Fixes #8959.
[ken] - Update to xf86-video-ati-7.9.0. Fixes #9009.
[renodr] - Update to gobject-introspection-1.52.0. Partially fixes #9024.
[renodr] - Update to at-spi2-atk-2.24.0. Partially fixes #9024.
[renodr] - Update to at-api2-core-2.24.0. Partially fixes #9024.
[renodr] - Update to adwaita-icon-theme-3.24.0. Partially fixes #9024.
[bdubbs] - Update to git-2.12.1. Fixes #9036.
[bdubbs] - Update to openssh-7.5p1. Fixes #9035.
[bdubbs] - Update to goffice-0.10.34. Fixes #9037.
[bdubbs] - Update to gnumeric-1.12.34. Fixes #9034.
March 20th, 2017
March 19th, 2017
[bdubbs] - Update to json-glib-1.2.8. Fixes #9020.
[bdubbs] - Update to vala-0.36.0. Fixes #9021.
[bdubbs] - Update to pidgin-2.12.0. Fixes #9018.
[bdubbs] - Update to newt-0.52.20. Fixes #9017.
[dj] - Add Flash Player 25.0.0.127 and move instrucionts for Chromium Flash Player installation. Fixes #9019.
[bdubbs] - Update to btrfs-progs-v4.10.1. Fixes #9016.
[dj] - Update to chromium-57.0.2987.101. Fixes #8994.
March 18th, 2017
[dj] - Corrected schema issues in IBus and Telepathy-Logger.
[dj] - Update to gdm-3.22.2. Fixes #8949.
[dj] - Update to gnome-session-3.22.3. Fixes #8992.
[dj] - Update to evolution-3.22.6. Fixes #8993.
[dj] - Update to evolution-data-server-3.22.6. Fixes #8993.
[dj] - Update to gnome-online-accounts-3.22.5. Fixes #8993.
[dj] - Update to gnome-autoar-0.2.1. Fixes #8960.
[dj] - Update to uhttpmock-0.5.1. Fixes #8968.
[dj] - Update to libgdata-0.17.7. Fixes #8969.
March 17th, 2017
[bdubbs] - Update to ghostscript-9.21. Fixes #9014.
[bdubbs] - Update to xfwm4-4.12.4. Fixes #9012.
[bdubbs] - Update to php-7.1.3. Fixes #9011.
[bdubbs] - Update to libpng-1.6.29. Fixes #9010.
[bdubbs] - Update to guile-2.2.0. Fixes #9008.
[bdubbs] - Update to keyutils-1.5.10. Fixes #9007.
[bdubbs] - Update to llvm-4.0.0. Fixes #9006.
[bdubbs] - Update to nss-3.30. Fixes #9005.
[dj] - Update to network-manager-appliet-1.4.6. Fixes #8977.
[dj] - Update to gnome-control-center-3.22.2. Fixes #9001.
[dj] - Update to gnome-settings-deamon-3.22.2. Fixes #9001.
[dj] - Update to nautilus-3.22.3. Fixes #8987.
March 15th, 2017
[bdubbs] - Update to xorg-server 1.19.3. Fixes #8957.
March 15th, 2017
March 14th, 2017
[ken] - Change the details of updating microcode in 'About Firmware' to match what happens in 4.9 kernels. Fixes #8963.
[renodr] - Update to json-glib-1.2.6. Fixes #8997.
[renodr] - Update to gtk+-3.22.10. Fixes #8999.
[bdubbs] - Update to Text-BibTeX-0.79 (Perl Module). Fixes #8998.
[bdubbs] - Update to harfbuzz-1.4.5. Fixes #8995.
[bdubbs] - Update to xf86-video-nouveau-1.0.14. Fixes #8996.
March 11th, 2017
[renodr] - Update to xf86-input-wacom-0.34.2. Fixes #8991.
March 10th, 2017
March 9th, 2017
[dj] - Update to dbus-1.10.16. Fixes #8891.
March 8th, 2017
[ken] - firefox-52.0 (pulseaudio is now preferred). Fixes #8979.
[ken] - Change how libICE (xorg-lib) is compiled because of a problem in pulseaudio, add further switch to pulseaudio. Fixes #8980.
[renodr] - Update to MarkupSafe-1.0. Fixes #8981.
[renodr] - Update to cifs-utils-6.7. Fixes #8956.
[bdubbs] - Update to thunderbird-45.8.0. Fixes #8978.
[bdubbs] - Update to vala-0.34.6. Fixes #8982.
[renodr] - Update to highlight-3.35 and make available to sysv. Fixes #8942.
[dj] - Add ~/.profile to bash shell startup files.
[dj] - Start gnome-session with a login shell so that environment settings are imported in Wayland sessions.
March 7th, 2017
March 6th, 2017
March 5th, 2017
[ken] - Update to mutt-1.8.0. Fixes #8917.
[bdubbs] - Update firmware discussion for Intel CPUs . Partially fixes #8929.
[bdubbs] - Update to mpg123 1.24.0. Fixes #8958.
[bdubbs] - Update to vala 0.34.5. Fixes #8955.
[bdubbs] - Update to mercurial 4.1.1. Fixes #8954.
[bdubbs] - Update to libwww-perl-6.22 (perl-module). Fixes #8948.
[bdubbs] - Update to tidy-5.4.0. Fixes #8947.
[bdubbs] - Update to gnupg-2.1.19. Fixes #8945.
[pierre] - Update to gstreamer, gstreamer-vaapi, gst-libav, gst-plugins-base, gst-plugins-good, gst-plugins-bad, and gst-plugins-ugly 1.10.4. Fixes #8914.
March 4th, 2017
March 3rd, 2017
March 1st, 2017
[renodr] - Update to File-Roller-3.22.3. Fixes #8927.
[renodr] - Update to Appstream-GLib-0.6.9. Fixes #8932.
[renodr] - Update to colord-1.3.5. Fixes #8935.
[renodr] - Update to wayland-1.13.0. Fixes #8906.
[renodr] - Update to gnome-autoar-0.2.0. Fixes #8912.
[bdubbs] - Update to sessreg-1.1.1 (xorg app). Fixes #8937.
[bdubbs] - Update to postfix-3.2.0. Fixes #8943.
[bdubbs] - Update to libgpg-error-1.27. Fixes #8941.
February 28th, 2017
[bdubbs] - Update to pango-1.40.4. Fixes #8939.
[bdubbs] - Update to gtk+3.22.9. Fixes #8938.
[bdubbs] - Update to sysstat-11.5.5. Fixes #8936.
[bdubbs] - Update to gegl-0.3.14. Fixes #8934.
[bdubbs] - Update to talloc-2.1.9. Fixes #8933.
[bdubbs] - Update to logrotate-3.11.0. Fixes #8928.
[renodr] - Update to curl-7.53.1. Fixes #8909.
[renodr] - Update to lxml-3.7.3. Fixes #8900.
[renodr] - Update to pciutils-3.5.4. Fixes #8887.
February 27th, 2017
February 26th, 2017
[bdubbs] - Update to git-2.12.0. Fixes #8916.
[bdubbs] - Update to inkscape-0.92.1. Fixes #8899.
[bdubbs] - Update to xine-lib-1.2.8. Fixes #8920.
[bdubbs] - Update to nano-2.7.5. Fixes #8919.
[bdubbs] - Update to phonon-backend-vlc-0.9.1. Fixes #8913.
[bdubbs] - Update to libsigsegv-2.11. Fixes #8905.
[bdubbs] - Update to NSS-3.29.1. Fixes #8894.
[bdubbs] - Update to poppler-0.52.0. Fixes #8802.
[bdubbs] - Update to libinput-1.6.2. Fixes #8902.
[bdubbs] - Update to mesa-17.0.0. Fixes #8884.
[bdubbs] - Update to harfbuzz-1.4.3. Fixes #8921.
[bdubbs] - Update to libX11-1.6.5 (xorg library). Fixes #8923.
[bdubbs] - Update to libwww-perl-6.21 (Perl module). Fixes #8908.
[bdubbs] - Update to Log-Log4perl-1.49 (Perl module). Fixes #8907.
[bdubbs] - Update to Net-DNS-1.08 (Perl module). Fixes #8901.
February 25th, 2017
[bdubbs] - Release of BLFS-8.0.
Last updated on 2017-09-01 16:28:10 -0700
The linuxfromscratch.org server is hosting a number of mailing lists that are used for the development of the BLFS book. These lists include, among others, the main development and support lists.
For more information regarding which lists are available, how to subscribe to them, archive locations, etc., visit http://www.linuxfromscratch.org/mail.html.
Last updated on 2007-04-04 12:42:53 -0700
The BLFS Project has created a Wiki for users to comment on pages and instructions at http://wiki.linuxfromscratch.org/blfs/wiki. Comments are welcome from all users.
The following are the rules for posting:
Users must register and log in to edit a page.
Suggestions to change the book should be made by creating a new ticket, not by making comments in the Wiki.
Questions with your specific installation problems should be made by subscribing and mailing to the BLFS Support Mailing List at mailto:blfs-support AT linuxfromscratch D0T org.
Discussions of build instructions should be made by subscribing and mailing to the BLFS Development List at mailto:blfs-dev AT linuxfromscratch D0T org.
Inappropriate material will be removed.
Last updated on 2007-04-04 12:42:53 -0700
If you encounter a problem while using this book, and your problem is not listed in the FAQ (http://www.linuxfromscratch.org/faq), you will find that most of the people on Internet Relay Chat (IRC) and on the mailing lists are willing to help you. An overview of the LFS mailing lists can be found in Mailing lists. To assist us in diagnosing and solving your problem, include as much relevant information as possible in your request for help.
Before asking for help, you should review the following items:
Is the hardware support compiled into the kernel or
available as a module to the kernel? If it is a module,
is it configured properly in modprobe.conf
and has it been loaded?
You should use lsmod as the
root
user to see if
it's loaded. Check the sys.log
file or run modprobe <driver>
to review any error message. If it loads properly, you
may need to add the modprobe command to
your boot scripts.
Are your permissions properly set, especially for
devices? LFS uses groups to make these settings easier,
but it also adds the step of adding users to groups to
allow access. A simple usermod -G audio <user>
may be all that's necessary for that user to have
access to the sound system. Any question that starts
out with “It works as root,
but not as ...” requires a thorough review
of permissions prior to asking.
BLFS liberally uses /opt/
.
The main objection to this centers around the need to
expand your environment variables for each package
placed there (e.g., PATH=$PATH:/opt/kde/bin). In most
cases, the package instructions will walk you through
the changes, but some will not. The section called
“Going Beyond
BLFS” is available to help you check.
<package>
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 8.1),
the package or section giving you problems,
the exact error message or symptom you are receiving,
whether you have deviated from the book or LFS at all,
if you are installing a BLFS package on a non-LFS system.
(Note that saying that you've deviated from the book doesn't mean that we won't help you. It'll just help us to see other possible causes of your problem.)
Expect guidance instead of specific instructions. If you are instructed to read something, please do so. It generally implies that the answer was way too obvious and that the question would not have been asked if a little research was done prior to asking. The volunteers in the mailing list prefer not to be used as an alternative to doing reasonable research on your end. In addition, the quality of your experience with BLFS is also greatly enhanced by this research, and the quality of volunteers is enhanced because they don't feel that their time has been abused, so they are far more likely to participate.
An excellent article on asking for help on the Internet in general has been written by Eric S. Raymond. It is available online at http://www.catb.org/~esr/faqs/smart-questions.html. Read and follow the hints in that document and you are much more likely to get a response to start with and also to get the help you actually need.
Last updated on 2009-09-24 22:43:37 -0700
Many people have contributed both directly and indirectly to BLFS. This page lists all of those we can think of. We may well have left people out and if you feel this is the case, drop us a line. Many thanks to all of the LFS community for their assistance with this project.
Bruce Dubbs
Pierre Labastie
DJ Lucas
Ken Moffat
Douglas Reno
The list of contributors is far too large to provide detailed information about the contributions for each contributor. Over the years, the following individuals have provided significant inputs to the book:
Timothy Bauscher
Daniel Bauman
Jeff Bauman
Andy Benton
Wayne Blaszczyk
Paul Campbell
Nathan Coulson
Jeroen Coumans
Guy Dalziel
Robert Daniels
Richard Downing
Manuel Canales Esparcia
Jim Gifford
Manfred Glombowski
Ag Hatzimanikas
Mark Hymers
James Iwanek
David Jensen
Jeremy Jones
Seth Klein
Alex Kloss
Eric Konopka
Larry Lawrence
Chris Lynn
Andrew McMurry
Randy McMurchy
Denis Mugnier
Billy O'Connor
Fernando de Oliveira
Alexander Patrakov
Olivier Peres
Andreas Pedersen
Henning Rohde
Matt Rogers
James Robertson
Henning Rohde
Chris Staub
Jesse Tie-Ten-Quee
Ragnar Thomsen
Thomas Trepl
Tushar Teredesai
Jeremy Utley
Zack Winkles
Christian Wurst
Igor Živković
Fernando Arbeiza
Miguel Bazdresch
Gerard Beekmans
Oliver Brakmann
Jeremy Byron
Ian Chilton
David Ciecierski
Jim Harris
Lee Harris
Marc Heerdink
Steffen Knollmann
Eric Konopka
Scot McPherson
Ted Riley
Last updated on 2016-09-22 03:11:55 -0700
Please direct your emails to one of the BLFS mailing lists. See Mailing lists for more information on the available mailing lists.
Last updated on 2012-02-05 21:15:51 -0800
This chapter is used to explain some of the policies used throughout the book, to introduce important concepts and to explain some issues you may see with some of the included packages.
Those people who have built an LFS system may be aware of the general principles of downloading and unpacking software. Some of that information is repeated here for those new to building their own software.
Each set of installation instructions contains a URL from which you can download the package. The patches; however, are stored on the LFS servers and are available via HTTP. These are referenced as needed in the installation instructions.
While you can keep the source files anywhere you like, we assume that you have unpacked the package and changed into the directory created by the unpacking process (the 'build' directory). We also assume you have uncompressed any required patches and they are in the directory immediately above the 'build' directory.
We can not emphasize strongly enough that you should start from
a clean source tree each
time. This means that if you have had an error during
configuration or compilation, it's usually best to delete the
source tree and re-unpack it before trying again. This obviously
doesn't apply if you're an advanced user used to hacking
Makefile
s and C code, but if in
doubt, start from a clean tree.
The golden rule of Unix System Administration is to use your
superpowers only when necessary. Hence, BLFS recommends that
you build software as an unprivileged user and only become
the root
user when installing
the software. This philosophy is followed in all the packages
in this book. Unless otherwise specified, all instructions
should be executed as an unprivileged user. The book will
advise you on instructions that need root
privileges.
If a file is in .tar
format and
compressed, it is unpacked by running one of the following
commands:
tar -xvf filename.tar.gz tar -xvf filename.tgz tar -xvf filename.tar.Z tar -xvf filename.tar.bz2
You may omit using the v
parameter in the commands shown above and below if you wish
to suppress the verbose listing of all the files in the
archive as they are extracted. This can help speed up the
extraction as well as make any errors produced during the
extraction more obvious to you.
You can also use a slightly different method:
bzcat filename.tar.bz2 | tar -xv
Finally, you sometimes need to be able to unpack patches
which are generally not in .tar
format. The best way to do this is to copy the patch file to
the parent of the 'build' directory and then run one of the
following commands depending on whether the file is a
.gz
or .bz2
file:
gunzip -v patchname.gz bunzip2 -v patchname.bz2
Generally, to verify that the downloaded file is genuine and
complete, many package maintainers also distribute md5sums of
the files. To verify the md5sum of the downloaded files,
download both the file and the corresponding md5sum file to
the same directory (preferably from different on-line
locations), and (assuming file.md5sum
is the md5sum file downloaded)
run the following command:
md5sum -c file.md5sum
If there are any errors, they will be reported. Note that the
BLFS book includes md5sums for all the source files also. To
use the BLFS supplied md5sums, you can create a file.md5sum
(place the md5sum data and the
exact name of the downloaded file on the same line of a file,
separated by white space) and run the command shown above.
Alternately, simply run the command shown below and compare
the output to the md5sum data shown in the BLFS book.
md5sum <name_of_downloaded_file>
For larger packages, it is convenient to create log files
instead of staring at the screen hoping to catch a particular
error or warning. Log files are also useful for debugging and
keeping records. The following command allows you to create
an installation log. Replace <command>
with the
command you intend to execute.
( <command>
2>&1 | tee compile.log && exit $PIPESTATUS )
2>&1
redirects error
messages to the same location as standard output. The
tee command
allows viewing of the output while logging the results to a
file. The parentheses around the command run the entire
command in a subshell and finally the exit $PIPESTATUS command
ensures the result of the <command>
is returned
as the result and not the result of the tee command.
For many modern systems with multiple processors (or cores) the compilation time for a package can be reduced by performing a "parallel make" by either setting an environment variable or telling the make program how many processors are available. For instance, a Core2Duo can support two simultaneous processes with:
export MAKEFLAGS='-j2'
or just building with:
make -j2
Generally the number of processes should not exceed the
number of cores supported by the CPU. To list the processors
on your system, issue: grep
processor /proc/cpuinfo
.
In some cases, using multiple processors may result in a 'race' condition where the success of the build depends on the order of the commands run by the make program. For instance, if an executable needs File A and File B, attempting to link the program before one of the dependent components is available will result in a failure. This condition usually arises because the upstream developer has not properly designated all the prerequsites needed to accomplish a step in the Makefile.
If this occurs, the best way to proceed is to drop back to a single processor build. Adding '-j1' to a make command will override the similar setting in the MAKEFLAGS environment variable.
There are times when automating the building of a package can
come in handy. Everyone has their own reasons for wanting to
automate building, and everyone goes about it in their own
way. Creating Makefile
s,
Bash scripts, Perl scripts or simply a list of
commands used to cut and paste are just some of the methods
you can use to automate building BLFS packages. Detailing how
and providing examples of the many ways you can automate the
building of packages is beyond the scope of this section.
This section will expose you to using file redirection and
the yes command
to help provide ideas on how to automate your builds.
You will find times throughout your BLFS journey when you will come across a package that has a command prompting you for information. This information might be configuration details, a directory path, or a response to a license agreement. This can present a challenge to automate the building of that package. Occasionally, you will be prompted for different information in a series of questions. One method to automate this type of scenario requires putting the desired responses in a file and using redirection so that the program uses the data in the file as the answers to the questions.
Building the CUPS package is a good example of how redirecting a file as input to prompts can help you automate the build. If you run the test suite, you are asked to respond to a series of questions regarding the type of test to run and if you have any auxiliary programs the test can use. You can create a file with your responses, one response per line, and use a command similar to the one shown below to automate running the test suite:
make check < ../cups-1.1.23-testsuite_parms
This effectively makes the test suite use the responses in the file as the input to the questions. Occasionally you may end up doing a bit of trial and error determining the exact format of your input file for some things, but once figured out and documented you can use this to automate building the package.
Sometimes you will only need to provide one response, or provide the same response to many prompts. For these instances, the yes command works really well. The yes command can be used to provide a response (the same one) to one or more instances of questions. It can be used to simulate pressing just the Enter key, entering the Y key or entering a string of text. Perhaps the easiest way to show its use is in an example.
First, create a short Bash script by entering the following commands:
cat > blfs-yes-test1 << "EOF"
#!/bin/bash
echo -n -e "\n\nPlease type something (or nothing) and press Enter ---> "
read A_STRING
if test "$A_STRING" = ""; then A_STRING="Just the Enter key was pressed"
else A_STRING="You entered '$A_STRING'"
fi
echo -e "\n\n$A_STRING\n\n"
EOF
chmod 755 blfs-yes-test1
Now run the script by issuing ./blfs-yes-test1 from the command line. It will wait for a response, which can be anything (or nothing) followed by the Enter key. After entering something, the result will be echoed to the screen. Now use the yes command to automate the entering of a response:
yes | ./blfs-yes-test1
Notice that piping yes by itself to the script results in y being passed to the script. Now try it with a string of text:
yes 'This is some text' | ./blfs-yes-test1
The exact string was used as the response to the script. Finally, try it using an empty (null) string:
yes '' | ./blfs-yes-test1
Notice this results in passing just the press of the Enter key to the script. This is useful for times when the default answer to the prompt is sufficient. This syntax is used in the Net-tools instructions to accept all the defaults to the many prompts during the configuration step. You may now remove the test script, if desired.
In order to automate the building of some packages, especially those that require you to read a license agreement one page at a time, requires using a method that avoids having to press a key to display each page. Redirecting the output to a file can be used in these instances to assist with the automation. The previous section on this page touched on creating log files of the build output. The redirection method shown there used the tee command to redirect output to a file while also displaying the output to the screen. Here, the output will only be sent to a file.
Again, the easiest way to demonstrate the technique is to show an example. First, issue the command:
ls -l /usr/bin | more
Of course, you'll be required to view the output one page at
a time because the more filter was used. Now
try the same command, but this time redirect the output to a
file. The special file /dev/null
can be used instead of the
filename shown, but you will have no log file to examine:
ls -l /usr/bin | more > redirect_test.log 2>&1
Notice that this time the command immediately returned to the shell prompt without having to page through the output. You may now remove the log file.
The last example will use the yes command in combination with output redirection to bypass having to page through the output and then provide a y to a prompt. This technique could be used in instances when otherwise you would have to page through the output of a file (such as a license agreement) and then answer the question of “do you accept the above?”. For this example, another short Bash script is required:
cat > blfs-yes-test2 << "EOF"
#!/bin/bash
ls -l /usr/bin | more
echo -n -e "\n\nDid you enjoy reading this? (y,n) "
read A_STRING
if test "$A_STRING" = "y"; then A_STRING="You entered the 'y' key"
else A_STRING="You did NOT enter the 'y' key"
fi
echo -e "\n\n$A_STRING\n\n"
EOF
chmod 755 blfs-yes-test2
This script can be used to simulate a program that requires you to read a license agreement, then respond appropriately to accept the agreement before the program will install anything. First, run the script without any automation techniques by issuing ./blfs-yes-test2.
Now issue the following command which uses two automation techniques, making it suitable for use in an automated build script:
yes | ./blfs-yes-test2 > blfs-yes-test2.log 2>&1
If desired, issue tail blfs-yes-test2.log to see the end of the paged output, and confirmation that y was passed through to the script. Once satisfied that it works as it should, you may remove the script and log file.
Finally, keep in mind that there are many ways to automate and/or script the build commands. There is not a single “correct” way to do it. Your imagination is the only limit.
For each package described, BLFS lists the known dependencies. These are listed under several headings, whose meaning is as follows:
Required means that the target package cannot be correctly built without the dependency having first been installed.
Recommended means that BLFS strongly suggests this package is installed first for a clean and trouble-free build, that won't have issues either during the build process, or at run-time. The instructions in the book assume these packages are installed. Some changes or workarounds may be required if these packages are not installed.
Optional means that this package might be installed for added functionality. Often BLFS will describe the dependency to explain the added functionality that will result.
On occasion you may run into a situation in the book when a package will not build or work properly. Though the Editors attempt to ensure that every package in the book builds and works properly, sometimes a package has been overlooked or was not tested with this particular version of BLFS.
If you discover that a package will not build or work properly, you should see if there is a more current version of the package. Typically this means you go to the maintainer's web site and download the most current tarball and attempt to build the package. If you cannot determine the maintainer's web site by looking at the download URLs, use Google and query the package's name. For example, in the Google search bar type: 'package_name download' (omit the quotes) or something similar. Sometimes typing: 'package_name home page' will result in you finding the maintainer's web site.
In LFS, stripping of debugging symbols was discussed a couple of times. When building BLFS packages, there are generally no special instructions that discuss stripping again. It is probably not a good idea to strip an executable or a library while it is in use, so exiting any windowing environment is a good idea. Then you can do:
find /{,usr/}{bin,lib,sbin} -type f -exec strip --strip-unneeded {} \;
If you install programs in other directories such as /opt or /usr/local, you may want to strip the files there too.
For more information on stripping, see http://www.technovelty.org/linux/stripping-shared-libraries.html.
One of the side effects of packages that use Autotools, including libtool, is that they create many files with an .la extension. These files are not needed in an LFS environment. If there are conflicts with pkgconfig entries, they can actually prevent successful builds. You may want to consider removing these files periodically:
find /lib /usr/lib -not -path "*Image*" -a -name \*.la -delete
The above command removes all .la files with the exception of those that have "Image" as a part of the path. These .la files are used by the ImageMagick programs. There may be other exceptions by packages not in BLFS.
Last updated on 2015-11-13 06:24:57 -0800
Should I install XXX in /usr
or /usr/local
?
This is a question without an obvious answer for an LFS based system.
In traditional Unix systems, /usr
usually contains files that come with the system distribution,
and the /usr/local
tree is free
for the local administrator to manage. The only really hard and
fast rule is that Unix distributions should not touch
/usr/local
, except perhaps to
create the basic directories within it.
With Linux distributions like Red Hat, Debian, etc., a possible
rule is that /usr
is managed by
the distribution's package system and /usr/local
is not. This way the package
manager's database knows about every file within /usr
.
LFS users build their own system and so deciding where the
system ends and local files begin is not straightforward. So
the choice should be made in order to make things easier to
administer. There are several reasons for dividing files
between /usr
and /usr/local
.
On a network of several machines all running LFS, or
mixed LFS and other Linux distributions, /usr/local
could be used to hold
packages that are common between all the computers in the
network. It can be NFS mounted or mirrored from a single
server. Here local indicates local to the site.
On a network of several computers all running an
identical LFS system, /usr/local
could hold packages that are
different between the machines. In this case local refers
to the individual computers.
Even on a single computer, /usr/local
can be useful if you have
several distributions installed simultaneously, and want
a place to put packages that will be the same on all of
them.
Or you might regularly rebuild your LFS, but want a place to put files that you don't want to rebuild each time. This way you can wipe the LFS file system and start from a clean partition every time without losing everything.
Some people ask why not use your own directory tree, e.g.,
/usr/site
, rather than
/usr/local
?
There is nothing stopping you, many sites do make their own
trees, however it makes installing new software more difficult.
Automatic installers often look for dependencies in
/usr
and /usr/local
, and if the file it is looking for
is in /usr/site
instead, the
installer will probably fail unless you specifically tell it
where to look.
What is the BLFS position on this?
All of the BLFS instructions install programs in /usr
with optional instructions to install
into /opt
for some specific
packages.
Last updated on 2007-04-04 12:42:53 -0700
As you follow the various sections in the book, you will observe that the book occasionally includes patches that are required for a successful and secure installation of the packages. The general policy of the book is to include patches that fall in one of the following criteria:
Fixes a compilation problem.
Fixes a security problem.
Fixes a broken functionality.
In short, the book only includes patches that are either required or recommended. There is a Patches subproject which hosts various patches (including the patches referenced in the books) to enable you to configure your LFS the way you like it.
Last updated on 2007-04-04 12:42:53 -0700
The BLFS Systemd Units package contains the systemd unit files that are used throughout the book.
Package Information
The BLFS Systemd Units package will be used throughout the BLFS
book for systemd unit files. Each systemd unit has a separate
install target. It is recommended that you keep the package
source directory around until completion of your BLFS system.
When a systemd unit is requested from BLFS Systemd Units,
simply change to the directory, and as the root
user, execute the given make install-<systemd-unit>
command. This command installs the systemd unit to its proper
location (along with any auxiliary configuration scripts) and
also enables it by default.
It is advisable to peruse each systemd unit before installation to determine whether the installed files meet your needs.
Last updated on 2016-08-14 18:09:16 -0700
The original libraries were simply an archive of routines from which the required routines were extracted and linked into the executable program. These are described as static libraries (libfoo.a). On some old operating systems they are the only type available.
On almost all Linux platforms there are also shared libraries (libfoo.so) - one copy of the library is loaded into virtual memory, and shared by all the programs which call any of its functions. This is space efficient.
In the past, essential programs such as a shell were often
linked statically so that some form of minimal recovery
system would exist even if shared libraries, such as libc.so,
became damaged (e.g. moved to lost+found
after fsck following an unclean
shutdown). Nowadays, most people use an alternative system
install or a Live CD if they have to recover. Journaling
filesystems also reduce the likelihood of this sort of
problem.
Developers, at least while they are developing, often prefer to use static versions of the libraries which their code links to.
Within the book, there are various places where configure switches such as --disable-static are employed, and other places where the possibility of using system versions of libraries instead of the versions included within another package is discussed. The main reason for this is to simplify updates of libraries.
If a package is linked to a dynamic library, updating to a newer library version is automatic once the newer library is installed and the program is (re)started (provided the library major version is unchanged, e.g. going from libfoo.so.2.0 to libfoo.so.2.1. Going to libfoo.so.3 will require recompilation - ldd can be used to find which programs use the old version). If a program is linked to a static library, the program always has to be recompiled. If you know which programs are linked to a particular static library, this is merely an annoyance. But usually you will not know which programs to recompile.
Most libraries are shared, but if you do something unusual,
such as moving a shared library to /lib
accidentally breaking the .so
symlink in /usr/lib
while keeping the static library
in /lib
, the static library
will be silently linked into the programs which need it.
One way to identify when a static library is used, is to deal
with it at the end of the installation of every package.
Write a script to find all the static libraries in
/usr/lib
or wherever you are
installing to, and either move them to another directory so
that they are no longer found by the linker, or rename them
so that libfoo.a becomes e.g. libfoo.a.hidden. The static
library can then be temporarily restored if it is ever
needed, and the package needing it can be identified. You may
choose to exclude some of the static libraries from glibc if
you do this (libc_nonshared.a, libg.a,
libieee.a, libm.a, libpthread_nonshared.a, librpcsvc.a,
libsupc++.a
) to simplify compilation.
If you use this approach, you may discover that more packages than you were expecting use a static library. That was the case with nettle-2.4 in its default static-only configuration: It was required by GnuTLS-3.0.19, but also linked into package(s) which used GnuTLS, such as glib-networking-2.32.3.
Many packages put some of their common functions into a static library which is only used by the programs within the package and, crucially, the library is not installed as a standalone library. These internal libraries are not a problem - if the package has to be rebuilt to fix a bug or vulnerability, nothing else is linked to them.
When BLFS mentions system libraries, it means shared versions of libraries. Some packages such as Firefox-55.0.3 and ghostscript-9.21 include many other libraries. When they link to them, they link statically so this also makes the programs bigger. The version they ship is often older than the version used in the system, so it may contain bugs - sometimes developers go to the trouble of fixing bugs in their included libraries, other times they do not.
Sometimes, deciding to use system libraries is an easy decision. Other times it may require you to alter the system version (e.g. for libpng-1.6.31 if used for Firefox-55.0.3). Occasionally, a package ships an old library and can no longer link to the current version, but can link to an older version. In this case, BLFS will usually just use the shipped version. Sometimes the included library is no longer developed separately, or its upstream is now the same as the package's upstream and you have no other packages which will use it. In those cases, you might decide to use the included static library even if you usually prefer to use system libraries.
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libraries
Last updated on 2015-09-20 15:38:20 -0700
This page contains information about locale related problems and issues. In the following paragraphs you'll find a generic overview of things that can come up when configuring your system for various locales. Many (but not all) existing locale related problems can be classified and fall under one of the headings below. The severity ratings below use the following criteria:
Critical: The program doesn't perform its main function. The fix would be very intrusive, it's better to search for a replacement.
High: Part of the functionality that the program provides is not usable. If that functionality is required, it's better to search for a replacement.
Low: The program works in all typical use cases, but lacks some functionality normally provided by its equivalents.
If there is a known workaround for a specific package, it will appear on that package's page. For the most recent information about locale related issues for individual packages, check the User Notes in the BLFS Wiki.
Severity: Critical
Some programs require the user to specify the character
encoding for their input or output data and present only a
limited choice of encodings. This is the case for the
-X
option in a2ps-4.14 and Enscript-1.6.6, the -input-charset
option in unpatched Cdrtools-3.02a07, and the character
sets offered for display in the menu of Links-2.14. If the required
encoding is not in the list, the program usually becomes
completely unusable. For non-interactive programs, it may be
possible to work around this by converting the document to a
supported input character set before submitting to the
program.
A solution to this type of problem is to implement the necessary support for the missing encoding as a patch to the original program or to find a replacement.
Severity: High for non-text documents, low for text documents
Some programs, nano-2.8.7 or JOE-4.4 for example, assume that documents are always in the encoding implied by the current locale. While this assumption may be valid for the user-created documents, it is not safe for external ones. When this assumption fails, non-ASCII characters are displayed incorrectly, and the document may become unreadable.
If the external document is entirely text based, it can be converted to the current locale encoding using the iconv program.
For documents that are not text-based, this is not possible. In fact, the assumption made in the program may be completely invalid for documents where the Microsoft Windows operating system has set de facto standards. An example of this problem is ID3v1 tags in MP3 files (see the BLFS Wiki ID3v1Coding page for more details). For these cases, the only solution is to find a replacement program that doesn't have the issue (e.g., one that will allow you to specify the assumed document encoding).
Among BLFS packages, this problem applies to nano-2.8.7, JOE-4.4, and all media players except Audacious-3.9.
Another problem in this category is when someone cannot read the documents you've sent them because their operating system is set up to handle character encodings differently. This can happen often when the other person is using Microsoft Windows, which only provides one character encoding for a given country. For example, this causes problems with UTF-8 encoded TeX documents created in Linux. On Windows, most applications will assume that these documents have been created using the default Windows 8-bit encoding.
In extreme cases, Windows encoding compatibility issues may be solved only by running Windows programs under Wine.
Severity: Critical
The POSIX standard mandates that the filename encoding is the
encoding implied by the current LC_CTYPE locale category.
This information is well-hidden on the page which specifies
the behavior of Tar and
Cpio programs. Some programs
get it wrong by default (or simply don't have enough
information to get it right). The result is that they create
filenames which are not subsequently shown correctly by
ls, or they
refuse to accept filenames that ls shows properly. For the
GLib-2.52.3 library, the problem can be
corrected by setting the G_FILENAME_ENCODING
environment variable to
the special "@locale" value. Glib2 based programs that don't respect
that environment variable are buggy.
The Zip-3.0 and UnZip-6.0 have this problem because they hard-code the expected filename encoding. UnZip contains a hard-coded conversion table between the CP850 (DOS) and ISO-8859-1 (UNIX) encodings and uses this table when extracting archives created under DOS or Microsoft Windows. However, this assumption only works for those in the US and not for anyone using a UTF-8 locale. Non-ASCII characters will be mangled in the extracted filenames.
The general rule for avoiding this class of problems is to avoid installing broken programs. If this is impossible, the convmv command-line tool can be used to fix filenames created by these broken programs, or intentionally mangle the existing filenames to meet the broken expectations of such programs.
In other cases, a similar problem is caused by importing filenames from a system using a different locale with a tool that is not locale-aware (e.g., OpenSSH-7.5p1). In order to avoid mangling non-ASCII characters when transferring files to a system with a different locale, any of the following methods can be used:
Transfer anyway, fix the damage with convmv.
On the sending side, create a tar archive with the
--format=posix
switch passed to tar (this will be the
default in a future version of tar).
Mail the files as attachments. Mail clients specify the encoding of attached filenames.
Write the files to a removable disk formatted with a FAT or FAT32 filesystem.
Transfer the files using Samba.
Transfer the files via FTP using RFC2640-aware server (this currently means only wu-ftpd, which has bad security history) and client (e.g., lftp).
The last four methods work because the filenames are automatically converted from the sender's locale to UNICODE and stored or sent in this form. They are then transparently converted from UNICODE to the recipient's locale encoding.
Severity: High or critical
Many programs were written in an older era where multibyte locales were not common. Such programs assume that C "char" data type, which is one byte, can be used to store single characters. Further, they assume that any sequence of characters is a valid string and that every character occupies a single character cell. Such assumptions completely break in UTF-8 locales. The visible manifestation is that the program truncates strings prematurely (i.e., at 80 bytes instead of 80 characters). Terminal-based programs don't place the cursor correctly on the screen, don't react to the "Backspace" key by erasing one character, and leave junk characters around when updating the screen, usually turning the screen into a complete mess.
Fixing this kind of problems is a tedious task from a programmer's point of view, like all other cases of retrofitting new concepts into the old flawed design. In this case, one has to redesign all data structures in order to accommodate to the fact that a complete character may span a variable number of "char"s (or switch to wchar_t and convert as needed). Also, for every call to the "strlen" and similar functions, find out whether a number of bytes, a number of characters, or the width of the string was really meant. Sometimes it is faster to write a program with the same functionality from scratch.
Among BLFS packages, this problem applies to xine-ui-0.99.9 and all the shells.
Severity: Low
LFS expects that manual pages are in the language-specific (usually 8-bit) encoding, as specified on the LFS Man DB page. However, some packages install translated manual pages in UTF-8 encoding (e.g., Shadow, already dealt with), or manual pages in languages not in the table. Not all BLFS packages have been audited for conformance with the requirements put in LFS (the large majority have been checked, and fixes placed in the book for packages known to install non-conforming manual pages). If you find a manual page installed by any of BLFS packages that is obviously in the wrong encoding, please remove or convert it as needed, and report this to BLFS team as a bug.
You can easily check your system for any non-conforming manual pages by copying the following short shell script to some accessible location,
#!/bin/sh
# Begin checkman.sh
# Usage: find /usr/share/man -type f | xargs checkman.sh
for a in "$@"
do
# echo "Checking $a..."
# Pure-ASCII manual page (possibly except comments) is OK
grep -v '.\\"' "$a" | iconv -f US-ASCII -t US-ASCII >/dev/null 2>&1 \
&& continue
# Non-UTF-8 manual page is OK
iconv -f UTF-8 -t UTF-8 "$a" >/dev/null 2>&1 || continue
# Found a UTF-8 manual page, bad.
echo "UTF-8 manual page: $a" >&2
done
# End checkman.sh
and then issuing the following command (modify the command
below if the checkman.sh script is not
in your PATH
environment
variable):
find /usr/share/man -type f | xargs checkman.sh
Note that if you have manual pages installed in any location
other than /usr/share/man
(e.g., /usr/local/share/man
),
you must modify the above command to include this additional
location.
Last updated on 2017-06-29 22:13:10 -0700
The packages that are installed in this book are only the tip of the iceberg. We hope that the experience you gained with the LFS book and the BLFS book will give you the background needed to compile, install and configure packages that are not included in this book.
When you want to install a package to a location other than
/
, or /usr
, you are installing outside the default
environment settings on most machines. The following examples
should assist you in determining how to correct this situation.
The examples cover the complete range of settings that may need
updating, but they are not all needed in every situation.
Expand the PATH
to include
$PREFIX/bin
.
Expand the PATH
for
root
to include
$PREFIX/sbin
.
Add $PREFIX/lib
to
/etc/ld.so.conf
or expand
LD_LIBRARY_PATH
to include it.
Before using the latter option, check out http://xahlee.org/UnixResource_dir/_/ldpath.html.
If you modify /etc/ld.so.conf
, remember to update
/etc/ld.so.cache
by
executing ldconfig as the
root
user.
Add $PREFIX/man
to
/etc/man_db.conf
or expand
MANPATH
.
Add $PREFIX/info
to
INFOPATH
.
Add $PREFIX/lib/pkgconfig
to PKG_CONFIG_PATH
. Some
packages are now installing .pc
files in $PREFIX/share/pkgconfig
, so you may
have to include this directory also.
Add $PREFIX/include
to
CPPFLAGS
when compiling
packages that depend on the package you installed.
Add $PREFIX/lib
to
LDFLAGS
when compiling
packages that depend on a library installed by the
package.
If you are in search of a package that is not in the book, the following are different ways you can search for the desired package.
If you know the name of the package, then search Freecode
for it at http://freecode.com/. 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 a link to 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 process. Help on the options accepted by configure can be obtained via the command ./configure --help.
Most of the packages contain documentation on compiling and installing the package. Some of the documents are excellent, some not so excellent. Check out the homepage of the package for any additional and updated hints for compiling and configuring the package.
If you are having a problem compiling the package, try searching the LFS archives at http://www.linuxfromscratch.org/search.html for the error or if that fails, try searching Google. Often, a distribution will have already solved the problem (many of them use development versions of packages, so they see the changes sooner than those of us who normally use stable released versions). But be cautious - all builders tend to carry patches which are no longer necessary, and to have fixes which are only required because of their particular choices in how they build a package. You may have to search deeply to find a fix for the package version you are trying to use, or even to find the package (names are sometimes not what you might expect, e.g. ghostscript often has a prefix or a suffix in its name), but the following notes might help:
Arch http://www.archlinux.org/packages/
- enter the package name in the 'Keywords' box,
select the package name, select the 'Source Files'
field, and then select the PKGBUILD
entry to see how they
build this package.
Debian ftp://ftp.uk.debian.org/debian/pool
(use your country's version if there is one) - the
source will be in .tar.gz tarballs (either the
original upstream .orig
source, or else a
dfsg
containing those
parts which comply with debian's free software
guidelines) accompanied by versioned .diff.gz or
.tar.gz additions. These additions often show how
the package is built, and may contain patches. In
the .diff.gz versions, any patches create files in
debian/patches
.
Fedora http://pkgs.fedoraproject.org/cgit/ - this site is still occasionally overloaded, but it is an easy way of looking at .spec files and patches. If you know their name for the package (e.g. mesa.git) you can append that to the URI to get to it. If not, use the search box. If the site is unavailable, try looking for a local mirror of ftp.fedora.com (the primary site is usually unavailable if fedora cgit is not responding) and download a source rpm to see what they do.
Gentoo - the mirrors for ebuilds and patches seem
to be well-hidden, and they change frequently.
Also, if you have found a mirror, you need to know
which directory the application has been assigned
to. The ebuilds themselves can be found at
http://packages.gentoo.org/
- use the search field. If there are any patches, a
mirror will have them in the files/
directory. Depending on
your browser, or the mirror, you might need to
download the ebuild to be able to read it. Treat
the ebuild as a sort of pseudo-code / shell
combination - look in particular for sed commands and
patches, or hazard a guess at the meanings of the
functions such as dodoc.
openSUSE http://download.opensuse.org/factory/repo/src-oss/suse/src/ - source only seems to be available in source rpms.
Slackware - the official package browser is
currently broken. The site at http://slackbuilds.org/
has current and previous versions in their
unofficial repository with links to homepages,
downloads, and some individual files, particularly
the .SlackBuild
files.
Ubuntu ftp://ftp.ubuntu.com/ubuntu/pool/ - see the debian notes above.
If everything else fails, try the blfs-support mailing-list.
If you have found a package that is only available in
.deb
or .rpm
format, there are two small scripts,
rpm2targz and
deb2targz that
are available at http://downloads.linuxfromscratch.org/deb2targz.tar.bz2
and http://downloads.linuxfromscratch.org/rpm2targz.tar.bz2
to convert the archives into a simple tar.gz
format.
You may also find an rpm2cpio script useful. The Perl version in the linux kernel archives at http://lkml.indiana.edu/hypermail/linux/kernel/0210.2/att-0093/01-rpm2cpio works for most source rpms. The rpm2targz script will use an rpm2cpio script or binary if one is on your path. Note that rpm2cpio will unpack a source rpm in the current directory, giving a tarball, a spec file, and perhaps patches or other files.
Last updated on 2016-08-14 12:25:49 -0700
The intention of LFS is to provide a basic system which you can build upon. There are several things about tidying up the system which many people wonder about once they have done the base install. We hope to cover these issues in this chapter.
Most people coming from non-Unix like backgrounds to Linux find
the concept of text-only configuration files slightly strange. In
Linux, just about all configuration is done via the manipulation
of text files. The majority of these files can be found in the
/etc
hierarchy. There are often
graphical configuration programs available for different
subsystems but most are simply pretty front ends to the process
of editing a text file. The advantage of text-only configuration
is that you can edit parameters using your favorite text editor,
whether that be vim, emacs, or any other editor.
The first task is making a recovery boot device in Creating a Custom Boot Device because it's the most critical need. Hardware issues relevant to firmware and other devices is addressed next. The system is then configured to ease addition of new users, because this can affect the choices you make in the two subsequent topics—The Bash Shell Startup Files and The vimrc Files.
The remaining topics, Customizing your Logon with /etc/issue, and Autofs-5.1.3 are then addressed, in that order. They don't have much interaction with the other topics in this chapter.
This section is really about creating a rescue device. As the name rescue implies, the host system has a problem, often lost partition information or corrupted file systems, that prevents it from booting and/or operating normally. For this reason, you must not depend on resources from the host being "rescued". To presume that any given partition or hard drive will be available is a risky presumption.
In a modern system, there are many devices that can be used as a rescue device: floppy, cdrom, usb drive, or even a network card. Which one you use depends on your hardware and your BIOS. In the past, a rescue device was thought to be a floppy disk. Today, many systems do not even have a floppy drive.
Building a complete rescue device is a challenging task. In many ways, it is equivalent to building an entire LFS system. In addition, it would be a repetition of information already available. For these reasons, the procedures for a rescue device image are not presented here.
The software of today's systems has grown large. Linux 2.6 no longer supports booting directly from a floppy. In spite of this, there are solutions available using older versions of Linux. One of the best is Tom's Root/Boot Disk available at http://www.toms.net/rb/. This will provide a minimal Linux system on a single floppy disk and provides the ability to customize the contents of your disk if necessary.
There are several sources that can be used for a rescue CD-ROM. Just about any commercial distribution's installation CD-ROMs or DVDs will work. These include RedHat, Ubuntu, and SuSE. One very popular option is Knoppix.
Also, the LFS Community has developed its own LiveCD available at http://www.linuxfromscratch.org/livecd/. This LiveCD, is no longer capable of building an entire LFS/BLFS system, but is still a good rescue CD-ROM. If you download the ISO image, use xorriso to copy the image to a CD-ROM.
The instructions for using GRUB2 to make a custom rescue CD-ROM are also available in LFS Chapter 8.
A USB Pen drive, sometimes called a Thumb drive, is recognized by Linux as a SCSI device. Using one of these devices as a rescue device has the advantage that it is usually large enough to hold more than a minimal boot image. You can save critical data to the drive as well as use it to diagnose and recover a damaged system. Booting such a drive requires BIOS support, but building the system consists of formatting the drive, adding GRUB as well as the Linux kernel and supporting files.
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/CreatingaCustomBootDevice
Last updated on 2017-04-23 10:21:19 -0700
An LFS system can be used without a graphical desktop, and unless or until you install X Window System you will have to work in the console. Most, if not all, PCs boot with an 8x16 font - whatever the actual screen size. There are a few things you can do to alter the display on the console. Most of them involve changing the font, but the first alters the commandline used by grub.
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/aboutconsolefonts
Modern screens often have a lot more pixels then the screens used in the past. If your screen is 1600 pixels wide, an 8x16 font will give you 200 columns of text - unless your monitor is enormous, the text will be tiny. One of the ways to work around this is to tell grub to use a smaller size, such as 1024x768 or 800x600 or even 640x480. Even if your screen does not have a 4:3 aspect ratio, this should work.
To try this, you can reboot and edit grub's command-line to
insert a 'video=' parameter between the 'root=/dev/sdXn' and
'ro', for example root=/dev/sda2
video=1024x768 ro
based on the example in LFS section
8.4.4 : ../../../../lfs/view/8.1-systemd/chapter08/grub.html.
If you decide that you wish to do this, you can then (as the
root
user) edit /boot/grub/grub.cfg
.
In LFS the kbd package is
used. The fonts it provides are PC Screen Fonts, usually
called PSF, and they were installed into /usr/share/consolefonts
. Where these
include a unicode mapping table, the file suffix is often
changed to .psfu
although
packages such as terminus-font (see below) do not add the
'u'. These fonts are usually compressed with gzip to save
space, but that is not essential.
The initial PC text screens had 8 colours, or 16 colours if the bright versions of the original 8 colours were used. A PSF font can include up to 256 characters (technically, glyphs) while allowing 16 colours, or up to 512 characters (in which case, the bright colours will not be available). Clearly, these console fonts cannot be used to display CJK text - that would need thousands of available glyphs.
Some fonts in kbd can cover more than 512 codepoints ('characters'), with varying degrees of fidelity: unicode contains several whitespace codepoints which can all be mapped to a space, varieties of dashes can be mapped to a minus sign, smart quotes can map to the regular ASCII quotes rather than to whatever is used for "codepoint not present or invalid", and those cyrillic or greek letters which look like latin letters can be mapped onto them, so 'A' can also do duty for cyrillic A and greek Alpha, and 'P' can also do duty for cyrillic ER and greek RHO. Unfortunately, where a font has been created from a BDF file (the method in terminus and debian's console-setup ) such mapping of additional codepoints onto an existing glyph is not always done, although the terminus ter-vXXn fonts do this well.
There are over 120 combinations of font and size in
kbd: often a font is
provided at several character sizes, and sometimes varieties
cover different subsets of unicode. Most are 8 pixels wide,
in heights from 8 to 16 pixels, but there are a few which are
9 pixels wide, some others which are 12x22, and even one
(latarcyrheb-sun32.psfu
) which
has been scaled up to 16x32. Using a bigger font is another
way of making text on a large screen easier to read.
You can test fonts as a normal user. If you have a font which has not been installed, you can load it with :
setfont /path/to/yourfont.ext
For the fonts already installed you only need the name, so
using gr737a-9x16.psfu.gz
as an
example:
setfont gr737a-9x16
To see the glyphs in the font, use:
showconsolefont
If the font looks as if it might be useful, you can then go on to test it more thoroughly.
When you find a font which to wish to use, as the
root
user) edit
/etc/vconsole.conf
as
described in LFS section 7.6 ../../../../lfs/view/8.1-systemd/chapter07/console.html..
For fonts not supplied with the kbd package you will need to optionally
compress it / them with gzip and then install it /
them as the root
user.
Although some console fonts are created from BDF files, which is a text format with hex values for the pixels in each row of the character, there are more-modern tools available for editing psf fonts. The psftools package allows you to dump a font to a text representation with a dash for a pixel which is off (black) and a hash for a pixel which is on (white). You can then edit the text file to add more characters, or reshape them, or map extra codepoints onto them, and then create a new psf font with your changes.
The Terminus Font
package provides fixed-width bitmap fonts designed for long
(8 hours and more per day) work with computers. Under
'Character variants' on that page is a list of patches (in
the alt/
directory). If you are
using a graphical browser to look at that page, you can see
what the patches do, e.g. 'll2' makes 'l' more visibly
different from 'i' and '1'.
By default terminus-fonts will try to create several types of font, and it will fail if bdftopcf from Xorg Applications has not been installed. The configure script is only really useful if you go on to install all the fonts (console and X11 bitmap) to the correct directories, as in a distro. To build only the PSF fonts and their dependencies, run:
make psf
This will create more than 240 ter-*.psf fonts. The 'b' suffix indicates bright, 'n' indicates normal. You can then test them to see if any fit your requirements. Unless you are creating a distro, there seems little point in installing them all.
As an example, to install the last of these fonts, you can
gzip it and then as the root
user:
install -v -m644 ter-v32n.psf.gz /usr/share/consolefonts
Last updated on 2016-09-15 19:51:17 -0700
On some recent PCs it can be necessary, or desirable, to load
firmware to make them work at their best. There is a directory,
/lib/firmware
, where the kernel
or kernel drivers look for firmware images.
Preparing firmware for multiple different machines, as a distro would do, is outside the scope of this book.
Currently, most firmware can be found at a git
repository:
http://git.kernel.org/cgit/linux/kernel/git/firmware/linux-firmware.git/tree/.
For convenience, the LFS Project has created a mirror, updated
daily, where these firmware files can be accessed via
wget
or a web
browser at http://anduin.linuxfromscratch.org/BLFS/linux-firmware/.
To get the firmware, either point a browser to one of the above
repositories and then download the item(s) which you need, or
install git
and
clone that repository.
For some other firmware, particularly for Intel microcode and certain wifi devices, the needed firmware is not available in the above repository. Some of this will be addressed below, but a search of the Internet for needed firmware is sometimes necessary.
Firmware files are conventionally referred to as blobs because you cannot determine what they will do. Note that firmware is distributed under various different licenses which do not permit disassembly or reverse-engineering.
Firmware for PCs falls into four categories:
Updates to the CPU to work around errata, usually referred to as microcode.
Firmware for video controllers. On x86 machines this seems to mostly apply to ATI devices : Radeons, the later AMD amdgpu chips, and Nvidia Maxwell cards require firmware to be able to use KMS (kernel modesetting - the preferred option) as well as for Xorg. For earlier radeon chips (before the R600), the firmware is still in the kernel.
Firmware updates for wired network ports. Mostly they work even without the updates, but one must assume that they will work better with the updated firmware.
Firmware for other devices, such as wifi. These devices are not required for the PC to boot, but need the firmware before these devices can be used.
Although not needed to load a firmware blob, the following tools may be useful for determining, obtaining, or preparing the needed firmware in order to load it into the system: cpio-2.12, git-2.14.1, pciutils-3.5.5, and Wget-1.19.1
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/aboutfirmware
In general, microcode can be loaded by the BIOS or UEFI, and it might be updated by upgrading to a newer version of those. On linux, you can also load the microcode from the kernel if you are using an AMD family 10h or later processor (first introduced late 2007), or an Intel processor from 1998 and later (Pentium4, Core, etc), if updated microcode has been released. These updates only last until the machine is powered off, so they need to be applied on every boot.
Intel provide frequent updates of their microcode. It is not uncommon to find a newer version of microcode for an Intel processor even two years after its release. New versions of AMD firmware are less common.
There used to be two ways of loading the microcode, described as 'early' and 'late'. Early loading happens before userspace has been started, late loading happens after userspace has started. Not surprisingly, early loading was preferred, (see e.g. an explanatory comment in a kernel commit noted at x86/microcode: Early load microcode on LWN.) Indeed, it is needed to work around one particular erratum in early Intel Haswell processors which had TSX enabled. (See Intel Disables TSX Instructions: Erratum Found in Haswell, Haswell-E/EP, Broadwell-Y.) Without this update glibc can do the wrong thing in uncommon situations.
As a result, early loading is now expected, although for the
moment (4.11 kernels) it is still possible to manually force
late loading of microcode for testing. You will need to
reconfigure your kernel for either method. The instructions
here will create a kernel .config
to suite early loading, before
forcing late loading to see if there is any microcode. If
there is, the instructions then show you how to create an
initrd for early loading.
To confirm what processor(s) you have (if more than one, they will be identical) look in /proc/cpuinfo.
The first step is to get the most recent version of the
Intel microcode. This must be done by navigating to
https://downloadcenter.intel.com/download/26400/Linux-Processor-Microcode-Data-File
and following the instructions there. As of this writing
the most recent version of the microcode is microcode-20170511.tgz
. Extract this file
in the normal way to create an intel-ucode
directory, containing various
blobs with names in the form XX-YY-ZZ.
Now you need to determine your processor's identity to see if there is any microcode for it. Determine the decimal values of the cpu family, model and stepping by running the following command (it will also report the current microcode version):
head -n7 /proc/cpuinfo
Convert the cpu family, model and stepping to pairs of hexadecimal digits. For a Haswell i7-4790 (described as Intel(R) Core(TM) i7-4790 CPU) the relevant values are cpu family 6, model 60, stepping 3 so in this case the required identification is 06-3c-03. A look at the blobs will show that there is one for this CPU (although it might have already been applied by the BIOS). If there is a blob for your system then test if it will be applied by copying it (replace <XX-YY-ZZ> by the identifier for your machine) to where the kernel can find it:
mkdir -pv /lib/firmware/intel-ucode cp -v intel-ucode/<XX-YY-ZZ> /lib/firmware/intel-ucode
Now that the Intel microcode has been prepared, use the following options when you configure the kernel to load Intel microcode:
General Setup --->
[y] Initial RAM filesystem and RAM disk (initramfs/initrd) support [CONFIG_BLK_DEV_INITRD]
Processor type and features --->
[y] CPU microcode loading support [CONFIG_MICROCODE]
[y] Intel microcode loading support [CONFIG_MICROCODE_INTEL]
After you have successfully booted the new system, force late loading by using the command:
echo 1 > /sys/devices/system/cpu/microcode/reload
Then use the following command to see if anything was loaded:
dmesg | grep -e 'microcode' -e 'Linux version' -e 'Command line'
This example from the Haswell i7 which was released in Q2 2014 and is not affected by the TSX errata shows it has been updated from revision 0x19 in the BIOS/UEFI to revision 0x22. Unlike in older kernels, the individual CPUs are not separately reported:
[ 0.000000] Linux version 4.11.0 (lfs@plexi) (gcc version 7.1.0 (GCC) )
#1 SMP PREEMPT Sun May 14 16:00:00 BST 2017
[ 0.000000] Command line: BOOT_IMAGE=/vmlinuz-4.11.0-sda6 root=/dev/sda6 ro
[ 0.913685] microcode: sig=0x306c3, pf=0x2, revision=0x22
[ 0.913905] microcode: Microcode Update Driver: v2.2.
[ 148.723932] microcode: updated to revision 0x22, date = 2017-01-27
That may be followed by individual reports for each core.
If the microcode was not updated, there is no new microcode for this system's processor. If it did get updated, you can now proceed to the section called “Early loading of microcode”.
Begin by downloading a container of firmware for your CPU
family from
http://anduin.linuxfromscratch.org/BLFS/linux-firmware/amd-ucode/.
The family is always specified in hex. Families 10h to 14h
(16 to 20) are in microcode_amd.bin. Families 15h and 16h
have their own containers. Create the required directory
and put the firmware you downloaded into it as the
root
user:
mkdir -pv /lib/firmware/amd-ucode cp -v microcode_amd* /lib/firmware/amd-ucode
When you configure the kernel, use the following options to load AMD microcode:
General Setup --->
[y] Initial RAM filesystem and RAM disk (initramfs/initrd) support [CONFIG_BLK_DEV_INITRD]
Processor type and features --->
[y] CPU microcode loading support [CONFIG_MICROCODE]
[y] AMD microcode loading support [CONFIG_MICROCODE_AMD]
After you have successfully booted the new system, force late loading by using the command:
echo 1 > /sys/devices/system/cpu/microcode/reload
Then use the following command to see if anything was loaded:
dmesg | grep -e 'microcode' -e 'Linux version' -e 'Command line'
This example from an old Athlon(tm) II X2 shows it has been updated. For the moment, all CPUs are still reported in the microcode details on AMD machines:
[ 0.000000] Linux version 4.9.8 (ken@testserver) (gcc version 6.3.0 (GCC) )
#1 SMP Mon Mar 6 22:27:18 GMT 2017
[ 0.000000] Command line: BOOT_IMAGE=/vmlinuz-4.9.8-sdc6 root=/dev/sdc6 ro
[ 0.907752] microcode: CPU0: patch_level=0x010000b6
[ 0.907788] microcode: CPU1: patch_level=0x010000b6
[ 0.907844] microcode: Microcode Update Driver: v2.01 <tigran@aivazian.fsnet.co.uk>, Peter Oruba
[ 121.952667] microcode: CPU0: new patch_level=0x010000c8
[ 121.952687] microcode: CPU1: new patch_level=0x010000c8
If the microcode was not updated, there is no new microcode for this system's processor. If it did get updated, you can now proceed to the section called “Early loading of microcode”.
If you have established that updated microcode is available for your system, it is time to prepare it for early loading. This requires an additional package, cpio-2.12 and the creation of an initrd which will need to be added to grub.cfg.
It does not matter where you prepare the initrd, and once it is working you can apply the same initrd to later LFS systems or newer kernels on this same machine, at least until any newer microcode is released. Use the following commands:
mkdir -p initrd/kernel/x86/microcode cd initrd
For an AMD machine, use the following command (replace <MYCONTAINER> with the name of the container for your CPU's family):
cp -v /lib/firmware/amd_ucode/<MYCONTAINER> kernel/x86/microcode/AuthenticAMD.bin
Or for an Intel machine copy the appropriate blob using this command:
cp -v /lib/firmware/intel-ucode/<XX-YY-ZZ> kernel/x86/microcode/GenuineIntel.bin
Now prepare the initrd:
find . | cpio -o -H newc > /boot/microcode.img
You now need to add a new entry to /boot/grub/grub.cfg and here you should add a new line after the linux line within the stanza. If /boot is a separate mountpoint:
initrd /microcode.img
or this if it is not:
initrd /boot/microcode.img
If you are already booting with an initrd (see the
section called “About initramfs”) you must
specify the microcode initrd first, using a line such as
initrd /microcode.img
/other-initrd.img
(adapt that as above if
/boot is not a separate mountpoint).
You can now reboot with the added initrd, and then use the same command to check that the early load worked.
dmesg | grep -e 'microcode' -e 'Linux version' -e 'Command line'
The places and times where early loading happens are very different in AMD and Intel machines. First, an Intel example from an updated kernel, showing that the first notification comes before the kernel version is mentioned:
[ 0.000000] microcode: microcode updated early to revision 0x22, date = 2017-01-27
[ 0.000000] Linux version 4.11.0 (lfs@plexi) (gcc version 7.1.0 (GCC) )
#2 SMP PREEMPT Sun May 14 17:58:53 BST 2017
[ 0.000000] Command line: BOOT_IMAGE=/vmlinuz-4.11.0-sda6 root=/dev/sda6 ro
[ 0.928947] microcode: sig=0x306c3, pf=0x2, revision=0x22
[ 0.929160] microcode: Microcode Update Driver: v2.2.
An AMD example for an earlier stable kernel version:
[ 0.000000] Linux version 4.9.14 (ken@testserver) (gcc version 6.3.0 (GCC) )
#2 SMP Mon Mar 13 22:23:44 GMT 2017
[ 0.000000] Command line: BOOT_IMAGE=/vmlinuz-4.9.14-sdc6 root=/dev/sdc6 ro
[ 0.907648] microcode: microcode updated early to new patch_level=0x010000c8
[ 0.907690] microcode: CPU0: patch_level=0x010000c8
[ 0.907733] microcode: CPU1: patch_level=0x010000c8
[ 0.907808] microcode: Microcode Update Driver: v2.01 <tigran@aivazian.fsnet.co.uk>, Peter Oruba
These instructions do NOT apply to old radeons before the
R600 family. For those, the firmware is in the kernel's
/lib/firmware/
directory. Nor
do they apply if you intend to avoid a graphical setup such
as Xorg and are content to use the default 80x25 display
rather than a framebuffer.
Early radeon devices only needed a single 2K blob of firmware. Recent devices need several different blobs, and some of them are much bigger. The total size of the radeon firmware directory is over 500K — on a large modern system you can probably spare the space, but it is still redundant to install all the unused files each time you build a system.
A better approach is to install pciutils-3.5.5 and
then use lspci
to identify which
VGA controller is installed.
With that information, check the RadeonFeature page of the Xorg wiki for Decoder ring for engineering vs marketing names to identify the family (you may need to know this for the Xorg driver in BLFS — Southern Islands and Sea Islands use the radeonsi driver) and the specific model.
Now that you know which controller you are using, consult the Radeon page of the Gentoo wiki which has a table listing the required firmware blobs for the various chipsets. Note that Southern Islands and Sea Islands chips use different firmware for kernel 3.17 and later compared to earlier kernels. Identify and download the required blobs then install them:
mkdir -pv /lib/firmware/radeon cp -v <YOUR_BLOBS> /lib/firmware/radeon
There are actually two ways of installing this firmware. BLFS, in the 'Kernel Configuration for additional firmware' section part of the Xorg ATI Driver-7.9.0 section gives an example of compiling the firmware into the kernel - that is slightly faster to load, but uses more kernel memory. Here we will use the alternative method of making the radeon driver a module. In your kernel config set the following:
Device Drivers --->
Graphics support --->
Direct Rendering Manager --->
<*> Direct Rendering Manager (XFree86 ... support) [CONFIG_DRM]
<m> ATI Radeon [CONFIG_DRM_RADEON]
Loading several large blobs from /lib/firmware takes a noticeable time, during which the screen will be blank. If you do not enable the penguin framebuffer logo, or change the console size by using a bigger font, that probably does not matter. If desired, you can slightly reduce the time if you follow the alternate method of specifying 'y' for CONFIG_DRM_RADEON covered in BLFS at the link above — you must specify each needed radeon blob if you do that.
Some Nvidia graphics chips need firmware updates to take advantage of all the card's capability. These are generally the GeForce 8, 9, 9300, and 200-900 series chips. For more exact information, see https://nouveau.freedesktop.org/wiki/VideoAcceleration/#firmware.
First, the kernel Nvidia driver must be activated:
Device Drivers --->
Graphics support --->
Direct Rendering Manager --->
<*> Direct Rendering Manager (XFree86 ... support) [CONFIG_DRM]
<*/m> Nouveau (NVIDIA) cards [CONFIG_DRM_NOUVEAU]
The steps to install the Nvidia firmware are:
wget https://raw.github.com/imirkin/re-vp2/master/extract_firmware.py wget http://us.download.nvidia.com/XFree86/Linux-x86/325.15/NVIDIA-Linux-x86-325.15.run sh NVIDIA-Linux-x86-325.15.run --extract-only python extract_firmware.py mkdir -p /lib/firmware/nouveau cp -d nv* vuc-* /lib/firmware/nouveau/
The kernel likes to load firmware for some network drivers, particularly those from Realtek (the /lib/linux-firmware/rtl_nic/) directory, but they generally appear to work without it. Therefore, you can boot the kernel, check dmesg for messages about this missing firmware, and if necessary download the firmware and put it in the specified directory in /lib/firmware so that it will be found on subsequent boots. Note that with current kernels this works whether or not the driver is compiled in or built as a module, there is no need to build this firmware into the kernel. Here is an example where the R8169 driver has been compiled in but the firmware was not made available. Once the firmware had been provided, there was no mention of it on later boots.
dmesg | grep firmware | grep r8169
[ 7.018028] r8169 0000:01:00.0: Direct firmware load for rtl_nic/rtl8168g-2.fw failed with error -2
[ 7.018036] r8169 0000:01:00.0 eth0: unable to load firmware patch rtl_nic/rtl8168g-2.fw (-2)
Identifying the correct firmware will typically require you
to install pciutils-3.5.5, and then use
lspci
to
identify the device. You should then search online to check
which module it uses, which firmware, and where to obtain the
firmware — not all of it is in linux-firmware.
If possible, you should begin by using a wired connection when you first boot your LFS system. To use a wireless connection you will need to use a network tools such as Wireless Tools-29 and wpa_supplicant-2.6.
Firmware may also be needed for other devices such as some SCSI controllers, bluetooth adaptors, or TV recorders. The same principles apply.
Last updated on 2017-06-01 19:42:51 -0700
Although most devices needed by packages in BLFS and beyond are
set up properly by udev using
the default rules installed by LFS in /etc/udev/rules.d
, there are cases where the
rules must be modified or augmented.
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/aboutdevices
If there are multiple sound cards in a system, the "default"
sound card becomes random. The method to establish sound card
order depends on whether the drivers are modules or not. If
the sound card drivers are compiled into the kernel, control
is via kernel command line parameters in /boot/grub/grub.cfg
. For example, if a
system has both an FM801 card and a SoundBlaster PCI card,
the following can be appended to the command line:
snd-fm801.index=0 snd-ens1371.index=1
If the sound card drivers are built as modules, the order can
be established in the /etc/modprobe.conf
file with:
options snd-fm801 index=0
options snd-ens1371 index=1
USB devices usually have two kinds of device nodes associated with them.
The first kind is created by device-specific drivers (e.g., usb_storage/sd_mod or usblp) in the kernel. For example, a USB mass storage device would be /dev/sdb, and a USB printer would be /dev/usb/lp0. These device nodes exist only when the device-specific driver is loaded.
The second kind of device nodes (/dev/bus/usb/BBB/DDD, where BBB is the bus number and DDD is the device number) are created even if the device doesn't have a kernel driver. By using these "raw" USB device nodes, an application can exchange arbitrary USB packets with the device, i.e., bypass the possibly-existing kernel driver.
Access to raw USB device nodes is needed when a userspace program is acting as a device driver. However, for the program to open the device successfully, the permissions have to be set correctly. By default, due to security concerns, all raw USB devices are owned by user root and group usb, and have 0664 permissions (the read access is needed, e.g., for lsusb to work and for programs to access USB hubs). Packages (such as SANE and libgphoto2) containing userspace USB device drivers also ship udev rules that change the permissions of the controlled raw USB devices. That is, rules installed by SANE change permissions for known scanners, but not printers. If a package maintainer forgot to write a rule for your device, report a bug to both BLFS (if the package is there) and upstream, and you will need to write your own rule.
There is one situation when such fine-grained access control with pre-generated udev rules doesn't work. Namely, PC emulators such as KVM, QEMU and VirtualBox use raw USB device nodes to present arbitrary USB devices to the guest operating system (note: patches are needed in order to get this to work without the obsolete /proc/bus/usb mount point described below). Obviously, maintainers of these packages cannot know which USB devices are going to be connected to the guest operating system. You can either write separate udev rules for all needed USB devices yourself, or use the default catch-all "usb" group, members of which can send arbitrary commands to all USB devices.
Before Linux-2.6.15, raw USB device access was performed not with /dev/bus/usb/BBB/DDD device nodes, but with /proc/bus/usb/BBB/DDD pseudofiles. Some applications (e.g., VMware Workstation) still use only this deprecated technique and can't use the new device nodes. For them to work, use the "usb" group, but remember that members will have unrestricted access to all USB devices. To create the fstab entry for the obsolete usbfs filesystem:
usbfs /proc/bus/usb usbfs devgid=14,devmode=0660 0 0
Adding users to the "usb" group is inherently insecure, as they can bypass access restrictions imposed through the driver-specific USB device nodes. For instance, they can read sensitive data from USB hard drives without being in the "disk" group. Avoid adding users to this group, if you can.
Fine-tuning of device attributes such as group name and
permissions is possible by creating extra udev rules, matching on something like
this. The vendor and product can be found by searching the
/sys/devices
directory entries
or using udevadm
info after the device has been attached. See
the documentation in the current udev directory of /usr/share/doc
for details.
SUBSYSTEM=="usb_device", SYSFS{idVendor}=="05d8", SYSFS{idProduct}=="4002", \
GROUP:="scanner", MODE:="0660"
The above line is used for descriptive purposes only. The scanner udev rules are put into place when installing SANE-1.0.27.
In some cases, it makes sense to disable udev completely and create static devices. Servers are one example of this situation. Does a server need the capability of handling dynamic devices? Only the system administrator can answer that question, but in many cases the answer will be no.
If dynamic devices are not desired, then static devices must
be created on the system. In the default configuration, the
/etc/rc.d/rcS.d/S10udev
boot
script mounts a tmpfs
partition over the /dev
directory. This problem can be overcome by mounting the root
partition temporarily:
If the instructions below are not followed carefully, your system could become unbootable.
mount --bind / /mnt cp -a /dev/* /mnt/dev rm /etc/rc.d/rcS.d/{S10udev,S50udev_retry} umount /mnt
At this point, the system will use static devices upon the next reboot. Create any desired additional devices using mknod.
If you want to restore the dynamic devices, recreate the
/etc/rc.d/rcS.d/{S10udev,S50udev_retry}
symbolic links and reboot again. Static devices do not need
to be removed (console and null are always needed) because
they are covered by the tmpfs
partition. Disk usage for devices is negligible (about
20–30 bytes per entry.)
If the initial boot process doe not set up the /dev/dvd
device properly, it can be
installed using the following modification to the default
udev rules. As the root
user,
run:
sed '1d;/SYMLINK.*cdrom/ a\ KERNEL=="sr0", ENV{ID_CDROM_DVD}=="1", SYMLINK+="dvd", OPTIONS+="link_priority=-100"' \ /lib/udev/rules.d/60-cdrom_id.rules > /etc/udev/rules.d/60-cdrom_id.rules
Last updated on 2016-08-31 14:55:52 -0700
Together, the /usr/sbin/useradd command and
/etc/skel
directory (both are
easy to set up and use) provide a way to assure new users are
added to your LFS system with the same beginning settings for
things such as the PATH
, keyboard
processing and other environmental variables. Using these two
facilities makes it easier to assure this initial state for
each new user added to the system.
The /etc/skel
directory holds
copies of various initialization and other files that may be
copied to the new user's home directory when the /usr/sbin/useradd program
adds the new user.
The useradd
program uses a collection of default values kept in
/etc/default/useradd
. This file
is created in a base LFS installation by the Shadow package. If it has been removed or
renamed, the useradd program uses some
internal defaults. You can see the default values by running
/usr/sbin/useradd
-D.
To change these values, simply modify the /etc/default/useradd
file as the root
user. An alternative to directly
modifying the file is to run useradd as the root
user while supplying the desired
modifications on the command line. Information on how to do
this can be found in the useradd man page.
To get started, create an /etc/skel
directory and make sure it is
writable only by the system administrator, usually root
. Creating the directory as
root
is the best way to go.
The mode of any files from this part of the book that you put
in /etc/skel
should be writable
only by the owner. Also, since there is no telling what kind of
sensitive information a user may eventually place in their copy
of these files, you should make them unreadable by "group" and
"other".
You can also put other files in /etc/skel
and different permissions may be
needed for them.
Decide which initialization files should be provided in every
(or most) new user's home directory. The decisions you make
will affect what you do in the next two sections, The Bash Shell Startup Files
and The vimrc Files. Some
or all of those files will be useful for root
, any already-existing users, and new
users.
The files from those sections that you might want to place in
/etc/skel
include .inputrc
, .bash_profile
, .bashrc
, .bash_logout
, .dircolors
, and .vimrc
. If you are unsure which of these
should be placed there, just continue to the following
sections, read each section and any references provided, and
then make your decision.
You will run a slightly modified set of commands for files
which are placed in /etc/skel
.
Each section will remind you of this. In brief, the book's
commands have been written for files not added to /etc/skel
and instead just sends the results
to the user's home directory. If the file is going to be in
/etc/skel
, change the book's
command(s) to send output there instead and then just copy the
file from /etc/skel
to the
appropriate directories, like /etc
, ~
or the
home directory of any other user already in the system.
When adding a new user with useradd, use the -m
parameter, which tells useradd to create the user's
home directory and copy files from /etc/skel
(can be overridden) to the new
user's home directory. For example (perform as the root
user):
useradd -m <newuser>
Last updated on 2007-10-16 06:49:09 -0700
Throughout BLFS, many packages install programs that run as
daemons or in some way should have a user or group name
assigned. Generally these names are used to map a user ID (uid)
or group ID (gid) for system use. Generally the specific uid or
gid numbers used by these applications are not significant. The
exception of course, is that root
has a uid and gid of 0 (zero) that is
indeed special. The uid values are stored in /etc/passwd
and the gid values are found in
/etc/group
.
Customarily, Unix systems classify users and groups into two
categories: system users and regular users. The system users
and groups are given low numbers and regular users and groups
have numeric values greater than all the system values. The
cutoff for these numbers is found in two parameters in the
/etc/login.defs
configuration
file. The default UID_MIN value is 1000 and the default GID_MIN
value is 1000. If a specific uid or gid value is not specified
when creating a user with useradd or a group with
groupadd the
values assigned will always be above these cutoff values.
Additionally, the Linux Standard Base recommends that system uid and gid values should be below 100.
Below is a table of suggested uid/gid values used in BLFS beyond those defined in a base LFS installation. These can be changed as desired, but provide a suggested set of consistent values.
Table 3.1. UID/GID Suggested Values
Name | uid | gid |
---|---|---|
bin | 1 | |
lp | 9 | |
adm | 16 | |
atd | 17 | 17 |
messagebus | 18 | 18 |
lpadmin | 19 | |
named | 20 | 20 |
gdm | 21 | 21 |
fcron | 22 | 22 |
systemd-journal | 23 | |
apache | 25 | 25 |
smmsp | 26 | 26 |
polkitd | 27 | 27 |
rpc | 28 | 28 |
exim | 31 | 31 |
postfix | 32 | 32 |
postdrop | 33 | |
sendmail | 34 | |
34 | ||
vmailman | 35 | 35 |
news | 36 | 36 |
kdm | 37 | 37 |
mysql | 40 | 40 |
postgres | 41 | 41 |
dovecot | 42 | 42 |
dovenull | 43 | 43 |
ftp | 45 | 45 |
proftpd | 46 | 46 |
vsftpd | 47 | 47 |
rsyncd | 48 | 48 |
sshd | 50 | 50 |
stunnel | 51 | 51 |
svn | 56 | 56 |
svntest | 57 | |
games | 60 | 60 |
kvm | 61 | |
wireshark | 62 | |
lightdm | 63 | 63 |
sddm | 64 | 64 |
scanner | 70 | |
colord | 71 | 71 |
systemd-bus-proxy | 72 | 72 |
systemd-journal-gateway | 73 | 73 |
systemd-journal-remote | 74 | 74 |
systemd-journal-upload | 75 | 75 |
systemd-network | 76 | 76 |
systemd-resolve | 77 | 77 |
systemd-timesync | 78 | 78 |
systemd-coredump | 79 | 79 |
ldap | 83 | 83 |
avahi | 84 | 84 |
avahi-autoipd | 85 | 85 |
netdev | 86 | |
ntp | 87 | 87 |
unbound | 88 | 88 |
plugdev | 90 | |
anonymous | 98 | |
nobody | 99 | |
nogroup | 99 |
One value that is missing is 65534. This value is customarily
assigned to the user nobody
and
group nogroup
and is
unnecessary.
Last updated on 2016-02-12 01:53:39 -0800
The shell program /bin/bash
(hereafter referred to as just "the shell") uses a collection
of startup files to help create an environment. Each file has a
specific use and may affect login and interactive environments
differently. The files in the /etc
directory generally provide global
settings. If an equivalent file exists in your home directory
it may override the global settings.
An interactive login shell is started after a successful login,
using /bin/login
, by reading the
/etc/passwd
file. This shell
invocation normally reads /etc/profile
and its private equivalent
~/.bash_profile
(or ~/.profile
if called as /bin/sh) upon startup.
An interactive non-login shell is normally started at the
command-line using a shell program (e.g., [prompt]$
/bin/bash) or by the
/bin/su command.
An interactive non-login shell is also started with a terminal
program such as xterm or konsole from within a
graphical environment. This type of shell invocation normally
copies the parent environment and then reads the user's
~/.bashrc
file for additional
startup configuration instructions.
A non-interactive shell is usually present when a shell script is running. It is non-interactive because it is processing a script and not waiting for user input between commands. For these shell invocations, only the environment inherited from the parent shell is used.
The file ~/.bash_logout
is not
used for an invocation of the shell. It is read and executed
when a user exits from an interactive login shell.
Many distributions use /etc/bashrc
for system wide initialization of
non-login shells. This file is usually called from the user's
~/.bashrc
file and is not built
directly into bash itself. This convention
is followed in this section.
For more information see info bash -- Nodes: Bash Startup Files and Interactive Shells.
Most of the instructions below are used to create files
located in the /etc
directory
structure which requires you to execute the commands as the
root
user. If you elect to
create the files in user's home directories instead, you
should run the commands as an unprivileged user.
Here is a base /etc/profile
.
This file starts by setting up some helper functions and some
basic parameters. It specifies some bash history parameters
and, for security purposes, disables keeping a permanent
history file for the root
user. It also sets a default user prompt. It then calls
small, single purpose scripts in the /etc/profile.d
directory to provide most of
the initialization.
For more information on the escape sequences you can use for
your prompt (i.e., the PS1
environment variable) see info
bash -- Node:
Printing a Prompt.
cat > /etc/profile << "EOF"
# Begin /etc/profile
# Written for Beyond Linux From Scratch
# by James Robertson <jameswrobertson@earthlink.net>
# modifications by Dagmar d'Surreal <rivyqntzne@pbzpnfg.arg>
# System wide environment variables and startup programs.
# System wide aliases and functions should go in /etc/bashrc. Personal
# environment variables and startup programs should go into
# ~/.bash_profile. Personal aliases and functions should go into
# ~/.bashrc.
# Functions to help us manage paths. Second argument is the name of the
# path variable to be modified (default: PATH)
pathremove () {
local IFS=':'
local NEWPATH
local DIR
local PATHVARIABLE=${2:-PATH}
for DIR in ${!PATHVARIABLE} ; do
if [ "$DIR" != "$1" ] ; then
NEWPATH=${NEWPATH:+$NEWPATH:}$DIR
fi
done
export $PATHVARIABLE="$NEWPATH"
}
pathprepend () {
pathremove $1 $2
local PATHVARIABLE=${2:-PATH}
export $PATHVARIABLE="$1${!PATHVARIABLE:+:${!PATHVARIABLE}}"
}
pathappend () {
pathremove $1 $2
local PATHVARIABLE=${2:-PATH}
export $PATHVARIABLE="${!PATHVARIABLE:+${!PATHVARIABLE}:}$1"
}
export -f pathremove pathprepend pathappend
# Set the initial path
export PATH=/bin:/usr/bin
if [ $EUID -eq 0 ] ; then
pathappend /sbin:/usr/sbin
unset HISTFILE
fi
# Setup some environment variables.
export HISTSIZE=1000
export HISTIGNORE="&:[bf]g:exit"
# Set some defaults for graphical systems
export XDG_DATA_DIRS=/usr/share/
export XDG_CONFIG_DIRS=/etc/xdg/
export XDG_RUNTIME_DIR=/tmp/xdg-$USER
# Setup a red prompt for root and a green one for users.
NORMAL="\[\e[0m\]"
RED="\[\e[1;31m\]"
GREEN="\[\e[1;32m\]"
if [[ $EUID == 0 ]] ; then
PS1="$RED\u [ $NORMAL\w$RED ]# $NORMAL"
else
PS1="$GREEN\u [ $NORMAL\w$GREEN ]\$ $NORMAL"
fi
for script in /etc/profile.d/*.sh ; do
if [ -r $script ] ; then
. $script
fi
done
unset script RED GREEN NORMAL
# End /etc/profile
EOF
Now create the /etc/profile.d
directory, where the individual initialization scripts are
placed:
install --directory --mode=0755 --owner=root --group=root /etc/profile.d
This script imports bash completion scripts, installed by many other BLFS packages, to allow TAB command line completion.
cat > /etc/profile.d/bash_completion.sh << "EOF"
# Begin /etc/profile.d/bash_completion.sh
# Import bash completion scripts
for script in /etc/bash_completion.d/*.sh ; do
if [ -r $script ] ; then
. $script
fi
done
# End /etc/profile.d/bash_completion.sh
EOF
Make sure that the directory exists:
install --directory --mode=0755 --owner=root --group=root /etc/bash_completion.d
This script uses the ~/.dircolors
and /etc/dircolors
files to control the
colors of file names in a directory listing. They control
colorized output of things like ls --color. The
explanation of how to initialize these files is at the end
of this section.
cat > /etc/profile.d/dircolors.sh << "EOF"
# Setup for /bin/ls and /bin/grep to support color, the alias is in /etc/bashrc.
if [ -f "/etc/dircolors" ] ; then
eval $(dircolors -b /etc/dircolors)
fi
if [ -f "$HOME/.dircolors" ] ; then
eval $(dircolors -b $HOME/.dircolors)
fi
alias ls='ls --color=auto'
alias grep='grep --color=auto'
EOF
This script adds some useful paths to the PATH
and can be used to customize other PATH
related environment variables (e.g. LD_LIBRARY_PATH, etc)
that may be needed for all users.
cat > /etc/profile.d/extrapaths.sh << "EOF"
if [ -d /usr/local/lib/pkgconfig ] ; then
pathappend /usr/local/lib/pkgconfig PKG_CONFIG_PATH
fi
if [ -d /usr/local/bin ]; then
pathprepend /usr/local/bin
fi
if [ -d /usr/local/sbin -a $EUID -eq 0 ]; then
pathprepend /usr/local/sbin
fi
# Set some defaults before other applications add to these paths.
pathappend /usr/share/man MANPATH
pathappend /usr/share/info INFOPATH
EOF
This script sets up the default inputrc
configuration file. If the user
does not have individual settings, it uses the global file.
cat > /etc/profile.d/readline.sh << "EOF"
# Setup the INPUTRC environment variable.
if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ] ; then
INPUTRC=/etc/inputrc
fi
export INPUTRC
EOF
Setting the umask value is important for security. Here the default group write permissions are turned off for system users and when the user name and group name are not the same.
cat > /etc/profile.d/umask.sh << "EOF"
# By default, the umask should be set.
if [ "$(id -gn)" = "$(id -un)" -a $EUID -gt 99 ] ; then
umask 002
else
umask 022
fi
EOF
This script sets an environment variable necessary for native language support. A full discussion on determining this variable can be found on the LFS Bash Shell Startup Files page.
cat > /etc/profile.d/i18n.sh << "EOF"
# Set up i18n variables
export LANG=<ll>
_<CC>
.<charmap>
<@modifiers>
EOF
Here is a base /etc/bashrc
.
Comments in the file should explain everything you need.
cat > /etc/bashrc << "EOF"
# Begin /etc/bashrc
# Written for Beyond Linux From Scratch
# by James Robertson <jameswrobertson@earthlink.net>
# updated by Bruce Dubbs <bdubbs@linuxfromscratch.org>
# System wide aliases and functions.
# System wide environment variables and startup programs should go into
# /etc/profile. Personal environment variables and startup programs
# should go into ~/.bash_profile. Personal aliases and functions should
# go into ~/.bashrc
# Provides colored /bin/ls and /bin/grep commands. Used in conjunction
# with code in /etc/profile.
alias ls='ls --color=auto'
alias grep='grep --color=auto'
# Provides prompt for non-login shells, specifically shells started
# in the X environment. [Review the LFS archive thread titled
# PS1 Environment Variable for a great case study behind this script
# addendum.]
NORMAL="\[\e[0m\]"
RED="\[\e[1;31m\]"
GREEN="\[\e[1;32m\]"
if [[ $EUID == 0 ]] ; then
PS1="$RED\u [ $NORMAL\w$RED ]# $NORMAL"
else
PS1="$GREEN\u [ $NORMAL\w$GREEN ]\$ $NORMAL"
fi
unset RED GREEN NORMAL
# End /etc/bashrc
EOF
Here is a base ~/.bash_profile
.
If you want each new user to have this file automatically,
just change the output of the command to /etc/skel/.bash_profile
and check the
permissions after the command is run. You can then copy
/etc/skel/.bash_profile
to the
home directories of already existing users, including
root
, and set the owner and
group appropriately.
cat > ~/.bash_profile << "EOF"
# Begin ~/.bash_profile
# Written for Beyond Linux From Scratch
# by James Robertson <jameswrobertson@earthlink.net>
# updated by Bruce Dubbs <bdubbs@linuxfromscratch.org>
# Personal environment variables and startup programs.
# Personal aliases and functions should go in ~/.bashrc. System wide
# environment variables and startup programs are in /etc/profile.
# System wide aliases and functions are in /etc/bashrc.
if [ -f "$HOME/.bashrc" ] ; then
source $HOME/.bashrc
fi
if [ -d "$HOME/bin" ] ; then
pathprepend $HOME/bin
fi
# Having . in the PATH is dangerous
#if [ $EUID -gt 99 ]; then
# pathappend .
#fi
# End ~/.bash_profile
EOF
Here is a base ~/.profile
. The
comments and instructions for using /etc/skel
for .bash_profile
above also apply here. Only
the target file names are different.
cat > ~/.profile << "EOF"
# Begin ~/.profile
# Personal environment variables and startup programs.
if [ -d "$HOME/bin" ] ; then
pathprepend $HOME/bin
fi
# Set up user specific i18n variables
#export LANG=<ll>
_<CC>
.<charmap>
<@modifiers>
# End ~/.profile
EOF
Here is a base ~/.bashrc
.
cat > ~/.bashrc << "EOF"
# Begin ~/.bashrc
# Written for Beyond Linux From Scratch
# by James Robertson <jameswrobertson@earthlink.net>
# Personal aliases and functions.
# Personal environment variables and startup programs should go in
# ~/.bash_profile. System wide environment variables and startup
# programs are in /etc/profile. System wide aliases and functions are
# in /etc/bashrc.
if [ -f "/etc/bashrc" ] ; then
source /etc/bashrc
fi
# Set up user specific i18n variables
#export LANG=<ll>
_<CC>
.<charmap>
<@modifiers>
# End ~/.bashrc
EOF
This is an empty ~/.bash_logout
that can be used as a template. You will notice that the base
~/.bash_logout
does not include
a clear
command. This is because the clear is handled in the
/etc/issue
file.
cat > ~/.bash_logout << "EOF"
# Begin ~/.bash_logout
# Written for Beyond Linux From Scratch
# by James Robertson <jameswrobertson@earthlink.net>
# Personal items to perform on logout.
# End ~/.bash_logout
EOF
If you want to use the dircolors
capability, then run the
following command. The /etc/skel
setup steps shown above also can
be used here to provide a ~/.dircolors
file when a new user is set
up. As before, just change the output file name on the
following command and assure the permissions, owner, and
group are correct on the files created and/or copied.
dircolors -p > /etc/dircolors
If you wish to customize the colors used for different file
types, you can edit the /etc/dircolors
file. The instructions for
setting the colors are embedded in the file.
Finally, Ian Macdonald has written an excellent collection of tips and tricks to enhance your shell environment. You can read it online at http://www.caliban.org/bash/index.shtml.
Last updated on 2017-07-09 13:14:34 -0700
The LFS book installs Vim as its text editor. At this point it should be noted that there are a lot of different editing applications out there including Emacs, nano, Joe and many more. Anyone who has been around the Internet (especially usenet) for a short time will certainly have observed at least one flame war, usually involving Vim and Emacs users!
The LFS book creates a basic vimrc
file. In this section you'll find an
attempt to enhance this file. At startup, vim reads the global
configuration file (/etc/vimrc
)
as well as a user-specific file (~/.vimrc
). Either or both can be tailored to
suit the needs of your particular system.
Here is a slightly expanded .vimrc
that you can put in ~/.vimrc
to provide user specific effects. Of
course, if you put it into /etc/skel/.vimrc
instead, it will be made
available to users you add to the system later. You can also
copy the file from /etc/skel/.vimrc
to the home directory of
users already on the system, such as root
. Be sure to set permissions, owner,
and group if you do copy anything directly from /etc/skel
.
" Begin .vimrc
set columns=80
set wrapmargin=8
set ruler
" End .vimrc
Note that the comment tags are " instead of the more usual # or
//. This is correct, the syntax for vimrc
is slightly unusual.
Below you'll find a quick explanation of what each of the options in this example file means here:
set columns=80
: This simply
sets the number of columns used on the screen.
set wrapmargin=8
: This is the
number of characters from the right window border where
wrapping starts.
set ruler
: This makes
vim show
the current row and column at the bottom right of the
screen.
More information on the many vim options can be found by
reading the help inside vim itself. Do this by typing
:help
in vim to get the general help,
or by typing :help
usr_toc.txt
to view the User Manual Table of Contents.
Last updated on 2007-10-16 06:02:24 -0700
When you first boot up your new LFS system, the logon screen
will be nice and plain (as it should be in a bare-bones
system). Many people however, will want their system to display
some information in the logon message. This can be accomplished
using the file /etc/issue
.
The /etc/issue
file is a plain
text file which will also accept certain escape sequences (see
below) in order to insert information about the system. There
is also the file issue.net
which
can be used when logging on remotely. ssh however, will only use it
if you set the option in the configuration file and will
not interpret the escape
sequences shown below.
One of the most common things which people want to do is clear
the screen at each logon. The easiest way of doing that is to
put a "clear" escape sequence into /etc/issue
. A simple way of doing this is to
issue the command clear >
/etc/issue. This will insert the relevant
escape code into the start of the /etc/issue
file. Note that if you do this,
when you edit the file, you should leave the characters
(normally '^[[H^[[2J') on the first line alone.
Terminal escape sequences are special codes recognized by the terminal. The ^[ represents an ASCII ESC character. The sequence ESC [ H puts the cursor in the upper left hand corner of the screen and ESC 2 J erases the screen. For more information on terminal escape sequences see http://rtfm.etla.org/xterm/ctlseq.html
The following sequences are recognized by agetty (the program which
usually parses /etc/issue
). This
information is from man
agetty where you can find extra information
about the logon process.
The issue
file can contain
certain character sequences to display various information. All
issue
sequences consist of a
backslash (\) immediately followed by one of the letters
explained below (so \d
in
/etc/issue
would insert the
current date).
b Insert the baudrate of the current line.
d Insert the current date.
s Insert the system name, the name of the operating system.
l Insert the name of the current tty line.
m Insert the architecture identifier of the machine, e.g., i686.
n Insert the nodename of the machine, also known as the hostname.
o Insert the domainname of the machine.
r Insert the release number of the kernel, e.g., 2.6.11.12.
t Insert the current time.
u Insert the number of current users logged in.
U Insert the string "1 user" or "<n> users" where <n> is the
number of current users logged in.
v Insert the version of the OS, e.g., the build-date etc.
Last updated on 2007-04-04 12:42:53 -0700
The lsb_release script gives information about the Linux Standards Base (LSB) status of the distribution.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://downloads.sourceforge.net/lsb/lsb-release-1.4.tar.gz
Download MD5 sum: 30537ef5a01e0ca94b7b8eb6a36bb1e4
Download size: 12 KB
Estimated disk space required: 80 KB
Estimated build time: less than 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/lsb_release
First fix a minor display problem:
sed -i "s|n/a|unavailable|" lsb_release
Install lsb_release by running the following commands:
./help2man -N --include ./lsb_release.examples \ --alt_version_key=program_version ./lsb_release > lsb_release.1
Now, as the root
user:
install -v -m 644 lsb_release.1 /usr/share/man/man1/lsb_release.1 && install -v -m 755 lsb_release /usr/bin/lsb_release
The configuration for this package was done in
LFS. The file /etc/lsb-release
should already exist. Be
sure that the DISTRIB_CODENAME entry has been set properly.
Last updated on 2017-08-18 12:42:43 -0700
Security takes many forms in a computing environment. After some initial discussion, this chapter gives examples of three different types of security: access, prevention and detection.
Access for users is usually handled by login or an application designed to handle the login function. In this chapter, we show how to enhance login by setting policies with PAM modules. Access via networks can also be secured by policies set by iptables, commonly referred to as a firewall. The Network Security Services (NSS) and Netscape Portable Runtime (NSPR) libraries can be installed and shared among the many applications requiring them. For applications that don't offer the best security, you can use the Stunnel package to wrap an application daemon inside an SSL tunnel.
Prevention of breaches, like a trojan, are assisted by applications like GnuPG, specifically the ability to confirm signed packages, which recognizes modifications of the tarball after the packager creates it.
Finally, we touch on detection with a package that stores "signatures" of critical files (defined by the administrator) and then regenerates those "signatures" and compares for files that have been changed.
All software has bugs. Sometimes, a bug can be exploited, for example to allow users to gain enhanced privileges (perhaps gaining a root shell, or simply accessing or deleting other user's files), or to allow a remote site to crash an application (denial of service), or for theft of data. These bugs are labelled as vulnerabilities.
The main place where vulnerabilities get logged is cve.mitre.org. Unfortunately, many vulnerability numbers (CVE-yyyy-nnnn) are initially only labelled as "reserved" when distributions start issuing fixes. Also, some vulnerabilities apply to particular combinations of configure options, or only apply to old versions of packages which have long since been updated in BLFS.
BLFS differs from distributions - there is no BLFS security team, and the editors only become aware of vulnerabilities after they are public knowledge. Sometimes, a package with a vulnerability will not be updated in the book for a long time. Issues can be logged in the Trac system, which might speed up resolution.
The normal way for BLFS to fix a vulnerability is, ideally, to update the book to a new fixed release of the package. Sometimes that happens even before the vulnerability is public knowledge, so there is no guarantee that it will be shown as a vulnerability fix in the Changelog. Alternatively, a sed command, or a patch taken from a distribution, may be appropriate.
The bottom line is that you are responsible for your own security, and for assessing the potential impact of any problems.
To keep track of what is being discovered, you may wish to follow the security announcements of one or more distributions. For example, Debian has Debian security. Fedora's links on security are at the Fedora wiki. Details of Gentoo linux security announcements are discussed at Gentoo security. Finally, the Slackware archives of security announcements are at Slackware security.
The most general English source is perhaps the Full Disclosure Mailing List, but please read the comment on that page. If you use other languages you may prefer other sites such as http://www.heise.de/security heise.de (German) or cert.hr (Croatian). These are not linux-specific. There is also a daily update at lwn.net for subscribers (free access to the data after 2 weeks, but their vulnerabilities database at lwn.net/Vulnerabilities is unrestricted).
For some packages, subscribing to their 'announce' lists will provide prompt news of newer versions.
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/vulnerabilities
Last updated on 2015-09-20 15:38:20 -0700
Public Key Infrastructure (PKI) is a method to validate the authenticity of an otherwise unknown entity across untrusted networks. PKI works by establishing a chain of trust, rather than trusting each individual host or entity explicitly. In order for a certificate presented by a remote entity to be trusted, that certificate must present a complete chain of certificates that can be validated using the root certificate of a Certificate Authority (CA) that is trusted by the local machine.
Establishing trust with a CA involves validating things like company address, ownership, contact information, etc., and ensuring that the CA has followed best practices, such as undergoing periodic security audits by independent investigators and maintaining an always available certificate revocation list. This is well outside the scope of BLFS (as it is for most Linux distributions). The certificate store provided here is taken from the Mozilla Foundation, who have established very strict inclusion policies described here.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://anduin.linuxfromscratch.org/BLFS/other/make-ca.sh-20170514
Download size: 24 KB
Download MD5 Sum: a21a04d6ff5c4645c748220dbaa9f221
Estimated disk space required: 6.5 MB (with all runtime deps)
Estimated build time: 0.2 SBU (with all runtime deps)
CA Certificates http://anduin.linuxfromscratch.org/BLFS/other/certdata.txt
Java-1.8.0.141 or OpenJDK-1.8.0.141, NSS-3.32, and p11-kit-0.23.8
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/cacerts
The make-ca.sh script will
process the certificates included in the certdata.txt
file for use in multiple
certificate stores (if the associated applications are
present on the system). Additionally, any local certificates
stored in /etc/ssl/local
will
be imported to the certificate stores. Certificates in this
directory should be stored as PEM encoded OpenSSL trusted certificates.
To create an OpenSSL trusted certificate from a regular PEM encoded file, provided by a CA not included in Mozilla's certificate distribution, you need to add trust arguments to the openssl command, and create a new certificate. There are three trust types that are recognized by the make-ca.sh script, SSL/TLS, S/Mime, and code signing. For example, using the CAcert root, if you want it to be trusted for all three roles, the following commands will create an appropriate OpenSSL trusted certificate:
install -vdm755 /etc/ssl/local && wget http://www.cacert.org/certs/root.crt && openssl x509 -in root.crt -text -fingerprint -setalias "CAcert Class 1 root" \ -addtrust serverAuth -addtrust emailProtection -addtrust codeSigning \ > /etc/ssl/local/CAcert_Class_1_root.pem
If one of the three trust arguments is omitted, the
certificate is neither trusted, nor rejected for that role.
Clients that use OpenSSL or
NSS encountering this
certificate will present a warning to the user. Clients using
GnuTLS without p11-kit support are not aware of trusted
certificates. To include this CA into the ca-bundle.crt (used
for GnuTLS), it must have
serverAuth
trust. Additionally, to
explicitly disallow a certificate for a particular use,
replace the -addtrust
flag with the -addreject
flag.
To install the various certificate stores, first install the
make-ca.sh script into the
correct location. As the root
user:
install -vm755 make-ca.sh-20170514 /usr/sbin/make-ca.sh
As the root
user, make sure
that certdata.txt is in the current directory, and update the
certificate stores with the following command:
If running the script a second time with the same version
of certdata.txt
, for
instance, to add additional stores as the requisite
software is installed, add the -f
switch to the command
line. If packaging, run make-ca.sh --help to see
all available command line options.
/usr/sbin/make-ca.sh
You should periodically download a copy of certdata.txt
and run the make-ca.sh script (as the root
user), or as part of a monthly
cron job to ensure that you
have the latest available version of the certificates.
The certdata.txt
file provided
by BLFS is obtained from the mozilla-release branch, and is
modified to provide a simple dated revision. This will be the
correct version for most systems. There are, however, several
other variants of the file available for use that might be
preferred for one reason or another, including the files
shipped with Mozilla products in this book. RedHat and
OpenSUSE, for instance, use the version included in NSS-3.32. Additional
upstream downloads are available at the links below.
Mozilla Release (the version provided by BLFS): https://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt
NSS (this is the latest available version): https://hg.mozilla.org/projects/nss/raw-file/tip/lib/ckfw/builtins/certdata.txt
Mozilla Central: https://hg.mozilla.org/mozilla-central/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt
Mozilla Beta: https://hg.mozilla.org/releases/mozilla-beta/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt
Mozilla Aurora: https://hg.mozilla.org/releases/mozilla-aurora/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt
Last updated on 2017-08-30 16:58:57 -0700
The CrackLib package contains a library used to enforce strong passwords by comparing user selected passwords to words in chosen word lists.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://github.com/cracklib/cracklib/releases/download/cracklib-2.9.6/cracklib-2.9.6.tar.gz
Download MD5 sum: c52f463585d85924b28cdc1e373ae06d
Download size: 628 KB
Estimated disk space required: 3.8 MB
Estimated build time: less than 0.1 SBU
Recommended word list for English-speaking countries (size: 5.3 MB; md5sum: cae1257e3a9f95c917cc9dbbab852316): https://github.com/cracklib/cracklib/releases/download/cracklib-2.9.6/cracklib-words-2.9.6.gz
There are additional word lists available for download, e.g., from http://www.cotse.com/tools/wordlists.htm. CrackLib can utilize as many, or as few word lists you choose to install.
Users tend to base their passwords on regular words of the spoken language, and crackers know that. CrackLib is intended to filter out such bad passwords at the source using a dictionary created from word lists. To accomplish this, the word list(s) for use with CrackLib must be an exhaustive list of words and word-based keystroke combinations likely to be chosen by users of the system as (guessable) passwords.
The default word list recommended above for downloading mostly satisfies this role in English-speaking countries. In other situations, it may be necessary to download (or even create) additional word lists.
Note that word lists suitable for spell-checking are not usable as CrackLib word lists in countries with non-Latin based alphabets, because of “word-based keystroke combinations” that make bad passwords.
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/cracklib
Install CrackLib by running the following commands:
sed -i '/skipping/d' util/packer.c && ./configure --prefix=/usr \ --disable-static \ --with-default-dict=/lib/cracklib/pw_dict && make
Now, as the root
user:
make install && mv -v /usr/lib/libcrack.so.* /lib && ln -sfv ../../lib/$(readlink /usr/lib/libcrack.so) /usr/lib/libcrack.so
Issue the following commands as the root
user to install the recommended word
list and create the CrackLib
dictionary. Other word lists (text based, one word per line)
can also be used by simply installing them into /usr/share/dict
and adding them to the
create-cracklib-dict
command.
install -v -m644 -D ../cracklib-words-2.9.6.gz \ /usr/share/dict/cracklib-words.gz && gunzip -v /usr/share/dict/cracklib-words.gz && ln -v -sf cracklib-words /usr/share/dict/words && echo $(hostname) >> /usr/share/dict/cracklib-extra-words && install -v -m755 -d /lib/cracklib && create-cracklib-dict /usr/share/dict/cracklib-words \ /usr/share/dict/cracklib-extra-words
If desired, check the proper operation of the library as an unprivileged user by issuing the following command:
make test
If you are installing CrackLib after your LFS system has been completed and you have the Shadow package installed, you must reinstall Shadow-4.5 if you wish to provide strong password support on your system. If you are now going to install the Linux-PAM-1.3.0 package, you may disregard this note as Shadow will be reinstalled after the Linux-PAM installation.
sed -i '/skipping/d' util/packer.c: Remove a meaningless warning.
--with-default-dict=/lib/cracklib/pw_dict
:
This parameter forces the installation of the CrackLib dictionary to the /lib
hierarchy.
--disable-static
:
This switch prevents installation of static versions of the
libraries.
mv -v /usr/lib/libcrack.so.2*
/lib and ln -v
-sf ../../lib/libcrack.so.2.8.1 ...: These
two commands move the libcrack.so.2.9.0
library and associated
symlink from /usr/lib
to
/lib
, then recreates the
/usr/lib/libcrack.so
symlink
pointing to the relocated file.
install -v -m644 -D
...: This command creates the /usr/share/dict
directory (if it doesn't
already exist) and installs the compressed word list there.
ln -v -s cracklib-words
/usr/share/dict/words: The word list is
linked to /usr/share/dict/words
as historically, words
is the
primary word list in the /usr/share/dict
directory. Omit this
command if you already have a /usr/share/dict/words
file installed on
your system.
echo $(hostname)
>>...: The value of hostname is echoed to a
file called cracklib-extra-words
. This extra file is
intended to be a site specific list which includes easy to
guess passwords such as company or department names, user
names, product names, computer names, domain names, etc.
create-cracklib-dict ...: This command creates the CrackLib dictionary from the word lists. Modify the command to add any additional word lists you have installed.
is used to determine if a password is strong. |
|
is used to format text files (lowercases all words, removes control characters and sorts the lists). |
|
creates a database with words read from standard input. |
|
displays on standard output the database specified. |
|
is used to create the CrackLib dictionary from the given word list(s). |
|
provides a fast dictionary lookup method for strong password enforcement. |
Last updated on 2017-08-16 21:41:37 -0700
cryptsetup is used to set up transparent encryption of block devices using the kernel crypto API.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://www.kernel.org/pub/linux/utils/cryptsetup/v1.7/cryptsetup-1.7.5.tar.xz
Download MD5 sum: d2d668223e795dcf750da44dc3e7076b
Download size: 1.2 MB
Estimated disk space required: 12 MB
Estimated build time: 0.1 SBU (add 7.4 SBU for tests)
libgcrypt-1.8.0, Nettle-3.3, LVM2-2.02.171, NSS-3.32, OpenSSL-1.1.0f, popt-1.16
libpwquality-1.4.0, LVM2-2.02.171, Python-2.7.13, and passwdqc
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/cryptsetup
Encrypted block devies require kernel support. To use it, the appropriate kernel configuration parameters need to be set:
Device Drivers --->
[*] Multiple devices driver support (RAID and LVM) ---> [CONFIG_MD]
<*/M> Device mapper support [CONFIG_BLK_DEV_DM]
<*/M> Crypt target support [CONFIG_DM_CRYPT]
Cryptographic API --->
<*/M> XTS support [CONFIG_CRYPTO_XTS]
<*/M> SHA224 and SHA256 digest algorithm [CONFIG_CRYPTO_SHA256]
<*/M> AES cipher algorithms [CONFIG_CRYPTO_AES]
<*/M> AES cipher algorithms (x86_64) [CONFIG_CRYPTO_AES_X86_64]
<*/M> User-space interface for symmetric key cipher algorithms
[CONFIG_CRYPTO_USER_API_SKCIPHER]
For tests:
<*/M> Twofish cipher algorithm [CONFIG_CRYPTO_TWOFISH]
Install cryptsetup by running the following commands:
./configure --prefix=/usr && make
To test the result, issue as the root
user: make check
Now, as the root
user:
make install
Because of the number of possible configurations, setup of encrypted volumes is beyond the scope of the BLFS book. Please see the configuration guide in the cryptsetup FAQ.
Last updated on 2017-08-31 20:56:24 -0700
The Cyrus SASL package contains a Simple Authentication and Security Layer, a method for adding authentication support to connection-based protocols. To use SASL, a protocol includes a command for identifying and authenticating a user to a server and for optionally negotiating protection of subsequent protocol interactions. If its use is negotiated, a security layer is inserted between the protocol and the connection.
This package is known to build and work properly using an LFS-8.1 platform.
Download (FTP): ftp://ftp.cyrusimap.org/cyrus-sasl/cyrus-sasl-2.1.26.tar.gz
Download MD5 sum: a7f4e5e559a0e37b3ffc438c9456e425
Download size: 5.0 MB
Estimated disk space required: 30 MB
Estimated build time: 0.5 SBU
Linux-PAM-1.3.0, MIT Kerberos V5-1.15.1, MariaDB-10.2.8 or MySQL, OpenJDK-1.8.0.141, OpenLDAP-2.4.45, PostgreSQL-9.6.4, SQLite-3.20.0, krb4 and Dmalloc
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/cyrus-sasl
Install Cyrus SASL by running the following commands:
patch -Np1 -i ../cyrus-sasl-2.1.26-fixes-3.patch && patch -Np1 -i ../cyrus-sasl-2.1.26-openssl-1.1.0-1.patch && autoreconf -fi && ./configure --prefix=/usr \ --sysconfdir=/etc \ --enable-auth-sasldb \ --with-dbpath=/var/lib/sasl/sasldb2 \ --with-saslauthd=/var/run/saslauthd && make
This package does not come with a test suite. If you are planning on using the GSSAPI authentication mechanism, it is recommended to test it after installing the package using the sample server and client programs which were built in the preceding step. Instructions for performing the tests can be found at http://www.linuxfromscratch.org/hints/downloads/files/cyrus-sasl.txt.
Now, as the root
user:
make install && install -v -dm755 /usr/share/doc/cyrus-sasl-2.1.26 && install -v -m644 doc/{*.{html,txt,fig},ONEWS,TODO} \ saslauthd/LDAP_SASLAUTHD /usr/share/doc/cyrus-sasl-2.1.26 && install -v -dm700 /var/lib/sasl
--with-dbpath=/var/lib/sasl/sasldb2
:
This switch forces the sasldb database to be
created in /var/lib/sasl
instead of /etc
.
--with-saslauthd=/var/run/saslauthd
:
This switch forces saslauthd to use the FHS
compliant directory /var/run/saslauthd
for variable run-time
data.
--enable-auth-sasldb
:
This switch enables SASLDB authentication backend.
--with-dblib=gdbm
: This switch
forces GDBM to be used
instead of Berkeley DB.
--with-ldap
: This switch enables
the OpenLDAP support.
--enable-ldapdb
: This switch
enables the LDAPDB authentication backend. There is a
circular dependency with this parameter. See http://wiki.linuxfromscratch.org/blfs/wiki/cyrus-sasl
for a solution to this problem.
--enable-java
: This switch
enables compiling of the Java support libraries.
--enable-login
: This option
enables unsupported LOGIN authentication.
--enable-ntlm
: This option
enables unsupported NTLM authentication.
install -v -m644 ...: These commands install documentation which is not installed by the make install command.
install -v -m700 -d /var/lib/sasl: This directory must exist when starting saslauthd or using the sasldb plugin. If you're not going to be running the daemon or using the plugins, you may omit the creation of this directory.
/etc/saslauthd.conf
(for
saslauthd
LDAP configuration) and /etc/sasl2/Appname.conf
(where "Appname"
is the application defined name of the application)
See file:///usr/share/doc/cyrus-sasl-2.1.26/sysadmin.html for information on what to include in the application configuration files.
See file:///usr/share/doc/cyrus-sasl-2.1.26/LDAP_SASLAUTHD for configuring saslauthd with OpenLDAP.
See file:///usr/share/doc/cyrus-sasl-2.1.26/gssapi.html for configuring saslauthd with Kerberos.
If you need to run the saslauthd daemon at
system startup, install the saslauthd.service
unit included in the
blfs-systemd-units-20160602
package using the following command:
make install-saslauthd
You'll need to modify /etc/default/saslauthd
and modify the
MECHANISM
parameter with your
desired authentication mechanism.
is used to list loadable SASL plugins and their properties. |
|
is the SASL authentication server. |
|
is used to list the users in the SASL password
database |
|
is used to set and delete a user's SASL password
and mechanism specific secrets in the SASL password
database |
|
is a test utility for the SASL authentication server. |
|
is a general purpose authentication library for server and client applications. |
Last updated on 2017-08-20 20:24:54 -0700
The GnuPG package is GNU's tool for secure communication and data storage. It can be used to encrypt data and to create digital signatures. It includes an advanced key management facility and is compliant with the proposed OpenPGP Internet standard as described in RFC2440 and the S/MIME standard as described by several RFCs. GnuPG 2 is the stable version of GnuPG integrating support for OpenPGP and S/MIME.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://www.gnupg.org/ftp/gcrypt/gnupg/gnupg-2.1.23.tar.bz2
Download (FTP): ftp://ftp.gnupg.org/gcrypt/gnupg/gnupg-2.1.23.tar.bz2
Download MD5 sum: 86c2304ead54b74a422e76c3f1bc7a91
Download size: 6.2 MB
Estimated disk space required: 107 MB (with makeinfo docs)
Estimated build time: 0.8 SBU (with makeinfo docs, add 1.4 SBU for tests)
Libassuan-2.4.3, libgcrypt-1.8.0, libgpg-error-1.27, Libksba-1.3.5, and npth-1.5
pinentry-1.0.0 (Run-time requirement for most of the package's functionality)
cURL-7.55.1, GnuTLS-3.5.14, ImageMagick-7.0.6-10 (for the convert utility, used for generating the documentation), libusb-compat-0.1.5, an MTA, OpenLDAP-2.4.45, SQLite-3.20.0, texlive-20170524 (or install-tl-unx), fig2dev (for generating documentation), and GNU adns
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gnupg2
If you are upgrading from gnupg prior to version 2.1,
upstream developers recommend to backup ~/.gnupg
, because some additional
configuration will probably be necessary, and you could
lose your keys. You can find instructions at http://jo-ke.name/wp/?p=111
and
https://wiki.archlinux.org/index.php/GnuPG#.22Lost.22_keys.2C_upgrading_to_gnupg_version_2.1.
If the top directory path where the source is unpacked contains symbolic links, the openpgp tests may fail. If this is your case and you wish to run the test suite, fix that with:
sed -e '/noinst_SCRIPTS = gpg-zip/c sbin_SCRIPTS += gpg-zip' \ -i tools/Makefile.in
Install GnuPG by running the following commands:
./configure --prefix=/usr \ --enable-symcryptrun \ --enable-maintainer-mode \ --docdir=/usr/share/doc/gnupg-2.1.23 && make && makeinfo --html --no-split \ -o doc/gnupg_nochunks.html doc/gnupg.texi && makeinfo --plaintext \ -o doc/gnupg.txt doc/gnupg.texi
If you have texlive-20170524 installed and you wish to create documentation in alternate formats, issue the following commands:
make -C doc pdf ps html
To test the results, issue: make check.
Note that if you have already installed GnuPG, the instructions below will
overwrite /usr/share/man/man1/gpg-zip.1
. Now, as the
root
user:
make install && install -v -m755 -d /usr/share/doc/gnupg-2.1.23/html && install -v -m644 doc/gnupg_nochunks.html \ /usr/share/doc/gnupg-2.1.23/html/gnupg.html && install -v -m644 doc/*.texi doc/gnupg.txt \ /usr/share/doc/gnupg-2.1.23
If you created alternate formats of the documentation,
install it using the following command as the root
user:
install -v -m644 doc/gnupg.html/* \ /usr/share/doc/gnupg-2.1.23/html && install -v -m644 doc/gnupg.{pdf,dvi,ps} \ /usr/share/doc/gnupg-2.1.23
sed ... tools/Makefile.in: This command is needed to build the gpg-zip program.
--docdir=/usr/share/doc/gnupg-2.1.23
:
This switch changes the default docdir to /usr/share/doc/gnupg-2.1.23
.
--enable-symcryptrun
:
This switch enables building the symcryptrun program.
--enable-maintainer-mode
: This
switch is needed for proper completion of the tests.
--enable-g13
: This switch enables
building the g13 program.
is used to create and populate user's |
|
is a wrapper script used to run gpgconf with the
|
|
is a tool that takes care of accessing the OpenPGP keyservers. |
|
is a tool to contact a running dirmngr and test whether a certificate has been revoked. |
|
is a tool to create, mount or unmount an encrypted file system container (optional). |
|
is a daemon used to manage secret (private) keys independently from any protocol. It is used as a backend for gpg2 and gpgsm as well as for a couple of other utilities. |
|
is a utility used to communicate with a running gpg-agent. |
|
is the OpenPGP part of the GNU Privacy Guard (GnuPG). It is a tool used to provide digital encryption and signing services using the OpenPGP standard. |
|
is a utility used to automatically and reasonably
safely query and modify configuration files in the
|
|
is a utility currently only useful for debugging.
Run it with |
|
executes the given scheme program or spawns an interactive shell. |
|
is a tool similar to gpg2 used to provide digital encryption and signing services on X.509 certificates and the CMS protocol. It is mainly used as a backend for S/MIME mail processing. |
|
is a tool to encrypt or sign files into an archive. |
|
is a verify only version of gpg2. |
|
encrypts or signs files into an archive. |
|
is used to list, export and import Keybox data. |
|
is a simple symmetric encryption tool. |
|
is used to listen to a Unix Domain socket created by any of the GnuPG tools. |
Last updated on 2017-08-26 21:14:29 -0700
The GnuTLS package contains libraries and userspace tools which provide a secure layer over a reliable transport layer. Currently the GnuTLS library implements the proposed standards by the IETF's TLS working group. Quoting from the TLS protocol specification:
“The TLS protocol provides communications privacy over the Internet. The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery.”
GnuTLS provides support for TLS 1.2, TLS 1.1, TLS 1.0, and SSL 3.0 protocols, TLS extensions, including server name and max record size. Additionally, the library supports authentication using the SRP protocol, X.509 certificates and OpenPGP keys, along with support for the TLS Pre-Shared-Keys (PSK) extension, the Inner Application (TLS/IA) extension and X.509 and OpenPGP certificate handling.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://www.gnupg.org/ftp/gcrypt/gnutls/v3.5/gnutls-3.5.14.tar.xz
Download (FTP): ftp://ftp.gnupg.org/gcrypt/gnutls/v3.5/gnutls-3.5.14.tar.xz
Download MD5 sum: 1e84b57a472b5f3b01f2c1b7a3a2bcbe
Download size: 6.9 MB
Estimated disk space required: 147 MB (add 42 MB for tests)
Estimated build time: 1.3 SBU (add 5.0 SBU for tests)
Certificate Authority Certificates, libunistring-0.9.7, libtasn1-4.12, and p11-kit-0.23.8
Doxygen-1.8.13, GTK-Doc-1.26, Guile-2.2.2, libidn-1.33 or libidn2, Net-tools-CVS_20101030 (used during the test suite), texlive-20170524 or install-tl-unx, Unbound-1.6.5 (to build the DANE library), Valgrind-3.13.0 (used during the test suite), autogen, cmocka and datefudge (used during the test suite if the DANE library is built), and Trousers (Trusted Platform Module support)
Note that if you do not install libtasn1-4.12, an older version shipped in the GnuTLS tarball will be used instead.
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gnutls
Install GnuTLS by running the following commands:
./configure --prefix=/usr \ --with-default-trust-store-pkcs11="pkcs11:" && make
To test the results, issue: make check. If a prior
version of GnuTLS (or the
same version but without all of the recommended dependencies)
has been installed, some tests may fail. If /usr/lib/libgnutls.so
and the target of
that symlink are moved or renamed so that they cannot be
found, all tests should pass and the install procedure will
restore libgnutls.so
and the
versioned library it points to.
Now, as the root
user:
make install
If you passed --enable-gtk-doc
to
the configure
script, the API will automatically be installed. Otherwise,
if desired, you can still install the API documentation to
the /usr/share/gtk-doc/html/gnutls
directory
using the following command as the root
user:
make -C doc/reference install-data-local
--with-default-trust-store-pkcs11="pkcs11:"
:
This switch tells gnutls to use the PKCS #11 trust store as
the default trust. Omit this switch if p11-kit-0.23.8 is not
installed.
--with-default-trust-store-file=/etc/ssl/ca-bundle.crt
:
This switch tells configure where to find the
legacy CA certificate bundle and to use it instead of PKCS
#11 module by default. Use this if p11-kit-0.23.8 is not
installed.
--enable-gtk-doc
: Use this
parameter if GTK-Doc is
installed and you wish to rebuild and install the API
documentation.
--enable-openssl-compatibility
:
Use this switch if you wish to build the OpenSSL
compatibility library.
--without-p11-kit
: use this
switch if you have not installed p11-kit.
--with-included-unistring
: uses
the bundled version of libunistring, instead of the system
one. Use this switch if you have not installed libunistring-0.9.7.
is used to generate X.509 certificates, certificate requests, and private keys. |
|
is a tool used to generate and check DNS resource records for the DANE protocol. |
|
is a simple client program to set up a TLS connection to some other computer. |
|
is a simple client program to set up a TLS connection to some other computer and produces very verbose progress results. |
|
is a simple server program that listens to incoming TLS connections. |
|
is a program that can parse and print information about OCSP requests/responses, generate requests and verify responses. |
|
is a program that allows handling data from PKCS #11 smart cards and security modules. |
|
is a simple program that generates random keys for use with TLS-PSK. |
|
is a simple program that emulates the programs in the Stanford SRP (Secure Remote Password) libraries using GnuTLS. |
|
contains the core API functions and X.509 certificate API functions. |
Last updated on 2017-08-20 15:06:11 -0700
The GPGME package is a C library that allows cryptography support to be added to a program. It is designed to make access to public key crypto engines like GnuPG or GpgSM easier for applications. GPGME provides a high-level crypto API for encryption, decryption, signing, signature verification and key management.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://www.gnupg.org/ftp/gcrypt/gpgme/gpgme-1.9.0.tar.bz2
Download (FTP): ftp://ftp.gnupg.org/gcrypt/gpgme/gpgme-1.9.0.tar.bz2
Download MD5 sum: 1e00bb8ef04d1d05d5a0f19e143854c3
Download size: 1.3 MB
Estimated disk space required: 127 MB (with all bindings)
Estimated build time: 1.1 SBU (with all bindings, add 0.2 SBU for tests)
Doxygen-1.8.13 (for API documentation), GnuPG-2.1.23 (used during the testsuite), and Clisp-2.49, Python-2.7.13, Python-3.6.2, Qt-5.9.1, and/or SWIG-3.0.12 (for language bindings)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gpgme
Install GPGME by running the following commands:
./configure --prefix=/usr && make
To test the results, issue: make check.
Now, as the root
user:
make install
Last updated on 2017-08-20 20:24:54 -0700
The Haveged package contains a daemon that generates an unpredictable stream of random numbers and feeds the /dev/random device.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://downloads.sourceforge.net/haveged/haveged-1.9.1.tar.gz
Download MD5 sum: 015ff58cd10607db0e0de60aeca2f5f8
Download size: 468 KB
Estimated disk space required: 4.8 MB
Estimated build time: 0.2 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/haveged
Install Haveged by running the following commands:
./configure --prefix=/usr && make
To test the results, issue: make check.
Now, as the root
user:
make install && mkdir -pv /usr/share/doc/haveged-1.9.1 && cp -v README /usr/share/doc/haveged-1.9.1
If you want the Haveged
daemon to start automatically when the system is booted,
install the haveged.service
unit included in the blfs-systemd-units-20160602
package (as the root
user):
make install-haveged
Last updated on 2017-08-29 10:55:51 -0700
The next part of this chapter deals with firewalls. The principal firewall tool for Linux is Iptables. You will need to install Iptables if you intend on using any form of a firewall.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://www.netfilter.org/projects/iptables/files/iptables-1.6.1.tar.bz2
Download (FTP): ftp://ftp.netfilter.org/pub/iptables/iptables-1.6.1.tar.bz2
Download MD5 sum: ab38a33806b6182c6f53d6afb4619add
Download size: 608 KB
Estimated disk space required: 15 MB
Estimated build time: 0.2 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/iptables
A firewall in Linux is accomplished through a portion of the kernel called netfilter. The interface to netfilter is Iptables. To use it, the appropriate kernel configuration parameters are found in:
[*] Networking support ---> [CONFIG_NET]
Networking Options --->
[*] Network packet filtering framework (Netfilter) ---> [CONFIG_NETFILTER]
The installation below does not include building some
specialized extension libraries which require the raw
headers in the Linux
source code. If you wish to build the additional extensions
(if you aren't sure, then you probably don't), you can look
at the INSTALL
file to see an
example of how to change the KERNEL_DIR=
parameter to
point at the Linux source
code. Note that if you upgrade the kernel version, you may
also need to recompile Iptables and that the BLFS team has
not tested using the raw kernel headers.
For some non-x86 architectures, the raw kernel headers may
be required. In that case, modify the KERNEL_DIR=
parameter to
point at the Linux source
code.
Install Iptables by running the following commands:
./configure --prefix=/usr \ --sbindir=/sbin \ --disable-nftables \ --enable-libipq \ --with-xtlibdir=/lib/xtables && make
This package does not come with a test suite.
Now, as the root
user:
make install && ln -sfv ../../sbin/xtables-multi /usr/bin/iptables-xml && for file in ip4tc ip6tc ipq iptc xtables do mv -v /usr/lib/lib${file}.so.* /lib && ln -sfv ../../lib/$(readlink /usr/lib/lib${file}.so) /usr/lib/lib${file}.so done
--disable-nftables
:
This switch disables building nftables compat. Omit this
switch if you have installed nftables.
--enable-libipq
: This
switch enables building of libipq.so
which can be used by some
packages outside of BLFS.
--with-xtlibdir=/lib/xtables
:
Ensure all Iptables modules
are installed in the /lib/xtables
directory.
--enable-nfsynproxy
: This switch
enables installation of nfsynproxy SYNPROXY configuration tool.
ln -sfv ../../sbin/xtables-multi /usr/bin/iptables-xml: Ensure the symbolic link for iptables-xml is relative.
Introductory instructions for configuring your firewall are presented in the next section: Firewalling
To set up the iptables firewall at boot, install the
iptables.service
unit
included in the blfs-systemd-units-20160602
package.
make install-iptables
is used to set up, maintain, and inspect the tables of IP packet filter rules in the Linux kernel. |
|
is used to restore IP Tables from data specified on STDIN. Use I/O redirection provided by your shell to read from a file. |
|
is used to dump the contents of an IP Table in easily parseable format to STDOUT. Use I/O-redirection provided by your shell to write to a file. |
|
is used to convert the output of iptables-save to
an XML format. Using the |
|
are a set of commands for IPV6 that parallel the iptables commands above. |
|
(optional) configuration tool. SYNPROXY target makes handling of large SYN floods possible without the large performance penalties imposed by the connection tracking in such cases. |
|
is a binary that behaves according to the name it is called by. |
Last updated on 2017-08-25 14:22:07 -0700
Before you read this part of the chapter, you should have already installed iptables as described in the previous section.
The general purpose of a firewall is to protect a computer or a network against malicious access.
In a perfect world, every daemon or service on every machine is perfectly configured and immune to flaws such as buffer overflows or other problems regarding its security. Furthermore, you trust every user accessing your services. In this world, you do not need to have a firewall.
In the real world however, daemons may be misconfigured and exploits against essential services are freely available. You may wish to choose which services are accessible by certain machines or you may wish to limit which machines or applications are allowed external access. Alternatively, you may simply not trust some of your applications or users. You are probably connected to the Internet. In this world, a firewall is essential.
Don't assume however, that having a firewall makes careful configuration redundant, or that it makes any negligent misconfiguration harmless. It doesn't prevent anyone from exploiting a service you intentionally offer but haven't recently updated or patched after an exploit went public. Despite having a firewall, you need to keep applications and daemons on your system properly configured and up to date. A firewall is not a cure all, but should be an essential part of your overall security strategy.
The word firewall can have several different meanings.
This is a hardware device or software program commercially sold (or offered via freeware) by companies such as Symantec which claims that it secures a home or desktop computer connected to the Internet. This type of firewall is highly relevant for users who do not know how their computers might be accessed via the Internet or how to disable that access, especially if they are always online and connected via broadband links.
This is a system placed between the Internet and an intranet. To minimize the risk of compromising the firewall itself, it should generally have only one role—that of protecting the intranet. Although not completely risk free, the tasks of doing the routing and IP masquerading (rewriting IP headers of the packets it routes from clients with private IP addresses onto the Internet so that they seem to come from the firewall itself) are commonly considered relatively secure.
This is often an old computer you may have retired and nearly forgotten, performing masquerading or routing functions, but offering non-firewall services such as a web-cache or mail. This may be used for home networks, but is not to be considered as secure as a firewall only machine because the combination of server and router/firewall on one machine raises the complexity of the setup.
This box performs masquerading or routing, but grants public access to some branch of your network which, because of public IPs and a physically separated structure, is essentially a separate network with direct Internet access. The servers on this network are those which must be easily accessible from both the Internet and intranet. The firewall protects both networks. This type of firewall has a minimum of three network interfaces.
This introduction on how to setup a firewall is not a complete guide to securing systems. Firewalling is a complex issue that requires careful configuration. The scripts quoted here are simply intended to give examples of how a firewall works. They are not intended to fit into any particular configuration and may not provide complete protection from an attack.
Customization of these scripts for your specific situation will be necessary for an optimal configuration, but you should make a serious study of the iptables documentation and creating firewalls in general before hacking away. Have a look at the list of links for further reading at the end of this section for more details. There you will find a list of URLs that contain quite comprehensive information about building your own firewall.
The main startup firewall is located in the file /etc/systemd/scripts/iptables
. The sections
below provide three different approaches that can be used for
a system.
You should always run your firewall rules from a script. This ensures consistency and a record of what was done. It also allows retention of comments that are essential for understanding the rules long after they were written.
A Personal Firewall is designed to let you access all the services offered on the Internet, but keep your box secure and your data private.
Below is a slightly modified version of Rusty Russell's recommendation from the Linux 2.4 Packet Filtering HOWTO. It is still applicable to the Linux 2.6 kernels.
install -v -dm755 /etc/systemd/scripts
cat > /etc/systemd/scripts/iptables << "EOF"
#!/bin/sh
# Begin /etc/systemd/scripts/iptables
# Insert connection-tracking modules
# (not needed if built into the kernel)
modprobe nf_conntrack
modprobe xt_LOG
# Enable broadcast echo Protection
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
# Disable Source Routed Packets
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route
echo 0 > /proc/sys/net/ipv4/conf/default/accept_source_route
# Enable TCP SYN Cookie Protection
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
# Disable ICMP Redirect Acceptance
echo 0 > /proc/sys/net/ipv4/conf/default/accept_redirects
# Do not send Redirect Messages
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects
# Drop Spoofed Packets coming in on an interface, where responses
# would result in the reply going out a different interface.
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
# Log packets with impossible addresses.
echo 1 > /proc/sys/net/ipv4/conf/all/log_martians
echo 1 > /proc/sys/net/ipv4/conf/default/log_martians
# be verbose on dynamic ip-addresses (not needed in case of static IP)
echo 2 > /proc/sys/net/ipv4/ip_dynaddr
# disable Explicit Congestion Notification
# too many routers are still ignorant
echo 0 > /proc/sys/net/ipv4/tcp_ecn
# Set a known state
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
# These lines are here in case rules are already in place and the
# script is ever rerun on the fly. We want to remove all rules and
# pre-existing user defined chains before we implement new rules.
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
# Allow local-only connections
iptables -A INPUT -i lo -j ACCEPT
# Free output on any interface to any ip for any service
# (equal to -P ACCEPT)
iptables -A OUTPUT -j ACCEPT
# Permit answers on already established connections
# and permit new connections related to established ones
# (e.g. port mode ftp)
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# Log everything else. What's Windows' latest exploitable vulnerability?
iptables -A INPUT -j LOG --log-prefix "FIREWALL:INPUT "
# End /etc/systemd/scripts/iptables
EOF
chmod 700 /etc/systemd/scripts/iptables
This script is quite simple, it drops all traffic coming into your computer that wasn't initiated from your computer, but as long as you are simply surfing the Internet you are unlikely to exceed its limits.
If you frequently encounter certain delays at accessing FTP servers, take a look at BusyBox example number 4.
Even if you have daemons or services running on your system, these will be inaccessible everywhere but from your computer itself. If you want to allow access to services on your machine, such as ssh or ping, take a look at BusyBox.
A true Firewall has two interfaces, one connected to an intranet, in this example eth0, and one connected to the Internet, here ppp0. To provide the maximum security for the firewall itself, make sure that there are no unnecessary servers running on it such as X11 et al. As a general principle, the firewall itself should not access any untrusted service (think of a remote server giving answers that makes a daemon on your system crash, or even worse, that implements a worm via a buffer-overflow).
install -v -dm755 /etc/systemd/scripts
cat > /etc/systemd/scripts/iptables << "EOF"
#!/bin/sh
# Begin /etc/systemd/scripts/iptables
echo
echo "You're using the example configuration for a setup of a firewall"
echo "from Beyond Linux From Scratch."
echo "This example is far from being complete, it is only meant"
echo "to be a reference."
echo "Firewall security is a complex issue, that exceeds the scope"
echo "of the configuration rules below."
echo "You can find additional information"
echo "about firewalls in Chapter 4 of the BLFS book."
echo "http://www.linuxfromscratch.org/blfs"
echo
# Insert iptables modules (not needed if built into the kernel).
modprobe nf_conntrack
modprobe nf_conntrack_ftp
modprobe xt_conntrack
modprobe xt_LOG
modprobe xt_state
# Enable broadcast echo Protection
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
# Disable Source Routed Packets
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route
# Enable TCP SYN Cookie Protection
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
# Disable ICMP Redirect Acceptance
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects
# Don't send Redirect Messages
echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects
# Drop Spoofed Packets coming in on an interface where responses
# would result in the reply going out a different interface.
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
# Log packets with impossible addresses.
echo 1 > /proc/sys/net/ipv4/conf/all/log_martians
# Be verbose on dynamic ip-addresses (not needed in case of static IP)
echo 2 > /proc/sys/net/ipv4/ip_dynaddr
# Disable Explicit Congestion Notification
# Too many routers are still ignorant
echo 0 > /proc/sys/net/ipv4/tcp_ecn
# Set a known state
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
# These lines are here in case rules are already in place and the
# script is ever rerun on the fly. We want to remove all rules and
# pre-existing user defined chains before we implement new rules.
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
# Allow local connections
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# Allow forwarding if the initiated on the intranet
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD ! -i ppp+ -m conntrack --ctstate NEW -j ACCEPT
# Do masquerading
# (not needed if intranet is not using private ip-addresses)
iptables -t nat -A POSTROUTING -o ppp+ -j MASQUERADE
# Log everything for debugging
# (last of all rules, but before policy rules)
iptables -A INPUT -j LOG --log-prefix "FIREWALL:INPUT "
iptables -A FORWARD -j LOG --log-prefix "FIREWALL:FORWARD "
iptables -A OUTPUT -j LOG --log-prefix "FIREWALL:OUTPUT "
# Enable IP Forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
# End /etc/systemd/scripts/iptables
EOF
chmod 700 /etc/systemd/scripts/iptables
With this script your intranet should be reasonably secure against external attacks. No one should be able to setup a new connection to any internal service and, if it's masqueraded, makes your intranet invisible to the Internet. Furthermore, your firewall should be relatively safe because there are no services running that a cracker could attack.
If the interface you're connecting to the Internet
doesn't connect via PPP, you will need to change
<ppp+>
to
the name of the interface (e.g., eth1) which you are
using.
This scenario isn't too different from the Masquerading Router, but additionally offers some services to your intranet. Examples of this can be when you want to administer your firewall from another host on your intranet or use it as a proxy or a name server.
Outlining a true concept of how to protect a server that offers services on the Internet goes far beyond the scope of this document. See the references at the end of this section for more information.
Be cautious. Every service you have enabled makes your setup more complex and your firewall less secure. You are exposed to the risks of misconfigured services or running a service with an exploitable bug. A firewall should generally not run any extra services. See the introduction to the Masquerading Router for some more details.
If you want to add services such as internal Samba or name servers that do not need to access the Internet themselves, the additional statements are quite simple and should still be acceptable from a security standpoint. Just add the following lines into the script before the logging rules.
iptables -A INPUT -i ! ppp+ -j ACCEPT
iptables -A OUTPUT -o ! ppp+ -j ACCEPT
If daemons, such as squid, have to access the Internet themselves, you could open OUTPUT generally and restrict INPUT.
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -j ACCEPT
However, it is generally not advisable to leave OUTPUT unrestricted. You lose any control over trojans who would like to "call home", and a bit of redundancy in case you've (mis-)configured a service so that it broadcasts its existence to the world.
To accomplish this, you should restrict INPUT and OUTPUT on all ports except those that it's absolutely necessary to have open. Which ports you have to open depends on your needs: mostly you will find them by looking for failed accesses in your log files.
Have a Look at the Following Examples:
Squid is caching the web:
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --sport 80 -m conntrack --ctstate ESTABLISHED \
-j ACCEPT
Your caching name server (e.g., named) does its lookups via UDP:
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
You want to be able to ping your computer to ensure it's still alive:
iptables -A INPUT -p icmp -m icmp --icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -p icmp -m icmp --icmp-type echo-reply -j ACCEPT
If you are frequently accessing FTP servers or enjoy chatting, you might notice certain delays because some implementations of these daemons have the feature of querying an identd on your system to obtain usernames. Although there's really little harm in this, having an identd running is not recommended because many security experts feel the service gives out too much additional information.
To avoid these delays you could reject the requests with a 'tcp-reset':
iptables -A INPUT -p tcp --dport 113 -j REJECT --reject-with tcp-reset
To log and drop invalid packets (packets that came in after netfilter's timeout or some types of network scans) insert these rules at the top of the chain:
iptables -I INPUT 0 -p tcp -m conntrack --ctstate INVALID \
-j LOG --log-prefix "FIREWALL:INVALID "
iptables -I INPUT 1 -p tcp -m conntrack --ctstate INVALID -j DROP
Anything coming from the outside should not have a private address, this is a common attack called IP-spoofing:
iptables -A INPUT -i ppp+ -s 10.0.0.0/8 -j DROP
iptables -A INPUT -i ppp+ -s 172.16.0.0/12 -j DROP
iptables -A INPUT -i ppp+ -s 192.168.0.0/16 -j DROP
There are other addresses that you may also want to drop: 0.0.0.0/8, 127.0.0.0/8, 224.0.0.0/3 (multicast and experimental), 169.254.0.0/16 (Link Local Networks), and 192.0.2.0/24 (IANA defined test network).
If your firewall is a DHCP client, you need to allow those packets:
iptables -A INPUT -i ppp0 -p udp -s 0.0.0.0 --sport 67 \
-d 255.255.255.255 --dport 68 -j ACCEPT
To simplify debugging and be fair to anyone who'd like to access a service you have disabled, purposely or by mistake, you could REJECT those packets that are dropped.
Obviously this must be done directly after logging as the very last lines before the packets are dropped by policy:
iptables -A INPUT -j REJECT
These are only examples to show you some of the
capabilities of the firewall code in Linux. Have a look at
the man page of iptables. There you will find much more
information. The port numbers needed for this can be found
in /etc/services
, in case you
didn't find them by trial and error in your log file.
Finally, there is one fact you must not forget: The effort spent attacking a system corresponds to the value the cracker expects to gain from it. If you are responsible for valuable information, you need to spend the time to protect it properly.
www.netfilter.org - Homepage of the netfilter/iptables project
Netfilter related FAQ
Netfilter related HOWTO's
en.tldp.org/LDP/nag2/x-087-2-firewall.html
en.tldp.org/HOWTO/Security-HOWTO.html
en.tldp.org/HOWTO/Firewall-HOWTO.html
www.linuxsecurity.com/docs/
www.little-idiot.de/firewall (German & outdated, but very comprehensive)
linux.oreillynet.com/pub/a/linux/2000/03/10/netadmin/ddos.html
staff.washington.edu/dittrich/misc/ddos
www.e-infomax.com/ipmasq
www.circlemud.org/~jelson/writings/security/index.htm
www.securityfocus.com
www.cert.org - tech_tips
security.ittoolbox.com
www.insecure.org/reading.html
Last updated on 2016-06-04 22:57:10 -0700
The libcap package was installed in LFS, but if Linux-PAM support is desired, the PAM module must be built (after installation of Linux-PAM).
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://www.kernel.org/pub/linux/libs/security/linux-privs/libcap2/libcap-2.25.tar.xz
Download MD5 sum: 6666b839e5d46c2ad33fc8aa2ceb5f77
Download size: 64 KB
Estimated disk space required: 1.7 MB
Estimated build time: less than 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libcap
Install libcap by running the following commands:
make -C pam_cap
This package does not come with a test suite.
Now, as the root
user:
install -v -m755 pam_cap/pam_cap.so /lib/security && install -v -m644 pam_cap/capability.conf /etc/security
Last updated on 2017-08-26 09:42:24 -0700
The Linux PAM package contains Pluggable Authentication Modules used to enable the local system administrator to choose how applications authenticate users.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://linux-pam.org/library/Linux-PAM-1.3.0.tar.bz2
Download MD5 sum: da4b2289b7cfb19583d54e9eaaef1c3a
Download size: 1.3 MB
Estimated disk space required: 28 MB (with tests)
Estimated build time: 0.5 SBU (with tests)
Optional Documentation
Download (HTTP): http://linux-pam.org/documentation/Linux-PAM-1.2.0-docs.tar.bz2
Download MD5 sum: 558378b8be9b8b5c987326f4529f2130
Download size 480 KB
Berkeley DB-6.2.32, CrackLib-2.9.6, libtirpc-1.0.2 and Prelude
docbook-xml-4.5, docbook-xsl-1.79.1, fop-2.2, libxslt-1.1.29 and either w3m-0.5.3 or elinks (but with a link calling it 'links') and remove the documentation switch.
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/linux-pam
If you downloaded the documentation, unpack the tarball by issuing the following command.
tar -xf ../Linux-PAM-1.2.0-docs.tar.bz2 --strip-components=1
Install Linux PAM by running the following commands:
./configure --prefix=/usr \ --sysconfdir=/etc \ --libdir=/usr/lib \ --disable-regenerate-docu \ --enable-securedir=/lib/security \ --docdir=/usr/share/doc/Linux-PAM-1.3.0 && make
To test the results, a suitable /etc/pam.d/other
configuration file must
exist.
If you have a system with Linux PAM installed and working,
be careful when modifying the files in /etc/pam.d
, since your system may become
totally unusable. If you want to run the tests, you do not
need to create another /etc/pam.d/other
file. The installed one
can be used for that purpose.
You should also be aware that make install overwrites
the configuration files in /etc/security
as well as /etc/environment
. In case you have
modified those files, be sure to back them up.
For a first installation, create the configuration file by
issuing the following commands as the root
user:
install -v -m755 -d /etc/pam.d && cat > /etc/pam.d/other << "EOF" auth required pam_deny.so account required pam_deny.so password required pam_deny.so session required pam_deny.so EOF
Now run the tests by issuing make check. Ensure there are no errors produced by the tests before continuing the installation. Note that the checks are quite long. It may be useful to redirect the output to a log file in order to inspect it thoroughly.
Only in case of a first installation, remove the
configuration file created earlier by issuing the following
command as the root
user:
rm -fv /etc/pam.d/*
Now, as the root
user:
make install && chmod -v 4755 /sbin/unix_chkpwd && for file in pam pam_misc pamc do mv -v /usr/lib/lib${file}.so.* /lib && ln -sfv ../../lib/$(readlink /usr/lib/lib${file}.so) /usr/lib/lib${file}.so done
--enable-securedir=/lib/security
:
This switch sets install location for the PAM modules.
--disable-regenerate-docu
:
This switch prevents this version of the package trying to
build its documentation, and failing, if the required
dependencies except
w3m-0.5.3
are present, but Links-2.14 is present. Remove this switch if
you have installed w3m (or elinks, with a link so it can be
invoked as 'links').
chmod -v 4755
/sbin/unix_chkpwd: The unix_chkpwd helper program
must be setuid so that non-root
processes can access the shadow
file.
Configuration information is placed in /etc/pam.d/
. Below is an example file:
# 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
Now set up some generic files. As root:
install -vdm755 /etc/pam.d && cat > /etc/pam.d/system-account << "EOF" &&# Begin /etc/pam.d/system-account account required pam_unix.so # End /etc/pam.d/system-account
EOF cat > /etc/pam.d/system-auth << "EOF" &&# Begin /etc/pam.d/system-auth auth required pam_unix.so # End /etc/pam.d/system-auth
EOF cat > /etc/pam.d/system-session << "EOF"# Begin /etc/pam.d/system-session session required pam_unix.so # End /etc/pam.d/system-session
EOF
The remaining generic file depends on whether CrackLib-2.9.6 is installed. If it is installed, use:
cat > /etc/pam.d/system-password << "EOF"
# Begin /etc/pam.d/system-password
# check new passwords for strength (man pam_cracklib)
password required pam_cracklib.so type=Linux retry=3 difok=5 \
difignore=23 minlen=9 dcredit=1 \
ucredit=1 lcredit=1 ocredit=1 \
dictpath=/lib/cracklib/pw_dict
# use sha512 hash for encryption, use shadow, and use the
# authentication token (chosen password) set by pam_cracklib
# above (or any previous modules)
password required pam_unix.so sha512 shadow use_authtok
# End /etc/pam.d/system-password
EOF
In its default configuration, pam_cracklib will allow
multiple case passwords as short as 6 characters, even
with the minlen
value set to 11. You should review the pam_cracklib(8)
man page and determine if these default values are
acceptable for the security of your system.
If CrackLib-2.9.6 is NOT installed, use:
cat > /etc/pam.d/system-password << "EOF"
# Begin /etc/pam.d/system-password
# use sha512 hash for encryption, use shadow, and try to use any previously
# defined authentication token (chosen password) set by any prior module
password required pam_unix.so sha512 shadow try_first_pass
# End /etc/pam.d/system-password
EOF
Now add a restrictive /etc/pam.d/other
configuration file. With
this file, programs that are PAM aware will not run unless
a configuration file specifically for that application is
created.
cat > /etc/pam.d/other << "EOF"
# Begin /etc/pam.d/other
auth required pam_warn.so
auth required pam_deny.so
account required pam_warn.so
account required pam_deny.so
password required pam_warn.so
password required pam_deny.so
session required pam_warn.so
session required pam_deny.so
# End /etc/pam.d/other
EOF
The PAM man page (man pam) provides a good starting point for descriptions of fields and allowable entries. The Linux-PAM System Administrators' Guide is recommended for additional information.
Refer to http://debian.securedservers.com/kernel/pub/linux/libs/pam/modules.html for a list of various third-party modules available.
You should now reinstall the Shadow-4.5 and Systemd-234 packages.
is a helper binary that creates home directories. |
|
is used to interrogate and manipulate the login counter file. |
|
is used to interrogate and manipulate the login counter file, but does not have some limitations that pam_tally does. |
|
is used to check if the default timestamp is valid |
|
is a helper binary that verifies the password of the current user. |
|
is a helper binary that updates the password of a given user. |
|
provides the interfaces between applications and the PAM modules. |
Last updated on 2017-08-16 21:41:37 -0700
liboauth is a collection of POSIX-C functions implementing the OAuth Core RFC 5849 standard. Liboauth provides functions to escape and encode parameters according to OAuth specification and offers high-level functionality to sign requests or verify OAuth signatures as well as perform HTTP requests.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://downloads.sourceforge.net/liboauth/liboauth-1.0.3.tar.gz
Download MD5 sum: 689b46c2b3ab1a39735ac33f714c4f7f
Download size: 496 KB
Estimated disk space required: 3.5 MB
Estimated build time: less than 0.1 SBU
Required patch for use with OpenSSL-1.1.0f: http://www.linuxfromscratch.org/patches/blfs/8.1/liboauth-1.0.3-openssl-1.1.0-2.patch
cURL-7.55.1 and OpenSSL-1.1.0f or NSS-3.32
Doxygen-1.8.13 (to build documentation)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/liboauth
If building with OpenSSL-1.1.0f support, apply a patch for the new version:
patch -Np1 -i ../liboauth-1.0.3-openssl-1.1.0-2.patch
Install liboauth by running the following commands:
./configure --prefix=/usr --disable-static && make
If you have installed Doxygen-1.8.13, issue make dox to build the documentation.
To test the results, issue: make check.
Now, as the root
user:
make install
If you have previously built the documentation, install it by
running the following commands as the root
user:
install -v -dm755 /usr/share/doc/liboauth-1.0.3 && cp -rv doc/html/* /usr/share/doc/liboauth-1.0.3
--disable-static
:
This switch prevents installation of static versions of the
libraries.
--enable-nss
: Use this switch if
you want to use Mozilla NSS instead of OpenSSL.
Last updated on 2017-08-28 23:13:49 -0700
The libpwquality package provides common functions for password quality checking and also scoring them based on their apparent randomness. The library also provides a function for generating random passwords with good pronounceability.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://github.com/libpwquality/libpwquality/releases/download/libpwquality-1.4.0/libpwquality-1.4.0.tar.bz2
Download MD5 sum: b8defcc7280a90e9400d6689c93a279c
Download size: 440 KB
Estimated disk space required: 4.0 MB
Estimated build time: less than 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libpwquality
Install libpwquality by running the following commands:
./configure --prefix=/usr --disable-static && make
This package does not come with a test suite.
Now, as the root
user:
make install
Last updated on 2015-09-25 08:48:24 -0500
MIT Kerberos V5 is a free implementation of Kerberos 5. Kerberos is a network authentication protocol. It centralizes the authentication database and uses kerberized applications to work with servers or services that support Kerberos allowing single logins and encrypted communication over internal networks or the Internet.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://web.mit.edu/kerberos/dist/krb5/1.15/krb5-1.15.1.tar.gz
Download MD5 sum: 8022f3a1cde8463e44fd35ef42731f85
Download size: 9.0 MB
Estimated disk space required: 136 MB (additional 24 MB for the testsuite)
Estimated build time: 0.9 SBU (additional 4.0 SBU for the testsuite)
DejaGnu-1.6 (for full test coverage), GnuPG-2.1.23 (to authenticate the package), keyutils-1.5.10, OpenLDAP-2.4.45, Python-2.7.13 (used during the testsuite), rpcbind-0.2.4 (used during the testsuite), and Valgrind-3.13.0 (used during the test suite)
Some sort of time synchronization facility on your system (like ntp-4.2.8p10) is required since Kerberos won't authenticate if there is a time difference between a kerberized client and the KDC server.
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/mitkrb
Build MIT Kerberos V5 by running the following commands:
cd src && sed -e "s@python2.5/Python.h@& python2.7/Python.h@g" \ -e "s@-lpython2.5]@&,\n AC_CHECK_LIB(python2.7,main,[PYTHON_LIB=-lpython2.7])@g" \ -i configure.in && sed -e 's@\^u}@^u cols 300}@' \ -i tests/dejagnu/config/default.exp && sed -e '/eq 0/{N;s/12 //}' \ -i plugins/kdb/db2/libdb2/test/run.test && autoconf && ./configure --prefix=/usr \ --sysconfdir=/etc \ --localstatedir=/var/lib \ --with-system-et \ --with-system-ss \ --with-system-verto=no \ --enable-dns-for-realm && make
To test the build, issue as the root
user: make check. You need at
least Tcl-8.6.7, which is used to drive the
testsuite. Furthermore, DejaGnu-1.6 must be available for
some of the tests to run. If you have a former version of MIT
Kerberos V5 installed, it may happen that the test suite pick
up the installed versions of the libraries, rather than the
newly built ones. If so, it is better to run the tests after
the installation.
Now, as the root
user:
make install && for f in gssapi_krb5 gssrpc k5crypto kadm5clnt kadm5srv \ kdb5 kdb_ldap krad krb5 krb5support verto ; do find /usr/lib -type f -name "lib$f*.so*" -exec chmod -v 755 {} \; done && mv -v /usr/lib/libkrb5.so.3* /lib && mv -v /usr/lib/libk5crypto.so.3* /lib && mv -v /usr/lib/libkrb5support.so.0* /lib && ln -v -sf ../../lib/libkrb5.so.3.3 /usr/lib/libkrb5.so && ln -v -sf ../../lib/libk5crypto.so.3.1 /usr/lib/libk5crypto.so && ln -v -sf ../../lib/libkrb5support.so.0.1 /usr/lib/libkrb5support.so && mv -v /usr/bin/ksu /bin && chmod -v 755 /bin/ksu && install -v -dm755 /usr/share/doc/krb5-1.15.1 && cp -vfr ../doc/* /usr/share/doc/krb5-1.15.1
sed -e ...: The first sed fixes Python detection. The second one increases the width of the virtual terminal used for some tests to prevent some spurious text in the output which is taken as a failure. The third sed removes a test that is known to fail.
--localstatedir=/var/lib
: This
option is used so that the Kerberos variable run-time data is
located in /var/lib
instead of
/usr/var
.
--with-system-et
:
This switch causes the build to use the system-installed
versions of the error-table support software.
--with-system-ss
:
This switch causes the build to use the system-installed
versions of the subsystem command-line interface software.
--with-system-verto=no
: This
switch fixes a bug in the package: it does not recognize its
own verto library installed previously. This is not a
problem, if reinstalling the same version, but if you are
updating, the old library is used as system's one, instead of
installing the new version.
--enable-dns-for-realm
: This
switch allows realms to be resolved using the DNS server.
--with-ldap
: Use this switch if
you want to compile the OpenLDAP database backend module.
mv -v /usr/lib/libk...
/lib and ln -v
-sf ../../lib/libk... /usr/lib/libk...: Move
critical libraries to the /lib
directory so that they are available when the /usr
filesystem is not mounted.
find /usr/lib -type f -name "lib$f*.so*" -exec chmod -v 755 {} \;: This command changes the permisison of installed libraries.
mv -v /usr/bin/ksu
/bin: Moves the ksu program to the
/bin
directory so that it is
available when the /usr
filesystem is not mounted.
You should consider installing some sort of password
checking dictionary so that you can configure the
installation to only accept strong passwords. A
suitable dictionary to use is shown in the CrackLib-2.9.6 instructions. Note
that only one file can be used, but you can concatenate
many files into one. The configuration file shown below
assumes you have installed a dictionary to /usr/share/dict/words
.
Create the Kerberos configuration file with the following
commands issued by the root
user:
cat > /etc/krb5.conf << "EOF"
# Begin /etc/krb5.conf
[libdefaults]
default_realm = <EXAMPLE.ORG>
encrypt = true
[realms]
<EXAMPLE.ORG>
= {
kdc = <belgarath.example.org>
admin_server = <belgarath.example.org>
dict_file = /usr/share/dict/words
}
[domain_realm]
.<example.org>
= <EXAMPLE.ORG>
[logging]
kdc = SYSLOG:INFO:AUTH
admin_server = SYSLOG:INFO:AUTH
default = SYSLOG:DEBUG:DAEMON
# End /etc/krb5.conf
EOF
You will need to substitute your domain and proper
hostname for the occurrences of the <belgarath>
and
<example.org>
names.
default_realm
should be the
name of your domain changed to ALL CAPS. This isn't
required, but both Heimdal and MIT recommend it.
encrypt = true
provides
encryption of all traffic between kerberized clients and
servers. It's not necessary and can be left off. If you
leave it off, you can encrypt all traffic from the client
to the server using a switch on the client program
instead.
The [realms]
parameters tell
the client programs where to look for the KDC
authentication services.
The [domain_realm]
section
maps a domain to a realm.
Create the KDC database:
kdb5_util create -r <EXAMPLE.ORG>
-s
Now you should populate the database with principals
(users). For now, just use your regular login name or
root
.
kadmin.localkadmin.local:
add_policy dict-onlykadmin.local:
addprinc -policy dict-only<loginname>
The KDC server and any machine running kerberized server daemons must have a host key installed:
kadmin.local:
addprinc -randkey host/<belgarath.example.org>
After choosing the defaults when prompted, you will have to export the data to a keytab file:
kadmin.local:
ktadd host/<belgarath.example.org>
This should have created a file in /etc
named krb5.keytab
(Kerberos 5). This file
should have 600 (root
rw
only) permissions. Keeping the keytab files from public
access is crucial to the overall security of the Kerberos
installation.
Exit the kadmin program (use quit or exit) and return back to the shell prompt. Start the KDC daemon manually, just to test out the installation:
/usr/sbin/krb5kdc
Attempt to get a ticket with the following command:
kinit <loginname>
You will be prompted for the password you created. After you get your ticket, you can list it with the following command:
klist
Information about the ticket should be displayed on the screen.
To test the functionality of the keytab file, issue the following command:
ktutilktutil:
rkt /etc/krb5.keytabktutil:
l
This should dump a list of the host principal, along with the encryption methods used to access the principal.
At this point, if everything has been successful so far, you can feel fairly confident in the installation and configuration of the package.
For additional information consult the documentation for krb5-1.15.1 on which the above instructions are based.
If you want to start Kerberos services at boot, install the
krb5.service
unit included in
the blfs-systemd-units-20160602
package using the following command:
make install-krb5
is a GSSAPI test client. |
|
is a GSSAPI test server. |
|
is a host keytable manipulation utility. |
|
is an utility used to make modifications to the Kerberos database. |
|
is an utility similar to kadmin, but if the database is db2, the local client kadmin.local, is intended to run directly on the master KDC without Kerberos authentication. |
|
is a server for administrative access to a Kerberos database. |
|
allows an administrator to manage realms, Kerberos services and ticket policies. |
|
is the KDC database utility. |
|
removes the current set of tickets. |
|
is used to authenticate to the Kerberos server as a principal and acquire a ticket granting ticket that can later be used to obtain tickets for other services. |
|
reads and displays the current tickets in the credential cache. |
|
is a program for changing Kerberos 5 passwords. |
|
takes a principal database in a specified format and converts it into a stream of database records. |
|
receives a database sent by kprop and writes it as a local database. |
|
displays the contents of the KDC database update log to standard output. |
|
gives information on how to link programs against libraries. |
|
is the Kerberos 5 server. |
|
sends a problem report (PR) to a central support site. |
|
is the super user program using Kerberos protocol.
Requires a properly configured |
|
makes the specified credential cache the primary cache for the collection, if a cache collection is available. |
|
is a program for managing Kerberos keytabs. |
|
prints keyversion numbers of Kerberos principals. |
|
is used to contact a sample server and authenticate to it using Kerberos 5 tickets, then display the server's response. |
|
is a simple UDP-based sample client program, for demonstration. |
|
is a simple UDP-based server application, for demonstration. |
|
is the sample Kerberos 5 server. |
|
is another sample client. |
|
is another sample server. |
|
contains the Generic Security Service Application Programming Interface (GSSAPI) functions which provides security services to callers in a generic fashion, supportable with a range of underlying mechanisms and technologies and hence allowing source-level portability of applications to different environments. |
|
contains the administrative authentication and password checking functions required by Kerberos 5 client-side programs. |
|
contains the administrative authentication and password checking functions required by Kerberos 5 servers. |
|
is a Kerberos 5 authentication/authorization database access library. |
|
contains the internal support library for RADIUS functionality. |
|
is an all-purpose Kerberos 5 library. |
Last updated on 2017-08-28 22:41:33 -0700
The Nettle package contains a low-level cryptographic library that is designed to fit easily in many contexts.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://ftp.gnu.org/gnu/nettle/nettle-3.3.tar.gz
Download (FTP): ftp://ftp.gnu.org/gnu/nettle/nettle-3.3.tar.gz
Download MD5 sum: 10f969f78a463704ae73529978148dbe
Download size: 1.8 MB
Estimated disk space required: 75 MB (with tests)
Estimated build time: 0.3 SBU (with tests)
OpenSSL-1.1.0f (for examples)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/nettle
Install Nettle by running the following commands:
./configure --prefix=/usr --disable-static && make
To test the results, issue: make check.
Now, as the root
user:
make install && chmod -v 755 /usr/lib/lib{hogweed,nettle}.so && install -v -m755 -d /usr/share/doc/nettle-3.3 && install -v -m644 nettle.html /usr/share/doc/nettle-3.3
--disable-static
:
This switch prevents installation of static versions of the
libraries.
calculates a hash value using a specified algorithm. |
|
outputs a sequence of pseudorandom (non-cryptographic) bytes, using Knuth's lagged fibonacci generator. The stream is useful for testing, but should not be used to generate cryptographic keys or anything else that needs real randomness. |
|
password-based key derivation function that take as input a password or passphrase and typically strengthen it and protect against certain pre-computation attacks by using salting and expensive computation. |
|
converts private and public RSA keys from PKCS #1 format to sexp format. |
|
converts an s-expression to a different encoding. |
Last updated on 2017-08-19 20:26:54 -0700
The Network Security Services (NSS) package is a set of libraries designed to support cross-platform development of security-enabled client and server applications. Applications built with NSS can support SSL v2 and v3, TLS, PKCS #5, PKCS #7, PKCS #11, PKCS #12, S/MIME, X.509 v3 certificates, and other security standards. This is useful for implementing SSL and S/MIME or other Internet security standards into an application.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://archive.mozilla.org/pub/security/nss/releases/NSS_3_32_RTM/src/nss-3.32.tar.gz
Download MD5 sum: 076abf8ed88b6bb28f3396b072d252ed
Download size: 9.1 MB
Estimated disk space required: 107 MB
Estimated build time: 1.7 SBU
SQLite-3.20.0 and p11-kit-0.23.8 (runtime)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/nss
This package does not support parallel build.
Install NSS by running the following commands:
patch -Np1 -i ../nss-3.32-standalone-1.patch && cd nss && make -j1 BUILD_OPT=1 \ NSPR_INCLUDE_DIR=/usr/include/nspr \ USE_SYSTEM_ZLIB=1 \ ZLIB_LIBS=-lz \ NSS_ENABLE_WERROR=0 \ $([ $(uname -m) = x86_64 ] && echo USE_64=1) \ $([ -f /usr/include/sqlite3.h ] && echo NSS_USE_SYSTEM_SQLITE=1)
This package does not come with a test suite.
Now, as the root
user:
cd ../dist && install -v -m755 Linux*/lib/*.so /usr/lib && install -v -m644 Linux*/lib/{*.chk,libcrmf.a} /usr/lib && install -v -m755 -d /usr/include/nss && cp -v -RL {public,private}/nss/* /usr/include/nss && chmod -v 644 /usr/include/nss/* && install -v -m755 Linux*/bin/{certutil,nss-config,pk12util} /usr/bin && install -v -m644 Linux*/lib/pkgconfig/nss.pc /usr/lib/pkgconfig
BUILD_OPT=1
: This
option is passed to make so that the build is
performed with no debugging symbols built into the binaries
and the default compiler optimizations are used.
NSPR_INCLUDE_DIR=/usr/include/nspr
:
This option sets the location of the nspr headers.
USE_SYSTEM_ZLIB=1
:
This option is passed to make to ensure that the
libssl3.so
library is linked to
the system installed zlib
instead of the in-tree version.
ZLIB_LIBS=-lz
: This
option provides the linker flags needed to link to the system
zlib.
$([ $(uname -m) = x86_64 ]
&& echo USE_64=1): The USE_64=1
option is required on x86_64, otherwise
make will try
(and fail) to create 32-bit objects. The [ $(uname -m) =
x86_64 ] test ensures it has no effect on a 32 bit system.
([ -f /usr/include/sqlite3.h ]
&& echo NSS_USE_SYSTEM_SQLITE=1):
This tests if sqlite is
installed and if so it echos the option
NSS_USE_SYSTEM_SQLITE=1 to make so that libsoftokn3.so
will link against the system
version of sqlite.
If p11-kit-0.23.8 is installed, the
p11-kit trust module
(/usr/lib/pkcs11/p11-kit-trust.so
) can be
used as a drop-in replacement for /usr/lib/libnssckbi.so
to transparently
make the system CAs available to NSS aware applications, rather than the
static list provided by /usr/lib/libnssckbi.so
. As the root
user, execute the following
commands:
if [ -e /usr/lib/libp11-kit.so ]; then readlink /usr/lib/libnssckbi.so || rm -v /usr/lib/libnssckbi.so && ln -sfv ./pkcs11/p11-kit-trust.so /usr/lib/libnssckbi.so fi
Additionally, for dependent applications that do not use the
internal database (/usr/lib/libnssckbi.so
), the make-ca.sh
script, included on the
Certificate Authority
Certificates page, will generate a system wide NSS DB.
is the Mozilla Certificate Database Tool. It is a command-line utility that can create and modify the Netscape Communicator cert8.db and key3.db database files. It can also list, generate, modify, or delete certificates within the cert8.db file and create or change the password, generate new public and private key pairs, display the contents of the key database, or delete key pairs within the key3.db file. |
|
is used to determine the NSS library settings of the installed NSS libraries. |
|
is a tool for importing certificates and keys from pkcs #12 files into NSS or exporting them. It can also list certificates and keys in such files. |
Last updated on 2017-08-16 21:41:37 -0700
The OpenSSH package contains ssh clients and the sshd daemon. This is useful for encrypting authentication and subsequent traffic over a network. The ssh and scp commands are secure implementations of telnet and rcp respectively.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-7.5p1.tar.gz
Download MD5 sum: 652fdc7d8392f112bef11cacf7e69e23
Download size: 1.4 MB
Estimated disk space required: 37 MB (add 11 MB for tests)
Estimated build time: 0.4 SBU (running the tests takes 10+ minutes, irrespective of processor speed)
OpenSSL-1.1.0f or LibreSSL Portable
Linux-PAM-1.3.0, X Window System, MIT Kerberos V5-1.15.1, libedit, OpenSC, and libsectok
OpenJDK-1.8.0.141, Net-tools-CVS_20101030, and Sysstat-11.6.0
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/OpenSSH
If reinstalling over an SSH connection to enable Linux-PAM-1.3.0 support, be certain
to temporarily set PermitRootLogin
to yes
in /etc/ssh/sshd_config
until you complete
reinstallation of Systemd-234, or you may find that you are
unable to login to the system remotely.
OpenSSH runs as two
processes when connecting to other computers. The first
process is a privileged process and controls the issuance of
privileges as necessary. The second process communicates with
the network. Additional installation steps are necessary to
set up the proper environment, which are performed by issuing
the following commands as the root
user:
install -v -m700 -d /var/lib/sshd && chown -v root:sys /var/lib/sshd && groupadd -g 50 sshd && useradd -c 'sshd PrivSep' \ -d /var/lib/sshd \ -g sshd \ -s /bin/false \ -u 50 sshd
Install OpenSSH by running the following commands:
patch -Np1 -i ../openssh-7.5p1-openssl-1.1.0-1.patch && ./configure --prefix=/usr \ --sysconfdir=/etc/ssh \ --with-md5-passwords \ --with-privsep-path=/var/lib/sshd && make
The testsuite requires an installed copy of scp to complete the
multiplexing tests. To run the test suite, first copy the
scp program to
/usr/bin
, making sure that you
backup any existing copy first.
To test the results, issue: make tests.
Now, as the root
user:
make install && install -v -m755 contrib/ssh-copy-id /usr/bin && install -v -m644 contrib/ssh-copy-id.1 \ /usr/share/man/man1 && install -v -m755 -d /usr/share/doc/openssh-7.5p1 && install -v -m644 INSTALL LICENCE OVERVIEW README* \ /usr/share/doc/openssh-7.5p1
--sysconfdir=/etc/ssh
: This
prevents the configuration files from being installed in
/usr/etc
.
--with-md5-passwords
:
This enables the use of MD5 passwords.
--with-pam
: This parameter
enables Linux-PAM support in
the build.
--with-xauth=/usr/bin/xauth
: Set
the default location for the xauth binary for X
authentication. Change the location if xauth will be installed to
a different path. This can also be controlled from
sshd_config
with the
XAuthLocation keyword. You can omit this switch if
Xorg is already installed.
--with-kerberos5=/usr
: This
option is used to include Kerberos 5 support in the build.
--with-libedit
: This option
enables line editing and history features for sftp.
~/.ssh/*
, /etc/ssh/ssh_config
, and /etc/ssh/sshd_config
There are no required changes to any of these files.
However, you may wish to view the /etc/ssh/
files and make any changes
appropriate for the security of your system. One
recommended change is that you disable root
login via ssh. Execute the
following command as the root
user to disable root
login via ssh:
echo "PermitRootLogin no" >> /etc/ssh/sshd_config
If you want to be able to log in without typing in your password, first create ~/.ssh/id_rsa and ~/.ssh/id_rsa.pub with ssh-keygen and then copy ~/.ssh/id_rsa.pub to ~/.ssh/authorized_keys on the remote computer that you want to log into. You'll need to change REMOTE_USERNAME and REMOTE_HOSTNAME for the username and hostname of the remote computer and you'll also need to enter your password for the ssh-copy-id command to succeed:
ssh-keygen && ssh-copy-id -i ~/.ssh/id_rsa.pubREMOTE_USERNAME
@REMOTE_HOSTNAME
Once you've got passwordless logins working it's actually
more secure than logging in with a password (as the private
key is much longer than most people's passwords). If you
would like to now disable password logins, as the
root
user:
echo "PasswordAuthentication no" >> /etc/ssh/sshd_config && echo "ChallengeResponseAuthentication no" >> /etc/ssh/sshd_config
If you added Linux-PAM
support and you want ssh to use it then you will need to
add a configuration file for sshd and enable use of LinuxPAM. Note, ssh only uses PAM to
check passwords, if you've disabled password logins these
commands are not needed. If you want to use PAM, issue the
following commands as the root
user:
sed 's@d/login@d/sshd@g' /etc/pam.d/login > /etc/pam.d/sshd && chmod 644 /etc/pam.d/sshd && echo "UsePAM yes" >> /etc/ssh/sshd_config
Additional configuration information can be found in the man pages for sshd, ssh and ssh-agent.
To start the SSH server at system boot, install the
sshd.service
unit included in
the blfs-systemd-units-20160602
package.
make install-sshd
is a file copy program that acts like rcp except it uses an encrypted protocol. |
|
is an FTP-like program that works over the SSH1 and SSH2 protocols. |
|
is a symlink to ssh. |
|
is an rlogin/rsh-like client program except it uses an encrypted protocol. |
|
is a daemon that listens for ssh login requests. |
|
is a tool which adds keys to the ssh-agent. |
|
is an authentication agent that can store private keys. |
|
is a script that enables logins on remote machine using local keys. |
|
is a key generation tool. |
|
is a utility for gathering public host keys from a number of hosts. |
Last updated on 2017-08-16 21:41:37 -0700
The OpenSSL package contains management tools and libraries relating to cryptography. These are useful for providing cryptographic functions to other packages, such as OpenSSH, email applications and web browsers (for accessing HTTPS sites).
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://openssl.org/source/openssl-1.1.0f.tar.gz
Download (FTP): ftp://openssl.org/source/openssl-1.1.0f.tar.gz
Download MD5 sum: 7b521dea79ab159e8ec879d2333369fa
Download size: 5.1 MB
Estimated disk space required: 70 MB (with tests)
Estimated build time: 1.5 SBU (with tests)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/OpenSSL
Install OpenSSL with the following commands:
./config --prefix=/usr \ --openssldir=/etc/ssl \ --libdir=lib \ shared \ zlib-dynamic && make
To test the results, issue: make test.
If you want to disable installing the static libraries, use this sed:
sed -i 's# libcrypto.a##;s# libssl.a##;/INSTALL_LIBS/s#libcrypto.a##' Makefile
Now, as the root
user:
make MANSUFFIX=ssl install && mv -v /usr/share/doc/openssl{,-1.1.0f} && cp -vfr doc/* /usr/share/doc/openssl-1.1.0f
shared
: This
parameter forces the creation of shared libraries along with
the static libraries.
zlib-dynamic
: This
parameter adds compression/decompression functionality using
the libz
library.
no-rc5 no-idea
: When added to the
./config
command, this will eliminate the building of those encryption
methods. Patent licenses may be needed for you to utilize
either of those methods in your projects.
make MANSUFFIX=ssl install: This command appends an "ssl" suffix to the manual page names to avoid conflicts with manual pages installed by other packages.
Most users will want to install Certificate Authority Certificates for validation of downloaded certificates. For example, these certificates can be used by git-2.14.1, cURL-7.55.1 or Wget-1.19.1 when accessing secure (https protocol) sites. To do this, follow the instructions from the Certificate Authority Certificates page.
Users who just want to use OpenSSL for providing functions to
other programs such as OpenSSH and web browsers do not need
to worry about additional configuration. This is an
advanced topic and those who do need it would normally be
expected to either know how to properly update /etc/ssl/openssl.cnf
or be able to find
out how to do it.
is a Perl script that scans all files in a directory and adds symbolic links to their hash values. |
|
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. |
|
implements a wide range of cryptographic algorithms used in various Internet standards. The services provided by this library are used by the OpenSSL implementations of SSL, TLS and S/MIME, and they have also been used to implement OpenSSH, OpenPGP, and other cryptographic standards. |
|
implements the Transport Layer Security (TLS v1) protocol. It provides a rich API, documentation on which can be found by running man 3 ssl. |
Last updated on 2017-08-16 21:41:37 -0700
The OpenSSL-1.0.2l package contains libraries relating to cryptography. These are useful for providing cryptographic functions to other packages, such as email applications and web browsers (for accessing HTTPS sites). This package provides only the libraries and headers for packages that have not yet been ported to OpenSSL-1.1.0f.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://openssl.org/source/openssl-1.0.2l.tar.gz
Download (FTP): ftp://openssl.org/source/openssl-1.0.2l.tar.gz
Download MD5 sum: f85123cd390e864dfbe517e7616e6566
Download size: 5.2 MB
Estimated disk space required: 58 MB (with tests)
Estimated build time: 1.6 SBU (with tests)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/OpenSSL
This package does not support parallel build.
Install OpenSSL-1.0.2l Libraries with the following commands:
patch -Np1 -i ../openssl-1.0.2l-compat_versioned_symbols-1.patch && ./config --prefix=/usr \ --openssldir=/etc/ssl \ --libdir=lib/openssl-1.0 \ shared \ zlib-dynamic && make depend && make -j1
To test the results, issue: make -j1 test. The test suite does not support parallel jobs.
Now, as the root
user:
make INSTALL_PREFIX=$PWD/Dest install_sw && install -vdm755 /usr/lib/openssl-1.0 && cp -Rv Dest/usr/lib/openssl-1.0/* /usr/lib/openssl-1.0 && mv -v /usr/lib/openssl-1.0/lib{crypto,ssl}.so.1.0.0 /usr/lib && ln -sv ../libssl.so.1.0.0 /usr/lib/openssl-1.0 && ln -sv ../libcrypto.so.1.0.0 /usr/lib/openssl-1.0 && install -vdm755 /usr/include/openssl-1.0 && cp -Rv Dest/usr/include/openssl /usr/include/openssl-1.0 && sed 's@/include$@/include/openssl-1.0@' -i /usr/lib/openssl-1.0/pkgconfig/*.pc
shared
: This
parameter forces the creation of shared libraries along with
the static libraries.
zlib-dynamic
: This
parameter adds compression/decompression functionality using
the libz
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 OpenSSH, OpenPGP, and other cryptographic standards. |
|
implements the Transport Layer Security (TLS v1) protocol. It provides a rich API, documentation on which can be found by running man 3 ssl. |
Last updated on 2017-08-21 11:12:53 -0700
The p11-kit package provides a way to load and enumerate PKCS #11 (a Cryptographic Token Interface Standard) modules.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://github.com/p11-glue/p11-kit/releases/download/0.23.8/p11-kit-0.23.8.tar.gz
Download MD5 sum: 3caf26d841df1527d52549e7adc62966
Download size: 1.0 MB
Estimated disk space required: 87 MB (an additional 104 MB for tests)
Estimated build time: 0.5 SBU (an additional 0.2 SBU for tests)
Certificate Authority Certificates, libtasn1-4.12, and libffi-3.2.1
NSS-3.32, GTK-Doc-1.26 and libxslt-1.1.29
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/p11-kit
Install p11-kit by running the following commands:
./configure --prefix=/usr \ --sysconfdir=/etc \ --with-trust-paths=/etc/pki/anchors && make
To test the results, issue: make check. The test-token test is known to fail.
Now, as the root
user:
make install
--with-trust-paths=/etc/pki/anchors
:
this switch sets the location of trusted certificates used by
libp11-kit.so.
--with-hash-impl=freebl
: Use this
switch if you want to use the Freebl library from
NSS for SHA1 and MD5
hashing.
--enable-doc
: Use this switch if
you have installed GTK-Doc-1.26 and libxslt-1.1.29 and wish
to rebuild the documentation and generate manual pages.
The p11-kit trust module
(/usr/lib/pkcs11/p11-kit-trust.so
) can be
used as a drop-in replacement for /usr/lib/libnssckbi.so
to transparently
make the system CAs available to NSS aware applications, rather than the
static list provided by /usr/lib/libnssckbi.so
. As the root
user, execute the following
commands:
if [ -e /usr/lib/libnssckbi.so ]; then readlink /usr/lib/libnssckbi.so || rm -v /usr/lib/libnssckbi.so && ln -sfv ./pkcs11/p11-kit-trust.so /usr/lib/libnssckbi.so fi
is a command line tool that can be used to perform operations on PKCS#11 modules configured on the system. |
|
is a command line tool to examine and modify the shared trust policy store. |
|
contains functions used to coordinate initialization and finalization of any PKCS#11 module. |
|
is the PKCS#11 proxy module. |
Last updated on 2017-08-20 18:54:25 -0700
Polkit is a toolkit for defining and handling authorizations. It is used for allowing unprivileged processes to communicate with privileged processes.
This package is known to build and work properly using an LFS-8.1 platform.
Due to lack of relases, a tarball has been generated for use by BLFS, which includes a git checkout at ref 2919920, and a pending patch to use js38. The patch is included in the tarball for review.
Download (HTTP): http://anduin.linuxfromscratch.org/BLFS/polkit/polkit-0.113+git_2919920+js38.tar.xz
Download MD5 sum: 11ec10c04899651e40ef66766932254d
Download size: 616 KB
Estimated disk space required: 19 MB
Estimated build time: 0.2 SBU
GLib-2.52.3, and js38-38.2.1
Since systemd-logind uses PAM to register user sessions, it is a good idea to build Polkit with PAM support so systemd-logind can track Polkit sessions.
docbook-xml-4.5, docbook-xsl-1.79.1, GTK-Doc-1.26, and libxslt-1.1.29
If libxslt-1.1.29 is installed, then
docbook-xml-4.5 and docbook-xsl-1.79.1 are required.
If you have installed libxslt-1.1.29, but you do not
want to install any of the DocBook packages mentioned, you
will need to use --disable-man-pages
in the instructions
below.
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/polkit
There should be a dedicated user and group to take control of
the polkitd
daemon after it is started. Issue the following commands as
the root
user:
groupadd -fg 27 polkitd && useradd -c "PolicyKit Daemon Owner" -d /etc/polkit-1 -u 27 \ -g polkitd -s /bin/false polkitd
When building Polkit with systemd logind support, the configure script explicitly checks if system is booted using systemd. This can cause problems if building the package in chroot, where the configure would fail to detect systemd. To workaround the problem, simply run the following command:
sed -i "s:/sys/fs/cgroup/systemd/:/sys:g" configure
Install Polkit by running the following commands:
./configure --prefix=/usr \ --sysconfdir=/etc \ --localstatedir=/var \ --disable-static && make
To test the results, issue: make check. Note that system D-Bus daemon must be running for the testsuite to complete. There is also a warning about ConsoleKit database not present, but that one can be safely ignored.
Now, as the root
user:
make install
--with-authfw=shadow
: This switch
enables the package to use the Shadow rather than the Linux PAM Authentication framework. Use
it if you have not installed Linux
PAM.
--disable-static
:
This switch prevents installation of static versions of the
libraries.
--enable-gtk-doc
: Use this
parameter if GTK-Doc is
installed and you wish to rebuild and install the API
documentation.
If you did not build Polkit with Linux PAM support, you can skip this section.
If you have built Polkit
with Linux PAM support,
you need to modify the default PAM configuration file which
was installed by default to get Polkit to work correctly with BLFS.
Issue the following commands as the root
user to create the configuration
file for Linux PAM:
cat > /etc/pam.d/polkit-1 << "EOF"
# Begin /etc/pam.d/polkit-1
auth include system-auth
account include system-account
password include system-password
session include system-session
# End /etc/pam.d/polkit-1
EOF
is used to obtain information about registered PolicyKit actions. |
|
is used to check whether a process is authorized for action. |
|
is an example program to test the pkexec command. |
|
allows an authorized user to execute a command as another user. |
|
is used to start a textual authentication agent for the subject. |
|
provides the org.freedesktop.PolicyKit1 D-Bus service on the system message bus. |
|
contains the Polkit authentication agent API functions. |
|
contains the Polkit authorization API functions. |
Last updated on 2017-08-20 20:24:54 -0700
Shadow was indeed installed in LFS and there is no reason to reinstall it unless you installed CrackLib or Linux-PAM after your LFS system was completed. If you have installed CrackLib after LFS, then reinstalling Shadow will enable strong password support. If you have installed Linux-PAM, reinstalling Shadow will allow programs such as login and su to utilize PAM.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://github.com/shadow-maint/shadow/releases/download/4.5/shadow-4.5.tar.xz
Download MD5 sum: c350da50c2120de6bb29177699d89fe3
Download size: 1.6 MB
Estimated disk space required: 31 MB
Estimated build time: 0.2 SBU
Linux-PAM-1.3.0 or CrackLib-2.9.6
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/shadow
The installation commands shown below are for installations where Linux-PAM has been installed (with or without a CrackLib installation) and Shadow is being reinstalled to support the Linux-PAM installation.
If you are reinstalling Shadow to provide strong password
support using the CrackLib
library without using Linux-PAM, ensure you add the
--with-libcrack
parameter to the configure script below
and also issue the following command:
sed -i 's@DICTPATH.*@DICTPATH\t/lib/cracklib/pw_dict@' etc/login.defs
Reinstall Shadow by running the following commands:
sed -i 's/groups$(EXEEXT) //' src/Makefile.in && find man -name Makefile.in -exec sed -i 's/groups\.1 / /' {} \; && find man -name Makefile.in -exec sed -i 's/getspnam\.3 / /' {} \; && find man -name Makefile.in -exec sed -i 's/passwd\.5 / /' {} \; && sed -i -e 's@#ENCRYPT_METHOD DES@ENCRYPT_METHOD SHA512@' \ -e 's@/var/spool/mail@/var/mail@' etc/login.defs && sed -i 's/1000/999/' etc/useradd && ./configure --sysconfdir=/etc --with-group-name-max-length=32 && make
This package does not come with a test suite.
Now, as the root
user:
make install && mv -v /usr/bin/passwd /bin
sed -i 's/groups$(EXEEXT) //' src/Makefile.in: This sed is used to suppress the installation of the groups program as the version from the Coreutils package installed during LFS is preferred.
find man -name Makefile.in -exec ... {} \;: This command is used to suppress the installation of the groups man pages so the existing ones installed from the Coreutils package are not replaced.
sed -i -e 's@#ENCRYPT_METHOD
DES@ENCRYPT_METHOD SHA512@' -e 's@/var/spool/mail@/var/mail@'
etc/login.defs: Instead of using the default
'DES' method, this command modifies the installation to use
the more secure 'SHA512' method of hashing passwords, which
also allows passwords longer than eight characters. It also
changes the obsolete /var/spool/mail
location for user mailboxes
that Shadow uses by default
to the /var/mail
location.
sed -i 's/1000/999/' etc/useradd: Make a minor change to make the default useradd consistent with the LFS groups file.
--with-group-name-max-length=32
:
The maximum user name is 32 characters. Make the maximum
group name the same.
mv -v /usr/bin/passwd
/bin: The passwd program may be
needed during times when the /usr
filesystem is not mounted so it is
moved into the root partition.
Shadow's stock configuration
for the useradd
utility may not be desirable for your installation. One
default parameter causes useradd to create a mailbox
file for any newly created user. useradd will make the group
ownership of this file to the mail
group with 0660 permissions. If you
would prefer that these mailbox files are not created by
useradd, issue
the following command as the root
user:
sed -i 's/yes/no/' /etc/default/useradd
The rest of this page is devoted to configuring Shadow to work properly with Linux-PAM. If you do not have Linux-PAM installed, and you reinstalled Shadow to support strong passwords via the CrackLib library, no further configuration is required.
Configuring your system to use Linux-PAM can be a complex task. The information below will provide a basic setup so that Shadow's login and password functionality will work effectively with Linux-PAM. Review the information and links on the Linux-PAM-1.3.0 page for further configuration information. For information specific to integrating Shadow, Linux-PAM and CrackLib, you can visit the following link:
The login
program currently performs many functions which
Linux-PAM modules should
now handle. The following sed command will
comment out the appropriate lines in /etc/login.defs
, and stop login from performing
these functions (a backup file named /etc/login.defs.orig
is also created to
preserve the original file's contents). Issue the
following commands as the root
user:
install -v -m644 /etc/login.defs /etc/login.defs.orig && for FUNCTION in FAIL_DELAY \ FAILLOG_ENAB \ LASTLOG_ENAB \ MAIL_CHECK_ENAB \ OBSCURE_CHECKS_ENAB \ PORTTIME_CHECKS_ENAB \ QUOTAS_ENAB \ CONSOLE MOTD_FILE \ FTMP_FILE NOLOGINS_FILE \ ENV_HZ PASS_MIN_LEN \ SU_WHEEL_ONLY \ CRACKLIB_DICTPATH \ PASS_CHANGE_TRIES \ PASS_ALWAYS_WARN \ CHFN_AUTH ENCRYPT_METHOD \ ENVIRON_FILE do sed -i "s/^${FUNCTION}/# &/" /etc/login.defs done
As mentioned previously in the Linux-PAM instructions, Linux-PAM has two supported methods
for configuration. The commands below assume that you've
chosen to use a directory based configuration, where each
program has its own configuration file. You can
optionally use a single /etc/pam.conf
configuration file by
using the text from the files below, and supplying the
program name as an additional first field for each line.
As the root
user, replace
the following Linux-PAM
configuration files in the /etc/pam.d/
directory (or add the
contents to the /etc/pam.conf
file) using the following
commands:
cat > /etc/pam.d/login << "EOF"
# Begin /etc/pam.d/login
# Set failure delay before next prompt to 3 seconds
auth optional pam_faildelay.so delay=3000000
# Check to make sure that the user is allowed to login
auth requisite pam_nologin.so
# Check to make sure that root is allowed to login
# Disabled by default. You will need to create /etc/securetty
# file for this module to function. See man 5 securetty.
#auth required pam_securetty.so
# Additional group memberships - disabled by default
#auth optional pam_group.so
# include the default auth settings
auth include system-auth
# check access for the user
account required pam_access.so
# include the default account settings
account include system-account
# Set default environment variables for the user
session required pam_env.so
# Set resource limits for the user
session required pam_limits.so
# Display date of last login - Disabled by default
#session optional pam_lastlog.so
# Display the message of the day - Disabled by default
#session optional pam_motd.so
# Check user's mail - Disabled by default
#session optional pam_mail.so standard quiet
# include the default session and password settings
session include system-session
password include system-password
# End /etc/pam.d/login
EOF
cat > /etc/pam.d/passwd << "EOF"
# Begin /etc/pam.d/passwd
password include system-password
# End /etc/pam.d/passwd
EOF
cat > /etc/pam.d/su << "EOF"
# Begin /etc/pam.d/su
# always allow root
auth sufficient pam_rootok.so
auth include system-auth
# include the default account settings
account include system-account
# Set default environment variables for the service user
session required pam_env.so
# include system session defaults
session include system-session
# End /etc/pam.d/su
EOF
cat > /etc/pam.d/chage << "EOF"
# Begin /etc/pam.d/chage
# always allow root
auth sufficient pam_rootok.so
# include system defaults for auth account and session
auth include system-auth
account include system-account
session include system-session
# Always permit for authentication updates
password required pam_permit.so
# End /etc/pam.d/chage
EOF
for PROGRAM in chfn chgpasswd chpasswd chsh groupadd groupdel \ groupmems groupmod newusers useradd userdel usermod do install -v -m644 /etc/pam.d/chage /etc/pam.d/${PROGRAM} sed -i "s/chage/$PROGRAM/" /etc/pam.d/${PROGRAM} done
Because the installation of systemd is not yet complete, you
will need to remove the /run/nologin
file before testing the
installation. Execute the following command as the
root
user:
rm -f /run/nologin
At this point, you should do a simple test to see if
Shadow is working as
expected. Open another terminal and log in as a user,
then su
to root
. If you do not
see any errors, then all is well and you should proceed
with the rest of the configuration. If you did receive
errors, stop now and double check the above
configuration files manually. You can also run the test
suite from the Linux-PAM package to assist you in
determining the problem. If you cannot find and fix the
error, you should recompile Shadow adding the --without-libpam
switch to the
configure
command in the above instructions (also move the
/etc/login.defs.orig
backup file to /etc/login.defs
). If you fail to do
this and the errors remain, you will be unable to log
into your system.
Instead of using the /etc/login.access
file for controlling
access to the system, Linux-PAM uses the pam_access.so
module along with the
/etc/security/access.conf
file. Rename the /etc/login.access
file using the
following command:
[ -f /etc/login.access ] && mv -v /etc/login.access{,.NOUSE}
Instead of using the /etc/limits
file for limiting usage of
system resources, Linux-PAM uses the pam_limits.so
module along with the
/etc/security/limits.conf
file. Rename the /etc/limits
file using the following
command:
[ -f /etc/limits ] && mv -v /etc/limits{,.NOUSE}
Be sure to test the login capabilities of the system before logging out. Errors in the configuration can cause a permanent lockout requiring a boot from an external source to correct the problem.
A list of the installed files, along with their short descriptions can be found at ../../../../lfs/view/8.1-systemd/chapter06/shadow.html#contents-shadow.
Last updated on 2017-08-16 21:41:37 -0700
The ssh-askpass is a generic executable name for many packages, with similar names, that provide a interactive X service to grab password for packages requiring administrative privileges to be run. It prompts the user with a window box where the necessary password can be inserted. Here, we choose Damien Miller's package distributed in the OpenSSH tarball.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-7.5p1.tar.gz
Download (FTP): ftp://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-7.5p1.tar.gz
Download MD5 sum: 652fdc7d8392f112bef11cacf7e69e23
Download size: 1.4 MB
Estimated disk space required: 8.0 MB
Estimated build time: less than 0.1 SBU
GTK+-2.24.31, Sudo-1.8.20p2 (runtime), Xorg Libraries, and X Window System (runtime)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/ssh-askpass
Install ssh-askpass by running the following commands:
cd contrib && make gnome-ssh-askpass2
Now, as the root
user:
install -v -d -m755 /usr/libexec/openssh/contrib && install -v -m755 gnome-ssh-askpass2 \ /usr/libexec/openssh/contrib && ln -sv -f contrib/gnome-ssh-askpass2 \ /usr/libexec/openssh/ssh-askpass
The use of /usr/libexec/openssh/contrib and a symlink is justified by the eventual necessity of a different program for that service.
As the root
user, configure
Sudo-1.8.20p2 to use ssh-askpass:
cat >> /etc/sudo.conf << "EOF" &&
# Path to askpass helper program
Path askpass /usr/libexec/openssh/ssh-askpass
EOF
chmod -v 0644 /etc/sudo.conf
If a given graphical <application> requires administrative privileges, use sudo -A <application> from an x-terminal, from a Window Manager menu and/or replace "Exec=<application> ..." by "Exec=sudo -A <application> ..." in the <application>.desktop file.
Last updated on 2017-08-28 20:59:34 -0700
The stunnel package contains a program that allows you to encrypt arbitrary TCP connections inside SSL (Secure Sockets Layer) so you can easily communicate with clients over secure channels. stunnel can be used to add SSL functionality to commonly used Inetd daemons such as POP-2, POP-3, and IMAP servers, along with standalone daemons such as NNTP, SMTP, and HTTP. stunnel can also be used to tunnel PPP over network sockets without changes to the server package source code.
This package is known to build and work properly using an LFS-8.1 platform.
Download (FTP): ftp://ftp.stunnel.org/stunnel/archive/5.x/stunnel-5.42.tar.gz
Download MD5 sum: ad0a6c63b30ec40afc7a2326e9ce04e0
Download size: 636 KB
Estimated disk space required: 5.8 MB
Estimated build time: 0.1 SBU
tcpwrappers and TOR
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/stunnel
The stunnel
daemon will be run in a chroot jail by an
unprivileged user. Create the new user and group using the
following commands as the root
user:
groupadd -g 51 stunnel && useradd -c "stunnel Daemon" -d /var/lib/stunnel \ -g stunnel -s /bin/false -u 51 stunnel
A signed SSL Certificate and a Private Key is necessary to
run the stunnel daemon. After the
package is installed, there are instructions to generate
them. However, if you own or have already created a signed
SSL Certificate you wish to use, copy it to /etc/stunnel/stunnel.pem
before starting
the build (ensure only root
has read and write access). The .pem
file must be formatted as shown
below:
-----BEGIN PRIVATE KEY-----
<many encrypted lines of private key>
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
<many encrypted lines of certificate>
-----END CERTIFICATE-----
-----BEGIN DH PARAMETERS-----
<encrypted lines of dh parms>
-----END DH PARAMETERS-----
Install stunnel by running the following commands:
For some systems with binutils versions prior to 2.25, configure may fail. If necessary, fix it either with:
sed -i '/LDFLAGS.*static_flag/ s/^/#/' configure
or, if LLVM-4.0.1 with Clang is installed, you can replace ./configure ... with CC=clang ./configure ... in the first command below.
./configure --prefix=/usr \ --sysconfdir=/etc \ --localstatedir=/var && make
This package does not come with a test suite.
Now, as the root
user:
make docdir=/usr/share/doc/stunnel-5.42 install
Install the included systemd unit by running the following
command as the root
user:
install -v -m644 tools/stunnel.service /lib/systemd/system
If you do not already have a signed SSL Certificate and
Private Key, create the stunnel.pem
file in the /etc/stunnel
directory using the command
below. You will be prompted to enter the necessary
information. Ensure you reply to the
Common Name (FQDN of your server) [localhost]:
prompt with the name or IP address you will be using to access the service(s).
To generate a certificate, as the root
user, issue:
make cert
make docdir=... install: This command installs the package and changes the documentation installation directory to standard naming conventions.
As the root
user, create
the directory used for the .pid
file created when the stunnel daemon starts:
install -v -m750 -o stunnel -g stunnel -d /var/lib/stunnel/run && chown stunnel:stunnel /var/lib/stunnel
Next, create a basic /etc/stunnel/stunnel.conf
configuration
file using the following commands as the root
user:
cat >/etc/stunnel/stunnel.conf << "EOF"
; File: /etc/stunnel/stunnel.conf
; Note: The pid and output locations are relative to the chroot location.
pid = /run/stunnel.pid
chroot = /var/lib/stunnel
client = no
setuid = stunnel
setgid = stunnel
cert = /etc/stunnel/stunnel.pem
;debug = 7
;output = stunnel.log
;[https]
;accept = 443
;connect = 80
;; "TIMEOUTclose = 0" is a workaround for a design flaw in Microsoft SSL
;; Microsoft implementations do not use SSL close-notify alert and thus
;; they are vulnerable to truncation attacks
;TIMEOUTclose = 0
EOF
Finally, add the service(s) you wish to encrypt to the configuration file. The format is as follows:
[<service>
]
accept = <hostname:portnumber>
connect = <hostname:portnumber>
If you use stunnel to
encrypt a daemon started from [x]inetd, you may need to
disable that daemon in the /etc/[x]inetd.conf
file and enable a
corresponding <service>
_stunnel
service. You may have to add an appropriate entry in
/etc/services
as well.
For a full explanation of the commands and syntax used in the configuration file, issue man stunnel.
Last updated on 2017-08-29 10:55:51 -0700
The Sudo package allows a
system administrator to give certain users (or groups of
users) the ability to run some (or all) commands as
root
or another user while
logging the commands and arguments.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://www.sudo.ws/dist/sudo-1.8.20p2.tar.gz
Download (FTP): ftp://ftp.sudo.ws/pub/sudo/sudo-1.8.20p2.tar.gz
Download MD5 sum: 03da8e711caca6fd93e57751bfb74adc
Download size: 2.8 MB
Estimated disk space required: 29 MB (with tests)
Estimated build time: 0.3 SBU (with tests)
Linux-PAM-1.3.0, MIT Kerberos V5-1.15.1, OpenLDAP-2.4.45, MTA (that provides a sendmail command), AFS, FWTK, and Opie
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/sudo
Install Sudo by running the following commands:
./configure --prefix=/usr \ --libexecdir=/usr/lib \ --with-secure-path \ --with-all-insults \ --with-env-editor \ --docdir=/usr/share/doc/sudo-1.8.20p2 \ --with-passprompt="[sudo] password for %p: " && make
To test the results, issue: env LC_ALL=C make check 2>&1 | tee ../make-check.log. Check the results with grep failed ../make-check.log.
Now, as the root
user:
make install && ln -sfv libsudo_util.so.0.0.0 /usr/lib/sudo/libsudo_util.so.0
--libexecdir=/usr/lib
: This
switch controls where private programs are installed.
Everything in that directory is a library, so they belong
under /usr/lib
instead of
/usr/libexec
.
--with-secure-path
:
This switch transparently adds /sbin
and /usr/sbin
directories to the PATH
environment variable.
--with-all-insults
:
This switch includes all the sudo insult sets.
--with-env-editor
:
This switch enables use of the environment variable EDITOR
for visudo.
--with-passprompt
:
This switch sets the prompt.
--without-pam
: This switch avoids
building Linux-PAM support
when Linux-PAM is installed
on the system.
There are many options to sudo's configure command. Check the configure --help output for a complete list.
ln -sfv libsudo_util...: Works around a bug in the installation process, which links to the previously installed version (if there is one) instead of the new one.
The sudoers
file can be quite
complicated. It is composed of two types of entries:
aliases (basically variables) and user specifications
(which specify who may run what). The installation installs
a default configuration that has no privileges installed
for any user.
One example usage is to allow the system administrator to execute any program without typing a password each time root privileges are needed. This can be configured as:
# User alias specification
User_Alias ADMIN = YourLoginId
# Allow people in group ADMIN to run all commands without a password
ADMIN ALL = NOPASSWD: ALL
For details, see man sudoers.
The Sudo developers
highly recommend using the visudo program to edit
the sudoers
file. This will
provide basic sanity checking like syntax parsing and
file permission to avoid some possible mistakes that
could lead to a vulnerable configuration.
If PAM is installed on the
system, Sudo is built with
PAM support. In that case,
issue the following command as the root
user to create the PAM configuration file:
cat > /etc/pam.d/sudo << "EOF"
# Begin /etc/pam.d/sudo
# include the default auth settings
auth include system-auth
# include the default account settings
account include system-account
# Set default environment variables for the service user
session required pam_env.so
# include system session defaults
session include system-session
# End /etc/pam.d/sudo
EOF
chmod 644 /etc/pam.d/sudo
Last updated on 2017-08-16 21:41:37 -0700
The Tripwire package contains programs used to verify the integrity of the files on a given system.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://github.com/Tripwire/tripwire-open-source/releases/download/2.4.3.5/tripwire-open-source-2.4.3.5.tar.gz
Download MD5 sum: 34f09583d7ab4c10003db61707f1b707
Download size: 944 KB
Estimated disk space required: 28 MB
Estimated build time: 1.6 SBU (scripting install)
An MTA
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/tripwire
Compile Tripwire by running the following commands:
sed -e 's|TWDB="${prefix}|TWDB="/var|' \ -e '/TWMAN/ s|${prefix}|/usr/share|' \ -e '/TWDOCS/s|${prefix}/doc/tripwire|/usr/share/doc/tripwire-2.4.3.5|' \ -i installer/install.cfg && find . -name Makefile.am | xargs \ sed -i 's/^[[:alpha:]_]*_HEADERS.*=/noinst_HEADERS =/' && sed '/dist/d' -i man/man?/Makefile.am && autoreconf -fi && ./configure --prefix=/usr --sysconfdir=/etc/tripwire && make
The default configuration is to use a local MTA. If you
don't have an MTA installed and have no wish to install
one, modify install/install.cfg
to use an SMTP server
instead. Otherwise the install will fail.
This package does not come with a test suite.
Now, as the root
user:
make install && cp -v policy/*.txt /usr/share/doc/tripwire-2.4.3.5
During make install, several questions are asked, including passwords. If you want to make a script, you have to apply a sed before running make install:
sed -i -e 's@installer/install.sh@& -n -s<site-password>
-l<local-password>
@' Makefile
Of course, you should do this with dummy passwords and change them later.
Another issue when scripting is that the installer exits when the standard input is not a terminal. You may disable this behavior with the following sed:
sed '/-t 0/,+3d' -i installer/install.sh
sed ...
installer/install.cfg: This command tells the
package to install the program database and reports in
/var/lib/tripwire
and sets the
proper location for man pages and documentation.
find ..., sed ..., and autoreconf -fi: The build system is unusable as is, and has to be modified for the build to succeed.
make install:
This command creates the Tripwire security keys as well as
installing the binaries. There are two keys: a site key and a
local key which are stored in /etc/tripwire/
.
cp -v policy/*.txt /usr/doc/tripwire-2.4.3.5: This command installs the tripwire sample policy files with the other tripwire documentation.i
Tripwire uses a policy
file to determine which files are integrity checked. The
default policy file (/etc/tripwire/twpol.txt
) is for a default
installation and will need to be updated for your system.
Policy files should be tailored to each individual
distribution and/or installation. Some example policy files
can be found in /usr/share/doc/tripwire/
.
If desired, copy the policy file you'd like to try into
/etc/tripwire/
instead of
using the default policy file, twpol.txt
. It is, however, recommended
that you edit your policy file. Get ideas from the examples
above and read /usr/share/doc/tripwire/policyguide.txt
for additional information. twpol.txt
is a good policy file for
learning about Tripwire as
it will note any changes to the file system and can even be
used as an annoying way of keeping track of changes for
uninstallation of software.
After your policy file has been edited to your satisfaction
you may begin the configuration steps (perform as the
root
) user:
twadmin --create-polfile --site-keyfile /etc/tripwire/site.key \ /etc/tripwire/twpol.txt && tripwire --init
Depending on your system and the contents of the policy file, the initialization phase above can take a relatively long time.
Tripwire will identify file changes in the critical system files specified in the policy file. Using Tripwire while making frequent changes to these directories will flag all these changes. It is most useful after a system has reached a configuration that the user considers stable.
To use Tripwire after creating a policy file to run a report, use the following command:
tripwire --check > /etc/tripwire/report.txt
View the output to check the integrity of your files. An automatic integrity report can be produced by using a cron facility to schedule the runs.
Reports are stored in binary and, if desired, encrypted.
View reports, as the root
user, with:
twprint --print-report -r /var/lib/tripwire/report/<report-name.twr>
After you run an integrity check, you should examine the
report (or email) and then modify the Tripwire database to reflect the
changed files on your system. This is so that Tripwire will not continually notify
you that files you intentionally changed are a security
violation. To do this you must first ls -l
/var/lib/tripwire/report/ and note the name
of the newest file which starts with your system name as
presented by the command uname -n
and ends in
.twr
. These files were
created during report creation and the most current one is
needed to update the Tripwire database of your system. As
the root
user, type in the
following command making the appropriate report name:
tripwire --update --twrfile /var/lib/tripwire/report/<report-name.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 :wq and after entering your local key, the database will be updated. If there are files which you still want to be warned about, remove the 'x' before the filename in the report and type :wq.
is a signature gathering utility that displays the hash function values for the specified files. |
|
is the main file integrity checking program. |
|
administrative and utility tool used to perform certain administrative functions related to Tripwire files and configuration options. |
|
prints Tripwire database and report files in clear text format. |
Last updated on 2017-08-29 10:55:51 -0700
The volume_key package provides a library for manipulating storage volume encryption keys and storing them separately from volumes to handle forgotten passphrases.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://releases.pagure.org/volume_key/volume_key-0.3.9.tar.xz
Download MD5 sum: a2d14931177c660e1f3ebbcf5f47d8e2
Download size: 436 KB
Estimated disk space required: 7.9 MB
Estimated build time: 0.1 SBU
cryptsetup-1.7.5, GLib-2.52.3, GPGME-1.9.0, and SWIG-3.0.12
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/volume_key
Install volume_key by running the following commands:
sed -i '/config.h/d' lib/libvolume_key.h && autoreconf -fiv && ./configure --prefix=/usr && make
This package does not come with a functioning test suite.
Now, as the root
user:
make install
Last updated on 2015-09-25 08:48:24 -0500
Journaling file systems reduce the time needed to recover a file system that was not unmounted properly. While this can be extremely important in reducing downtime for servers, it has also become popular for desktop environments. This chapter contains other journaling file systems you can use instead of the default LFS extended file system (ext2/3/4). It also provides introductory material on managing disk arrays.
The only purpose of an initramfs is to mount the root filesystem. The initramfs is a complete set of directories that you would find on a normal root filesystem. It is bundled into a single cpio archive and compressed with one of several compression algorithms.
At boot time, the boot loader loads the kernel and the initramfs image into memory and starts the kernel. The kernel checks for the presence of the initramfs and, if found, mounts it as / and runs /init. The init program is typically a shell script. Note that the boot process takes longer, possibly significantly longer, if an initramfs is used.
For most distributions, kernel modules are the biggest reason to have an initramfs. In a general distribution, there are many unknowns such as file system types and disk layouts. In a way, this is the opposite of LFS where the system capabilities and layout are known and a custom kernel is normally built. In this situation, an initramfs is rarely needed.
There are only four primary reasons to have an initramfs in the LFS environment: loading the rootfs from a network, loading it from an LVM logical volume, having an encrypted rootfs where a password is required, or for the convenience of specifying the rootfs as a LABEL or UUID. Anything else usually means that the kernel was not configured properly.
If you do decide to build an initramfs, the following scripts will provide a basis to do it. The scripts will allow specifying a rootfs via partition UUID or partition LABEL or a rootfs on an LVM logical volume. They do not support an encrypted root file system or mounting the rootfs over a network card. For a more complete capability see the LFS Hints or dracut.
To install these scripts, run the following commands as the
root
user:
cat > /sbin/mkinitramfs << "EOF"
#!/bin/bash
# This file based in part on the mkinitramfs script for the LFS LiveCD
# written by Alexander E. Patrakov and Jeremy Huntwork.
copy()
{
local file
if [ "$2" == "lib" ]; then
file=$(PATH=/lib:/usr/lib type -p $1)
else
file=$(type -p $1)
fi
if [ -n $file ] ; then
cp $file $WDIR/$2
else
echo "Missing required file: $1 for directory $2"
rm -rf $WDIR
exit 1
fi
}
if [ -z $1 ] ; then
INITRAMFS_FILE=initrd.img-no-kmods
else
KERNEL_VERSION=$1
INITRAMFS_FILE=initrd.img-$KERNEL_VERSION
fi
if [ -n "$KERNEL_VERSION" ] && [ ! -d "/lib/modules/$1" ] ; then
echo "No modules directory named $1"
exit 1
fi
printf "Creating $INITRAMFS_FILE... "
binfiles="sh cat cp dd killall ls mkdir mknod mount "
binfiles="$binfiles umount sed sleep ln rm uname"
# Systemd installs udevadm in /bin. Other udev implementations have it in /sbin
if [ -x /bin/udevadm ] ; then binfiles="$binfiles udevadm"; fi
sbinfiles="modprobe blkid switch_root"
#Optional files and locations
for f in mdadm mdmon udevd udevadm; do
if [ -x /sbin/$f ] ; then sbinfiles="$sbinfiles $f"; fi
done
unsorted=$(mktemp /tmp/unsorted.XXXXXXXXXX)
DATADIR=/usr/share/mkinitramfs
INITIN=init.in
# Create a temporary working directory
WDIR=$(mktemp -d /tmp/initrd-work.XXXXXXXXXX)
# Create base directory structure
mkdir -p $WDIR/{bin,dev,lib/firmware,run,sbin,sys,proc}
mkdir -p $WDIR/etc/{modprobe.d,udev/rules.d}
touch $WDIR/etc/modprobe.d/modprobe.conf
ln -s lib $WDIR/lib64
# Create necessary device nodes
mknod -m 640 $WDIR/dev/console c 5 1
mknod -m 664 $WDIR/dev/null c 1 3
# Install the udev configuration files
if [ -f /etc/udev/udev.conf ]; then
cp /etc/udev/udev.conf $WDIR/etc/udev/udev.conf
fi
for file in $(find /etc/udev/rules.d/ -type f) ; do
cp $file $WDIR/etc/udev/rules.d
done
# Install any firmware present
cp -a /lib/firmware $WDIR/lib
# Copy the RAID configuration file if present
if [ -f /etc/mdadm.conf ] ; then
cp /etc/mdadm.conf $WDIR/etc
fi
# Install the init file
install -m0755 $DATADIR/$INITIN $WDIR/init
if [ -n "$KERNEL_VERSION" ] ; then
if [ -x /bin/kmod ] ; then
binfiles="$binfiles kmod"
else
binfiles="$binfiles lsmod"
sbinfiles="$sbinfiles insmod"
fi
fi
# Install basic binaries
for f in $binfiles ; do
ldd /bin/$f | sed "s/\t//" | cut -d " " -f1 >> $unsorted
copy $f bin
done
# Add lvm if present
if [ -x /sbin/lvm ] ; then sbinfiles="$sbinfiles lvm dmsetup"; fi
for f in $sbinfiles ; do
ldd /sbin/$f | sed "s/\t//" | cut -d " " -f1 >> $unsorted
copy $f sbin
done
# Add udevd libraries if not in /sbin
if [ -x /lib/udev/udevd ] ; then
ldd /lib/udev/udevd | sed "s/\t//" | cut -d " " -f1 >> $unsorted
elif [ -x /lib/systemd/systemd-udevd ] ; then
ldd /lib/systemd/systemd-udevd | sed "s/\t//" | cut -d " " -f1 >> $unsorted
fi
# Add module symlinks if appropriate
if [ -n "$KERNEL_VERSION" ] && [ -x /bin/kmod ] ; then
ln -s kmod $WDIR/bin/lsmod
ln -s kmod $WDIR/bin/insmod
fi
# Add lvm symlinks if appropriate
# Also copy the lvm.conf file
if [ -x /sbin/lvm ] ; then
ln -s lvm $WDIR/sbin/lvchange
ln -s lvm $WDIR/sbin/lvrename
ln -s lvm $WDIR/sbin/lvextend
ln -s lvm $WDIR/sbin/lvcreate
ln -s lvm $WDIR/sbin/lvdisplay
ln -s lvm $WDIR/sbin/lvscan
ln -s lvm $WDIR/sbin/pvchange
ln -s lvm $WDIR/sbin/pvck
ln -s lvm $WDIR/sbin/pvcreate
ln -s lvm $WDIR/sbin/pvdisplay
ln -s lvm $WDIR/sbin/pvscan
ln -s lvm $WDIR/sbin/vgchange
ln -s lvm $WDIR/sbin/vgcreate
ln -s lvm $WDIR/sbin/vgscan
ln -s lvm $WDIR/sbin/vgrename
ln -s lvm $WDIR/sbin/vgck
# Conf file(s)
cp -a /etc/lvm $WDIR/etc
fi
# Install libraries
sort $unsorted | uniq | while read library ; do
if [ "$library" == "linux-vdso.so.1" ] ||
[ "$library" == "linux-gate.so.1" ]; then
continue
fi
copy $library lib
done
if [ -d /lib/udev ]; then
cp -a /lib/udev $WDIR/lib
fi
if [ -d /lib/systemd ]; then
cp -a /lib/systemd $WDIR/lib
fi
# Install the kernel modules if requested
if [ -n "$KERNEL_VERSION" ]; then
find \
/lib/modules/$KERNEL_VERSION/kernel/{crypto,fs,lib} \
/lib/modules/$KERNEL_VERSION/kernel/drivers/{block,ata,md,firewire} \
/lib/modules/$KERNEL_VERSION/kernel/drivers/{scsi,message,pcmcia,virtio} \
/lib/modules/$KERNEL_VERSION/kernel/drivers/usb/{host,storage} \
-type f 2> /dev/null | cpio --make-directories -p --quiet $WDIR
cp /lib/modules/$KERNEL_VERSION/modules.{builtin,order} \
$WDIR/lib/modules/$KERNEL_VERSION
depmod -b $WDIR $KERNEL_VERSION
fi
( cd $WDIR ; find . | cpio -o -H newc --quiet | gzip -9 ) > $INITRAMFS_FILE
# Remove the temporary directory and file
rm -rf $WDIR $unsorted
printf "done.\n"
EOF
chmod 0755 /sbin/mkinitramfs
mkdir -p /usr/share/mkinitramfs && cat > /usr/share/mkinitramfs/init.in << "EOF" #!/bin/sh PATH=/bin:/usr/bin:/sbin:/usr/sbin export PATH problem() { printf "Encountered a problem!\n\nDropping you to a shell.\n\n" sh } no_device() { printf "The device %s, which is supposed to contain the\n" $1 printf "root file system, does not exist.\n" printf "Please fix this problem and exit this shell.\n\n" } no_mount() { printf "Could not mount device %s\n" $1 printf "Sleeping forever. Please reboot and fix the kernel command line.\n\n" printf "Maybe the device is formatted with an unsupported file system?\n\n" printf "Or maybe filesystem type autodetection went wrong, in which case\n" printf "you should add the rootfstype=... parameter to the kernel command line.\n\n" printf "Available partitions:\n" } do_mount_root() { mkdir /.root [ -n "$rootflags" ] && rootflags="$rootflags," rootflags="$rootflags$ro" case "$root" in /dev/* ) device=$root ;; UUID=* ) eval $root; device="/dev/disk/by-uuid/$UUID" ;; LABEL=*) eval $root; device="/dev/disk/by-label/$LABEL" ;; "" ) echo "No root device specified." ; problem ;; esac while [ ! -b "$device" ] ; do no_device $device problem done if ! mount -n -t "$rootfstype" -o "$rootflags" "$device" /.root ; then no_mount $device cat /proc/partitions while true ; do sleep 10000 ; done else echo "Successfully mounted device $root" fi } init=/sbin/init root= rootdelay= rootfstype=auto ro="ro" rootflags= device= mount -n -t devtmpfs devtmpfs /dev mount -n -t proc proc /proc mount -n -t sysfs sysfs /sys mount -n -t tmpfs tmpfs /run read -r cmdline < /proc/cmdline for param in $cmdline ; do case $param in init=* ) init=${param#init=} ;; root=* ) root=${param#root=} ;; rootdelay=* ) rootdelay=${param#rootdelay=} ;; rootfstype=*) rootfstype=${param#rootfstype=} ;; rootflags=* ) rootflags=${param#rootflags=} ;; ro ) ro="ro" ;; rw ) ro="rw" ;; esac done # udevd location depends on version if [ -x /sbin/udevd ]; then UDEVD=/sbin/udevd elif [ -x /lib/udev/udevd ]; then UDEVD=/lib/udev/udevd elif [ -x /lib/systemd/systemd-udevd ]; then UDEVD=/lib/systemd/systemd-udevd else echo "Cannot find udevd nor systemd-udevd" problem fi ${UDEVD} --daemon --resolve-names=never udevadm trigger udevadm settle if [ -f /etc/mdadm.conf ] ; then mdadm -As ; fi if [ -x /sbin/vgchange ] ; then /sbin/vgchange -a y > /dev/null ; fi if [ -n "$rootdelay" ] ; then sleep "$rootdelay" ; fi do_mount_root killall -w ${UDEVD##*/} exec switch_root /.root "$init" "$@" EOF
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/initramfs
To build an initramfs, run the following as the root
user:
mkinitramfs [KERNEL VERSION]
The optional argument is the directory where the appropriate
kernel modules are located. This must be a subdirectory of
/lib/modules
. If no modules are
specified, then the initramfs is named initrd.img-no-kmods. If a kernel
version is specified, the initrd is named initrd.img-$KERNEL_VERSION and is
only appropriate for the specific kernel specified. The
output file will be placed in the current directory.
After generating the initrd, copy it to the /boot
directory.
Now edit /boot/grub/grub.cfg
and add a new menuentry. Below are several examples.
# Generic initramfs and root fs identified by UUID menuentry "LFS Dev (LFS-7.0-Feb14) initrd, Linux 3.0.4" { linux /vmlinuz-3.0.4-lfs-20120214 root=UUID=54b934a9-302d-415e-ac11-4988408eb0a8 ro initrd /initrd.img-no-kmods }
# Generic initramfs and root fs on LVM partition menuentry "LFS Dev (LFS-7.0-Feb18) initrd lvm, Linux 3.0.4" { linux /vmlinuz-3.0.4-lfs-20120218 root=/dev/mapper/myroot ro initrd /initrd.img-no-kmods }
# Specific initramfs and root fs identified by LABEL menuentry "LFS Dev (LFS-7.1-Feb20) initrd label, Linux 3.2.6" { linux /vmlinuz-3.2.6-lfs71-120220 root=LABEL=lfs71 ro initrd /initrd.img-3.2.6-lfs71-120220 }
Finally, reboot the system and select the desired system.
Last updated on 2016-06-01 12:21:44 -0700
The btrfs-progs package contains administration and debugging tools for the B-tree file system (btrfs).
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://www.kernel.org/pub/linux/kernel/people/kdave/btrfs-progs/btrfs-progs-v4.12.tar.xz
Download MD5 sum: 4b1a143677597de413381118db8c10bb
Download size: 1.5 MB
Estimated disk space required: 44 MB (add 28 MB for tests)
Estimated build time: 0.3 SBU (add 12 SBU for tests)
asciidoc-8.6.9 and xmlto-0.0.28 (both required to generate man pages)
LVM2-2.02.171 (dmsetup is used in tests)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/xfs
Enable the following option in the kernel configuration and recompile the kernel:
File systems --->
<*/M> Btrfs filesystem support [CONFIG_BTRFS_FS]
CONFIG_BTRFS_FS_POSIX_ACL is required for the tests. Other Btrfs options in the kernel are optional.
Install btrfs-progs by running the following commands:
sed -i '1,100 s/\.gz//g' Documentation/Makefile.in && ./configure --prefix=/usr \ --bindir=/bin \ --libdir=/lib && make
Before running tests, disable several that fail:
mv tests/fuzz-tests/003-multi-check-unmounted/test.sh{,.broken} && mv tests/fuzz-tests/004-simple-dump-tree/test.sh{,.broken} && mv tests/fuzz-tests/007-simple-super-recover/test.sh{,.broken} && mv tests/fuzz-tests/009-simple-zero-log/test.sh{,.broken} && mv tests/misc-tests/019-receive-clones-on-munted-subvol/test.sh{,.broken}
To test the results, issue (as the root
user):
pushd tests ./fsck-tests.sh ./mkfs-tests.sh ./convert-tests.sh ./misc-tests.sh ./cli-tests.sh ./fuzz-tests.sh popd
Install the package as the root
user:
make install && ln -sfv ../../lib/$(readlink /lib/libbtrfs.so) /usr/lib/libbtrfs.so && rm -v /lib/libbtrfs.{a,so} && mv -v /bin/{mkfs,fsck}.btrfs /sbin
sed ... Documentation/Makefile.in: Disables compressing man pages to be consistent with the rest of BLFS.
--disable-documentation
: This
option is needed if the recommended dependencies are not
installed.
mv tests/fuzz-tests/ ...: Disables tests that fail and prevent tests from completing.
ln -s ... /usr/lib/libbtrfs.so: Creates a symbolic link in the directory where it is expected.
rm /lib/libbtrfs.{a,so}: Removes unneeded library entries.
is the main interface into btrfs filesystem operations. |
|
converts from ext2/3/4 filesystem to btrfs. |
|
queries various internal information. |
|
is a filter to find btrfs root. |
|
maps btrfs logical extent to physical extent. |
|
overwrites primary superblock with a backup copy. |
|
queries various internal information. |
|
recovers a damaged btrfs filesystem. |
|
tunes various filesystem parameters. |
|
does nothing, but is present for consistency with fstab. |
|
creates a btrfs file system. |
Last updated on 2017-08-30 16:10:27 -0700
The dosfstools package contains various utilities for use with the FAT family of file systems.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://github.com/dosfstools/dosfstools/releases/download/v4.1/dosfstools-4.1.tar.xz
Download MD5 sum: 07a1050db1a898e9a2e03b0c4569c4bd
Download size: 176 KB
Estimated disk space required: 2.9 MB
Estimated build time: less than 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/dosfstools
Enable the following option in the kernel configuration and recompile the kernel:
File systems --->
<DOS/FAT/NT Filesystems --->
<*/M> MSDOS fs support [CONFIG_MSDOS_FS]
<*/M> VFAT (Windows-95) fs support [CONFIG_VFAT_FS]
Install dosfstools by running the following commands:
./configure --prefix=/ \ --enable-compat-symlinks \ --mandir=/usr/share/man \ --docdir=/usr/share/doc/dosfstools-4.1 && make
This package does not come with a test suite.
Now, as the root
user:
make install
--enable-compat-symlinks
: This
switch creates the dosfsck,
dosfslabel, fsck.msdos, fsck.vfat, mkdosfs, mkfs.msdos, and mkfs.vfat symlinks required by some
programs.
Last updated on 2017-08-24 18:56:23 -0700
FUSE (Filesystem in Userspace) is a simple interface for userspace programs to export a virtual filesystem to the Linux kernel. Fuse also aims to provide a secure method for non privileged users to create and mount their own filesystem implementations.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://github.com/libfuse/libfuse/releases/download/fuse-3.1.1/fuse-3.1.1.tar.gz
Download MD5 sum: 20b10f24b825062c1db9a21a35157f97
Download size: 804 KB
Estimated disk space required: 8.5 MB
Estimated build time: 0.1 SBU
Doxygen-1.8.13 (to rebuild the API documentation)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/fuse
Enable the following options in the kernel configuration and recompile the kernel if necessary:
File systems --->
<*/M> FUSE (Filesystem in Userspace) support [CONFIG_FUSE_FS]
Install Fuse by running the following commands:
./configure --prefix=/usr \ --disable-static \ --exec-prefix=/ \ --with-pkgconfigdir=/usr/lib/pkgconfig \ INIT_D_PATH=/tmp/init.d && make
The API documentation is included in the package, but if you have Doxygen-1.8.13 installed and wish to rebuild it, issue doxygen doc/Doxyfile.
This package does not come with a test suite.
Now, as the root
user:
make install && rm -v /lib/libfuse3.{so,la} && ln -sfv ../../lib/libfuse3.so.3 /usr/lib/libfuse3.so && rm -rf /tmp/init.d && install -v -m755 -d /usr/share/doc/fuse-3.1.1 && install -v -m644 doc/{README.NFS,kernel.txt} \ /usr/share/doc/fuse-3.1.1 && cp -Rv doc/html /usr/share/doc/fuse-3.1.1
--disable-static
:
This switch prevents installation of static versions of the
libraries.
--exec-prefix=/
: This
parameter moves programs and libraries that could be needed
before the /usr
directory is
mounted, to the root filesystem.
INIT_D_PATH=/tmp/init.d
: This
parameter installs the bootscript into /tmp/init.d
as a bootscript is not
required.
rm -rf /tmp/init.d: This removes the unneeded bootscript.
Some options regarding mount policy can be set in the file
/etc/fuse.conf
. To install
the file run the following command as the root
user:
cat > /etc/fuse.conf << "EOF" # Set the maximum number of FUSE mounts allowed to non-root users. # The default is 1000. # #mount_max = 1000 # Allow non-root users to specify the 'allow_other' or 'allow_root' # mount options. # #user_allow_other EOF
Additional information about the meaning of the configuration options are found in the man page.
Last updated on 2017-08-24 15:03:00 -0700
FUSE (Filesystem in Userspace) is a simple interface for userspace programs to export a virtual filesystem to the Linux kernel. Fuse also aims to provide a secure method for non privileged users to create and mount their own filesystem implementations.
This package is only installed for compatibility with Gvfs-1.32.1. It is not needed with other packages. For full fuse functionality, install Fuse-3.1.1 which does not interfere with these instructions.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://github.com/libfuse/libfuse/releases/download/fuse-2.9.7/fuse-2.9.7.tar.gz
Download MD5 sum: 9bd4ce8184745fd3d000ca2692adacdb
Download size: 646 KB
Estimated disk space required: 8.2 MB (9.8 MB with API documentation)
Estimated build time: 0.1 SBU
Doxygen-1.8.13 (to rebuild the API documentation)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/fuse2
Enable the following options in the kernel configuration and recompile the kernel if necessary:
File systems --->
<*/M> FUSE (Filesystem in Userspace) support [CONFIG_FUSE_FS]
Install Fuse by running the following commands:
./configure --prefix=/usr \ --disable-static \ --exec-prefix=/ && make && make DESTDIR=$PWD/Dest install
This package does not come with a test suite.
Now, as the root
user:
install -vm755 Dest/lib/libfuse.so.2.9.7 /lib && install -vm755 Dest/lib/libulockmgr.so.1.0.1 /lib && ln -sfv ../../lib/libfuse.so.2.9.7 /usr/lib/libfuse.so && ln -sfv ../../lib/libulockmgr.so.1.0.1 /usr/lib/libulockmgr.so && install -vm644 Dest/lib/pkgconfig/fuse.pc /usr/lib/pkgconfig && install -vm4755 Dest/bin/fusermount /bin && install -vm755 Dest/bin/ulockmgr_server /bin && install -vm755 Dest/sbin/mount.fuse /sbin && install -vdm755 /usr/include/fuse && install -vm644 Dest/usr/include/*.h /usr/include && install -vm644 Dest/usr/include/fuse/*.h /usr/include/fuse/ && install -vm644 Dest/usr/share/man/man1/* /usr/share/man/man1 && /sbin/ldconfig -v
--disable-static
:
This switch prevents installation of static versions of the
libraries.
--exec-prefix=/
: This
parameter moves programs and libraries that could be needed
before the /usr
directory is
mounted, to the root filesystem.
make DESTDIR=$PWD/Dest install: This command installs the files to a temporary directory, so that the needed files can be installed.
Information on configuring fuse can be found at the section called “Configuring fuse”.
Last updated on 2017-08-24 15:03:00 -0700
The jfsutils package contains administration and debugging tools for the jfs file system.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://jfs.sourceforge.net/project/pub/jfsutils-1.1.15.tar.gz
Download MD5 sum: 8809465cd48a202895bc2a12e1923b5d
Download size: 532 KB
Estimated disk space required: 8.9 MB
Estimated build time: 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/jfs
Enable the following option in the kernel configuration and recompile the kernel:
File systems --->
<*/M> JFS filesystem support [CONFIG_JFS_FS]
Install jfsutils by running the following commands:
sed "s@<unistd.h>@&\n#include <sys/types.h>@g" -i fscklog/extract.c && ./configure && make
This package does not come with a test suite.
Now, as the root
user:
make install
sed "s@<unistd.h>@&\n#include <sys/types.h>@g" -i fscklog/extract.c: Fixes building with Glibc 2.17.
is used to replay the JFS transaction log, check a JFS formatted device for errors, and fix any errors found. |
|
is a hard link to fsck.jfs. |
|
constructs an JFS file system. |
|
is a hard link to mkfs.jfs. |
|
is a program which can be used to perform various low-level actions on a JFS formatted device. |
|
extracts a JFS fsck service log into a file and/or formats and displays the extracted file. |
|
dumps the contents of the journal log from the specified JFS formatted device into output file ./jfslog.dmp. |
|
adjusts tunable file system parameters on JFS file systems. |
Last updated on 2017-08-28 15:14:37 -0700
The LVM2 package is a set of tools that manage logical partitions. It allows spanning of file systems across multiple physical disks and disk partitions and provides for dynamic growing or shrinking of logical partitions, mirroring and low storage footprint snapshots.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://sourceware.org/ftp/lvm2/releases/LVM2.2.02.171.tgz
Download (FTP): ftp://sourceware.org/pub/lvm2/releases/LVM2.2.02.171.tgz
Download MD5 sum: 153b7bb643eb26073274968e9026fa8f
Download size: 2.2 MB
Estimated disk space required: 33 MB (add 15 MB for tests, however transient files can grow up to around 500 MB)
Estimated build time: 0.6 SBU (add 52 SBU for tests)
mdadm-4.0, reiserfsprogs-3.6.27, Valgrind-3.13.0, Which-2.21, xfsprogs-4.12.0 (all five may be used, but are not required, for tests), and thin-provisioning-tools
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/lvm2
Kernel versions between 4.1 and 4.4.1 have a broken RAID implementation. If you want to use RAID type LV's, you should install kernel version 4.4.2 or above. Note that several tests use RAID logical volumes, and can generate a “kernel oops” with the faulty kernel version, which usually renders the system unusable.
Enable the following options in the kernel configuration and recompile the kernel:
There are several other Device Mapper options in the kernel beyond those listed below. In order to get reasonable results if running the regression tests, all must be enabled either internally or as a module. The tests will all time out if Magic SysRq key is not enabled.
Device Drivers --->
[*] Multiple devices driver support (RAID and LVM) ---> [CONFIG_MD]
<*/M> Device mapper support [CONFIG_BLK_DEV_DM]
<*/M/ > Crypt target support [CONFIG_DM_CRYPT]
<*/M/ > Snapshot target [CONFIG_DM_SNAPSHOT]
<*/M/ > Thin provisioning target [CONFIG_DM_THIN_PROVISIONING]
<*/M/ > Mirror target [CONFIG_DM_MIRROR]
Kernel hacking --->
[*] Magic SysRq key [CONFIG_MAGIC_SYSRQ]
Install LVM2 by running the following commands:
SAVEPATH=$PATH && PATH=$PATH:/sbin:/usr/sbin && ./configure --prefix=/usr \ --exec-prefix= \ --with-confdir=/etc \ --enable-applib \ --enable-cmdlib \ --enable-pkgconfig \ --enable-udev_sync && make && PATH=$SAVEPATH && unset SAVEPATH
The tests use udev for
logical volume synchronization, so that the LVM udev rules
and some utilities need to be installed before running the
tests. If you are installing LVM2 for the first time, and do not want
to install the full package before running the tests, the
minimal set of utilities can be installed by running the
following instructions as the root
user:
make -C tools install_dmsetup_dynamic && make -C udev install && make -C libdm install
To test the results, issue: make check_local as the
root
user. Other targets are
available and can be listed with make -C test help. The test
timings are very dependent on the speed of the disk(s), and
on the number of enabled kernel options.
Those tests do not implement the “expected fail” possibility, and a small number of test failures is expected by upstream. More failures may happen because some kernel options are missing. For example, the lack of the dm-delay device mapper target may explain some failures. Some tests are flagged “warned” if thin-provisioning-tools are not installed. A workaround is to add the following flags to configure:
--with-thin-check= \ --with-thin-dump= \ --with-thin-repair= \ --with-thin-restore= \ --with-cache-check= \ --with-cache-dump= \ --with-cache-repair= \ --with-cache-restore= \
Some tests may hang with kernel versions in the 4.1 and 4.2 series (see above). They can be removed if necessary, for example: rm test/shell/lvcreate-large-raid.sh. The tests generate a lot of kernel messages, which may clutter your terminal. You can disable them by issuing dmesg -D before running the tests (do not forget to issue dmesg -E when tests are done).
Now, as the root
user:
make install
PATH=$PATH:/sbin:/usr/sbin:
The path must contain /sbin
and
/usr/sbin
for proper system
tool detection by the configure script. This
instruction ensures that PATH is properly set even if you
build as an unprivileged user.
--enable-applib
: This
switch enables building of the shared application library.
--enable-cmdlib
: This
switch enables building of the shared command library. It is
required when building the event daemon.
--enable-pkgconfig
:
This switch enables installation of pkg-config support files.
--enable-udev_sync
:
This switch enables synchronisation with Udev processing.
--enable-dmeventd
: This switch
enables building of the Device
Mapper event daemon.
--enable-lvmetad
: This switch
enables building of the LVM
metadata daemon, which avoids scanning all the filesystems
when an lvm command is run.
is a utility to deactivate block device. |
|
(optional) is the Device Mapper event daemon. |
|
is a low level logical volume management tool. |
|
is a utility used to resize or check filesystem on a device. |
|
provides the command-line tools for LVM2. Commands are implemented via sympolic links to this program to manage physical devices (pv*), volume groups (vg*) and logical volumes (lv*). |
|
is a script that modifies the locking configuration in the LVM2 configuration file. |
|
is a tool used to dump various information concerning LVM2. |
|
(optional) is the LVM metadata daemon. |
|
is used to import a duplicated VG (e.g. hardware snapshot). |
|
contains the Device Mapper API functions. |
Last updated on 2017-08-24 18:56:23 -0700
LVM manages disk drives. It allows multiple drives and partitions to be combined into larger volume groups, assists in making backups through a snapshot, and allows for dynamic volume resizing. It can also provide mirroring similar to a RAID 1 array.
A complete discussion of LVM is beyond the scope of this introduction, but basic concepts are presented below.
To run any of the commands presented here, the LVM2-2.02.171 package
must be installed. All commands must be run as the root
user.
Management of disks with lvm is accomplished using the following concepts:
These are physical disks or partitions such as /dev/sda3 or /dev/sdb.
These are named groups of physical volumes that can be manipulated by the administrator. The number of physical volumes that make up a volume group is arbitrary. Physical volumes can be dynamically added or removed from a volume group.
Volume groups may be subdivided into logical volumes. Each logical volume can then be individually formatted as if it were a regular Linux partition. Logical volumes may be dynamically resized by the administrator according to need.
To give a concrete example, suppose that you have two 2 TB
disks. Also suppose a really large amount of space is required
for a very large database, mounted on /srv/mysql
. This is what the initial set of
partitions would look like:
Partition Use Size Partition Type
/dev/sda1 /boot 100MB 83 (Linux)
/dev/sda2 / 10GB 83 (Linux)
/dev/sda3 swap 2GB 82 (Swap)
/dev/sda4 LVM remainder 8e (LVM)
/dev/sdb1 swap 2GB 82 (Swap)
/dev/sdb2 LVM remainder 8e (LVM)
First initialize the physical volumes:
pvcreate /dev/sda4 /dev/sdb2
Next create a volume group named lfs-lvm:
vgcreate lfs-lvm /dev/sda4 /dev/sdb2
The status of the volume group can be checked by running the command vgscan. Now create the logical volumes. Since there is about 3900 GB available, leave about 900 GB free for expansion. Note that the logical volume named mysql is larger than any physical disk.
lvcreate --name mysql --size 2500G lfs-lvm lvcreate --name home --size 500G lfs-lvm
Finally the logical volumes can be formatted and mounted. In this example, the jfs file system (jfsutils-1.1.15) is used for demonstration purposes.
mkfs -t ext4 /dev/lfs-lvm/home mkfs -t jfs /dev/lfs-lvm/mysql mount /dev/lfs-lvm/home /home mkdir -p /srv/mysql mount /dev/lfs-lvm/mysql /srv/mysql
The LFS boot scripts automatically make these file systems
available to the system in the checkfs script. Edit the
/etc/fstab
file as required to
automatically mount them.
A LVM logical volume can host a root filesystem, but requires the use of an initramfs (initial RAM file system) and is not discussed here.
For a more information about LVM, see the LVM HOWTO and the lvm man pages.
Last updated on 2013-02-11 10:51:17 -0800
The storage technology known as RAID (Redundant Array of Independent Disks) combines multiple physical disks into a logical unit. The drives can generally be combined to provide data redundancy or to extend the size of logical units beyond the capability of the physical disks or both. The technology also allows for providing hardware maintenance without powering down the system.
The types of RAID organization are described in the RAID Wiki.
Note that while RAID provides protection against disk failures, it is not a substitute for backups. A file deleted is still deleted on all the disks of a RAID array. Modern backups are generally done via rsync-3.1.2.
There are three major types of RAID implementation: Hardware RAID, BIOS-based RAID, and Software RAID.
Hardware based RAID provides capability through proprietary hardware and data layouts. The control and configuration is generally done via firmware in conjunction with executable programs made available by the device manufacturer. The capabilities are generally supplied via a PCI card, although there are some instances of RAID components integrated in to the motherboard. Hardware RAID may also be available in a stand-alone enclosure.
One advantage of hardware-based RAID is that the drives are offered to the operating system as a logical drive and no operating system dependent configuration is needed.
Disadvantages include difficulties in transferring drives from one system to another, updating firmware, or replacing failed RAID hardware.
Some computers offter a hardware-like RAID implementation in the system BIOS. Sometime this is referred to as 'fake' RAID as the capabilites are generally incorporated into firmware without any hardware acceleration.
The advantages and disadvantages of BIOS-based RAID are generally the same as hardware RAID with the additional disadvantage that there is no hardware acceleration.
In some cases, BIOS-based RAID firmware is enabled by default (e.g. some DELL systems). If software RAID is desired, this option must be explicitly disabled in the BIOS.
Software based RAID is the most flexible form of RAID. It is easy to install and update and provides full capability on all or part of any drives available to the system. In BLFS, the RAID software is found in mdadm-4.0.
Configuring a RAID device is straight forward using
mdadm. Generally devices are
created in the /dev
directory
as /dev/mdx
where x is an integer.
The first step in creating a RAID array is to use
partitioning software such as fdisk
or parted-3.2 to define
the partitions needed for the array. Usually, there will be
one partition on each drive participating in the RAID array,
but that is not strictly necessary. For this example, there
will be four disk drives: /dev/sda
, /dev/sdb
, /dev/sdc
, and /dev/sdd
. They will be partitioned as
follows:
Partition Size Type Use
sda1: 100 MB fd Linux raid auto /boot (RAID 1) /dev/md0
sda2: 10 GB fd Linux raid auto / (RAID 1) /dev/md1
sda3: 2 GB 83 Linux swap swap
sda4 300 GB fd Linux raid auto /home (RAID 5) /dev/md2
sdb1: 100 MB fd Linux raid auto /boot (RAID 1) /dev/md0
sdb2: 10 GB fd Linux raid auto / (RAID 1) /dev/md1
sdb3: 2 GB 83 Linux swap swap
sdb4 300 GB fd Linux raid auto /home (RAID 5) /dev/md2
sdc1: 12 GB fd Linux raid auto /usr/src (RAID 0) /dev/md3
sdc2: 300 GB fd Linux raid auto /home (RAID 5) /dev/md2
sdd1: 12 GB fd Linux raid auto /usr/src (RAID 0) /dev/md3
sdd2: 300 GB fd Linux raid auto /home (RAID 5) /dev/md2
Is this arrangement, a separate boot partition is created as
the first small RAID array and a root filesystem as the
secong RAID array, both mirrored. The third partition is a
large (about 1TB) array for the /home
directory. This provides an ability
to stripe data across multiple devices, improving speed for
botih reading and writing large files. Finally, a fourth
array is created that concatenates two partitions into a
larger device.
All mdadm commands must be
run as the root
user.
To create these RAID arrays the commands are:
/sbin/mdadm -Cv /dev/md0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1 /sbin/mdadm -Cv /dev/md1 --level=1 --raid-devices=2 /dev/sda2 /dev/sdb2 /sbin/mdadm -Cv /dev/md3 --level=0 --raid-devices=2 /dev/sdc1 /dev/sdd1 /sbin/mdadm -Cv /dev/md2 --level=5 --raid-devices=4 \ /dev/sda4 /dev/sdb4 /dev/sdc2 /dev/sdd2
The devices created can be examined by device. For example,
to see the details of /dev/md1
,
use /sbin/mdadm --detail
/dev/md1
:
Version : 1.2
Creation Time : Tue Feb 7 17:08:45 2012
Raid Level : raid1
Array Size : 10484664 (10.00 GiB 10.74 GB)
Used Dev Size : 10484664 (10.00 GiB 10.74 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Tue Feb 7 23:11:53 2012
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Name : core2-blfs:0 (local to host core2-blfs)
UUID : fcb944a4:9054aeb2:d987d8fe:a89121f8
Events : 17
Number Major Minor RaidDevice State
0 8 1 0 active sync /dev/sda1
1 8 17 1 active sync /dev/sdb1
From this point, the partitions can be formated with the
filesystem of choice (e.g. ext3, ext4, xfsprogs-4.12.0,
reiserfsprogs-3.6.27, etc). The
formatted partitions can then be mounted. The /etc/fstab
file can use the devices created
for mounting at boot time and the linux command line in
/boot/grub/grub.cfg
can specify
root=/dev/md1
.
The swap devices should be specified in the /etc/fstab
file as normal. The kernel
normally stripes swap data across multiple swap files and
should not be made part of a RAID array.
For further options and management details of RAID devices,
refer to man
mdadm
.
Additional details for monitoring RAID arrays and dealing with problems can be found at the Linux RAID Wiki.
Last updated on 2016-01-30 14:15:21 -0800
The mdadm package contains administration tools for software RAID.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://www.kernel.org/pub/linux/utils/raid/mdadm/mdadm-4.0.tar.xz
Download MD5 sum: 2cb4feffea9167ba71b5f346a0c0a40d
Download size: 424 KB
Estimated disk space required: 6.7 MB (10 MB with tests)
Estimated build time: less than 0.1 SBU (tests take about an hour, only partially processor dependent)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/mdadm
Kernel versions in series 4.1 through 4.4.1 have a broken RAID implementation. Use a kernel with version at or above 4.4.2.
Enable the following options in the kernel configuration and recompile the kernel, if necessary. Only the RAID types desired are required.
Device Drivers --->
[*] Multiple devices driver support (RAID and LVM) ---> [CONFIG_MD]
<*> RAID support [CONFIG_BLK_DEV_MD]
[*] Autodetect RAID arrays during kernel boot [CONFIG_MD_AUTODETECT]
<*/M> Linear (append) mode [CONFIG_MD_LINEAR]
<*/M> RAID-0 (striping) mode [CONFIG_MD_RAID0]
<*/M> RAID-1 (mirroring) mode [CONFIG_MD_RAID1]
<*/M> RAID-10 (mirrored striping) mode [CONFIG_MD_RAID10]
<*/M> RAID-4/RAID-5/RAID-6 mode [CONFIG_MD_RAID456]
Fix a build error introduced by GCC-7.1:
sed 's@-Werror@@' -i Makefile
Install mdadm by running the following commands:
make
If you wish to run the tests, ensure that your kernel supports RAID and that a version of mdadm is not already running. As many as 9 out of 124 tests may fail.
First fix the test script to avoid a bogus error message when tests fail and build the supporting programs:
sed -i 's# if.* == "1"#& -a -e $targetdir/log#' test && make test
Run the tests as the root
user:
./test --keep-going --logdir=test-logs --save-logs
Now, as the root
user:
make install
make everything: This optional target creates extra programs, particularly a statically-linked version of mdadm and also versions of mdassemble. These all need to be manually installed.
--keep-going
: Run the
tests to the end, even if one or more tests fail.
--logdir=test-logs
:
Defines that the directory where test logs are saved.
--save-logs
:
Instructs the test suite to save the logs.
--tests=
:
Optional comma separated list of tests to be executed (all
tests, if this option is not passed).
<test1,test2,...>
Last updated on 2017-08-24 18:56:23 -0700
The Ntfs-3g package contains a stable, read-write open source driver for NTFS partitions. NTFS partitions are used by most Microsoft operating systems. Ntfs-3g allows you to mount NTFS partitions in read-write mode from your Linux system. It uses the FUSE kernel module to be able to implement NTFS support in user space. The package also contains various utilities useful for manipulating NTFS partitions.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://tuxera.com/opensource/ntfs-3g_ntfsprogs-2017.3.23.tgz
Download MD5 sum: d97474ae1954f772c6d2fa386a6f462c
Download size: 1.2 MB
Estimated disk space required: 20 MB
Estimated build time: 0.2 SBU
fuse 2.x (this disables user mounts)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/ntfs-3g
Enable the following options in the kernel configuration and recompile the kernel if necessary:
File systems --->
<*/M> FUSE (Filesystem in Userspace) support [CONFIG_FUSE_FS]
Install Ntfs-3g by running the following commands:
./configure --prefix=/usr \ --disable-static \ --with-fuse=internal && make
This package does not come with a test suite.
Now, as the root
user:
make install && ln -sv ../bin/ntfs-3g /sbin/mount.ntfs && ln -sv ntfs-3g.8 /usr/share/man/man8/mount.ntfs.8
If you want ordinary users to be able to mount NTFS
partitions you'll need to set mount.ntfs with the root user
ID. Note: it is probably unsafe to do this on a computer that
needs to be secure (like a server). As the root
user:
chmod -v 4755 /bin/ntfs-3g
--disable-static
:
This switch prevents installation of static versions of the
libraries.
patch -Np1 -i ...: This command applies a security patch from upstream to fix ntfs-3g on systems that use setuid for the executable.
--with-fuse=internal
:
This switch dynamically forces ntfs-3g to use an internal copy of the
fuse-2.x library. This is
required if you wish to allow users to mount NTFS partitions.
--disable-ntfsprogs
: Disables
installation of various utilities used to manipulate NTFS
partitions.
ln -sv ../bin/ntfs-3g /sbin/mount.ntfs: Creating /sbin/mount.ntfs makes mount default to using Ntfs-3g to mount NTFS partitions.
chmod -v 4755 /bin/ntfs-3g: Making mount.ntfs setuid root allows non root users to mount NTFS partitions.
To mount a Windows partition at boot time, put a line like this in /etc/fstab:
/dev/sda1 /mnt/windows auto defaults 0 0
To allow users to mount a usb stick with an NTFS filesystem on it, put a line similar to this (change sdc1 to whatever a usb stick would be on your system) in /etc/fstab:
/dev/sdc1 /mnt/usb auto user,noauto,umask=0,utf8 0 0
In order for a user to be able to mount the usb stick, they
will need to be able to write to /mnt/usb
, so as the root
user:
chmod -v 777 /mnt/usb
is similar to ntfs-3g but uses the Fuse low-level interface. |
|
is a symlink to mkntfs. |
|
creates an NTFS file system. |
|
is a symlink to lowntfs-3g. |
|
mounts an NTFS filesystem. |
|
is a symbolic link to ntfs-3g. |
|
is an NTFS driver, which can create, remove, rename, move files, directories, hard links, and streams. It can also read and write files, including streams, sparse files and transparently compressed files. It can also handle special files like symbolic links, devices, and FIFOs; moreover it provides standard management of file ownership and permissions, including POSIX ACLs. |
|
tests if an NTFS volume is mountable read only or read-write, and exits with a status value accordingly. The volume can be a block device or image file. |
|
audits NTFS Security Data. |
|
creates the file defining the mapping of Windows accounts to Linux logins for users who owns files which should be visible from both Windows and Linux. |
|
identifies files in a specified region of an NTFS volume |
|
copies a file to an NTFS volume. |
|
fixes common errors and forces Windows to check an NTFS partition. |
|
lists directory contents on an NTFS filesystem. |
|
prints NTFS files and streams on the standard output. |
|
clones an NTFS filesystem. |
|
compares two NTFS filesystems and tells the differences. |
|
dumps a file's attributes. |
|
displays or changes the label on an ntfs file system. |
|
resizes an NTFS filesystem without data loss. |
|
recovers a deleted file from an NTFS volume. |
|
contains the Ntfs-3g API functions. |
Last updated on 2017-08-24 15:03:00 -0700
The gptfdisk package is a set of programs for creation and maintenance of GUID Partition Table (GPT) disk drives. A GPT partitioned disk is required for drives greater than 2 TB and is a modern replacement for legacy PC-BIOS partitioned disk drives that use a Master Boot Record (MBR). The main program, gdisk, has an inteface similar to the classic fdisk program.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://downloads.sourceforge.net/gptfdisk/gptfdisk-1.0.3.tar.gz
Download MD5 sum: 07b625a583b66c8c5840be5923f3e3fe
Download size: 195 KB
Estimated disk space required: 3.1 MB
Estimated build time: less than 0.1 SBU
popt-1.16 (required to build sgdisk)
ICU-59.1 (for Unicode partition names)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gptdisk
The gptfdisk package comes
with a rudimentary Makefile
.
First we update it to provide a simple build and install
interface. Install gptfdisk
by running the following commands:
patch -Np1 -i ../gptfdisk-1.0.3-convenience-1.patch && make POPT=1
This package does not come with a test suite.
Now, as the root
user:
make POPT=1 install
POPT=1
: Adding this
option to the make command is required to
build sgdisk.
If used, this option needs to be on both the make and the make install line.
ICU=1
: Adding this option to the
make command
allows use of Unicode characters in partition names.
Last updated on 2017-08-24 15:03:00 -0700
The Parted package is a disk partitioning and partition resizing tool.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://ftp.gnu.org/gnu/parted/parted-3.2.tar.xz
Download (FTP): ftp://ftp.gnu.org/gnu/parted/parted-3.2.tar.xz
Download MD5 sum: 0247b6a7b314f8edeb618159fa95f9cb
Download size: 1.6 MB
Estimated disk space required: 27 MB (additional 2 MB for the tests and additional 1 MB for optional PDF and Postscript documentation)
Estimated build time: 0.4 SBU (additional 0.6 SBU for the tests)
Optional, to fix build without device mapper support: http://www.linuxfromscratch.org/patches/blfs/8.1/parted-3.2-devmapper-1.patch
LVM2-2.02.171 (device-mapper, required if building udisks)
Pth-2.0.7 and texlive-20170524 (or install-tl-unx)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/parted
If you want to build without device mapper support, a fix is necessary:
patch -Np1 -i ../parted-3.2-devmapper-1.patch
Install Parted by running the following commands:
./configure --prefix=/usr --disable-static && make && make -C doc html && makeinfo --html -o doc/html doc/parted.texi && makeinfo --plaintext -o doc/parted.txt doc/parted.texi
If you have texlive-20170524 installed and wish to create PDF and Postcript documentation issue the following commands:
texi2pdf -o doc/parted.pdf doc/parted.texi && texi2dvi -o doc/parted.dvi doc/parted.texi && dvips -o doc/parted.ps doc/parted.dvi
If you wish to run the test suite, first remove a test that normally fails in BLFS, because it needs a locale C.UTF-8:
sed -i '/t0251-gpt-unicode.sh/d' tests/Makefile
To test the results, issue: make check. Note that many
tests are skipped if not run as the root
user.
Now, as the root
user:
make install && install -v -m755 -d /usr/share/doc/parted-3.2/html && install -v -m644 doc/html/* \ /usr/share/doc/parted-3.2/html && install -v -m644 doc/{FAT,API,parted.{txt,html}} \ /usr/share/doc/parted-3.2
Install the optional PDF and Postscript documentation by
issuing the following command as the root
user:
install -v -m644 doc/FAT doc/API doc/parted.{pdf,ps,dvi} \ /usr/share/doc/parted-3.2
--disable-static
:
This switch prevents installation of static versions of the
libraries.
--disable-device-mapper
: This
option disables device mapper support. Add this parameter if
you have not installed LVM2.
Last updated on 2017-08-24 18:56:23 -0700
The reiserfsprogs package contains various utilities for use with the Reiser file system.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://www.kernel.org/pub/linux/kernel/people/jeffm/reiserfsprogs/v3.6.27/reiserfsprogs-3.6.27.tar.xz
Download MD5 sum: 90c139542725efc6da3a6b1709695395
Download size: 439 KB
Estimated disk space required: 13 MB
Estimated build time: 0.2 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/reiser
Enable the following option in the kernel configuration and recompile the kernel:
File systems --->
<*/M> Reiserfs support [CONFIG_REISERFS_FS]
Install reiserfsprogs by running the following commands:
autoreconf -fiv && ./configure --prefix=/usr \ --sbindir=/sbin && make
This package does not come with a test suite.
Now, as the root
user:
make install
--sbindir=/sbin
: This
switch ensures that the reiserfsprogs utilities are installed in
/sbin
.
can sometimes help to solve problems with ReiserFS file systems. If it is called without options, it prints the super block of any ReiserFS file system found on the device. |
|
creates a ReiserFS file system. |
|
is used to check or repair a ReiserFS file system. |
|
is used for tuning the ReiserFS journal. WARNING: Don't use this utility without first reading the man page thoroughly. |
|
is used to resize an unmounted ReiserFS file system. |
Last updated on 2017-08-28 15:14:37 -0700
The smartmontools package contains utility programs (smartctl, smartd) to control/monitor storage systems using the Self-Monitoring, Analysis and Reporting Technology System (S.M.A.R.T.) built into most modern ATA and SCSI disks.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://downloads.sourceforge.net/smartmontools/smartmontools-6.5.tar.gz
Download MD5 sum: 093aeec3f8f39fa9a37593c4012d3156
Download size: 836 KB
Estimated disk space required: 21 MB
Estimated build time: 0.2 SBU
cURL-7.55.1 or Lynx-2.8.8rel.2 or Wget-1.19.1 (download tools)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gptdisk
Install smartmontools by running the following commands:
./configure --prefix=/usr \ --sysconfdir=/etc \ --with-initscriptdir=no \ --docdir=/usr/share/doc/smartmontools-6.5 && make
This package does not come with a test suite.
Now, as the root
user:
make install
--with-initscriptdir=no
: This
switch suppresses the default initialization script. See
above for the BLFS script.
Last updated on 2017-08-20 15:06:11 -0700
The Sshfs package contains a filesystem client based on the SSH File Transfer Protocol. This is useful for mounting a remote computer that you have ssh access to as a local filesystem. This allows you to drag and drop files or run shell commands on the remote files as if they were on your local computer.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://github.com/libfuse/sshfs/releases/download/sshfs-3.2.0/sshfs-3.2.0.tar.gz
Download MD5 sum: dee189442efb22e08d4f233af8626ce7
Download size: 164 KB
Estimated disk space required: 1.9 MB
Estimated build time: less than 0.1 SBU
Fuse-3.1.1, GLib-2.52.3, and OpenSSH-7.5p1.
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/sshfs
Install Sshfs by running the following commands:
./configure --prefix=/usr && make
This package does not come with a test suite.
Now, as the root
user:
make install
To mount an ssh server you need to be able to log into the server. For example, to mount your remote home folder to the local ~/examplepath (the directory must exist and you must have permissions to write to it):
sshfs example.com:/home/userid ~/examplepath
When you've finished work and want to unmount it again:
fusermount -u ~/example
You can also mount an sshfs
filesystem at boot by adding an entry similar to the
following in the /etc/fstab
file:
userid@example.com:/path /media/path fuse.sshfs _netdev,IdentityFile=/home/userid/.ssh/id_rsa 0 0
See man 1 sshfs and man 8 mount.fuse for all available mount options.
Last updated on 2016-08-27 23:14:16 +0200
The xfsprogs package contains administration and debugging tools for the XFS file system.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://www.kernel.org/pub/linux/utils/fs/xfs/xfsprogs/xfsprogs-4.12.0.tar.xz
Download MD5 sum: e348b0e1d7bd1cd82d64b91ff37e727e
Download size: 1.1 MB
Estimated disk space required: 72 MB
Estimated build time: 0.6 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/xfs
Enable the following options in the kernel configuration and recompile the kernel:
File systems --->
<*/M> XFS filesystem support [CONFIG_XFS_FS]
Install xfsprogs by running the following commands:
make DEBUG=-DNDEBUG \ INSTALL_USER=root \ INSTALL_GROUP=root \ LOCAL_CONFIGURE_OPTIONS="--enable-readline"
This package does not come with a test suite.
Now, as the root
user:
make PKG_DOC_DIR=/usr/share/doc/xfsprogs-4.12.0 install && make PKG_DOC_DIR=/usr/share/doc/xfsprogs-4.12.0 install-dev && rm -rfv /usr/lib/libhandle.a && rm -rfv /lib/libhandle.{a,la,so} && ln -sfv ../../lib/libhandle.so.1 /usr/lib/libhandle.so && sed -i "s@libdir='/lib@libdir='/usr/lib@" /usr/lib/libhandle.la
make DEBUG=-DNDEBUG: Turns off debugging symbols.
INSTALL_USER=root
INSTALL_GROUP=root
: This sets the owner and group
of the installed files.
LOCAL_CONFIGURE_OPTIONS="..."
:
This passes extra configuration options to the configure
script. The example --enable-readline
parameter
enables linking the XFS programs with the libreadline.so
library, in order to allow
editing interactive commands.
OPTIMIZER="..."
: Adding this
parameter to the end of the make command overrides the
default optimization settings.
simply exits with a zero status, since XFS partitions are checked at mount time. |
|
constructs an XFS file system. |
|
changes the parameters of an XFS file system. |
|
prints block mapping for an XFS file. |
|
copies the contents of an XFS file system to one or more targets in parallel. |
|
for each directory argument, estimates the space that directory would take if it were copied to an XFS filesystem (does not cross mount points). |
|
is used to debug an XFS file system. |
|
suspends access to an XFS file system. |
|
applicable only to XFS filesystems, improves the organization of mounted filesystems, the reorganization algorithm operates on one file at a time, compacting or othewise improving the layout of the file extents (contiguous blocks of file data). |
|
expands an XFS file system. |
|
is equivalent to invoking xfs_growfs, but specifying that no change to the file system is to be made. |
|
is a debugging tool like xfs_db, but is aimed at examining the regular file I/O path rather than the raw XFS volume itself. |
|
prints the log of an XFS file system. |
|
restores an XFS metadump image to a filesystem image. |
|
copies XFS filesystem metadata to a file. |
|
creates an XFS file, padded with zeroes by default. |
|
generates pathnames from inode numbers for an XFS file system. |
|
is a utility for reporting and editing various aspects of filesystem quota. |
|
repairs corrupt or damaged XFS file systems. |
|
copies a file to the real-time partition on an XFS file system. |
|
reports and controls free space usage in an XFS file system. |
|
contains XFS-specific functions that provide a way to perform certain filesystem operations without using a file descriptor to access filesystem objects. |
Last updated on 2017-08-24 18:56:23 -0700
This chapter is referenced in the LFS book for those wishing to use other editors on their LFS system. You're also shown how some LFS installed programs benefit from being recompiled after GUI libraries have been installed.
Bluefish is a GTK+ text editor targeted towards programmers and web designers, with many options to write websites, scripts and programming code. Bluefish supports many programming and markup languages, and it focuses on editing dynamic and interactive websites.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://www.bennewitz.com/bluefish/stable/source/bluefish-2.2.10.tar.bz2
Download MD5 sum: 06cc710505856cb328444d834f5e9666
Download size: 4.0 MB
Estimated disk space required: 60 MB
Estimated build time: 0.4 SBU
GTK+-2.24.31 or GTK+-3.22.18 (If both are installed, configure defaults to using GTK+ 3)
desktop-file-utils-0.23 (for updating the desktop database)
enchant-1.6.0 (for spell checking), Gucharmap-10.0.0, PCRE-8.41 and Jing
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/bluefish
Install Bluefish by running the following commands:
./configure --prefix=/usr --docdir=/usr/share/doc/bluefish-2.2.10 && make
This package does not come with a test suite.
Now, as the root
user:
make install
This package installs icon files into the /usr/share/icons/hicolor
hierarchy and
desktop files into the /usr/share/applications
hierarchy. You
can improve system performance and memory usage by updating
/usr/share/icons/hicolor/icon-theme.cache
and /usr/share/applications/mimeinfo.cache
.
To perform the update you must have desktop-file-utils-0.23 (for
the desktop cache) and issue the following commands as the
root
user:
gtk-update-icon-cache -t -f --include-image-data /usr/share/icons/hicolor && update-desktop-database
Last updated on 2017-08-28 15:14:37 -0700
Ed is a line-oriented text editor. It is used to create, display, modify and otherwise manipulate text files, both interactively and via shell scripts. Ed isn't something which many people use. It's described here because it can be used by the patch program if you encounter an ed-based patch file. This happens rarely because diff-based patches are preferred these days.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://ftp.gnu.org/gnu/ed/ed-1.14.2.tar.lz
Download (FTP): ftp://ftp.gnu.org/gnu/ed/ed-1.14.2.tar.lz
Download MD5 sum: 273d04778b2a51f7c3cbfcd2001876bf
Download size: 66 KB
Estimated disk space required: 1.1 MB
Estimated build time: less than 0.1 SBU
libarchive-3.3.2 (for bsdtar)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/ed
Install Ed by running the following commands:
./configure --prefix=/usr --bindir=/bin && make
To test the results, issue: make check.
Now, as the root
user:
make install
Last updated on 2017-08-28 15:14:37 -0700
The Emacs package contains an extensible, customizable, self-documenting real-time display editor.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://ftp.gnu.org/gnu/emacs/emacs-25.2.tar.xz
Download (FTP): ftp://ftp.gnu.org/gnu/emacs/emacs-25.2.tar.xz
Download MD5 sum: 06442d867158754bdde793eca420ca49
Download size: 45 MB
Estimated disk space required: 352 MB
Estimated build time: 1.2 SBU
X Window System, alsa-lib-1.1.4.1, dbus-1.10.22, GConf-3.2.6, GnuTLS-3.5.14, gobject-introspection-1.52.1, gsettings-desktop-schemas-3.24.0, GPM-1.20.7, GTK+-2.24.31 or GTK+-3.22.18, ImageMagick-6.9.9-9 libraries (see command explanations), libjpeg-turbo-1.5.2, libpng-1.6.31, librsvg-2.40.18, LibTIFF-4.0.8, libxml2-2.9.4, MIT Kerberos V5-1.15.1, Valgrind-3.13.0, intlfonts, libungif, libotf and m17n-lib - to correctly display such complex scripts as Indic and Khmer, and also for scripts that require Arabic shaping support (Arabic and Farsi), and libXaw3d
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/emacs
Install Emacs by running the following commands:
./configure --prefix=/usr --localstatedir=/var && make
This package does not come with a test suite. If make succeeds, you can test the result by running src/emacs -Q, which is the program that will be installed, with its auxiliary files. This should start and display the application opening screen.
Now, as the root
user:
make install && chown -v -R root:root /usr/share/emacs/25.2
This package installs icon files into the /usr/share/icons/hicolor
hierarchy and
desktop files into the /usr/share/applications
hierarchy. You can
improve system performance and memory usage by updating
/usr/share/icons/hicolor/icon-theme.cache
and /usr/share/applications/mimeinfo.cache
. To
perform the update you must have GTK+-2.24.31 or GTK+-3.22.18 installed
(for the icon cache) and desktop-file-utils-0.23 (for
the desktop cache) and issue the following commands as the
root
user:
gtk-update-icon-cache -t -f --include-image-data /usr/share/icons/hicolor && update-desktop-database
--localstatedir=/var
:
Create game score files in /var/games/emacs
instead of /usr/var/games/emacs
.
IMAGEMAGICK_CFLAGS=-I/usr/include/ImageMagick-6
IMAGEMAGICK_LIBS="-lMagickCore-6.Q16HDRI -lMagick++-6.Q16HDRI
-lMagickWand-6.Q16HDRI"
: use these when you invoke
configure if you have installed ImageMagick-6.9.9-9 libraries and
wish to link to them (the normal unversioned pkgconfig files
collide with ImageMagick-7.0.6-10 which this
package cannot use).
--with-giflib=no
: Use this if you
have not installed giflib-5.1.4 or libungif.
creates cross-reference tagfile database files for source code. |
|
permits browsing of C++ class hierarchies from within emacs. |
|
is an editor. |
|
attaches an emacs session to an already running emacsserver instance. |
|
is another program to generate source code cross-reference tagfiles. |
|
prints entries in Change Logs matching various criteria. |
Last updated on 2017-08-25 11:57:45 -0700
The Gedit package contains a lightweight UTF-8 text editor for the GNOME Desktop.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://ftp.gnome.org/pub/gnome/sources/gedit/3.22/gedit-3.22.1.tar.xz
Download (FTP): ftp://ftp.gnome.org/pub/gnome/sources/gedit/3.22/gedit-3.22.1.tar.xz
Download MD5 sum: b3ee39faa2f905c83cb158a9b4d3fb44
Download size: 2.8 MB
Estimated disk space required: 71 MB
Estimated build time: 0.8 SBU
gsettings-desktop-schemas-3.24.0, gtksourceview-3.24.3, itstool-2.0.2, and libpeas-1.20.0
Gvfs-1.32.1 (runtime), ISO Codes-3.75, libsoup-2.58.2, and PyGObject-3.24.1 (Python 3 module)
GTK-Doc-1.26, Vala-0.36.4, gspell, and zeitgeist
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gedit
Install Gedit by running the following commands:
./configure --prefix=/usr --disable-spell && make
This package does not come with a test suite.
Now, as the root
user:
make install
--disable-spell
: Use
this switch to disable spell-checking capability. It is
required if gspell is not
installed.
--enable-gtk-doc
: Use this
parameter if GTK-Doc is
installed and you wish to rebuild and install the API
documentation.
Last updated on 2017-08-28 15:14:37 -0700
JOE (Joe's own editor) is a small text editor capable of emulating WordStar, Pico, and Emacs.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://downloads.sourceforge.net/joe-editor/joe-4.4.tar.gz
Download MD5 sum: 59e63debe60b456a6ee5c0c27a756a47
Download size: 1.3 MB
Estimated disk space required: 14 MB
Estimated build time: 0.2 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/joe
Install JOE by running the following commands:
./configure --prefix=/usr \ --sysconfdir=/etc \ --docdir=/usr/share/doc/joe-4.4 && make
This package does not come with a test suite.
Now, as the root
user:
make install && install -vm 755 joe/util/{stringify,termidx,uniproc} /usr/bin && install -vdm755 /usr/share/joe/util && install -vm 644 joe/util/{*.txt,README} /usr/share/joe/util
is a symbolic link to joe used to launch Emacs emulation mode. |
|
is a small text editor capable of emulating WordStar, Pico, and Emacs. |
|
is a symbolic link to joe used to launch Pico emulation mode. |
|
is a symbolic link to joe used to launch WordStar emulation mode. |
|
is a symbolic link to joe that restricts JOE to editing only files which are specified on the command-line. |
|
is a program used by joe to convert rc and .jsf files into a C file (see /usr/share/joe/util/README). |
|
is a program used by joe to generate the termcap index file (see /usr/share/joe/util/README). |
|
is a program used by joe to generate joe's unicode database file unicat.c from Blocks.txt CaseFolding.txt EastAsianWidth.txt and UnicodeData.txt (find them at /usr/share/joe/util; see /usr/share/joe/util/README). |
Last updated on 2017-08-28 15:14:37 -0700
The JuffEd package is a Qt based editor with support for multiple tabs. It is simple and clear, but very powerful. It supports language syntax highlighting, auto-indents in accordance with file type, code blocks folding, matching braces highlighting with instant jumps between them, powerful search and replacing text using regular expressions (including multiline ones) with the opportunity to use matches \1, \2, … in substitutions, a terminal emulator, saving named sessions and many other features.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://anduin.linuxfromscratch.org/BLFS/juffed/juffed-0.10.r71.gc3c1a3f.tar.xz
Download MD5 sum: 5d211f5aadcb3d7365b5a6127d3d275f
Download size: 1.3 MB
Estimated disk space required: 22 MB
Estimated build time: 0.8 SBU
The source tarball shown above was created by the BLFS team
by cloning the source code repository, finding the correct
version to rename accordingly the source code directory,
removing .git
directory and
.gitignore
file, and finally
making the compressed tarball. No other modification has been
made.
qtermwidget-0.7.1 (for the terminal)
desktop-file-utils-0.23 and Enca
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/juffed
For compilation with Qt4, see “Command Explanations” below. Install JuffEd by running the following commands:
sed -i 's/"64"/""/' cmake/LibSuffix.cmake && mkdir -v build && cd build && cmake -DCMAKE_INSTALL_PREFIX=$LXQT_PREFIX \ -DCMAKE_BUILD_TYPE=Release \ -DBUILD_TERMINAL=ON \ -DUSE_QT5=true \ .. && LIBRARY_PATH=$LXQT_PREFIX/lib make
The choice of /usr
prefix is
due to the general characteristics of this program, which can
be used without LXQt.
This package does not come with a test suite.
Now, as the root
user:
make install
sed ... LibSuffix.cmake: Removes the 64 from /lib64.
LIBRARY_PATH=$LXQT_PREFIX/lib
:
This environment variable is needed for the linker to find a
required library.
-DBUILD_TERMINAL=ON
:
This switch is used in order to enable building the terminal.
Toggle to “OFF” or
remove the switch, if you do not wish it.
-DUSE_QT5=true
: This
switch is used in order to build this application linked to
Qt5. Toggle to
“false”, if you prefer
to use Qt4.
Last updated on 2017-08-28 15:14:37 -0700
The Kate package contains an advanced KF5 based graphical text editor.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://download.kde.org/stable/applications/17.08.0/src/kate-17.08.0.tar.xz
Download MD5 sum: 05fd3a46011a39b05677c4e94ec4de3f
Download size: 5.4 MB
Estimated disk space required: 69 MB
Estimated build time: 2.6 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/kate5
Install Kate by running the following commands:
mkdir build && cd build && cmake -DCMAKE_INSTALL_PREFIX=$KF5_PREFIX \ -DCMAKE_BUILD_TYPE=Release \ -DBUILD_TESTING=OFF \ -Wno-dev .. && make
This package does not come with a test suite.
Now, as the root
user:
make install
Last updated on 2017-08-27 09:22:45 -0700
Mousepad is a simple GTK+ 2 text editor for the Xfce desktop environment.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://archive.xfce.org/src/apps/mousepad/0.4/mousepad-0.4.0.tar.bz2
Download MD5 sum: f55314c5dda6323883241e6cf01550a7
Download size: 568 KB
Estimated disk space required: 9.4 MB
Estimated build time: less than 0.1 SBU
gtksourceview-3.24.3 (optionally, it can be built with gtksourceview-2)
DConf-0.26.0 (runtime) and dbus-glib-0.108
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/mousepad
Install Mousepad by running the following commands:
./configure --prefix=/usr --enable-keyfile-settings && make
This package does not come with a test suite.
Now, as the root
user:
make install
--enable-keyfile-settings
: Use
the GSettings keyfile backend rather than the default
DConf-0.26.0.
Last updated on 2017-08-28 15:14:37 -0700
The Nano package contains a small, simple text editor which aims to replace Pico, the default editor in the Pine package.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://www.nano-editor.org/dist/v2.8/nano-2.8.7.tar.xz
Download MD5 sum: 733b3f80a0a2f44fb25de6c6d3a583cf
Download size: 1.4 MB
Estimated disk space required: 16 MB
Estimated build time: 0.2 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/Nano
Install Nano by running the following commands:
./configure --prefix=/usr \ --sysconfdir=/etc \ --enable-utf8 \ --docdir=/usr/share/doc/nano-2.8.7 && make
This package does not come with a test suite.
Now, as the root
user:
make install && install -v -m644 doc/{nano.html,sample.nanorc} /usr/share/doc/nano-2.8.7
--enable-utf8
: This
switch enables unicode support in Nano.
--with-slang
: This forces
Nano to use S-Lang. Use this if installed.
Example configuration (create as a system-wide /etc/nanorc
or a personal ~/.nanorc
file)
set autoindent
set constantshow
set fill 72
set historylog
set multibuffer
set nohelp
set nowrap
set positionlog
set quickblank
set regexp
set smooth
set suspend
Another example is the nanorc.sample
file in the installed
documentation directory. It includes color configurations
and has some documentation included in the comments.
Syntax highlighting is provided for several file types, in
/usr/share/nano/
directory.
E.g., for shell scripts, you can insert include /usr/share/nano/sh.nanorc
in the
personal or global configuration file. If you wish
highlighting for all supported files, use include /usr/share/nano/*.nanorc
.
Last updated on 2017-08-28 13:52:53 -0700
The Vim package, which is an abbreviation for VI IMproved, contains a vi clone with extra features as compared to the original vi.
The default LFS instructions install vim as a part of the base system. If you would prefer to link vim against X, you should recompile vim to enable GUI mode. There is no need for special instructions since X support is automatically detected.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://ftp.vim.org/vim/unix/vim-8.0.586.tar.bz2
Download MD5 sum: b35e794140c196ff59b492b56c1e73db
Download size: 10.4 MB
Estimated disk space required: 77 MB (with tests)
Estimated build time: 2.2 SBU )with tests)
X Window System and GTK+-2.24.31
GPM-1.20.7, Lua-5.3.4, Python-2.7.13, Ruby-2.4.1, and Tcl-8.6.7
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/vim
If you recompile Vim to
link against X and your
X libraries are not on the
root partition, you will no longer have an editor for use
in emergencies. You may choose to install an additional
editor, not link Vim
against X, or move the
current vim
executable to the /bin
directory under a different name such as vi
.
Install Vim by running the following commands:
echo '#define SYS_VIMRC_FILE "/etc/vimrc"' >> src/feature.h && echo '#define SYS_GVIMRC_FILE "/etc/gvimrc"' >> src/feature.h && ./configure --prefix=/usr \ --with-features=huge \ --with-tlib=ncursesw && make
To test the results, issue: make test. The vim test suite outputs a lot of binary
data to the screen, which can cause issues with the settings
of the current terminal. This can be resolved by redirecting
the output to a log file. Even if one of the tests fails to
produce the file test.out
in
src/testdir
, the remaining
tests will still be executed. If all goes well,the final
message in the log file will be ALL
DONE
. Note:
Some color tests expect to be executed under the xterm terminal emulator.
Three tests are known to fail occasionally and can be
ignored.
Now, as the root
user:
make install
By default, Vim's documentation is installed in /usr/share/vim
. The following symlink
allows the documentation to be accessed via /usr/share/doc/vim-8.0.586
, making it
consistent with the location of documentation for other
packages:
ln -snfv ../vim/vim80/doc /usr/share/doc/vim-8.0.586
If you wish to update the runtime files, issue the following command (requires rsync-3.1.2):
rsync -avzcP --delete --exclude="/dos/" --exclude="/spell/" \ ftp.nluug.nl::Vim/runtime/ ./runtime/
To install the runtime files and regenerate the tags
file, as the root
user issue:
make -C src installruntime && vim -c ":helptags /usr/share/doc/vim-8.0.586" -c ":q"
--with-features=huge
:
This switch enables all the additional features available in
Vim, including support for
multibyte characters.
--with-tlib=ncursesw
:
This switch forces Vim to link against the libncursesw
library.
--enable-gui=no
: This will
prevent compilation of the GUI. Vim will still link against X, so that some features such as the
client-server model or the x11-selection (clipboard) are
still available.
--without-x
: If you prefer not to
link Vim against
X, use this switch.
--enable-perlinterp
, --enable-pythoninterp
, --enable-tclinterp
, --enable-rubyinterp
: These options include
the Perl, Python, Tcl, or Ruby interpreters that allow using
other application code in vim scripts.
If desired, create a menu entry for graphical vim,
gvim.desktop
, as the
root
user
cat > /usr/share/applications/gvim.desktop << "EOF"
[Desktop Entry]
Name=GVim Text Editor
Comment=Edit text files
Comment[pt_BR]=Edite arquivos de texto
TryExec=gvim
Exec=gvim -f %F
Terminal=false
Type=Application
Icon=gvim.png
Categories=Utility;TextEditor;
StartupNotify=true
MimeType=text/plain;
EOF
Vim has an integrated spell checker which you can enable it if you issue the following in a vim window:
:setlocal spell spelllang=ru
This setting will enable spell checking for the Russian language for the current session.
By default, Vim only
installs spell files for the English language. If a spell
file is not available for a language, then Vim will call the $VIMRUNTIME/plugin/spellfile.vim
plugin
and will try to obtain the *.spl and optionally *.sug from
the vim ftp server, by using the $VIMRUNTIME/plugin/netrwPlugin.vim
plugin.
Alternatively you can manually download the *.spl and *.sug
files from: ftp://ftp.vim.org/pub/vim/runtime/spell/
and save them to ~/.vim/spell
or in /usr/share/vim/vim80/spell/
.
To find out what's new in Vim-8.0.586 issue the following command:
:help version-8.0.586
For additional information on setting up Vim configuration files, see The vimrc Files and http://vim.wikia.com/wiki/Example_vimrc.
A list of the reinstalled files, along with their short descriptions can be found in the LFS Vim Installation Instructions
Last updated on 2017-08-27 04:41:00 -0700
Geany is a text editor using the GTK+2 toolkit with basic features of an integrated development environment. It was developed to provide a small and fast IDE, which has only a few dependencies from other packages. It supports many filetypes and has some nice features.
Leafpad is a very simple text editor using the GTK+2 toolkit.
mcedit is a text editor installed as part of MC-4.8.19.
pico is a text editor installed as a part of Alpine-2.21.
Last updated on 2017-06-03 15:32:28 -0700
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.
Dash is a POSIX compliant
shell. It can be installed as /bin/sh or as the default shell
for either root
or a second
user with a userid of 0. It depends on fewer libraries than
the Bash shell and is
therefore less likely to be affected by an upgrade problem or
disk failure. Dash is also
useful for checking that a script is completely compatible
with POSIX syntax.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://gondor.apana.org.au/~herbert/dash/files/dash-0.5.9.1.tar.gz
Download MD5 sum: 6472702a8d9760d166ef8333dcb527a6
Download size: 220 KB
Estimated disk space required: 2.8 MB
Estimated build time: less than 0.1 SBU
libedit (command line editor library)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/dash
Install Dash by running the following commands:
./configure --bindir=/bin --mandir=/usr/share/man && make
This package does not come with a test suite.
Now, as the root
user:
make install
If you would like to make dash the default
sh, recreate
the /bin/sh
symlink as the
root
user:
If you create the symbolic link from dash to sh, you will need to reset the link to bash to build LFS.
ln -svf dash /bin/sh
--bindir=/bin
: This
parameter places the dash binary into the root
filesystem.
--with-libedit
: To compile
Dash with libedit support.
Last updated on 2017-08-28 15:14:37 -0700
The Tcsh package contains “an enhanced but completely compatible version of the Berkeley Unix C shell (csh)”. This is useful as an alternative shell for those who prefer C syntax to that of the bash shell, and also because some programs require the C shell in order to perform installation tasks.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://fossies.org/linux/misc/tcsh-6.20.00.tar.gz
Download (FTP): ftp://ftp.astron.com/pub/tcsh/tcsh-6.20.00.tar.gz
Download MD5 sum: 59d40ef40a68e790d95e182069431834
Download size: 980 KB
Estimated disk space required: 12.3 MB (with tests)
Estimated build time: 0.2 SBU (with tests)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/tcsh
First, fix the package for tool chain changes:
sed -i 's|SVID_SOURCE|DEFAULT_SOURCE|g' config/linux && sed -i 's|BSD_SOURCE|DEFAULT_SOURCE|g' config/linux
Install Tcsh by running the following commands:
./configure --prefix=/usr --bindir=/bin && make && sh ./tcsh.man2html
To test the results, issue: make check.
Now, as the root
user:
make install install.man && ln -v -sf tcsh /bin/csh && ln -v -sf tcsh.1 /usr/share/man/man1/csh.1 && install -v -m755 -d /usr/share/doc/tcsh-6.20.00/html && install -v -m644 tcsh.html/* /usr/share/doc/tcsh-6.20.00/html && install -v -m644 FAQ /usr/share/doc/tcsh-6.20.00
--bindir=/bin
: This
installs the tcsh program in
/bin
instead of /usr/bin
.
sh ./tcsh.man2html: This creates HTML documentation from the formatted man page.
ln -v -sf tcsh
/bin/csh: The FHS states that if there is a
C shell installed, there
should be a symlink from /bin/csh
to it. This creates that symlink.
There are numerous configuration files for the C shell.
Examples of these are /etc/csh.cshrc
, /etc/csh.login
, /etc/csh.logout
, ~/.tcshrc
, ~/.cshrc
, ~/.history
, ~/.cshdirs
, ~/.login
, and ~/.logout
. More information on these
files can be found in the tcsh(1)
man page.
Update /etc/shells
to include
the C shell program names (as the root
user):
cat >> /etc/shells << "EOF"
/bin/tcsh
/bin/csh
EOF
The following ~/.cshrc
provides two alternative colour prompts and coloured
ls output. If
you prefer a global modification, issue the command as the
root
user, replacing
~/.cshrc
by /etc/csh.cshrc
.
cat > ~/.cshrc << "EOF"
# Original at:
# https://www.cs.umd.edu/~srhuang/teaching/code_snippets/prompt_color.tcsh.html
# Modified by the BLFS Development Team.
# Add these lines to your ~/.cshrc (or to /etc/csh.cshrc).
# Colors!
set red="%{\033[1;31m%}"
set green="%{\033[0;32m%}"
set yellow="%{\033[1;33m%}"
set blue="%{\033[1;34m%}"
set magenta="%{\033[1;35m%}"
set cyan="%{\033[1;36m%}"
set white="%{\033[0;37m%}"
set end="%{\033[0m%}" # This is needed at the end...
# Setting the actual prompt. Two separate versions for you to try, pick
# whichever one you like better, and change the colors as you want.
# Just don't mess with the ${end} guy in either line... Comment out or
# delete the prompt you don't use.
set prompt="${green}%n${blue}@%m ${white}%~ ${green}%%${end} "
set prompt="[${green}%n${blue}@%m ${white}%~ ]${end} "
# This was not in the original URL above
# Provides coloured ls
alias ls ls --color=always
# Clean up after ourselves...
unset red green yellow blue magenta cyan yellow white end
EOF
Last updated on 2017-08-28 15:14:37 -0700
The zsh package contains a command interpreter (shell) usable as an interactive login shell and as a shell script command processor. Of the standard shells, zsh most closely resembles ksh but includes many enhancements.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://www.zsh.org/pub/zsh-5.4.2.tar.gz
Download MD5 sum: dfe156fd69b0d8d1745ecf6d6e02e047
Download size: 4.3 MB
Estimated disk space required: 44 MB (includes documentation and tests)
Estimated build time: 1.0 SBU (includes documentation and tests)
Optional Documentation: http://www.zsh.org/pub/zsh-5.4.2-doc.tar.xz
Documentation MD5 sum: e718bbcd663992ba33c01d4f8a289fc5
Documentation download size: 3.1 MB
When there is a new zsh release, the old files shown above are moved to a new server directory: http://www.zsh.org/pub/old/.
libcap-2.25 with PAM, PCRE-8.41, and Valgrind-3.13.0,
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/zsh
If you downloaded the optional documentation, unpack it with the following command:
tar --strip-components=1 -xvf ../zsh-5.4.2-doc.tar.xz
Install zsh by running the following commands:
./configure --prefix=/usr \ --bindir=/bin \ --sysconfdir=/etc/zsh \ --enable-etcdir=/etc/zsh && make && makeinfo Doc/zsh.texi --plaintext -o Doc/zsh.txt && makeinfo Doc/zsh.texi --html -o Doc/html && makeinfo Doc/zsh.texi --html --no-split --no-headers -o Doc/zsh.html
If you have texlive-20170524 installed, you can build PDF format of the documentation by issuing the following command:
texi2pdf Doc/zsh.texi -o Doc/zsh.pdf
To test the results, issue: make check.
Now, as the root
user:
make install && make infodir=/usr/share/info install.info && install -v -m755 -d /usr/share/doc/zsh-5.4.2/html && install -v -m644 Doc/html/* /usr/share/doc/zsh-5.4.2/html && install -v -m644 Doc/zsh.{html,txt} /usr/share/doc/zsh-5.4.2
If you downloaded the optional documentation, install it by
issuing the following commands as the root
user:
make htmldir=/usr/share/doc/zsh-5.4.2/html install.html && install -v -m644 Doc/zsh.dvi /usr/share/doc/zsh-5.4.2
If you built the PDF format of the documentation, install it
by issuing the following command as the root
user:
install -v -m644 Doc/zsh.pdf /usr/share/doc/zsh-5.4.2
--sysconfdir=/etc/zsh
and --enable-etcdir=/etc/zsh
: These
parameters are used so that all the zsh configuration files are consolidated
into the /etc/zsh
directory.
Omit these parameters if you wish to retain historical
compatibility by having all the files located in the
/etc
directory.
--bindir=/bin
: This
parameter places the zsh binaries into the root
filesystem.
--enable-cap
: This option enables
POSIX capabilities.
--disable-gdbm
: This option
disables the use of the GDBM
library.
--enable-pcre
: This option allows
zsh to use the PCRE regular
expression library in shell builtins.
Linking zsh dynamically
against pcre and/or
gdbm produces runtime
dependencies on libpcre.so
and/or libgdbm.so
respectively, which both reside in /usr
hierarchy. If /usr
is a separate mount point and
zsh needs to be available
in boot time, then its supporting libraries should be in
/lib
too. You can move the
libraries as follows:
mv -v /usr/lib/libpcre.so.* /lib && ln -v -sf ../../lib/libpcre.so.0 /usr/lib/libpcre.so mv -v /usr/lib/libgdbm.so.* /lib && ln -v -sf ../../lib/libgdbm.so.3 /usr/lib/libgdbm.so
Alternatively you can statically link zsh against pcre and gdbm if you modify the config.modules
file (you need first to
run configure to generate it).
There are a whole host of configuration files for
zsh including /etc/zsh/zshenv
, /etc/zsh/zprofile
, /etc/zsh/zshrc
, /etc/zsh/zlogin
and /etc/zsh/zlogout
. You can find more
information on these in the zsh(1)
and related manual pages.
The first time zsh is executed, you will be prompted by
messages asking several questions. The answers will be used
to create a ~/.zshrc
file. If
you wish to run these questions again, run zsh
/usr/share/zsh/5.4.2/functions/zsh-newuser-install
-f.
There are several built-in advanced prompts. In the
zsh shell,
start advanced prompt support with autoload -U promptinit,
then promptinit. Available
prompt names are listed with prompt -l. Select a
particular one with prompt
<prompt-name>
.
Display all available prompts with prompt -p. Except for the
list and display commands above, you can insert the other
ones in ~/.zshrc
to be
automatically executed at shell start, with the prompt you
chose.
Last updated on 2017-08-28 15:24:26 -0700
Virtualization allows running a complete operating system, or virtual machine (VM), within another operating environment as a task. There are several commercial and open source environments that either emulate another processor or utilize the hardware virtualization features of the host processor.
qemu is a full virtualization solution for Linux on x86 hardware containing virtualization extensions (Intel VT or AMD-V).
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://download.qemu-project.org/qemu-2.9.0.tar.bz2
Download MD5 sum: 02781eb15b364aedef79da7a5113f5b7
Download size: 27 MB
Estimated disk space required: 404 MB (add 420 MB for tests)
Estimated build time: 2.1 SBU (add 1.9 SBU for tests)
GLib-2.52.3, Python-2.7.13, and X Window System
alsa-lib-1.1.4.1 and SDL2-2.0.5
Depending on the sound system, various packages in ALSA-1.1.4, BlueZ-5.46, Check-0.11.0, cURL-7.55.1, Cyrus SASL-2.1.26, GnuTLS-3.5.14, GTK+-2.24.31, GTK+-3.22.18, libusb-1.0.21, libgcrypt-1.8.0, LZO-2.10, Nettle-3.3, Mesa-17.1.6, SDL-1.2.15, VTE-0.48.3 or Vte-0.28.2, libcacard, and libssh2
This optional dependencies list is not comprehensive. See the output of ./configure --help for a more complete list.
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/qemu
Before building qemu, check to see if your processor supports Virtualization Technology (VT):
egrep '^flags.*(vmx|svm)' /proc/cpuinfo
If you get any output, you have VT technology (vmx for Intel processors and svm for AMD processors). You then need to go into your system BIOS and ensure it is enabled. After enabing, reboot back to your LFS instance.
Enable the following options in the kernel configuration and recompile the kernel if necessary:
[*] Virtualization: ---> [CONFIG_VIRTUALIZATION]
<*/M> Kernel-based Virtual Machine (KVM) support [CONFIG_KVM]
<*/M> KVM for Intel processors support [CONFIG_KVM_INTEL]
<*/M> KVM for AMD processors support [CONFIG_KVM_AMD]
The Intel or AMD settings are not both required, but the one matching your system processor is required.
To use the “bridge” network device, as explained below, check that bridge-utils-1.6 is installed and the following options in the kernel configuration are enabled:
[*] Networking support ---> [CONFIG_NET]
Networking options --->
<*/M> 802.1d Ethernet Bridging [CONFIG_BRIDGE]
Device Drivers --->
[*] Network device support ---> [CONFIG_NETDEVICES]
<*/M> Universal TUN/TAP device driver support [CONFIG_TUN]
You will need a dedicated group that will contain users
(other than root) allowed to access the KVM device. Create
this group by running the following command as the
root
user:
groupadd -g 61 kvm
Add any users that might use the KVM device to that group:
usermod -a -G kvm <username>
Install qemu by running the following commands:
Qemu is capable of running many targets. The build process
is also capable of building multiple targets at one time in
a comma delimited list assigned to --target-list
. Run ./configure --help to get
a complete list of available targets.
if [ $(uname -m) = i686 ]; then QEMU_ARCH=i386-softmmu else QEMU_ARCH=x86_64-softmmu fi mkdir -vp build && cd build && ../configure --prefix=/usr \ --sysconfdir=/etc \ --target-list=$QEMU_ARCH \ --audio-drv-list=alsa \ --with-sdlabi=2.0 \ --docdir=/usr/share/doc/qemu-2.9.0 && unset QEMU_ARCH && make
To run the built in tests, run make V=1 -k check.
Now, as the root
user:
make install
You will also need to add an Udev rule so that the KVM device gets correct permissions:
cat > /lib/udev/rules.d/65-kvm.rules << "EOF"
KERNEL=="kvm", GROUP="kvm", MODE="0660"
EOF
Change the permissions and ownership of a helper script, which is needed when using the “bridge” network device (see below):
chgrp kvm /usr/libexec/qemu-bridge-helper && chmod 4750 /usr/libexec/qemu-bridge-helper
For convenience you may want to create a symbolic link to run the installed program. For instance:
ln -sv qemu-system-`uname -m` /usr/bin/qemu
--audio-drv-list=alsa
: This
switch sets the audio driver to ALSA. For other drivers see
the --audio-drv-list list in configure's help output.
The default audio driver is OSS.
--with-sdlabi=2.0
:
Chooses to build with SDL-2 if both SDL and SDL-2 are
installed.
--with-gtkabi=3.0
: builds with
GTK+-3 if both GTK+-2 and GTK+-3 are installed.
Since using qemu means using a virtual computer, the steps to
set up the virtual machine are in close analogy with those to
set up a real computer. You'll need to decide about CPU,
memory, disk, USB devices, network card(s), screen size, etc.
Once the “hardware” is
decided, you'll have for example to choose how to connect the
machine to internet, and/or to install an OS. In the
following, we show basic ways of performing those steps. But
qemu is much more than this, and it is strongly advised to
read the qemu documentation in /usr/share/doc/qemu-2.9.0/qemu-doc.html
.
It is standard practice to name the computer running qemu “host” and the emulated machine running under qemu the “guest”. We'll use those notations in the following.
The following instructions assume the optional symbolic
link, qemu
, has been created.
Additionally, qemu must be run from an
X Window System based terminal (either locally or over
ssh).
A virtual disk may be set up in the following way:
VDISK_SIZE=50G
VDISK_FILENAME=vdisk.img
qemu-img create -f qcow2 $VDISK_FILENAME $VDISK_SIZE
The virtual disk size and filename should be ajusted as desired. The actual size of the file will be less than specified, but will expand as needed, so it is safe to put a high value.
To install an operating system, download an iso image from
your preferred Linux distribution. For the purposes of this
example, we'll use Fedora-16-x86_64-Live-LXDE.iso
in the
current directory. Run the following:
qemu -enable-kvm \
-drive file=$VDISK_FILENAME \
-cdrom Fedora-16-x86_64-Live-LXDE.iso \
-boot d \
-m 1G
Follow the normal installation procedures for the chosen
distribution. The -boot
option specifies the boot
order of drives as a string of drive letters. Valid drive
letters are: a, b (floppy 1 and 2), c (first hard disk), d
(first CD-ROM). The -m
option is the amount of
memory to use for the virtual machine. The choice depends on
the load of the host. Modern distributions should be
comfortable with 1GB. The -enable-kvm
option allows
hardware acceleration. Without this switch, the emulation is
much slower.
The virtual machine hardware is defined by the qemu command line. An example command is given below:
qemu -enable-kvm \ -smp 4 \ -cpu host \ -m 1G \ -drive file=$VDISK_FILENAME \ -cdrom grub-img.iso \ -boot order=c,once=d,menu=on \ -net nic,netdev=net0 \ -netdev user,id=net0 \ -soundhw ac97 \ -vga std \ -serial mon:stdio \ -name "fedora-16"
-enable-kvm
: enable
full KVM virtualization support. On some hardware, it may be
necessary to add the undocumented -machine smm=off
option in order to enable
KVM.
-smp <N>
:
enable symmetric multiprocessing with <N> CPUs.
-cpu <model>
:
simulate CPU <model>. the list of supported models can
be obtained with -cpu help
.
-drive
file=<filename>
: defines a virtual disk
whose image is stored in <filename>
.
-cdrom grub-img.iso
:
defines an iso formated file to use as a cdrom. Here we use a
grub rescue disk, which may turn handy when something goes
wrong at boot time.
-boot
order=c,once=d,menu=on
: defines the boot order
for the virtual BIOS.
-net
nic,netdev=<netid>
: defines a network card
connected to the network device with id <netid>.
-netdev
user,id=<netid>
: defines the network
“user” device. This is
a virtual local network with addresses 10.0.2.0/24, where the
host has address 10.0.2.2 and acts as a gateway to internet,
and with a name server at address 10.0.2.3, and an smb server
at address 10.0.2.4. A builtin DHCP server can allocate
addresses between 10.0.2.15 and 10.0.2.31.
-soundhw
<model>
: defines the soundcard model. The
list may be obtained with -soundhw
help
.
-vga <type>
:
defines the type of vga card to emulate.
-serial mon:stdio
:
sends the serial port of the guest (/dev/ttyS0
on linux guests), multiplexed
with the qemu monitor, to the standard input and output of
the qemu process.
-name <name>
:
sets the name of the guest. This name is displayed in the
guest window caption. It may be useful if you run several
guests at the same time.
It may happen that the guest window displayed by qemu does not correspond to the full capability of the emulated vga card. For example, the vmware card is 1600x900 capable, but only 1024x768 is displayed by default. A suitable Xorg configuration on the guest allows to use the full size (Note that the Xorg video driver to use is Xorg VMware Driver-13.2.1):
cat > /usr/share/X11/xorg.conf.d/20-vmware.conf << "EOF"
Section "Monitor"
Identifier "Monitor0"
# cvt 1600 900
# 1600x900 59.95 Hz (CVT 1.44M9) hsync: 55.99 kHz; pclk: 118.25 MHz
Modeline "1600x900" 118.25 1600 1696 1856 2112 900 903 908 934 -hsync +vsync
Option "PreferredMode" "1600x900"
HorizSync 1-200
VertRefresh 1-200
EndSection
Section "Device"
Identifier "VMware SVGA II Adapter"
Option "Monitor" "default"
Driver "vmware"
EndSection
Section "Screen"
Identifier "Default Screen"
Device "VMware SVGA II Adapter"
Monitor "Monitor0"
SubSection "Display"
Depth 24
Modes "1600x900" "1440x900" "1366x768" "1280x720" "800x480"
EndSubSection
EndSection
EOF
New sizes will be available besides the native ones. You need to restart X in order to have the new sizes available.
The above solution for networking allows the guest to access
the local network through the host (and possibly to access
internet through the local routers), but the converse is not
true. Not even the host can access the guest, unless port
forwarding is enabled. And in the case several guests are
running, they cannot communicate with each other. Other
network devices can be used for this purpose. For example,
there is the “socket”
device, which allows several guests to share a common virtual
network. In the following, we describe in more details how to
set up the “bridge”
device, which allows the guests to appear as if connected to
the local network. All the commands below should be run as
the root
user.
Allow the host to forward IP packets:
sysctl -w net.ipv4.ip_forward=1
To make this permanent, add the command to /etc/sysctl.d/60-net-forward.conf:
cat >> /etc/sysctl.d/60-net-forward.conf << EOF net.ipv4.ip_forward=1 EOF
Set up a required configuration file:
install -vdm 755 /etc/qemu && echo allow br0 > /etc/qemu/bridge.conf
In the command above, replace the switch -netdev user,...
with
-netdev
bridge,id=net0
.
is a standalone client for using the ivshmem device. |
|
is an example server for the ivshmem device. |
|
implements support for QMP (QEMU Monitor Protocol) commands and events that terminate and originate respectively within the guest using an agent built as part of QEMU. |
|
provides commands to manage QEMU disk images. |
|
is a diagnostic and manipulation program for (virtual) memory media. It is still at an early stage of development. |
|
exports Qemu disk images using the QEMU Disk Network Block Device (NBD) protocol. |
|
is the QEMU PC System emulator. |
|
creates a socket pair or a named socket. QEMU and proxy helper communicate using this socket. QEMU proxy fs driver sends filesystem request to proxy helper and receives the response from it. |
Last updated on 2017-08-27 19:18:31 -0700
Libraries contain code which is often required by more than one program. This has the advantage that each program doesn't need to duplicate code (and risk introducing bugs), it just has to call functions from the libraries installed on the system. The most obvious example of a set of libraries is Glibc which is installed during the LFS book. This contains all of the C library functions which programs use.
There are two types of libraries: static and shared. Shared
libraries (usually libXXX.so
) are
loaded into memory from the shared copy at runtime (hence the
name). Static libraries (libXXX.a
)
are actually linked into the program executable file itself, thus
making the program file larger. Quite often, you will find both
static and shared copies of the same library on your system.
Generally, you only need to install libraries when you are
installing software that needs the functionality they supply. In
the BLFS book, each package is presented with a list of (known)
dependencies. Thus, you can figure out which libraries you need
to have before installing that program. If you are installing
something without using BLFS instructions, usually the
README
or INSTALL
file will contain details of the
program's requirements.
There are certain libraries which nearly everyone will need at some point. In this chapter these and some others are listed and it is explained why you may want to install them.
The Apache Portable Runtime (APR) is a supporting library for the Apache web server. It provides a set of application programming interfaces (APIs) that map to the underlying Operating System (OS). Where the OS doesn't support a particular function, APR will provide an emulation. Thus programmers can use the APR to make a program portable across different platforms.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://archive.apache.org/dist/apr/apr-1.6.2.tar.bz2
Download (FTP): ftp://ftp.mirrorservice.org/sites/ftp.apache.org/apr/apr-1.6.2.tar.bz2
Download MD5 sum: e81a851967c79b5ce9bfbc909e4bf735
Download size: 833 KB
Estimated disk space required: 13 MB (additional 3 MB for the tests)
Estimated build time: 0.2 SBU (1.6 with tests)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/apr
Install Apr by running the following commands:
./configure --prefix=/usr \ --disable-static \ --with-installbuilddir=/usr/share/apr-1/build && make
To test the results, issue: make test.
Now, as the root
user:
make install
--disable-static
:
This switch prevents installation of static versions of the
libraries.
Last updated on 2017-08-18 12:42:43 -0700
The Apache Portable Runtime Utility Library provides a predictable and consistent interface to underlying client library interfaces. This application programming interface assures predictable if not identical behaviour regardless of which libraries are available on a given platform.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://archive.apache.org/dist/apr/apr-util-1.6.0.tar.bz2
Download (FTP): ftp://ftp.mirrorservice.org/sites/ftp.apache.org/apr/apr-util-1.6.0.tar.bz2
Download MD5 sum: 069a9a980776acab05212c5f37ef8368
Download size: 419 KB
Estimated disk space required: 8 MB (additional 1.4 MB for tests)
Estimated build time: 0.1 SBU (additional 0.3 SBU for tests)
Berkeley DB-6.2.32, FreeTDS, MariaDB-10.2.8 or MySQL, OpenLDAP-2.4.45, PostgreSQL-9.6.4, SQLite-3.20.0 and unixODBC-2.3.4
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/apr-util
Install Apr Util by running the following commands:
./configure --prefix=/usr \ --with-apr=/usr \ --with-gdbm=/usr \ --with-openssl=/usr \ --with-crypto && make
To test the results, issue: make test.
Now, as the root
user:
make install
--with-gdbm=/usr
:
This switch enables the apr_dbm_gdbm-1.so
plugin.
--with-openssl=/usr
--with-crypto
: These switches enable the
apr_crypto_openssl-1.so
plugin.
Remove them if you have not installed OpenSSL-1.1.0f.
--with-berkeley-db=/usr
: If you
have installed Berkeley DB-6.2.32, use this switch
to compile the apr_dbm_db-1.so
plugin.
--with-ldap
: If you have
installed OpenLDAP-2.4.45, use this switch to
compile the apr_ldap.so
plugin.
Last updated on 2017-08-18 12:42:43 -0700
The Aspell package contains an interactive spell checking program and the Aspell libraries. Aspell can either be used as a library or as an independent spell checker.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://ftp.gnu.org/gnu/aspell/aspell-0.60.6.1.tar.gz
Download (FTP): ftp://ftp.gnu.org/gnu/aspell/aspell-0.60.6.1.tar.gz
Download MD5 sum: e66a9c9af6a60dc46134fdacf6ce97d7
Download size: 1.8 MB
Estimated disk space required: 58 MB (Additional 8 MB for EN dictionary)
Estimated build time: 0.5 SBU
You'll need to download at least one dictionary. The link below will take you to a page containing links to dictionaries in many languages.
Aspell dictionaries: https://ftp.gnu.org/gnu/aspell/dict
Which-2.21 (for the dictionaries)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/aspell
First fix some probles identified by gcc7:
sed -i '/ top.do_check ==/s/top.do_check/*&/' modules/filter/tex.cpp && sed -i '/word ==/s/word/*&/' prog/check_funs.cpp
Install Aspell by running the following commands:
./configure --prefix=/usr && make
This package does not come with a test suite.
Now, as the root
user:
make install && ln -svfn aspell-0.60 /usr/lib/aspell && install -v -m755 -d /usr/share/doc/aspell-0.60.6.1/aspell{,-dev}.html && install -v -m644 manual/aspell.html/* \ /usr/share/doc/aspell-0.60.6.1/aspell.html && install -v -m644 manual/aspell-dev.html/* \ /usr/share/doc/aspell-0.60.6.1/aspell-dev.html
If you do not plan to install Ispell, then copy the wrapper script ispell:
install -v -m 755 scripts/ispell /usr/bin/
If you do not plan to install Spell, then copy the wrapper script spell:
install -v -m 755 scripts/spell /usr/bin/
ln -svfn aspell-0.60 /usr/lib/aspell: This command is useful for configuration of other applications, such as enchant-1.6.0.
is a utility that can function as an ispell -a replacement, as an independent spell checker, as a test utility to test out Aspell features, and as a utility for managing dictionaries. |
|
is a wrapper around aspell to invoke it in ispell compatible mode. |
|
is a wrapper around aspell to invoke it in spell compatible mode. |
|
imports old personal dictionaries into Aspell. |
|
decompresses a prezipped file to stdout. |
|
decompresses a prezipped file. |
|
is a prefix delta compressor, used to compress sorted word lists or other similar text files. |
|
is called by the various wrapper scripts to perform the actual compressing and decompressing. |
|
displays information about the |
|
is a script to help use Aspell as an ispell replacement. |
|
compresses or decompresses sorted word lists for use with the Aspell spell checker. |
|
contains spell checking API functions. |
|
is an interface to the |
Last updated on 2017-08-24 18:56:23 -0700
Boost provides a set of free peer-reviewed portable C++ source libraries. It includes libraries for linear algebra, pseudorandom number generation, multithreading, image processing, regular expressions and unit testing.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://dl.bintray.com/boostorg/release/1.64.0/source/boost_1_64_0.tar.bz2
Download MD5 sum: 93eecce2abed9d2442c9676914709349
Download size: 77 MB
Estimated disk space required: 980 MB (with regression tests)
Estimated build time: 1.6 SBU (using -j4; add 2.1 SBU for regression tests)
ICU-59.1, Python-2.7.13 or Python-3.6.2, and Open MPI
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/boost
First, fix a bug with the header files path, when Python3 is used:
sed -e '/using python/ s@;@: /usr/include/python${PYTHON_VERSION/3*/${PYTHON_VERSION}m} ;@' \ -i bootstrap.sh
Install Boost by running the following commands:
./bootstrap.sh --prefix=/usr && ./b2 stage threading=multi link=shared
To run the Boost.Build's regression test (Python-2.7.13 is required), issue pushd tools/build/test; python test_all.py; popd. All 131 tests should pass.
To run every library's regression tests, issue pushd status; ../b2; popd.
A few tests may fail. They take very long (over 120 SBU at
-j1, 50 SBU at -j4) and use a very large amount of disk space
(up to 40 GB). You can use the -jN
switch to speed them up.
Now, as the root
user:
./b2 install threading=multi link=shared
threading=multi
: This
parameter ensures that Boost
is built with multithreading support.
link=shared
: This
parameter ensures that only shared libraries are created,
except for libboost_exception and libboost_test_exec_monitor
which are created as static. Most people will not need the
static libraries. Indeed most programs using Boost only use the headers. Omit this
parameter if you do need static libraries.
-jN
: This switch may be added to
the b2 command
lines, to run up to N processes in parallel.
--with-python=python3
: Add this
switch to the bootstrap command, if you
want Boost to use Python3 instead of Python2.
Last updated on 2017-08-19 15:43:35 -0700
CLucene is a C++ version of Lucene, a high performance text search engine.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://downloads.sourceforge.net/clucene/clucene-core-2.3.3.4.tar.gz
Download MD5 sum: 48d647fbd8ef8889e5a7f422c1bfda94
Download size: 2.2 MB
Estimated disk space required: 78 MB
Estimated build time: 0.8 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/clucene
Install CLucene by running the following commands:
patch -Np1 -i ../clucene-2.3.3.4-contribs_lib-1.patch && mkdir build && cd build && cmake -DCMAKE_INSTALL_PREFIX=/usr \ -DBUILD_CONTRIBS_LIB=ON .. && make
Now, as the root
user:
make install
-DBUILD_CONTRIBS_LIB=ON
: This
cmake variable enables building the CLucene contribs library
necessary for running applications that use language specific
text analyzers like LibreOffice for example.
Last updated on 2017-08-29 10:55:51 -0700
The D-Bus GLib package contains GLib interfaces to the D-Bus API.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://dbus.freedesktop.org/releases/dbus-glib/dbus-glib-0.108.tar.gz
Download MD5 sum: a66a613705870752ca9786e0359aea97
Download size: 796 KB
Estimated disk space required: 9.5 MB (with tests)
Estimated build time: 0.1 SBU (with tests)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/dbus-glib
Install D-Bus GLib by running the following commands:
./configure --prefix=/usr \ --sysconfdir=/etc \ --disable-static && make
To test the results, issue: make check. Note that more comprehensive tests can be run by following the same method used in D-Bus instructions, which requires building the package twice.
Now, as the root
user:
make install
--disable-static
:
This switch prevents installation of static versions of the
libraries.
--enable-gtk-doc
: Use this
parameter if GTK-Doc is
installed and you wish to rebuild and install the API
documentation.
Last updated on 2017-08-21 16:43:13 -0700
The enchant package provide a generic interface into various existing spell checking libraries.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://www.abisource.com/downloads/enchant/1.6.0/enchant-1.6.0.tar.gz
Download (FTP): ftp://ftp.netbsd.org/pub/pkgsrc/distfiles/enchant-1.6.0.tar.gz
Download MD5 sum: de11011aff801dc61042828041fb59c7
Download size: 596 KB
Estimated disk space required: 11 MB
Estimated build time: 0.1 SBU
dbus-glib-0.108, Hspell, Hunspell, and Voikko
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/enchant
Install enchant by running the following commands:
./configure --prefix=/usr --disable-static && make
This package does not come with a test suite.
Now, as the root
user:
make install
--disable-static
:
This switch prevents installation of static versions of the
libraries.
If you wish to use the Aspell-0.60.6.1 backend, create
a symlink, as the root
user:
ln -svfn ../../lib/aspell /usr/share/enchant/aspell
You can test your installation and configuration by creating a test file and running the commands in the following (you can replace the en_GB dictionary by any other downloaded when installing Aspell-0.60.6.1):
cat > /tmp/test-enchant.txt << "EOF"
Tel me more abot linux
Ther ar so many commads
EOF
enchant -d en_GB -l /tmp/test-enchant.txt &&
enchant -d en_GB -a /tmp/test-enchant.txt
You will see a list of the misspelled words followed by a list of alternatives for them.
See more details in the enchant manual page.
Last updated on 2017-08-26 15:00:55 -0700
Exempi is an implementation of XMP (Adobe's Extensible Metadata Platform).
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://libopenraw.freedesktop.org/download/exempi-2.4.3.tar.bz2
Download MD5 sum: ad612752c8bf50d7c84a4689073246d2
Download size: 3.5 MB
Estimated disk space required: 232 MB (add 20 MB for tests)
Estimated build time: 1.2 SBU (add 0.2 SBU for tests)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/exempi
Install Exempi by running the following commands:
./configure --prefix=/usr --disable-static && make
To test the results, issue: make check.
Now, as the root
user:
make install
--disable-static
:
This switch prevents installation of static versions of the
libraries.
Last updated on 2017-08-29 10:55:51 -0700
FFTW is a C subroutine library for computing the discrete Fourier transform (DFT) in one or more dimensions, of arbitrary input size, and of both real and complex data (as well as of even/odd data, i.e. the discrete cosine/sine transforms or DCT/DST).
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://www.fftw.org/fftw-3.3.6-pl2.tar.gz
Download (FTP): ftp://ftp.fftw.org/pub/fftw/fftw-3.3.6-pl2.tar.gz
Download MD5 sum: 927e481edbb32575397eb3d62535a856
Download size: 4.0 MB
Estimated disk space required: 59 MB (with tests)
Estimated build time: 0.8 SBU (with tests)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/fftw
Install fftw by running the following commands:
./configure --prefix=/usr --enable-shared --enable-threads && make
To test the results, issue: make check.
Now, as the root
user:
make install
--enable-shared --disable-static: Use shared libs instead of static libs.
--enable-threads: This
enables libfftw3_threads.so
to
be compiled. It is used by e.g. the gimp plugin from G'MIC.
--enable-float
: This enables
floating point, and will cause the library to be called
libfftw3f.so
(needed by
RawTherapee (and similarly
for the threaded library if that is built (not needed by
RawTherapee). These versions are not usable by packages in
this book which use libfftw3
so
if you need both you will need to build fftw twice.
is a utility to generate FFTW wisdom files, which contain saved information about how to optimally compute (Fourier) transforms of various sizes. |
|
is a utility to generate C configuration routines from FFTW wisdom files, where the latter contain saved information about how to optimally compute (Fourier) transforms of various sizes. |
|
is the Fast Fourier Transform library |
|
is the threaded Fast Fourier Transform library |
|
is the floating-point Fast Fourier Transform library |
|
is the threaded floating-point Fast Fourier Transform library |
Last updated on 2017-08-23 12:11:26 -0700
The Gcab package contains a program and a library used to create Microsoft cabinet (.cab) archives.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://ftp.gnome.org/pub/gnome/sources/gcab/0.7/gcab-0.7.tar.xz
Download (FTP): ftp://ftp.gnome.org/pub/gnome/sources/gcab/0.7/gcab-0.7.tar.xz
Download MD5 sum: d8c54c340e56d0b6a8fe082fd04d8090
Download size: 328 KB
Estimated disk space required: 5.2 MB (with tests)
Estimated build time: 0.1 SBU (with tests)
gobject-introspection-1.52.1 and Vala-0.36.4
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gcab
Install Gcab by running the following commands:
./configure --prefix=/usr --disable-static && make
To test the results, issue: make check.
Now, as the root
user:
make install
--disable-static
:
This switch prevents installation of static versions of the
libraries.
--enable-gtk-doc
: Use this
parameter if GTK-Doc is
installed and you wish to rebuild and install the API
documentation.
Last updated on 2017-08-24 15:03:00 -0700
The GLib package contains low-level libraries 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.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://ftp.gnome.org/pub/gnome/sources/glib/2.52/glib-2.52.3.tar.xz
Download (FTP): ftp://ftp.gnome.org/pub/gnome/sources/glib/2.52/glib-2.52.3.tar.xz
Download MD5 sum: 89265d0289a436e99cad54491eb21ef4
Download size: 7.3 MB
Estimated disk space required: 142 MB (additional 73 MB for tests)
Estimated build time: 1.0 SBU (additional 4.5 SBU for tests)
libffi-3.2.1 and Python-2.7.13 or Python-3.6.2
PCRE-8.41 (built with Unicode properties)
dbus-1.10.22 (required for some tests), elfutils-0.170, GTK-Doc-1.26, FAM library, and GNU Indent
gobject-introspection-1.52.1 (should be installed before gtk+, atk, etc.)
Quoted directly from the INSTALL
file: “Some of the mimetype-related functionality in GIO
requires the update-mime-database and
update-desktop-database
utilities”, which are part of shared-mime-info-1.8 and desktop-file-utils-0.23,
respectively.
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/glib2
Install GLib by running the following commands:
./configure --prefix=/usr --with-pcre=system && make
The GLib test suite requires desktop-file-utils for some tests. However, desktop-file-utils requires GLib in order to compile; therefore, you must first install GLib and then run the test suite.
Now, as the root
user:
make install
You should now install desktop-file-utils-0.23 and proceed to run the test suite.
To test the results, after having installed the package, issue: make -k check.
--with-pcre=system
:
This switch causes the build to use a system-provided version
of the PCRE library instead
of an internal version.
--enable-gtk-doc
: Use this
parameter if GTK-Doc is
installed and you wish to rebuild and install the API
documentation.
--with-python=/usr/bin/python3
:
Add this switch if you want GLib to use Python3 instead of
Python2.
can be used to start applications and to send messages to already-running instances of other applications. |
|
is a simple tool used for working with D-Bus objects. |
|
is used to generate code and/or documentation for one or more D-Bus interfaces. |
|
is a utility that makes many GIO features available from the command line. |
|
is used to create a |
|
is used to read the resource description from a file and the files that it references to create a binary resource bundle that is suitable for use with the GResource API. |
|
is used to compile all the GSettings XML schema
files in directory into a binary file with the name
|
|
is a C code marshaller generation utility for GLib closures. |
|
is a variant of the gettext internationalization utility. |
|
is a C language enum description generation utility. |
|
is a small utility that draws a tree of types. |
|
offers a simple command line interface to GResource. |
|
offers a simple command line interface to GSettings. |
|
is a test running utility. |
|
is a test report formatting utility. |
|
contain low-level core libraries for the GIMP Toolkit. |
Last updated on 2017-08-20 15:06:11 -0700
The GLibmm package is a set of C++ bindings for GLib.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://ftp.gnome.org/pub/gnome/sources/glibmm/2.52/glibmm-2.52.0.tar.xz
Download (FTP): ftp://ftp.gnome.org/pub/gnome/sources/glibmm/2.52/glibmm-2.52.0.tar.xz
Download MD5 sum: 0ceaccabce7772e6ef6d0657bb0d2de1
Download size: 6.2 MB
Estimated disk space required: 163 MB (with tests)
Estimated build time: 2.4 SBU (with tests)
GLib-2.52.3 and libsigc++-2.10.0
Doxygen-1.8.13, glib-networking-2.50.0 (for tests), GnuTLS-3.5.14 (for tests), and libxslt-1.1.29
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/glibmm
First, fix the documents directory name:
sed -e '/^libdocdir =/ s/$(book_name)/glibmm-2.52.0/' \ -i docs/Makefile.in
Install GLibmm by running the following commands:
./configure --prefix=/usr && make
To test the results, issue: make check.
Now, as the root
user:
make install
Last updated on 2017-08-23 19:39:45 -0700
The GMime package contains a set of utilities for parsing and creating messages using the Multipurpose Internet Mail Extension (MIME) as defined by the applicable RFCs. See the GMime web site for the RFCs resourced. This is useful as it provides an API which adheres to the MIME specification as closely as possible while also providing programmers with an extremely easy to use interface to the API functions.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://ftp.gnome.org/pub/gnome/sources/gmime/2.6/gmime-2.6.23.tar.xz
Download (FTP): ftp://ftp.gnome.org/pub/gnome/sources/gmime/2.6/gmime-2.6.23.tar.xz
Download MD5 sum: 247072236d84bd0fbbff299d69bdf333
Download size: 5.0 MB
Estimated disk space required: 28 MB (with tests)
Estimated build time: 0.5 SBU (with tests)
GLib-2.52.3 and libgpg-error-1.27
gobject-introspection-1.52.1 and Vala-0.36.4
DocBook-utils-0.6.14, GPGME-1.9.0, GTK-Doc-1.26 and Gtk# (requires Mono)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gmime
Install GMime by running the following commands:
./configure --prefix=/usr --disable-static && make
To test the results, issue: make check.
Now, as the root
user:
make install
--disable-static
:
This switch prevents installation of static versions of the
libraries.
--enable-smime
: Use this switch
if you have installed GPGME-1.9.0 and wish to enable S/MIME
support in GMime.
--enable-gtk-doc
: Use this
parameter if GTK-Doc is
installed and you wish to rebuild and install the API
documentation.
Last updated on 2017-08-28 13:39:51 -0700
The GObject Introspection is used to describe the program APIs and collect them in a uniform, machine readable format.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://ftp.gnome.org/pub/gnome/sources/gobject-introspection/1.52/gobject-introspection-1.52.1.tar.xz
Download (FTP): ftp://ftp.gnome.org/pub/gnome/sources/gobject-introspection/1.52/gobject-introspection-1.52.1.tar.xz
Download MD5 sum: 34157073991f9eeb0ed953351b65eb61
Download size: 1.3 MB
Estimated disk space required: 38 MB (add 7 MB for tests)
Estimated build time: 0.3 SBU (additional 0.3 SBU for the tests)
Cairo-1.14.10 (required for the tests), GTK-Doc-1.26 and Mako-1.0.4
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gobject-introspection
Install GObject Introspection by running the following commands:
./configure --prefix=/usr --disable-static && make
To test the results, issue: make check. One test, Regress-1.0.gir, is known to fail with glibc-2.26.
Now, as the root
user:
make install
--disable-static
:
This switch prevents installation of static versions of the
libraries.
--enable-gtk-doc
: Use this
parameter if GTK-Doc is
installed and you wish to rebuild and install the API
documentation.
converts one or more GIR files into one or more typelib. |
|
generates Mallard files that can be viewed with yelp or rendered to HTML with yelp-build from yelp-tools. |
|
is a utility that gives information about a GI typelib. |
|
is a tool which generates GIR XML files by parsing headers and introspecting GObject based libraries. |
|
is a GIR generator that uses the repository API. |
|
provides an API to access the typelib metadata. |
Last updated on 2017-08-24 15:03:00 -0700
Grantlee is a set of free software libraries written using the Qt framework. Currently two libraries are shipped with Grantlee: Grantlee Templates and Grantlee TextDocument. The goal of Grantlee Templates is to make it easier for application developers to separate the structure of documents from the data they contain, opening the door for theming.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://downloads.grantlee.org/grantlee-5.1.0.tar.gz
Download MD5 sum: 57989ae9f7c113e682ef1713a6f1e92a
Download size: 1.1 MB
Estimated disk space required: 23 MB
Estimated build time: 1.2 SBU
CMake-3.9.1 and Qt-5.9.1
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/grantlee
Install Grantlee by running the following commands:
mkdir build && cd build && cmake -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_BUILD_TYPE=Release \ .. && make
This package does not come with a test suite.
Now, as the root
user:
make install
Last updated on 2017-08-26 21:18:25 -0700
The GNU Scientific Library (GSL) is a numerical library for C and C++ programmers. It provides a wide range of mathematical routines such as random number generators, special functions and least-squares fitting.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://ftp.gnu.org/gnu/gsl/gsl-2.4.tar.gz
Download (FTP): ftp://ftp.gnu.org/gnu/gsl/gsl-2.4.tar.gz
Download MD5 sum: dba736f15404807834dc1c7b93e83b92
Download size: 5.6 MB
Estimated disk space required: 181 MB (with tests, without docs)
Estimated build time: 1.3 SBU (with tests using parallelism=4, without docs)
Sphinx with sphinx_rtd_theme
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gsl
Install Gsl by running the following commands:
./configure --prefix=/usr --disable-static && make
If you have the optional Sphinx package installed, buid the documentaiton with:
make html
To test the results, issue: make check.
Now, as the root
user:
make install
If you built the documentation, install it (as root) with:
mkdir /usr/share/doc/gsl-2.4 && cp -R doc/_build/html/* /usr/share/doc/gsl-2.4
--disable-static
:
This switch prevents installation of static versions of the
libraries.
is a shell script to get the version number and compiler flags of the installed Gsl library. |
|
is a demonstration program for the GNU Scientific Library that computes a histogram from data taken from stdin. |
|
is a demonstration program for the GNU Scientific Library that generates random samples from various distributions. |
|
contains functions that implement a C interface to Basic Linear Algebra Subprograms. |
|
contains functions that provide a collection of numerical routines for scientific computing. |
Last updated on 2017-08-21 16:43:13 -0700
The International Components for Unicode (ICU) package is a mature, widely used set of C/C++ libraries providing Unicode and Globalization support for software applications. ICU is widely portable and gives applications the same results on all platforms.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://download.icu-project.org/files/icu4c/59.1/icu4c-59_1-src.tgz
Download MD5 sum: 54923fa9fab5b2b83f235fb72523de37
Download size: 22 MB
Estimated disk space required: 285 MB (add 32 MB for tests)
Estimated build time: 1.3 SBU (add 1.3 SBU for tests)
LLVM-4.0.1 (with Clang), and Doxygen-1.8.13 (for documentation)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/icu
Install ICU by running the following commands:
cd source && sed -i 's/xlocale/locale/' i18n/digitlst.cpp && ./configure --prefix=/usr && make
To test the results, issue: make check.
Now, as the root
user:
make install
CC=gcc CXX=g++
: If you prefer to
use gcc and/or
g++ instead of
clang and/or
clang++, if
they are installed, use one or both variables in the
configure line.
disassembles a resource bundle. |
|
compiles ICU break iteration rules source files into binary data files. |
|
generates C or platform specific assembly code from an ICU data file. |
|
reads in Unicode confusable character definitions and writes out the binary data. |
|
generates an ICU memory-mappable data file. |
|
compiles the converter's aliases file. |
|
compiles word lists into ICU string trie dictionaries. |
|
builds binary data files with Unicode normalization data. |
|
compiles a resource bundle. |
|
compiles StringPrep data from filtered RFC 3454 files. |
|
outputs ICU build options. |
|
outputs configuration information about the current ICU. |
|
extracts or modifies an ICU .dat archive. |
|
compiles a converter table. |
|
packages data for use by ICU. |
|
converts data from one encoding to another. |
|
is the data library. |
|
is the internationalization (i18n) library. |
|
is the ICU I/O (unicode stdio) library. |
|
is the layout engine. |
|
is the layout extensions engine. |
|
is the test library. |
|
is the tool utility library. |
|
is the common library. |
Last updated on 2017-08-19 15:43:35 -0700
JS is Mozilla's JavaScript engine written in C.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://people.mozilla.org/~sstangl/mozjs-38.2.1.rc0.tar.bz2
Download MD5 sum: cb602e21f5fc798b88163a3aa4e03e0a
Download size: 24 MB
Estimated disk space required: 896 MB
Estimated build time: 3.3 SBU
Autoconf-2.13, ICU-59.1, libffi-3.2.1, NSPR-4.16, Python-2.7.13, and Zip-3.0
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/js38
The tarball extracts to mozjs-38.0.0, rather than what is listed in the download section.
First, apply a patch to fix the build and to prevent segmentation faults.
patch -Np1 -i ../js38-38.2.1-upstream_fixes-2.patch
Install JS by running the following commands:
cd js/src && autoconf2.13 && ./configure --prefix=/usr \ --with-intl-api \ --with-system-zlib \ --with-system-ffi \ --with-system-nspr \ --with-system-icu \ --enable-threadsafe \ --enable-readline && make
This package does not come with a working test suite.
Now, as the root
user:
make install && pushd /usr/include/mozjs-38 && for link in `find . -type l`; do header=`readlink $link` rm -f $link cp -pv $header $link chmod 644 $link done && popd
autoconf213: This command regenerates the configure script with the changes from the patch.
--with-*
: These
parameters allow the build system to use system versions of
the above libriares. These are required for stability.
--enable-readline
:
This switch enables Readline support in the JS shell.
--enable-threadsafe
:
This switch enables support for multiple threads at one time.
This increases performance as well as stability.
for link in...: This command replaces links to the build directory, with files copied from the build directory.
Last updated on 2017-08-20 20:24:54 -0700
The JSON-C implements a reference counting object model that allows you to easily construct JSON objects in C, output them as JSON formatted strings and parse JSON formatted strings back into the C representation of JSON objects.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://s3.amazonaws.com/json-c_releases/releases/json-c-0.12.1.tar.gz
Download MD5 sum: 55f7853f7d8cf664554ce3fa71bf1c7d
Download size: 524 KB
Estimated disk space required: 4.2 MB (add 3.0 MB for tests)
Estimated build time: less than 0.1 SBU (add 0.9 SBU for tests)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/json-c
This package does not support parallel build.
Install JSON-C by running the following commands:
sed -i s/-Werror// Makefile.in tests/Makefile.in && ./configure --prefix=/usr --disable-static && make -j1
To test the results, issue: make check.
Now, as the root
user:
make install
sed ...
: This
instruction removes a flag that prevents one file from
compiling.
--disable-static
:
This switch prevents installation of static versions of the
libraries.
Last updated on 2017-08-23 12:11:26 -0700
The JSON GLib package is a library providing serialization and deserialization support for the JavaScript Object Notation (JSON) format described by RFC 4627.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://ftp.gnome.org/pub/gnome/sources/json-glib/1.2/json-glib-1.2.8.tar.xz
Download (FTP): ftp://ftp.gnome.org/pub/gnome/sources/json-glib/1.2/json-glib-1.2.8.tar.xz
Download MD5 sum: ff31e7d0594df44318e12facda3d086e
Download size: 592 KB
Estimated disk space required: 13 MB (with tests)
Estimated build time: 0.1 SBU (with tests)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/json-glib
Install JSON GLib by running the following commands:
./configure --prefix=/usr && make
To test the results, issue: make check.
Now, as the root
user:
make install
--enable-gtk-doc
: Use this
parameter if GTK-Doc is
installed and you wish to rebuild and install the API
documentation.
Last updated on 2017-08-23 21:43:46 -0700
Keyutils is a set of utilities for managing the key retention facility in the kernel, which can be used by filesystems, block devices and more to gain and retain the authorization and encryption keys required to perform secure operations.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://people.redhat.com/~dhowells/keyutils/keyutils-1.5.10.tar.bz2
Download MD5 sum: 3771676319bc7b84b1549b5c63ff5243
Download size: 76 KB
Estimated disk space required: 1.4 MB
Estimated build time: less than 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/keyutils
Install keyutils by running the following commands:
make
This package does not come with a test suite.
Now, as the root
user:
make NO_ARLIB=1 install
NO_ARLIB=1
: This make
flag disables installing the static library.
is to control the key management facility in various ways using a variety of subcommands. |
|
is invoked by request-key on behalf of the kernel when kernel services (such as NFS, CIFS and AFS) need to perform a hostname lookup and the kernel does not have the key cached. It is not ordinarily intended to be called directly. |
|
is invoked by the kernel when the kernel is asked for a key that it doesn't have immediately available. The kernel creates a temporary key and then calls out to this program to instantiate it. It is not intended to be called directly. |
|
contains the keyutils library API instantiation. |
Last updated on 2017-08-28 20:59:34 -0700
The libarchive library provides a single interface for reading/writing various compression formats.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://www.libarchive.org/downloads/libarchive-3.3.2.tar.gz
Download MD5 sum: 4583bd6b2ebf7e0e8963d90879eb1b27
Download size: 6.0 MB
Estimated disk space required: 37 MB (add 26 MB for tests)
Estimated build time: 0.3 SBU (add 1.5 SBU for tests)
libxml2-2.9.4, LZO-2.10, and Nettle-3.3 or OpenSSL-1.1.0f
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libarchive
Install libarchive by running the following commands:
./configure --prefix=/usr --disable-static && make
To test the results, issue: make check.
Now, as the root
user:
make install
--disable-static
:
This switch prevents installation of static versions of the
libraries.
--without-xml2
: This switch sets
expat for xar archive format support instead of preferred
libxml2 if both packages are installed.
--without-nettle
: This switch
sets OpenSSL for crypto support instead of preferred Nettle
if both packages are installed.
Last updated on 2017-08-18 12:42:43 -0700
The libassuan package contains an inter process communication library used by some of the other GnuPG related packages. libassuan's primary use is to allow a client to interact with a non-persistent server. libassuan is not, however, limited to use with GnuPG servers and clients. It was designed to be flexible enough to meet the demands of many transaction based environments with non-persistent servers.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://www.gnupg.org/ftp/gcrypt/libassuan/libassuan-2.4.3.tar.bz2
Download (FTP): ftp://ftp.gnupg.org/gcrypt/libassuan/libassuan-2.4.3.tar.bz2
Download MD5 sum: 8e01a7c72d3e5d154481230668e6eb5a
Download size: 547 KB
Estimated disk space required: 6.7 MB (with tests)
Estimated build time: 0.1 SBU (with tests)
texlive-20170524 (or install-tl-unx)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libassuan
Install libassuan by running the following commands:
./configure --prefix=/usr && make
If you wish to build documentation, you must have texlive-20170524 installed and issue the following commands:
make -C doc pdf ps
To test the results, issue: make check.
Now, as the root
user:
make install
If you built the documentation, install it by running the
following commands as the root
user:
install -v -dm755 /usr/share/doc/libassuan-2.4.3 && install -v -m644 doc/assuan.{pdf,ps,dvi} \ /usr/share/doc/libassuan-2.4.3
Last updated on 2017-08-20 20:24:54 -0700
The libatasmart package is a disk reporting library. It only supports a subset of the ATA S.M.A.R.T. functionality.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://0pointer.de/public/libatasmart-0.19.tar.xz
Download MD5 sum: 53afe2b155c36f658e121fe6def33e77
Download size: 248 KB
Estimated disk space required: 3 MB
Estimated build time: less than 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libatasmart
Install libatasmart by running the following commands:
./configure --prefix=/usr --disable-static && make
This package does not come with a test suite.
Now, as the root
user:
make docdir=/usr/share/doc/libatasmart-0.19 install
--disable-static
:
This switch prevents installation of static versions of the
libraries.
Last updated on 2017-08-24 18:56:23 -0700
libatomic_ops provides implementations for atomic memory update operations on a number of architectures. This allows direct use of these in reasonably portable code. Unlike earlier similar packages, this one explicitly considers memory barrier semantics, and allows the construction of code that involves minimum overhead across a variety of architectures.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://github.com/ivmai/libatomic_ops/releases/download/v7.4.6/libatomic_ops-7.4.6.tar.gz
Download MD5 sum: 675dbd6681c6de7c9f4a834bcae9b748
Download size: 472 KB
Estimated disk space required: 4.9 MB (with tests)
Estimated build time: 0.1 SBU (with tests)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libatomic_ops
Install libatomic_ops by running the following commands:
./configure --prefix=/usr \ --enable-shared \ --disable-static \ --docdir=/usr/share/doc/libatomic_ops-7.4.6 && make
To check the results, issue make check.
Now, as the root
user:
make install
--enable-shared
: This
switch enables building of the libatomic_ops
shared libraries.
--disable-static
:
This switch prevents installation of static versions of the
libraries.
Last updated on 2017-08-20 20:24:54 -0700
libblockdev is a C library supporting GObject introspection for manipulation of block devices. It has a plugin-based architecture where each technology (like LVM, Btrfs, MD RAID, Swap,...) is implemented in a separate plugin, possibly with multiple implementations (e.g. using LVM CLI or the new LVM DBus API).
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://github.com/storaged-project/libblockdev/archive/libblockdev-2.11-1.tar.gz
Download MD5 sum: c1b240878ce2e36dbeb68b94bfd0403d
Download size: 244 KB
Estimated disk space required: 13 MB
Estimated build time: 0.2 SBU
gobject-introspection-1.52.1, libbytesize-0.11, LVM2-2.02.171 (with device-mapper), and volume_key-0.3.9
Python-3.6.2, NSS-3.32, and cryptsetup-1.7.5
btrfs-progs-4.12, GTK-Doc-1.26, mdadm-4.0, parted-3.2, Python-2.7.13, dmraid, and bcachefs
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libblockdev
Install libblockdev by running the following commands:
sh autogen.sh && ./configure --prefix=/usr \ --without-dm \ --sysconfdir=/etc && make
This package does not come with a test suite.
Now, as the root
user:
make install
Last updated on 2017-08-24 18:56:23 -0700
The libbytesize package is a library facilitates the common operations with sizes in bytes.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://github.com/storaged-project/libbytesize/archive/libbytesize-0.11.tar.gz
Download MD5 sum: c469110ae134ea3a58546ba13fdb5074
Download size: 68 KB
Estimated disk space required: 2.7 MB
Estimated build time: less than 0.1 SBU
GTK-Doc-1.26, Python-2.7.13, Python-3.6.2, and six (python module for tests)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libbytesize
Install libbytesize by running the following commands:
sh autogen.sh && ./configure --prefix=/usr && make
If you have the optional python module 'six' installed, the regression tests can be run with: make check.
Now, as the root
user:
make install
Last updated on 2017-08-24 18:56:23 -0700
The libcroco package contains a standalone CSS2 parsing and manipulation library.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://ftp.gnome.org/pub/gnome/sources/libcroco/0.6/libcroco-0.6.12.tar.xz
Download (FTP): ftp://ftp.gnome.org/pub/gnome/sources/libcroco/0.6/libcroco-0.6.12.tar.xz
Download MD5 sum: bc0984fce078ba2ce29f9500c6b9ddce
Download size: 472 KB
Estimated disk space required: 12 MB (with tests)
Estimated build time: 0.1 SBU (with tests)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libcroco
Install libcroco by running the following commands:
./configure --prefix=/usr --disable-static && make
To execute the test suite, run make -k test. Some tests fail: searching files in wrong location, locale problems (character codes compared to characters), float point numbers not properly rounded to the same number of places are some of the reasons.
Now, as the root
user:
make install
--disable-static
:
This switch prevents installation of static versions of the
libraries.
--enable-gtk-doc
: Use this
parameter if GTK-Doc is
installed and you wish to rebuild and install the API
documentation.
Last updated on 2017-08-21 16:43:13 -0700
The libdaemon package is a lightweight C library that eases the writing of UNIX daemons.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://0pointer.de/lennart/projects/libdaemon/libdaemon-0.14.tar.gz
Download MD5 sum: 509dc27107c21bcd9fbf2f95f5669563
Download size: 332 KB
Estimated disk space required: 3 MB
Estimated build time: 0.1 SBU
Doxygen-1.8.13 and Lynx-2.8.8rel.2
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libdaemon
Install libdaemon by running the following commands:
./configure --prefix=/usr --disable-static && make
If you have Doxygen installed and wish to build the API documentation, issue the following command:
make -C doc doxygen
This package does not come with a test suite.
Now, as the root
user:
make docdir=/usr/share/doc/libdaemon-0.14 install
If you built the API documentation, install it using the
following commands as the root
user:
install -v -m755 -d /usr/share/doc/libdaemon-0.14/api && install -v -m644 doc/reference/html/* /usr/share/doc/libdaemon-0.14/api && install -v -m644 doc/reference/man/man3/* /usr/share/man/man3
--disable-static
:
This switch prevents installation of static versions of the
libraries.
Last updated on 2017-08-24 18:56:23 -0700
The libESMTP package contains the libESMTP libraries which are used by some programs to manage email submission to a mail transport layer.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://www.stafford.uklinux.net/libesmtp/libesmtp-1.0.6.tar.bz2
Download (FTP): http://pkgs.fedoraproject.org/repo/pkgs/libesmtp/libesmtp-1.0.6.tar.bz2/bf3915e627fd8f35524a8fdfeed979c8/libesmtp-1.0.6.tar.bz2
Download MD5 sum: bf3915e627fd8f35524a8fdfeed979c8
Download size: 364 KB
Estimated disk space required: 7.1 MB
Estimated build time: 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libesmtp
Fix a build issue with OpenSSL-1.1.0:
sed 's@SSL_library_init@SSL_new@g' -i configure.ac && autoreconf -fi
Install libESMTP by running the following commands:
./configure --prefix=/usr && make
This package does not come with a test suite.
Now, as the root
user:
make install
Last updated on 2017-08-29 10:55:51 -0700
The libffi library provides a portable, high level programming interface to various calling conventions. This allows a programmer to call any function specified by a call interface description at run time.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://sourceware.org/ftp/libffi/libffi-3.2.1.tar.gz
Download (FTP): ftp://sourceware.org/pub/libffi/libffi-3.2.1.tar.gz
Download MD5 sum: 83b89587607e3eb65c70d361f13bab43
Download size: 920 KB
Estimated disk space required: 6.1 MB (additional 1.7 MB for the tests)
Estimated build time: less than 0.1 SBU (additional 0.4 SBU for the tests)
DejaGnu-1.6 (required to run the testsuite)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libffi
Install libffi by running the following commands:
sed -e '/^includesdir/ s/$(libdir).*$/$(includedir)/' \ -i include/Makefile.in && sed -e '/^includedir/ s/=.*$/=@includedir@/' \ -e 's/^Cflags: -I${includedir}/Cflags:/' \ -i libffi.pc.in && ./configure --prefix=/usr --disable-static && make
To test the results, issue: make check.
Now, as the root
user:
make install
sed ...
include/Makefile.in and sed ... libffi.pc.in: Makes
the package install headers into the standardized
/usr/include
instead of
/usr/lib/libffi-3.2.1/include.
.
--disable-static
:
This switch prevents installation of static versions of the
libraries.
Last updated on 2017-08-16 21:41:37 -0700
The libgcrypt package contains a general purpose crypto library based on the code used in GnuPG. The library provides a high level interface to cryptographic building blocks using an extendable and flexible API.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://www.gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-1.8.0.tar.bz2
Download (FTP): ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-1.8.0.tar.bz2
Download MD5 sum: 530db74602b558209f9ad7356a680971
Download size: 2.8 MB
Estimated disk space required: 40 MB (with tests and building docs)
Estimated build time: 0.9 SBU (with tests and building docs)
Pth-2.0.7 and texlive-20170524 (or install-tl-unx)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libgcrypt
Install libgcrypt by running the following commands:
./configure --prefix=/usr && make
Only info documentation is shipped in the package tarball. If you wish to build alternate formats of the documentation, (you must have texlive-20170524 installed to build the PDF and PostScript documentation), then issue the following commands:
make -C doc pdf ps html && makeinfo --html --no-split -o doc/gcrypt_nochunks.html doc/gcrypt.texi && makeinfo --plaintext -o doc/gcrypt.txt doc/gcrypt.texi
To test the results, issue: make check.
Now, as the root
user:
make install && install -v -dm755 /usr/share/doc/libgcrypt-1.8.0 && install -v -m644 README doc/{README.apichanges,fips*,libgcrypt*} \ /usr/share/doc/libgcrypt-1.8.0
If you built the additional documentation, install it by
issuing the following commands as the root
user:
install -v -dm755 /usr/share/doc/libgcrypt-1.8.0/html && install -v -m644 doc/gcrypt.html/* \ /usr/share/doc/libgcrypt-1.8.0/html && install -v -m644 doc/gcrypt_nochunks.html \ /usr/share/doc/libgcrypt-1.8.0 && install -v -m644 doc/gcrypt.{pdf,ps,dvi,txt,texi} \ /usr/share/doc/libgcrypt-1.8.0
--with-capabilities
: This option
enables libcap2 support. Note that this breaks Cryptsetup.
is a debug tool for S-expressions. |
|
is a standalone HMAC-SHA-256 implementation used to compute an HMAC-SHA-256 authentication code. |
|
determines the compile and linker flags that should
be used to compile and link programs that use
|
|
is a RPN (Reverse Polish Notation) calculator. |
|
contains the cryptographic API functions. |
Last updated on 2017-08-19 20:26:54 -0700
The libgpg-error package contains a library that defines common error values for all GnuPG components.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://www.gnupg.org/ftp/gcrypt/libgpg-error/libgpg-error-1.27.tar.bz2
Download (FTP): ftp://ftp.gnupg.org/gcrypt/libgpg-error/libgpg-error-1.27.tar.bz2
Download MD5 sum: 5217ef3e76a7275a2a3b569a12ddc989
Download size: 796 KB
Estimated disk space required: 7.8 MB (with tests)
Estimated build time: less than 0.1 SBU (with tests)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libgpg-error
Install libgpg-error by running the following commands:
./configure --prefix=/usr && make
To test the results, issue: make check.
Now, as the root
user:
make install && install -v -m644 -D README /usr/share/doc/libgpg-error-1.27/README
is used to determine libgpg-error error codes. |
|
is a utility used to configure and build applications based on the libgpg-error library. It can be used to query the C compiler and linker flags which are required to correctly compile and link the application against the libgpg-error library. |
|
contains the libgpg-error API functions. |
Last updated on 2017-08-19 20:26:54 -0700
The libgsf package contains a library used for providing an extensible input/output abstraction layer for structured file formats.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://ftp.gnome.org/pub/gnome/sources/libgsf/1.14/libgsf-1.14.41.tar.xz
Download (FTP): ftp://ftp.gnome.org/pub/gnome/sources/libgsf/1.14/libgsf-1.14.41.tar.xz
Download MD5 sum: 5b039d1b7196e643315abda1c1c349c4
Download size: 604 KB
Estimated disk space required: 17 MB (with tests)
Estimated build time: 0.3 SBU (with tests)
gdk-pixbuf-2.36.8 (To build gsf-office-thumbnailer)
gobject-introspection-1.52.1 and GTK-Doc-1.26
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libgsf
Install libgsf by running the following commands:
./configure --prefix=/usr --disable-static && make
To test the results, issue: make check. Two tests fail for unknown reasons.
Now, as the root
user:
make install
--disable-static
:
This switch prevents installation of static versions of the
libraries.
--enable-gtk-doc
: Use this
parameter if GTK-Doc is
installed and you wish to rebuild and install the API
documentation.
is a simple archive utility, somewhat similar to tar(1). |
|
is used internally by GNOME applications such as Nautilus to generate thumbnails of several types of office application files. |
|
is used to extract Visual Basic for Applications macros from files. |
|
contains the libgsf API functions. |
Last updated on 2017-08-29 10:55:51 -0700
The libgudev package contains GObject bindings for libudev.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://ftp.gnome.org/pub/gnome/sources/libgudev/231/libgudev-231.tar.xz
Download (FTP): ftp://ftp.gnome.org/pub/gnome/sources/libgudev/231/libgudev-231.tar.xz
Download MD5 sum: 916c10c51ec61131e244c3936bbb2e0c
Download size: 268 KB
Estimated disk space required: 3.3 MB
Estimated build time: less than 0.1 SBU
gobject-introspection-1.52.1 (for gir-data, needed for GNOME), GTK-Doc-1.26, and umockdev
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libgudev
Install libgudev by running the following commands:
./configure --prefix=/usr --disable-umockdev && make
This package does not come with a testsuite.
Now, as the root
user:
make install
--enable-gtk-doc
: Use this
parameter if GTK-Doc is
installed and you wish to rebuild and install the API
documentation.
Last updated on 2017-08-20 15:06:11 -0700
The libgusb package contains the GObject wrappers for libusb-1.0 that makes it easy to do asynchronous control, bulk and interrupt transfers with proper cancellation and integration into a mainloop.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://people.freedesktop.org/~hughsient/releases/libgusb-0.2.11.tar.xz
Download MD5 sum: fa2b41b828c749f9190edf888948a77b
Download size: 288 KB
Estimated disk space required: 4.5 MB (with tests)
Estimated build time: less than 0.1 SBU (with tests)
gobject-introspection-1.52.1,
usbutils-008 (for usb.ids
data file, which is also required
for the tests), and Vala-0.36.4
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libgusb
Install libgusb by running the following commands:
./configure --prefix=/usr --disable-static && make
To test the results, issue: make check.
Now, as the root
user:
make install
--disable-static
:
This switch prevents installation of static versions of the
libraries.
--enable-gtk-doc
: Use this
parameter if GTK-Doc is
installed and you wish to rebuild and install the API
documentation.
Last updated on 2017-08-20 15:06:11 -0700
The libical package contains an implementation of the iCalendar protocols and data formats.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://github.com/libical/libical/releases/download/v2.0.0/libical-2.0.0.tar.gz
Download MD5 sum: 6bf8e5f5a3ba88baf390d0134e05d76e
Download size: 684 KB
Estimated disk space required: 14 MB, with tests (additional 12 MB for the API documentation)
Estimated build time: 0.3 SBU (with tests and API documentation)
Berkeley DB-6.2.32, Doxygen-1.8.13 (for the API documentation), gobject-introspection-1.52.1, and ICU-59.1
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libical
Install libical by running the following commands:
mkdir build && cd build && cmake -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_BUILD_TYPE=Release \ -DSHARED_ONLY=yes \ .. && make
If you have Doxygen-1.8.13 installed and wish to build the API documentation, issue:
make docs
To test the results, issue: make test.
Now, as the root
user:
make install
If you have built the API documentation, install by issuing,
as root
user:
install -vdm755 /usr/share/doc/libical-2.0.0/html && cp -vr apidocs/html/* /usr/share/doc/libical-2.0.0/html
-DCMAKE_BUILD_TYPE=Release
:
This switch is used to apply higher level of the compiler
optimizations.
-DSHARED_ONLY=yes
:
This switch is used in order to only build the shared
libraries.
-DUSE_BUILTIN_TZDATA=yes
: This
switch is used in order to build using your own timezone
data.
Last updated on 2017-08-22 13:27:15 -0700
libidn is a package designed for internationalized string handling based on the Stringprep, Punycode and IDNA specifications defined by the Internet Engineering Task Force (IETF) Internationalized Domain Names (IDN) working group, used for internationalized domain names. This is useful for converting data from the system's native representation into UTF-8, transforming Unicode strings into ASCII strings, allowing applications to use certain ASCII name labels (beginning with a special prefix) to represent non-ASCII name labels, and converting entire domain names to and from the ASCII Compatible Encoding (ACE) form.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://ftp.gnu.org/gnu/libidn/libidn-1.33.tar.gz
Download (FTP): ftp://ftp.gnu.org/gnu/libidn/libidn-1.33.tar.gz
Download MD5 sum: a9aa7e003665de9c82bd3f9fc6ccf308
Download size: 3.3 MB
Estimated disk space required: 25 MB (with tests)
Estimated build time: 0.4 SBU (with tests)
Pth-2.0.7, Emacs-25.2, GTK-Doc-1.26, OpenJDK-1.8.0.141, Valgrind-3.13.0, and DotGNU Portable.NET or Mono
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libidn
Install libidn by running the following commands:
./configure --prefix=/usr --disable-static && make
To test the results, issue: make check.
Now, as the root
user:
make install && find doc -name "Makefile*" -delete && rm -rf -v doc/{gdoc,idn.1,stamp-vti,man,texi} && mkdir -v /usr/share/doc/libidn-1.33 && cp -r -v doc/* /usr/share/doc/libidn-1.33
--disable-static
:
This switch prevents installation of static versions of the
libraries.
--enable-gtk-doc
: Use this
parameter if GTK-Doc is
installed and you wish to rebuild and install the API
documentation.
is a command line interface to the internationalized domain name library. |
|
contains a generic Stringprep implementation that does Unicode 3.2 NFKC normalization, mapping and prohibition of characters, and bidirectional character handling. Profiles for Nameprep, iSCSI, SASL and XMPP are included as well as support for Punycode and ASCII Compatible Encoding (ACE) via IDNA. A mechanism to define Top-Level Domain (TLD) specific validation tables, and to compare strings against those tables, as well as default tables for some TLDs are included. |
Last updated on 2017-08-23 10:58:13 -0700
libiodbc is an API to ODBC compatible databases.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://downloads.sourceforge.net/iodbc/libiodbc-3.52.12.tar.gz
Download MD5 sum: c76cab12a642a024bd1a262615a1a4a8
Download size: 1.1 MB
Estimated disk space required: 26 MB
Estimated build time: 0.3 SBU
GTK+-2.24.31 (to create the GUI admin tool)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libiodbc
Install libiodbc by running the following commands:
./configure --prefix=/usr \ --with-iodbc-inidir=/etc/iodbc \ --includedir=/usr/include/iodbc \ --disable-libodbc \ --disable-static && make
This package does not come with a test suite.
Now, as the root
user:
make install
--with-iodbc-inidir=/etc/iodbc
:
libiodbc will install
configuration files in this directory.
--includedir=/usr/include/iodbc
:
This installs the interface headers to a private directory to
avoid a conflict with headers installed by unixODBC.
--disable-libodbc
:
This prevents the installation of the libodbc.so
symbolic link to avoid a
conflict with unixODBC.
--disable-static
:
This switch prevents installation of static versions of the
libraries.
Last updated on 2017-08-28 20:59:34 -0700
The Libksba package contains a library used to make X.509 certificates as well as making the CMS (Cryptographic Message Syntax) easily accessible by other applications. Both specifications are building blocks of S/MIME and TLS. The library does not rely on another cryptographic library but provides hooks for easy integration with Libgcrypt.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://www.gnupg.org/ftp/gcrypt/libksba/libksba-1.3.5.tar.bz2
Download (FTP): ftp://ftp.gnupg.org/gcrypt/libksba/libksba-1.3.5.tar.bz2
Download MD5 sum: 8302a3e263a7c630aa7dea7d341f07a2
Download size: 608 KB
Estimated disk space required: 9.2 MB (with tests)
Estimated build time: 0.1 SBU (with tests)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libksba
Install Libksba by running the following commands:
./configure --prefix=/usr && make
To test the results, issue: make check.
Now, as the root
user:
make install
is a utility used to configure and build applications based on the libksba(3) library. It can be used to query the C compiler and linker flags which are required to correctly compile and link the application against the libksba(3) library. |
|
contains the cryptographic API functions. |
Last updated on 2017-08-20 20:24:54 -0700
This package provides a library for learning linear classifiers for large scale applications. It supports Support Vector Machines (SVM) with L2 and L1 loss, logistic regression, multi class classification and also Linear Programming Machines (L1-regularized SVMs). Its computational complexity scales linearly with the number of training examples making it one of the fastest SVM solvers around.
This package is known to build and work properly using an LFS-8.1 platform.
After updating this package from liblinear-1.96 or earlier, you need to reinstall Nmap-7.60, in order to link to the new library.
Download (HTTP): https://github.com/cjlin1/liblinear/archive/v211/liblinear-211.tar.gz
Download MD5 sum: 9aa46bea862a82d7bdb86017e94feffc
Download size: 496 KB
Estimated disk space required: 1.4 MB
Estimated build time: less than 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/liblinear
Install liblinear by running the following commands:
make lib
This package does not come with a test suite.
Now, as the root
user:
install -vm644 linear.h /usr/include && install -vm755 liblinear.so.3 /usr/lib && ln -sfv liblinear.so.3 /usr/lib/liblinear.so
Last updated on 2017-08-29 10:55:51 -0700
The libmbim package contains a GLib-based library for talking to WWAN modems and devices which speak the Mobile Interface Broadband Model (MBIM) protocol.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://www.freedesktop.org/software/libmbim/libmbim-1.14.2.tar.xz
Download MD5 sum: 40b1543119b65f9a75f264a3a5abf33b
Download size: 396 KB
Estimated disk space required: 14 MB (with tests)
Estimated build time: 0.1 SBU (with tests)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libmbim
Install libmbim by running the following commands:
./configure --prefix=/usr --disable-static && make
To test the results, issue: make check.
Now, as the root
user:
make install
--disable-static
:
This switch prevents installation of static versions of the
libraries.
--enable-gtk-doc
: Use this
parameter if GTK-Doc is
installed and you wish to rebuild and install the API
documentation.
Last updated on 2017-08-24 18:56:23 -0700
The libnfsidmap package contains a library to help mapping id's, mainly for NFSv4.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://fedorapeople.org/~steved/libnfsidmap/0.26/libnfsidmap-0.26.tar.bz2
Download MD5 sum: 2c0cf0e2b1665d51fa9a783679494888
Download size: 260 KB
Estimated disk space required: 3.3 MB
Estimated build time: less than 0.1 SBU
OpenLDAP-2.4.45 (client only)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libnfsidmap
Install libnfsidmap by running the following commands:
./configure --prefix=/usr \ --sysconfdir=/etc \ --disable-static && make
This package does not come with a testsuite.
Now, as the root
user:
make install && mv -v /usr/lib/libnfsidmap.so.* /lib && ln -sfv ../../lib/$(readlink /usr/lib/libnfsidmap.so) /usr/lib/libnfsidmap.so
--disable-static
:
This switch prevents installation of static versions of the
libraries.
mv -v /usr/lib/libnfsidmap.so.* ...: Move shared libraries into /lib so they are available before /usr is mounted.
Last updated on 2017-08-20 20:24:54 -0700
This package is intended to provide a simple way for applications to take actions based on a system or user-specified paper size.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://ftp.debian.org/debian/pool/main/libp/libpaper/libpaper_1.1.24+nmu5.tar.gz
Download (FTP): ftp://ftp.debian.org/debian/pool/main/libp/libpaper/libpaper_1.1.24+nmu5.tar.gz
Download MD5 sum: 38bc55688c0fc5544edaa5a951a45fbd
Download size: 48 KB
Estimated disk space required: 3.5 MB
Estimated build time: less than 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libpaper
Install libpaper by running the following commands:
autoreconf -fi && ./configure --prefix=/usr \ --sysconfdir=/etc \ --disable-static && make
This package does not come with a test suite.
Now, as the root
user:
make install && mkdir -vp /etc/libpaper.d && cat > /usr/bin/run-parts << "EOF" #!/bin/sh # run-parts: Runs all the scripts found in a directory. # from Slackware, by Patrick J. Volkerding with ideas borrowed # from the Red Hat and Debian versions of this utility. # keep going when something fails set +e if [ $# -lt 1 ]; then echo "Usage: run-parts <directory>" exit 1 fi if [ ! -d $1 ]; then echo "Not a directory: $1" echo "Usage: run-parts <directory>" exit 1 fi # There are several types of files that we would like to # ignore automatically, as they are likely to be backups # of other scripts: IGNORE_SUFFIXES="~ ^ , .bak .new .rpmsave .rpmorig .rpmnew .swp" # Main loop: for SCRIPT in $1/* ; do # If this is not a regular file, skip it: if [ ! -f $SCRIPT ]; then continue fi # Determine if this file should be skipped by suffix: SKIP=false for SUFFIX in $IGNORE_SUFFIXES ; do if [ ! "$(basename $SCRIPT $SUFFIX)" = "$(basename $SCRIPT)" ]; then SKIP=true break fi done if [ "$SKIP" = "true" ]; then continue fi # If we've made it this far, then run the script if it's executable: if [ -x $SCRIPT ]; then $SCRIPT || echo "$SCRIPT failed." fi done exit 0 EOF chmod -v 755 /usr/bin/run-parts
--disable-static
:
This switch prevents installation of static versions of the
libraries.
mkdir -pv /etc/libpaper.d: libpaper expects that packages will install files into this directory.
cat > /usr/bin/run-parts
<< "EOF" : paperconfig
is a script which will invoke
run-parts if
/etc/libpaper.d
exists. No
other BLFS package installs this, so we create it here.
Last updated on 2017-08-20 20:24:54 -0700
The libqmi package contains a GLib-based library for talking to WWAN modems and devices which speak the Qualcomm MSM Interface (QMI) protocol.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://www.freedesktop.org/software/libqmi/libqmi-1.18.0.tar.xz
Download MD5 sum: 25bae4e383ad77f491ad49b49e04fdcf
Download size: 856 KB
Estimated disk space required: 88 MB (with tests)
Estimated build time: 0.5 SBU (with tests)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libqmi
Install libqmi by running the following commands:
./configure --prefix=/usr --disable-static && make
To test the results, issue: make check.
Now, as the root
user:
make install
--disable-static
:
This switch prevents installation of static versions of the
libraries.
--enable-gtk-doc
: Use this
parameter if GTK-Doc is
installed and you wish to rebuild and install the API
documentation.
--disable-mbim-qmux
: This switch
disables support for using a MBIM control device for QMI
messages. Use this switch if you did not install libmbim.
Last updated on 2017-08-24 18:56:23 -0700
The libsigc++ package implements a typesafe callback system for standard C++.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://ftp.gnome.org/pub/gnome/sources/libsigc++/2.10/libsigc++-2.10.0.tar.xz
Download (FTP): ftp://ftp.gnome.org/pub/gnome/sources/libsigc++/2.10/libsigc++-2.10.0.tar.xz
Download MD5 sum: 70bcbde2c900e4925d6ef4bf50954195
Download size: 3.6 MB
Estimated disk space required: 58 MB (with tests)
Estimated build time: 0.3 SBU (with tests)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libsigc++
First, fix the documentation directory name:
sed -e '/^libdocdir =/ s/$(book_name)/libsigc++-2.10.0/' -i docs/Makefile.in
Install libsigc++ by running the following commands:
./configure --prefix=/usr && make
To test the results, issue: make check.
Now, as the root
user:
make install
Last updated on 2017-08-23 19:39:45 -0700
This is a library for handling page faults in user mode. A page fault occurs when a program tries to access to a region of memory that is currently not available. Catching and handling a page fault is a useful technique for implementing pageable virtual memory, memory-mapped access to persistent databases, generational garbage collectors, stack overflow handlers, and distributed shared memory.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://ftp.gnu.org/gnu/libsigsegv/libsigsegv-2.11.tar.gz
Download (FTP): ftp://ftp.gnu.org/gnu/libsigsegv/libsigsegv-2.11.tar.gz
Download MD5 sum: a812d9481f6097f705599b218eea349f
Download size: 440 KB
Estimated disk space required: 3.4 MB (with checks)
Estimated build time: less than 0.1 SBU (with checks)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libsigsegv
Install libsigsegv by running the following commands:
./configure --prefix=/usr \ --enable-shared \ --disable-static && make
To test the results, issue: make check.
Now, as the root
user:
make install
--enable-shared
: This
switch ensures that shared libraries are compiled.
--disable-static
:
This switch prevents installation of static versions of the
libraries.
Last updated on 2017-08-26 10:08:22 -0700
This is a library that provides cross platform access to statistics about the system on which it's run. It's written in C and presents a selection of useful interfaces which can be used to access key system statistics. The current list of statistics includes CPU usage, memory utilisation, disk usage, process counts, network traffic, disk I/O, and more.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://www.mirrorservice.org/sites/ftp.i-scream.org/pub/i-scream/libstatgrab/libstatgrab-0.91.tar.gz
Download (FTP): ftp://www.mirrorservice.org/sites/ftp.i-scream.org/pub/i-scream/libstatgrab/libstatgrab-0.91.tar.gz
Download MD5 sum: b906d312076ca9be3d5188edfe07f496
Download size: 760 KB
Estimated disk space required: 9.0 MB (with the test suite)
Estimated build time: 0.1 SBU (1.6 SBU with the test suite)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libstatgrab
Install libstatgrab by running the following commands:
./configure --prefix=/usr \ --disable-static \ --docdir=/usr/share/doc/libstatgrab-0.91 && make
To test the results, issue: make check.
Now, as the root
user:
make install
--disable-static
:
This switch prevents installation of static versions of the
libraries.
Last updated on 2017-08-29 10:55:51 -0700
libtasn1 is a highly portable C library that encodes and decodes DER/BER data following an ASN.1 schema.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://ftp.gnu.org/gnu/libtasn1/libtasn1-4.12.tar.gz
Download (FTP): ftp://ftp.gnu.org/gnu/libtasn1/libtasn1-4.12.tar.gz
Download MD5 sum: 5c724bd1f73aaf4a311833e1cd297b21
Download size: 1.8 MB
Estimated disk space required: 11 MB (with tests)
Estimated build time: 0.3 SBU (with tests)
GTK-Doc-1.26 and Valgrind-3.13.0
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libtasn1
Install libtasn1 by running the following commands:
./configure --prefix=/usr --disable-static && make
To test the results, issue: make check.
Now, as the root
user:
make install
If you did not pass the --enable-gtk-doc
parameter to the
configure
script, you can install the API documentation using the
following command as the root
user:
make -C doc/reference install-data-local
--disable-static
:
This switch prevents installation of static versions of the
libraries.
--enable-gtk-doc
: This parameter
is normally used if GTK-Doc
is installed and you wish to rebuild and install the API
documentation. It is broken for this package due to the use
of a long deprecated gtk-doc program that is no longer
available.
Last updated on 2017-09-01 14:59:47 -0700
The libunique package contains a library for writing single instance applications.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://ftp.gnome.org/pub/gnome/sources/libunique/1.1/libunique-1.1.6.tar.bz2
Download (FTP): ftp://ftp.gnome.org/pub/gnome/sources/libunique/1.1/libunique-1.1.6.tar.bz2
Download MD5 sum: 7955769ef31f1bc4f83446dbb3625e6d
Download size: 328 KB
Estimated disk space required: 7.0 MB
Estimated build time: 0.2 SBU
gobject-introspection-1.52.1 and GTK-Doc-1.26
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libunique
Install libunique by running the following commands:
patch -Np1 -i ../libunique-1.1.6-upstream_fixes-1.patch && autoreconf -fi && ./configure --prefix=/usr \ --disable-dbus \ --disable-static && make
This package does not come with a test suite.
Now, as the root
user:
make install
--disable-dbus
: This
switch disables D-Bus
backend in favor of the GDBus backend.
--disable-static
:
This switch prevents installation of static versions of the
libraries.
--enable-gtk-doc
: Use this
parameter if GTK-Doc is
installed and you wish to rebuild and install the API
documentation.
Last updated on 2017-08-28 15:14:37 -0700
libunistring is a library that provides functions for manipulating Unicode strings and for manipulating C strings according to the Unicode standard.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://ftp.gnu.org/gnu/libunistring/libunistring-0.9.7.tar.xz
Download (FTP): ftp://ftp.gnu.org/gnu/libunistring/libunistring-0.9.7.tar.xz
Download MD5 sum: 82e0545363d111bfdfec2ddbfe62ffd3
Download size: 1.9 MB
Estimated disk space required: 43 MB (add 42 MB for tests)
Estimated build time: 0.7 SBU (add 1.4 SBU for tests)
texlive-20170524 (or install-tl-unx) (to rebuild the documentation)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libunistring
Install libunistring by running the following commands:
./configure --prefix=/usr \ --disable-static \ --docdir=/usr/share/doc/libunistring-0.9.7 && make
To test the results, issue: make check.
Now, as the root
user:
make install
--disable-static
:
This switch prevents installation of static versions of the
libraries.
Last updated on 2017-08-20 20:24:54 -0700
The libusb package contains a library used by some applications for USB device access.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://github.com//libusb/libusb/releases/download/v1.0.21/libusb-1.0.21.tar.bz2
Download MD5 sum: 1da9ea3c27b3858fa85c5f4466003e44
Download size: 596 KB
Estimated disk space required: 5.7 MB (add 1.5 MB for API documentation)
Estimated build time: less than 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libusb
This package does not support parallel build.
Install libusb by running the following commands:
sed -i "s/^PROJECT_LOGO/#&/" doc/doxygen.cfg.in && ./configure --prefix=/usr --disable-static && make -j1
If Doxygen is installed and you wish to build the API documentation, issue the following command:
make -C doc docs
This package does not come with a test suite.
Now, as the root
user:
make install
If you built the API documentation, install it using the
following commands as the root
user:
install -v -d -m755 /usr/share/doc/libusb-1.0.21/apidocs && install -v -m644 doc/html/* \ /usr/share/doc/libusb-1.0.21/apidocs
sed -i ...: This sed prevents a warning when building the documentation.
To access raw USB devices (those not treated as a disk by the mass-storage driver), appropriate support must be available in the kernel. Check your kernel configuration:
Device Drivers --->
[*] USB support ---> [CONFIG_USB_SUPPORT]
<*/M> Support for Host-side USB [CONFIG_USB]
(Select any USB hardware device drivers you may need on the same page)
For more details on setting up USB devices, see the section called “USB Device Issues”.
Last updated on 2017-08-20 20:24:54 -0700
The libusb-compat package aims to look, feel and behave exactly like libusb-0.1. It is a compatibility layer needed by packages that have not been upgraded to the libusb-1.0 API.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://downloads.sourceforge.net/libusb/libusb-compat-0.1.5.tar.bz2
Download MD5 sum: 2780b6a758a1e2c2943bdbf7faf740e4
Download size: 276 KB
Estimated disk space required: 2.4 MB
Estimated build time: less than 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libusb-compat
Install libusb-compat by running the following commands:
./configure --prefix=/usr --disable-static && make
This package does not come with a test suite.
Now, as the root
user:
make install
Last updated on 2017-08-26 21:14:29 -0700
libxkbcommon is a keymap compiler and support library which processes a reduced subset of keymaps as defined by the XKB specification.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://xkbcommon.org/download/libxkbcommon-0.7.2.tar.xz
Download MD5 sum: f53fa65beb5ae4b6a6b7f08f9dedabc4
Download size: 616 KB
Estimated disk space required: 35 MB (with tests)
Estimated build time: 0.2 SBU (with tests)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libxkbcommon
Install libxkbcommon by running the following commands:
./configure $XORG_CONFIG \ --docdir=/usr/share/doc/libxkbcommon-0.7.2 && make
To test the results, issue: make check.
Now, as the root
user:
make install
--disable-static
:
This switch prevents installation of static versions of the
libraries.
--disable-x11
: Use this switch if
you have not installed libxcb-1.12 and don't need the libxkbcommon-x11.so
library.
Last updated on 2017-08-21 16:43:13 -0700
The libxml2 package contains libraries and utilities used for parsing XML files.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://xmlsoft.org/sources/libxml2-2.9.4.tar.gz
Download (FTP): ftp://xmlsoft.org/libxml2/libxml2-2.9.4.tar.gz
Download MD5 sum: ae249165c173b1ff386ee8ad676815f5
Download size: 5.1 MB
Estimated disk space required: 95 MB (additional 20 MB for tests)
Estimated build time: 0.6 SBU (additional 0.2 SBU for tests)
Optional Testsuite: http://www.w3.org/XML/Test/xmlts20130923.tar.gz - This enables make check to do complete testing.
Python-2.7.13 or Python-3.6.2 (to build and install a Python library module, additionally it is required to run the full suite of tests)
Some packages which utilize libxml2 (such as GNOME Doc Utils) need the Python module installed to function properly and some packages will not build properly if the Python module is not available.
ICU-59.1 and Valgrind-3.13.0 (may be used in the tests)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libxml2
If you want to build the Python module for Python-3.6.2, run:
sed -i '/_PyVerify_fd/,+1d' python/types.c
Install libxml2 by running the following commands:
./configure --prefix=/usr --disable-static --with-history && make
If you downloaded the testsuite, issue the following command:
tar xf ../xmlts20130923.tar.gz
To test the results, issue: make check > check.log. A summary of the results can be obtained with grep -E '^Total|expected' check.log. If Valgrind-3.13.0 is installed and you want to check memory leaks, replace check with check-valgrind.
Now, as the root
user:
make install
--disable-static
:
This switch prevents installation of static versions of the
libraries.
--with-history
: This
switch enables Readline
support when running xmlcatalog or xmllint in shell mode.
--with-python=/usr/bin/python3
:
Add this switch if you want libxml2 to use Python3 instead of
Python2.
--with-icu
: Add this switch if
you have built ICU-59.1, for better unicode support.
--with-threads
: Add this switch
to enable multithread support.
determines the compile and linker flags that should
be used to compile and link programs that use
|
|
is used to monitor and manipulate XML and SGML catalogs. |
|
parses XML files and outputs reports (based upon options) to detect errors in XML coding. |
|
provides functions for programs to parse files that use the XML format. |
Last updated on 2017-08-18 12:42:43 -0700
The libxslt package contains
XSLT libraries used for extending libxml2
libraries to support XSLT files.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://xmlsoft.org/sources/libxslt-1.1.29.tar.gz
Download (FTP): ftp://xmlsoft.org/libxslt/libxslt-1.1.29.tar.gz
Download MD5 sum: a129d3c44c022de3b9dcf6d6f288d72e
Download size: 3.3 MB
Estimated disk space required: 40 MB (with tests)
Estimated build time: 0.3 SBU (with tests)
docbook-xml-4.5 and docbook-xsl-1.79.1
libgcrypt-1.8.0 and Python-2.7.13
Although it is not a direct dependency, many applications using libxslt will expect docbook-xml-4.5 and docbook-xsl-1.79.1 to be present.
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libxslt
Install libxslt by running the following commands:
sed -i '/#include <xlocale.h>/d' libxslt/xsltlocale.h && ./configure --prefix=/usr --disable-static && make
To test the results, issue: make check.
Now, as the root
user:
make install
sed -i '/#include
<xlocale.h>/d' libxslt/xsltlocale.h:
with glibc-2.26, xlocale.h
is
no-longer installed, any package using it should use
locale.h
but libxslt references that on the previous
line of the header, so just delete this.
--disable-static
:
This switch prevents installation of static versions of the
libraries.
is used to find out the pre-processor, linking and compiling flags necessary to use the libxslt libraries in 3rd-party programs. |
|
is used to apply XSLT stylesheets to XML documents. |
|
is used to provide extensions to XSLT functions. |
|
provides extensions to the |
Last updated on 2017-08-19 18:04:07 -0700
The libwacom package contains a library used to identify wacom tablets and their model-specific features.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://downloads.sourceforge.net/linuxwacom/libwacom-0.26.tar.bz2
Download MD5 sum: 00d7f50bc7feda6a01f2b2546f787bc9
Download size: 472 KB
Estimated disk space required: 6.5 MB (with tests)
Estimated build time: less than 0.1 SBU (with tests)
git-2.14.1, GTK+-2.24.31, and librsvg-2.40.18
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libwacom
Install libwacom by running the following commands:
./configure --prefix=/usr --disable-static && make
To test the results, issue: make check.
Now, as the root
user:
make install
--disable-static
:
This switch prevents installation of static versions of the
libraries.
Last updated on 2017-08-26 18:53:46 -0700
The libzeitgeist package contains a client library used to access and manage the Zeitgeist event log from languages such as C and Vala. Zeitgeist is a service which logs the user's activities and events (files opened, websites visited, conversations hold with other people, etc.) and makes the relevant information available to other applications.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://launchpad.net/libzeitgeist/0.3/0.3.18/+download/libzeitgeist-0.3.18.tar.gz
Download MD5 sum: d63a37295d01a58086d0d4ae26e604c2
Download size: 516 KB
Estimated disk space required: 7.0 MB
Estimated build time: 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libzeitgeist
Install libzeitgeist by running the following commands:
sed -i "s|/doc/libzeitgeist|&-0.3.18|" Makefile.in && ./configure --prefix=/usr --disable-static && make
This package does not have a working testsuite.
Now, as the root
user:
make install
sed ... Makefile.in: PLace the documentation in a versioned directory.
--disable-static
:
This switch prevents installation of static versions of the
libraries.
--enable-gtk-doc
: Use this
parameter if GTK-Doc is
installed and you wish to rebuild and install the API
documentation.
Last updated on 2017-08-30 17:02:22 -0700
LZO is a data compression library which is suitable for data decompression and compression in real-time. This means it favors speed over compression ratio.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://www.oberhumer.com/opensource/lzo/download/lzo-2.10.tar.gz
Download MD5 sum: 39d3f3f9c55c87b1e5d6888e1420f4b5
Download size: 588 KB
Estimated disk space required: 12 MB
Estimated build time: 0.3 SBU (with tests)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/lzo
Install LZO by running the following commands:
./configure --prefix=/usr \ --enable-shared \ --disable-static \ --docdir=/usr/share/doc/lzo-2.10 && make
To test the results, issue: make check. All the checks should pass. Now issue make test to run the full suite of tests.
Now, as the root
user:
make install
--disable-static
:
This switch prevents installation of static versions of the
libraries.
Last updated on 2017-08-18 12:42:43 -0700
The mtdev package contains Multitouch Protocol Translation Library which is used to transform all variants of kernel MT (Multitouch) events to the slotted type B protocol.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://bitmath.org/code/mtdev/mtdev-1.1.5.tar.bz2
Download MD5 sum: 52c9610b6002f71d1642dc1a1cca5ec1
Download size: 268 KB
Estimated disk space required: 2.4 MB
Estimated build time: less than 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/mtdev
Install mtdev by running the following commands:
./configure --prefix=/usr --disable-static && make
This package does not come with a test suite.
Now, as the root
user:
make install
--disable-static
:
This switch prevents installation of static versions of the
libraries.
Last updated on 2017-08-20 20:24:54 -0700
Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://nodejs.org/dist/v8.4.0/node-v8.4.0.tar.xz
Download MD5 sum: e6c85c83001340b30671e9432e1bd337
Download size: 18 MB
Estimated disk space required: 349 MB
Estimated build time: 11.3 SBU
c-ares-1.12.0, ICU-59.1, and OpenSSL-1.0.2l Libraries
http-parser, libuv, and npm (an internal copy of npm will be installed if not present)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/nodejs
Build Node.js by running the following commands:
PKG_CONFIG_PATH=/usr/lib/openssl-1.0/pkgconfig \ ./configure --prefix=/usr \ --shared-cares \ --shared-openssl \ --shared-zlib \ --with-intl=system-icu && make
This package does not come with a test suite.
Now, as the root
user:
make install && ln -sf node /usr/share/doc/node-8.4.0
--with-intl=system-icu
: use the
system version of icu. Other
values are full-icu
(to build a
local, full icu library) and
small-icu
(to to build a local,
minimal icu library).
--shared-{cares,openssl,zlib}
:
use the system installed libraries instead of local copies.
--without-npm
: do not build
npm (use if you'd like to
build a separate npm later).
--shared-{http-parser,libuv}
: use
the system installed libraries instead of local copies.
Last updated on 2017-08-21 21:02:12 -0700
The NPth package contains a very portable POSIX/ANSI-C based library for Unix platforms which provides non-preemptive priority-based scheduling for multiple threads of execution (multithreading) inside event-driven applications. All threads run in the same address space of the server application, but each thread has its own individual program-counter, run-time stack, signal mask and errno variable.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://www.gnupg.org/ftp/gcrypt/npth/npth-1.5.tar.bz2
Download (FTP): ftp://ftp.gnupg.org/gcrypt/npth/npth-1.5.tar.bz2
Download MD5 sum: 9ba2dc4302d2f32c66737c43ed191b1b
Download size: 296 KB
Estimated disk space required: 2.5 MB (with checks)
Estimated build time: less than 0.1 SBU (with checks)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/npth
Install NPth by running the following commands:
./configure --prefix=/usr && make
To test the results, issue: make check.
Now, as the root
user:
make install
is a utility used to configure and build applications based on the npth library. It can be used to query the C compiler and linker flags which are required to correctly compile and link the application against the npth library. |
|
contains the API functions used by the New Portable Threads Library. |
Last updated on 2017-08-20 20:24:54 -0700
Netscape Portable Runtime (NSPR) provides a platform-neutral API for system level and libc like functions.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://archive.mozilla.org/pub/nspr/releases/v4.16/src/nspr-4.16.tar.gz
Download MD5 sum: 42fd8963a4b394f62d43ba604f03fab7
Download size: 1.1 MB
Estimated disk space required: 12 MB
Estimated build time: less than 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/nspr
Install NSPR by running the following commands:
cd nspr && sed -ri 's#^(RELEASE_BINS =).*#\1#' pr/src/misc/Makefile.in && sed -i 's#$(LIBRARY) ##' config/rules.mk && ./configure --prefix=/usr \ --with-mozilla \ --with-pthreads \ $([ $(uname -m) = x86_64 ] && echo --enable-64bit) && make
This package does not come with a test suite.
Now, as the root
user:
make install
sed -ri 's#^(RELEASE_BINS =).*#\1#' pr/src/misc/Makefile.in: This sed disables installing two unneeded scripts.
sed -i 's#$(LIBRARY) ##' config/rules.mk: This sed disables installing the static libraries.
--with-mozilla
: This
parameter adds Mozilla support to the libraries (required if
you want to build any other Mozilla products and link them to
these libraries).
--with-pthreads
: This
parameter forces use of the system pthread library.
$([ $(uname -m) = x86_64 ]
&& echo --enable-64bit)
: The
--enable-64bit parameter is required on an x86_64 system to
prevent configure failing with a
claim that this is a system without pthread support. The [
$(uname -m) = x86_64 ] test ensures it has no effect on a 32
bit system.
provides compiler and linker options to other packages that use NSPR. |
|
contains functions that provide platform independence for non-GUI operating system facilities such as threads, thread synchronization, normal file and network I/O, interval timing and calendar time, basic memory management and shared library linking. |
|
contains functions that implement many of the features offered by libnspr4 |
|
contains functions that provide data structures. |
Last updated on 2017-08-16 21:41:37 -0700
The OpenOBEX package contains a library that implements Object Exchange Protocol used for binary file transfers between devices.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://downloads.sourceforge.net/openobex/openobex-1.7.2-Source.tar.gz
Download MD5 sum: f6e0b6cb7dcfd731460a7e9a91429a3a
Download size: 128 KB
Estimated disk space required: 3.1 MB
Estimated build time: less than 0.1 SBU
Doxygen-1.8.13, libxslt-1.1.29, OpenJDK-1.8.0.141, and xmlto-0.0.28
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/openobex
OpenOBEX installs a udev
rule that requires a group named plugdev. Create that group
as the root
user:
groupadd -g 90 plugdev
Install OpenOBEX by running the following commands:
mkdir build && cd build && cmake -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=/usr/lib \ -DCMAKE_BUILD_TYPE=Release \ -Wno-dev \ .. && make
This package does not come with a test suite.
Now, as the root
user:
make install && if [ -d /usr/share/doc/openobex ]; then mv -fv /usr/share/doc/{openobex,openobex-1.7.2} fi
-DCMAKE_BUILD_TYPE=Release
:
This switch is used to apply higher level of the compiler
optimizations.
-Wno-dev
: This switch
is used to suppress warnings that are meant for the author of
the CMakeLists.txt files.
mv -fv ...: Moves the documentation to a versioned directory, if it has been created.
Last updated on 2017-08-28 20:59:34 -0700
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.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://downloads.sourceforge.net/pcre/pcre-8.41.tar.bz2
Download (FTP): ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.41.tar.bz2
Download MD5 sum: c160d22723b1670447341b08c58981c1
Download size: 1.5 MB
Estimated disk space required: 24 MB (with tests)
Estimated build time: 0.3 SBU (with tests)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/pcre
Install PCRE by running the following commands:
./configure --prefix=/usr \ --docdir=/usr/share/doc/pcre-8.41 \ --enable-unicode-properties \ --enable-pcre16 \ --enable-pcre32 \ --enable-pcregrep-libz \ --enable-pcregrep-libbz2 \ --enable-pcretest-libreadline \ --disable-static && make
To test the results, issue: make check.
Now, as the root
user:
make install && mv -v /usr/lib/libpcre.so.* /lib && ln -sfv ../../lib/$(readlink /usr/lib/libpcre.so) /usr/lib/libpcre.so
--enable-unicode-properties
:
This switch enables Unicode properties support and includes
the code for handling UTF-8/16/32 character strings in the
library. You need this switch if you are going to build
GLib-2.52.3 with the --with-pcre=system
switch.
--enable-pcre16
: This
switch enables 16 bit character support.
--enable-pcre32
: This
switch enables 32 bit character support.
--enable-pcregrep-libz
: This
switch adds support to pcregrep to read
.gz
compressed files.
--enable-pcregrep-libbz2
: This
switch adds support to pcregrep to read
.bz2
compressed files.
--enable-pcretest-libreadline
:
This switch adds line editing and history features to
pcretest
program.
--disable-static
:
This switch prevents installation of static versions of the
libraries.
mv -v /usr/lib/libpcre.so.* /lib: Moves the PCRE library on the root filesystem so that it is available in case grep gets reinstalled with PCRE support.
--enable-jit
: this option enables
Just-in-time compiling, which can greatly speed up pattern
matching.
Last updated on 2017-08-19 20:26:54 -0700
The PCRE2 package contains a new generation of the Perl Compatible Regular Expression libraries. These are useful for implementing regular expression pattern matching using the same syntax and semantics as Perl.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://downloads.sourceforge.net/pcre/pcre2-10.30.tar.bz2
Download (FTP): ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre2-10.30.tar.bz2
Download MD5 sum: d3adf4b130eed854a530390f00020a65
Download size: 1.5 MB
Estimated disk space required: 15 MB (with tests)
Estimated build time: 0.3 SBU (with tests)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/pcre2
Install PCRE2 by running the following commands:
./configure --prefix=/usr \ --docdir=/usr/share/doc/pcre2-10.30 \ --enable-unicode \ --enable-pcre2-16 \ --enable-pcre2-32 \ --enable-pcre2grep-libz \ --enable-pcre2grep-libbz2 \ --enable-pcre2test-libreadline \ --disable-static && make
To test the results, issue: make check.
Now, as the root
user:
make install
--enable-unicode
:
This switch enables Unicode support and includes the
functions for handling UTF-8/16/32 character strings in the
library.
--enable-pcre2-16
:
This switch enables 16 bit character support.
--enable-pcre2-32
:
This switch enables 32 bit character support.
--enable-pcre2grep-libz
: This
switch adds support for reading .gz compressed files to
pcre2grep.
--enable-pcre2grep-libbz2
: This
switch adds support for reading .bz2 compressed files to
pcre2grep.
--enable-pcre2test-libreadline
:
This switch adds line editing and history features to the
pcre2test program.
--disable-static
:
This switch prevents installation of static versions of the
libraries.
--enable-jit
: this option enables
Just-in-time compiling, which can greatly speed up pattern
matching.
Last updated on 2017-08-21 16:43:13 -0700
The popt package contains the popt libraries which are used by some programs to parse command-line options.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://rpm5.org/files/popt/popt-1.16.tar.gz
Download (FTP): ftp://anduin.linuxfromscratch.org/BLFS/popt/popt-1.16.tar.gz
Download MD5 sum: 3743beefa3dd6247a73f8f7a32c14c33
Download size: 702 kB
Estimated disk space required: 8 MB (includes installing documentation)
Estimated build time: 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/popt
Install popt by running the following commands:
./configure --prefix=/usr --disable-static && make
If you have Doxygen-1.8.13 installed and wish to build the API documentation, issue doxygen.
To test the results, issue:make check.
Now, as the root
user:
make install
If you built the API documentation, install it using the
following commands issued by the root
user:
install -v -m755 -d /usr/share/doc/popt-1.16 && install -v -m644 doxygen/html/* /usr/share/doc/popt-1.16
--disable-static
:
This switch prevents installation of static versions of the
libraries.
Last updated on 2017-08-20 15:06:11 -0700
The Pth package contains a very portable POSIX/ANSI-C based library for Unix platforms which provides non-preemptive priority-based scheduling for multiple threads of execution (multithreading) inside event-driven applications. All threads run in the same address space of the server application, but each thread has its own individual program-counter, run-time stack, signal mask and errno variable.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://ftp.gnu.org/gnu/pth/pth-2.0.7.tar.gz
Download (FTP): ftp://ftp.gnu.org/gnu/pth/pth-2.0.7.tar.gz
Download MD5 sum: 9cb4a25331a4c4db866a31cbe507c793
Download size: 652 KB
Estimated disk space required: 5 MB
Estimated build time: 0.2 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/pth
Don't add the --enable-pthread
parameter to the configure command below
else you will overwrite the pthread library and interface
header installed by the Glibc package in LFS.
Install Pth by running the following commands:
sed -i 's#$(LOBJS): Makefile#$(LOBJS): pth_p.h Makefile#' Makefile.in && ./configure --prefix=/usr \ --disable-static \ --mandir=/usr/share/man && make
To test the results, issue: make test.
Now, as the root
user:
make install && install -v -m755 -d /usr/share/doc/pth-2.0.7 && install -v -m644 README PORTING SUPPORT TESTS \ /usr/share/doc/pth-2.0.7
sed -i 's#$(LOBJS)
...: This sed fixes a race condition
in the Makefile
. It allows you
to run make
with multiple jobs (e.g., make
-j4) .
--disable-static
:
This switch prevents installation of static versions of the
libraries.
--mandir=/usr/share/man
: This
switch puts the man pages in /usr/share/man
instead of /usr/man
.
is a utility used to configure and build applications based on the pth(3) library. It can be used to query the C compiler and linker flags which are required to correctly compile and link the application against the pth(3) library. |
|
contains the API functions used by the GNU Portable Threads Library. |
Last updated on 2017-08-16 21:41:37 -0700
The Ptlib (Portable Tools Library) package contains a class library that has its genesis many years ago as PWLib (portable Windows Library), a method to produce applications to run on various platforms.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://ftp.gnome.org/pub/gnome/sources/ptlib/2.10/ptlib-2.10.11.tar.xz
Download (FTP): ftp://ftp.gnome.org/pub/gnome/sources/ptlib/2.10/ptlib-2.10.11.tar.xz
Download MD5 sum: 3ffdf89170dbfa6d29a015ef8741a4e4
Download size: 2.4 MB
Estimated disk space required: 81 MB
Estimated build time: 0.9 SBU
alsa-lib-1.1.4.1 and OpenSSL-1.1.0f
Cyrus SASL-2.1.26, Lua-5.3.4, OpenLDAP-2.4.45, PulseAudio-10.0, SDL-1.2.15, unixODBC-2.3.4, v4l-utils-1.12.5, libdc1394, and libraw1394,
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/ptlib
Fix a build issue with gcc-7.1.0:
sed -i "s/sbin\.Right(1) == '\\\\0')/strlen(sbin\.Right(1)) == 0)/" \ src/ptclib/podbc.cxx && sed -i '/\/ioctl.h/a#include <sys/uio.h>' src/ptlib/unix/channel.cxx
Install Ptlib by running the following commands:
patch -Np1 -i ../ptlib-2.10.11-openssl-1.1.0-1.patch && patch -Np1 -i ../ptlib-2.10.11-bison_fixes-2.patch && ./configure --prefix=/usr && make
This package does not come with a test suite.
Now, as the root
user:
make install && chmod -v 755 /usr/lib/libpt.so.2.10.11
Last updated on 2017-08-23 17:35:52 -0700
Qca aims to provide a straightforward and cross-platform crypto API, using Qt datatypes and conventions. Qca separates the API from the implementation, using plugins known as Providers.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://download.kde.org/stable/qca/2.1.3/src/qca-2.1.3.tar.xz
Download MD5 sum: 5019cc29efcf828681cd93164238ce26
Download size: 672 KB
Estimated disk space required: 28 MB
Estimated build time: 1.5 SBU (additional 0.6 SBU for the tests)
Certificate Authority Certificates, CMake-3.9.1, Qt-5.9.1, and Which-2.21
Cyrus SASL-2.1.26, GnuPG-2.1.23, libgcrypt-1.8.0, libgpg-error-1.27, NSS-3.32, NSPR-4.16, OpenSSL-1.0.2l Libraries, p11-kit-0.23.8, Doxygen-1.8.13, and Which-2.21
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/qca
Fix the location of the CA certificates:
sed -i 's@ca-bundle.pem@ca-bundle.crt@' CMakeLists.txt
Install Qca by running the following commands:
mkdir build && cd build && cmake -DCMAKE_INSTALL_PREFIX=$QT5DIR \ -DCMAKE_BUILD_TYPE=Release \ -DQCA_MAN_INSTALL_DIR:PATH=/usr/share/man \ -DOPENSSL_INCLUDE_DIR=/usr/include/openssl-1.0 \ -DOPENSSL_SSL_LIBRARY=/usr/lib/openssl-1.0/libssl.so \ -DOPENSSL_CRYPTO_LIBRARY=/usr/lib/openssl-1.0/libcrypto.so \ .. && make
To test the results, issue make test.
Now, as the root
user:
make install
-DCMAKE_BUILD_TYPE=Release
:
This switch is used to apply a higher level of compiler
optimizations.
-DQCA_MAN_INSTALL_DIR:PATH=/usr/share/man
:
Install the qca man page in the normal location.
Last updated on 2017-08-22 20:47:27 -0700
Talloc provides a hierarchical, reference counted memory pool system with destructors. It is the core memory allocator used in Samba.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://www.samba.org/ftp/talloc/talloc-2.1.10.tar.gz
Download MD5 sum: 48b8822a76797bb143e3e38ed738c320
Download size: 432 KB
Estimated disk space required: 7.7 MB (with tests)
Estimated build time: 0.3 SBU (with tests)
docbook-xml-4.5, docbook-xsl-1.79.1 and libxslt-1.1.29 (To generate man pages), Python-2.7.13 (To build Python-2 module) and Python-3.6.2 (To build Python-3 module)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/talloc
Install Talloc by running the following commands:
./configure --prefix=/usr && make
To check the results, issue make check.
Now, as the root
user:
make install
--extra-python=PYTHON
: This
switch enables building selected libraries for the specified
additional version of Python (example: --extra-python=/usr/bin/python3
).
Last updated on 2017-08-24 15:03:00 -0700
Wayland is a project to define a protocol for a compositor to talk to its clients as well as a library implementation of the protocol.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://wayland.freedesktop.org/releases/wayland-1.14.0.tar.xz
Download MD5 sum: 0235f6075c32c3be61cff94fa0b9f108
Download size: 408 KB
Estimated disk space required: 12 MB (with tests)
Estimated build time: 0.2 SBU (with tests)
libffi-3.2.1 and libxml2-2.9.4
Doxygen-1.8.13, Graphviz-2.40.1 and xmlto-0.0.28 (to build the API documentation) and docbook-xml-4.5, docbook-xsl-1.79.1 and libxslt-1.1.29 (to build the manual pages)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/wayland
Install Wayland by running the following commands:
./configure --prefix=/usr \ --disable-static \ --disable-documentation && make
To test the results, issue: make check.
Now, as the root
user:
make install
--disable-static
:
This switch prevents installation of static versions of the
libraries.
--disable-documentation
: This
switch is used to disable building of the API documentation.
Remove it if you have installed optional dependencies.
Last updated on 2015-07-31 23:26:22 -0500
The Wayland-Protocols package contains additional Wayland protocols that add functionality outside of protocols already in the Wayland core.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://wayland.freedesktop.org/releases/wayland-protocols-1.10.tar.xz
Download MD5 sum: 84a7846c2b6a6a3e265fc9be36453e60
Download size: 116 KB
Estimated disk space required: 1.0 MB (with tests)
Estimated build time: less than 0.1 SBU (with tests)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/wayland-protocols
Install Wayland-protocols by running the following commands:
./configure --prefix=/usr && make
To test the results, issue: make check.
Now, as the root
user:
make install
Last updated on 2017-08-20 20:24:54 -0700
This package contains tools for reading information from an MS Word document.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://www.abisource.com/downloads/wv/1.2.9/wv-1.2.9.tar.gz
Download MD5 sum: dbccf2e9f747e50c913b7e3d126b73f7
Download size: 608 KB
Estimated disk space required: 25 MB
Estimated build time: 0.4 SBU
libgsf-1.14.41 and libpng-1.6.31
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/wv
Install wv by running the following commands:
./configure --prefix=/usr --disable-static && make
This package does not have a testsuite.
Now, as the root
user:
make install
--disable-static
:
This switch prevents installation of static versions of the
libraries.
Last updated on 2017-08-29 10:55:51 -0700
Xapian is an open source search engine library.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://oligarchy.co.uk/xapian/1.4.4/xapian-core-1.4.4.tar.xz
Download MD5 sum: 919ad9a80a7c6a01ab4721670bb29cab
Download size: 2.7 MB
Estimated disk space required: 122 MB (add estimated 95 MB for tests)
Estimated build time: 0.5 SBU (add estimated 179 SBU for tests)
Valgrind-3.13.0 (for tests)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/xapian
Install Xapian by running the following commands:
./configure --prefix=/usr \ --disable-static \ --docdir=/usr/share/doc/xapian-core-1.4.4 && make
The regression tests are not recommended. On a fast (3.2 GHz i7) system they took over five hours and two of four tests (the valgrind tests) failed. To run the test suite anyway, issue: make check.
Now, as the root
user:
make install
perform a document-by-document copy of one or more Xapian databases. |
|
inspect the contents of a Xapian database. |
|
is a search command line tool. |
|
is a simple example program demonstrating query expansion. |
|
index each paragraph of a text file as a Xapian document. |
|
is a simple command line search utility. |
|
check the consistency of a database or table. |
|
update a chert database to the new format keys. |
|
compact a database, or merge and compact several. |
|
report information about the installed xapian. |
|
inspect the contents of a flint table for development or debugging. |
|
read and write user metadata. |
|
remote server for use with ProgClient. |
|
replicate a database from a master server to a local copy. |
|
service database replication requests from clients. |
|
is the TCP daemon for use with Xapian's remote backend. |
Last updated on 2017-08-24 18:56:23 -0700
The YAML package contains a C library for parsing and emitting YAML (YAML Ain't Markup Language).
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://pyyaml.org/download/libyaml/yaml-0.1.7.tar.gz
Download MD5 sum: 1abf45bd3a96374fa55ca63b32f9f2f9
Download size: 516 KB
Estimated disk space required: 6.1 MB
Estimated build time: 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/yaml
Install YAML by running the following commands:
./configure --prefix=/usr --disable-static && make
To test the results, issue: make check.
Now, as the root
user:
make install
--disable-static
:
This switch prevents installation of static versions of the
libraries.
Last updated on 2017-08-24 15:03:00 -0700
Depending on what your system will be used for, you may or may not require the graphics and font libraries. Most desktop machines will want them for use with graphical applications. Most servers on the other hand, will not require them.
AAlib is a library to render any graphic into ASCII Art.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://downloads.sourceforge.net/aa-project/aalib-1.4rc5.tar.gz
Download MD5 sum: 9801095c42bba12edebd1902bcf0a990
Download size: 388 KB
Estimated disk space required: 6.5 MB
Estimated build time: 0.1 SBU
X Window System, slang-2.3.1, and GPM-1.20.7
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/aalib
Fix a minor problem with the included m4 file:
sed -i -e '/AM_PATH_AALIB,/s/AM_PATH_AALIB/[&]/' aalib.m4
Install AAlib by running the following commands:
./configure --prefix=/usr \ --infodir=/usr/share/info \ --mandir=/usr/share/man \ --disable-static && make
This package does not come with a test suite.
Now, as the root
user:
make install
is a demo of AAlib, rendering an animated fire in ASCII Art. |
|
provides information for your current settings related to AAlib. |
|
provides configuration info for AAlib. |
|
saves a font to a file. |
|
shows the abilities of AAlib in a little test. |
|
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. |
Last updated on 2017-08-23 17:35:52 -0700
The Babl package is a dynamic, any to any, pixel format translation library.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://download.gimp.org/pub/babl/0.1/babl-0.1.30.tar.bz2
Download MD5 sum: fca6926a00130eeacc875cac5465c5e7
Download size: 603 KB
Estimated disk space required: 16 MB (with tests)
Estimated build time: 0.2 SBU (with tests)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/babl
Install Babl by running the following commands:
./configure --prefix=/usr && make
To test the results, issue: make check.
Now, as the root
user:
make install && install -v -m755 -d /usr/share/gtk-doc/html/babl/graphics && install -v -m644 docs/*.{css,html} /usr/share/gtk-doc/html/babl && install -v -m644 docs/graphics/*.{html,png,svg} /usr/share/gtk-doc/html/babl/graphics
install -v -m755 -d
/usr/share/gtk-doc/html/babl/graphics: This
and the subsequent commands install the library html
documentation under /usr/share/gtk-doc/html
where other gtk
packages put the programmer-oriented documentation.
Last updated on 2017-08-28 19:49:07 -0700
Exiv2 is a C++ library and a command line utility for managing image and video metadata.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://www.exiv2.org/exiv2-0.25.tar.gz
Download MD5 sum: 258d4831b30f75a01e0234065c6c2806
Download size: 5.2 MB
Estimated disk space required: 46 MB
Estimated build time: 1 SBU
Doxygen-1.8.13, Graphviz-2.40.1, Python-3.6.2, and libxslt-1.1.29
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/exiv2
Install Exiv2 by running the following commands:
./configure --prefix=/usr \ --enable-video \ --enable-webready \ --without-ssh \ --disable-static && make
This package does not come with a test suite.
Now, as the root
user:
make install && chmod -v 755 /usr/lib/libexiv2.so
--enable-video
: This
switch enables managing video metadata.
--enable-webready
:
This switch enables managing web image metadata.
--without-ssh
: This
switch is necessary when webready is enabled and libssh is not
installed. Libssh is required for ssh.
--disable-static
:
This switch prevents installation of static versions of the
libraries.
--without-curl
: This switch is
necessary when webready is enabled and cURL-7.55.1 is not installed.
Libcurl is required for http.
Last updated on 2017-08-26 21:18:25 -0700
The FreeType2 package contains a library which allows applications to properly render TrueType fonts.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://downloads.sourceforge.net/freetype/freetype-2.8.tar.bz2
Download MD5 sum: 2413ac3eaf508ada019c63959ea81a92
Download size: 1.8 MB
Estimated disk space required: 26 MB (with additional documentation)
Estimated build time: 0.2 SBU (with additional documentation)
Additional Documentation
Download (HTTP): https://downloads.sourceforge.net/freetype/freetype-doc-2.8.tar.bz2
Download MD5 sum: 961d5802bb6085ad91e0ab9fa99fbf39
Download size: 2.1 MB
HarfBuzz-1.4.8 (first, install without it, after it is installed, reinstall FreeType-2.8), libpng-1.6.31, and Which-2.21
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/freetype2
If you downloaded the additional documentation, unpack it into the source tree using the following command:
tar -xf ../freetype-doc-2.8.tar.bz2 --strip-components=2 -C docs
Install FreeType2 by running the following commands:
sed -ri "s:.*(AUX_MODULES.*valid):\1:" modules.cfg && sed -r "s:.*(#.*SUBPIXEL_RENDERING) .*:\1:" \ -i include/freetype/config/ftoption.h && ./configure --prefix=/usr --disable-static && make
This package does not come with a test suite.
Now, as the root
user:
make install && install -v -m755 -d /usr/share/doc/freetype-2.8 && cp -v -R docs/* /usr/share/doc/freetype-2.8
sed -ri ...:
First command enables GX/AAT and OpenType table validation
and second command enables Subpixel Rendering. Note that
Subpixel Rendering may have patent issues. Be sure to read
the 'Other patent issues'
part
of http://www.freetype.org/patents.html
before enabling this option.
--without-harfbuzz
:
If harfbuzz is installed
prior to freetype without
freetype support, use this
switch to avoid a build failure.
--disable-static
:
This switch prevents installation of static versions of the
libraries.
Last updated on 2017-08-20 15:06:11 -0700
The Fontconfig package contains a library and support programs used for configuring and customizing font access.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://www.freedesktop.org/software/fontconfig/release/fontconfig-2.12.4.tar.bz2
Download MD5 sum: 29105662c7d319720e0088a0ac53f494
Download size: 1.5 MB
Estimated disk space required: 15 MB (with tests)
Estimated build time: 0.3 SBU (with tests)
DocBook-utils-0.6.14 and libxml2-2.9.4, texlive-20170524 (or install-tl-unx)
If you have DocBook Utils
installed and you remove the --disable-docs
parameter from
the configure
command below, you must have SGMLSpm-1.1 and
texlive-20170524 installed
also, or the Fontconfig
build will fail.
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/Fontconfig
Make sure the system regenerates src/fcobjshash.h.
rm -f src/fcobjshash.h
Install Fontconfig by running the following commands:
./configure --prefix=/usr \ --sysconfdir=/etc \ --localstatedir=/var \ --disable-docs \ --docdir=/usr/share/doc/fontconfig-2.12.4 && make
To test the results, issue: make check.
Now, as the root
user:
make install
If you did not remove the --disable-docs
parameter from
the configure
command, you can install the pre-generated documentation by
using the following commands as the root
user:
install -v -dm755 \ /usr/share/{man/man{3,5},doc/fontconfig-2.12.4/fontconfig-devel} && install -v -m644 fc-*/*.1 /usr/share/man/man1 && install -v -m644 doc/*.3 /usr/share/man/man3 && install -v -m644 doc/fonts-conf.5 /usr/share/man/man5 && install -v -m644 doc/fontconfig-devel/* \ /usr/share/doc/fontconfig-2.12.4/fontconfig-devel && install -v -m644 doc/*.{pdf,sgml,txt,html} \ /usr/share/doc/fontconfig-2.12.4
--disable-docs
: This
switch avoids building the documentation (the release tarball
includes pre-generated documentation).
The main configuration file for Fontconfig is /etc/fonts/fonts.conf
. Generally you do
not want to edit this file. It will also read /etc/fonts/local.conf
and any files in
/etc/fonts/conf.d
. To put a
new font directory in the configuration, create (or update)
the /etc/fonts/local.conf
file with your local information or add a new file in
/etc/fonts/conf.d
. The
default location of fonts in Fontconfig is:
/usr/share/fonts
~/.local/share/fonts
~/.fonts (this is now deprecated, but for the moment it still works)
Fontconfig also ships many
example configuration files in the /usr/share/fontconfig/conf.avail
directory. Symlinking specific files to /etc/fonts/conf.d
will enable them. The
default setup is generally good enough for most users. See
/etc/fonts/conf.d/README
for
a description of the configuration files.
More information about configuring Fontconfig can be found in the user's manual in file:///usr/share/doc/fontconfig-2.12.4/fontconfig-user.html
is used to create font information caches. |
|
is used to read font information caches. |
|
is used to create font lists. |
|
is used to match available fonts, or find fonts that match a given pattern. |
|
is used to parse pattern (empty pattern by default) and show the parsed result. |
|
is used to query fonts files and print resulting patterns. |
|
is used to scan font files and directories, and print resulting patterns. |
|
is used to validate font files. |
|
contains functions used by the Fontconfig programs and also by other programs to configure or customize font access. |
Last updated on 2017-08-19 20:26:54 -0700
The FriBidi package is an implementation of the Unicode Bidirectional Algorithm (BIDI). This is useful for supporting Arabic and Hebrew alphabets in other packages.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://www.fribidi.org/download/fribidi-0.19.7.tar.bz2
Download MD5 sum: 6c7e7cfdd39c908f7ac619351c1c5c23
Download size: 636 KB
Estimated disk space required: 6.7 MB (with tests)
Estimated build time: less than 0.1 SBU (with tests)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/fribidi
Install FriBidi by running the following commands:
./configure --prefix=/usr && make
To test the results, issue: make check.
Now, as the root
user:
make install
is a command-line interface to the |
|
contains functions used to implement the Unicode Bidirectional Algorithm. |
Last updated on 2017-08-26 15:00:55 -0700
This package provides the GEneric Graphics Library, which is a graph based image processing format.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://download.gimp.org/pub/gegl/0.3/gegl-0.3.20.tar.bz2
Download MD5 sum: 5a31ebb855f525fecedccf6b84be4a07
Download size: 5.6 MB
Estimated disk space required: 140 MB (add 21 MB for tests)
Estimated build time: 1.4 SBU (add 0.4 SBU for tests)
babl-0.1.30 and JSON-GLib-1.2.8
asciidoc-8.6.9, Cairo-1.14.10, Enscript-1.6.6, Exiv2-0.25, FFmpeg-3.3.3, gdk-pixbuf-2.36.8, Graphviz-2.40.1, libjpeg-turbo-1.5.2, libpng-1.6.31, librsvg-2.40.18, libwebp-0.6.0, Lua-5.3.4, Pango-1.40.10, Python-2.7.13, Ruby-2.4.1, SDL-1.2.15, gobject-introspection-1.52.1, Vala-0.36.4, w3m-0.5.3, gexiv2, lensfun, libopenraw, libspiro, libumfpack, MRG, OpenCL (for tests), and OpenEXR
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gegl
Install gegl by running the following commands:
./configure --prefix=/usr && LC_ALL=en_US make
To test the results, issue: make check.
Now, as the root
user:
make install && install -v -m644 docs/*.{css,html} /usr/share/gtk-doc/html/gegl && install -d -v -m755 /usr/share/gtk-doc/html/gegl/images && install -v -m644 docs/images/*.{png,ico,svg} /usr/share/gtk-doc/html/gegl/images
install -v
-m644/docs/*/{css,html} ...: This and the
subsequent commands install all the provided documentation
instead of only operations.html
and the stylesheet gegl.css
.
--without-vala
: Do
not create a vala API - use
this if vapigen
breaks the build.
--enable-gtk-doc
: Use this
parameter if GTK-Doc is
installed and you wish to rebuild and install the API
documentation.
LC_ALL=en_US
: In some locales with
Ruby-2.4.1 installed, one build component
fails and prevents completion of the procedure. Using this
variable avoids the problem.
Last updated on 2017-08-28 19:49:07 -0700
The giflib package contains libraries for reading and writing GIFs as well as programs for converting and working with GIF files.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://downloads.sourceforge.net/giflib/giflib-5.1.4.tar.bz2
Download (HTTP) MD5 sum: 2c171ced93c0e83bb09e6ccad8e3ba2b
Download (HTTP) size: 625 KB
Estimated disk space required: 7.6 MB (with documentation and tests)
Estimated build time: 0.1 SBU (with documentation and tests)
xmlto-0.0.28 (for html documentation)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/giflib
Install giflib by running the following commands:
./configure --prefix=/usr --disable-static && make
To test the results, issue: make check-TESTS. Test
suite results are kept in test.sh.log
.
Now, as the root
user:
make install
If xmlto-0.0.28 is installed, then the API
documentation has been built. If you wish to install the
distributed and the just built documentations, issue, as the
root
user:
find doc \( -name Makefile\* -o -name \*.1 \ -o -name \*.xml \) -exec rm -v {} \; && install -v -dm755 /usr/share/doc/giflib-5.1.4 && cp -v -R doc/* /usr/share/doc/giflib-5.1.4
find doc ... -exec rm -v {}
\;: This command removes Makefiles
, man and xml files from the
documentation directory that would otherwise be installed by
the commands that follow.
--disable-static
:
This switch prevents installation of static versions of the
libraries.
converts images saved as GIF to 24-bit RGB images. |
|
dumps GIF data in a textual format, or undumps it to a GIF. |
|
modifies GIF image colormaps. |
|
generates a GIF from ASCII text. |
|
clumsily attempts to fix truncated GIF images. |
|
is an end-of-pipe fitting for GIF-processing pipelines. |
|
prints (text only) general information about a GIF file. |
|
is a GIF transformation tool. |
|
contains API functions required by the giflib programs and any other programs needing library functionality to read, write and manipulate GIF images. |
Last updated on 2017-08-21 23:29:00 -0700
Graphite2 is a rendering engine for graphite fonts. These are TrueType fonts with additional tables containing smart rendering information and were originally developed to support complex non-Roman writing systems. They may contain rules for e.g. ligatures, glyph substitution, kerning, justification - this can make them useful even on text written in Roman writing systems such as English. Note that firefox by default provides an internal copy of the graphite engine and cannot use a system version (although it can now be patched to use it), but it too should benefit from the availability of graphite fonts.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://github.com/silnrsi/graphite/releases/download/1.3.10/graphite2-1.3.10.tgz
Download MD5 sum: b39d5ed21195f8b709bcee548c87e2b5
Download size: 3.8 MB
Estimated disk space required: 21 MB (with tests, add 1.5 MB for docs)
Estimated build time: 0.2 SBU (with tests, add 0.1 SBU for docs)
FreeType-2.8, Python-2.7.13, and silgraphite to build the comparerender test and benchmarking tool, and if that is present, HarfBuzz-1.4.8 to add more functionality to it (this is a circular dependency, you would need to first build graphite2 without harfbuzz).
To build the documentation: asciidoc-8.6.9, Doxygen-1.8.13, texlive-20170524 (or install-tl-unx), and dblatex (for PDF docs)
To execute the test suite you will need FontTools (Python 2 module), otherwise, the "cmp" tests fail.
You will need at least one suitable graphite font for the package to be useful.
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/graphite2
Some tests fail if FontTools (Python 2 module) is not installed. These tests can be removed with:
sed -i '/cmptest/d' tests/CMakeLists.txt
Install Graphite2 by running the following commands:
mkdir build && cd build && cmake -DCMAKE_INSTALL_PREFIX=/usr .. && make
If you wish to build the documentation, issue:
make docs
To test the results, issue: make test.
Now, as the root
user:
make install
If you built the documentation, install, as the root
user:
install -v -d -m755 /usr/share/doc/graphite2-1.3.10 && cp -v -f doc/{GTF,manual}.html \ /usr/share/doc/graphite2-1.3.10 && cp -v -f doc/{GTF,manual}.pdf \ /usr/share/doc/graphite2-1.3.10
-DCMAKE_VERBOSE_MAKEFILE=ON
: This
switch turns on build verbose mode.
Last updated on 2017-08-19 15:43:35 -0700
The HarfBuzz package contains an OpenType text shaping engine.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://www.freedesktop.org/software/harfbuzz/release/harfbuzz-1.4.8.tar.bz2
Download MD5 sum: d1aa446e1e65717311c15d9ac0cf31ee
Download size: 1.5 MB
Estimated disk space required: 30 MB (add 20 MB for tests)
Estimated build time: 0.3 SBU (add 0.2 SBU for tests)
GLib-2.52.3 (required for Pango), ICU-59.1 and FreeType-2.8 (after HarfBuzz-1.4.8 is installed, reinstall FreeType-2.8)
Cairo-1.14.10, gobject-introspection-1.52.1, GTK-Doc-1.26, and Graphite2-1.3.10
Recommended dependencies are not strictly required to build the package. However, you might not get expected results at runtime if you don't install them. Please do not report bugs with this package if you have not installed the recommended dependencies.
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/harfbuzz
Install HarfBuzz by running the following commands:
./configure --prefix=/usr --with-gobject && make
To test the results, issue: make check.
Now, as the root
user:
make install
--with-gobject
: This
switch enables building of the HarfBuzz GObject wrapper. Remove it if
you did not install GLib.
--with-graphite2
: This switch
enables Graphite2 support.
--enable-gtk-doc
: Use this
parameter if GTK-Doc is
installed and you wish to rebuild and install the API
documentation.
gives the set of characters contained in a string, represented as single characters and/or single character names. Example: hb-ot-shape-closure /usr/share/fonts/dejavu/DejaVuSans.ttf "Hello World.". |
|
is used for the conversion of text strings into positioned glyphs. |
|
may be used for a graphical view of a string shape, using a particular font, as a set of glyphs. Output format is automatically defined by the file extension, the supported ones being ansi/png/svg/pdf/ps/eps. Example: hb-view --output-file=hello.png /usr/share/fonts/dejavu/DejaVuSans.ttf "Hello World.". |
|
HarfBuzz text shaping library. |
|
HarfBuzz text shaping library GObject integration. |
|
HarfBuzz text shaping library ICU integration. |
Last updated on 2017-08-19 20:26:54 -0700
The IJS package contains a library which implements a protocol for transmission of raster page images.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://www.openprinting.org/download/ijs/download/ijs-0.35.tar.bz2
Download MD5 sum: 896fdcb7a01c586ba6eb81398ea3f6e9
Download size: 252 KB
Estimated disk space required: 2.2 MB
Estimated build time: less than 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/ijs
Install IJS by running the following commands:
./configure --prefix=/usr \ --mandir=/usr/share/man \ --enable-shared \ --disable-static && make
This package does not come with a test suite.
Now, as the root
user:
make install
--disable-static
:
This switch prevents installation of static versions of the
libraries.
Last updated on 2017-08-28 18:17:24 -0700
The JasPer Project is an open-source initiative to provide a free software-based reference implementation of the JPEG-2000 codec.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://www.ece.uvic.ca/~frodo/jasper/software/jasper-2.0.12.tar.gz
Download MD5 sum: b839a8bf418a64aa2d06413b23dd5ab3
Download size: 1.6 MB
Estimated disk space required: 11 MB (with tests)
Estimated build time: 0.3 SBU (with tests)
Freeglut-3.0.0 (required for jiv), Doxygen-1.8.13 (needed for generating html documentation), and texlive-20170524 (needed to regnerate the pdf documentation)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/jasper
mkdir BUILD && cd BUILD && cmake -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_SKIP_INSTALL_RPATH=YES \ -DCMAKE_INSTALL_DOCDIR=/usr/share/doc/jasper-2.0.12 \ .. && make
To test the results, issue: make test.
Now, as the root
user:
make install
-DCMAKE_SKIP_INSTALL_RPATH=YES
:
This option removes embedded library search paths.
Last updated on 2017-08-21 23:29:00 -0700
The Little CMS library is used by other programs to provide color management facilities.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://downloads.sourceforge.net/lcms/lcms-1.19.tar.gz
Download MD5 sum: 8af94611baf20d9646c7c2c285859818
Download size: 927 KB
Estimated disk space required: 27 MB
Estimated build time: 0.5 SBU
LibTIFF-4.0.8, libjpeg-turbo-1.5.2, and Python-2.7.13 (with SWIG-3.0.12 also)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/lcms
Install Little CMS by running the following commands:
patch -Np1 -i ../lcms-1.19-cve_2013_4276-1.patch && ./configure --prefix=/usr --disable-static && make
To test the results, issue: make check.
Now, as the root
user:
make install && install -v -m755 -d /usr/share/doc/lcms-1.19 && install -v -m644 README.1ST doc/* \ /usr/share/doc/lcms-1.19
--disable-static
:
This switch prevents installation of static versions of the
libraries.
--with-python
: Use this parameter
if Python and SWIG are installed.
generates PostScript CRD or CSA from ICC profiles. |
|
links two or more profiles into a single device link profile. |
|
is a color space conversion calculator. |
|
is an ICC profile applier for JPEG files. |
|
is an ICC profile applier for TIFF files. |
|
A TIFF compare utility |
|
shows media white of profiles, identifying black body locus. |
|
is used by the lcms programs as well as other programs to provide color management facilities. |
Last updated on 2017-08-22 13:27:15 -0700
The Little Color Management System is a small-footprint color management engine, with special focus on accuracy and performance. It uses the International Color Consortium standard (ICC), which is the modern standard for color management.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://downloads.sourceforge.net/lcms/lcms2-2.8.tar.gz
Download MD5 sum: 87a5913f1a52464190bb655ad230539c
Download size: 6.4 MB
Estimated disk space required: 21 MB (with the tests)
Estimated build time: 0.2 SBU (with the tests)
libjpeg-turbo-1.5.2 and LibTIFF-4.0.8
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/lcms2
Install Little CMS2 by running the following commands:
./configure --prefix=/usr --disable-static && make
To test the results, issue: make check.
Now, as the root
user:
make install
--disable-static
:
This switch prevents installation of static versions of the
libraries.
Last updated on 2017-08-20 15:06:11 -0700
The libexif package contains a library for parsing, editing, and saving EXIF data. Most digital cameras produce EXIF files, which are JPEG files with extra tags that contain information about the image. All EXIF tags described in EXIF standard 2.1 are supported.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://downloads.sourceforge.net/libexif/libexif-0.6.21.tar.bz2
Download MD5 sum: 27339b89850f28c8f1c237f233e05b27
Download size: 1.4 MB
Estimated disk space required: 17 MB
Estimated build time: 0.2 SBU
Doxygen-1.8.13 and Graphviz-2.40.1
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libexif
Install libexif by running the following commands:
./configure --prefix=/usr \ --with-doc-dir=/usr/share/doc/libexif-0.6.21 \ --disable-static && make
To test the results, issue: make check.
Now, as the root
user:
make install
Documentation was built and installed if you have the
dependencies shown above installed. If you don't have the
dependencies installed, there is a compressed tarball in the
source tree doc
directory that
can be unpacked into /usr/share/doc/libexif-0.6.21.
--disable-static
:
This switch prevents installation of static versions of the
libraries.
Last updated on 2017-08-21 19:54:38 -0700
libjpeg-turbo is a fork of the original IJG libjpeg which uses SIMD to accelerate baseline JPEG compression and decompression. libjpeg is a library that implements JPEG image encoding, decoding and transcoding.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://downloads.sourceforge.net/libjpeg-turbo/libjpeg-turbo-1.5.2.tar.gz
Download MD5 sum: 6b4923e297a7eaa255f08511017a8818
Download size: 1.6 MB
Estimated disk space required: 15 MB (with tests)
Estimated build time: 0.5 SBU (with tests)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libjpeg-turbo
Install libjpeg-turbo by running the following commands:
./configure --prefix=/usr \ --mandir=/usr/share/man \ --with-jpeg8 \ --disable-static \ --docdir=/usr/share/doc/libjpeg-turbo-1.5.2 && make
To test the results, issue: make test.
If installing libjpeg-turbo over an older jpeg
installation, not all library symbolic links are updated
properly. To fix this before installation, run the
following as the root
user:
rm -f /usr/lib/libjpeg.so*
Now, as the root
user:
make install
--with-jpeg8
: This
switch enables compatibility with libjpeg version 8.
--disable-static
:
This switch prevents installation of static versions of the
libraries.
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. |
|
decompresses image files from JPEG/JFIF format to either PPM (PBMPLUS color format), PGM (PBMPLUS gray-scale format), BMP, or Targa format. |
|
is used for lossless transformation of JPEG files. |
|
displays text comments from within a JPEG file. |
|
is used to benchmark the performance of libjpeg-turbo. |
|
inserts text comments into a JPEG file. |
|
contains functions used for reading and writing JPEG images. |
Last updated on 2017-08-20 15:06:11 -0700
The libmng libraries are used by programs wanting to read and write Multiple-image Network Graphics (MNG) files which are the animation equivalents to PNG files.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://downloads.sourceforge.net/libmng/libmng-2.0.3.tar.xz
Download MD5 sum: e9e899adb1b681b17f14d91e261878c5
Download size: 932 KB
Estimated disk space required: 15 MB
Estimated build time: 0.1 SBU
libjpeg-turbo-1.5.2 and Little CMS-2.8
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libmng
Install libmng by running the following commands:
./configure --prefix=/usr --disable-static && make
This package does not come with a test suite.
Now, as the root
user:
make install && install -v -m755 -d /usr/share/doc/libmng-2.0.3 && install -v -m644 doc/*.txt /usr/share/doc/libmng-2.0.3
--disable-static
:
This switch prevents installation of static versions of the
libraries.
Last updated on 2017-08-22 13:27:15 -0700
The libpng package contains libraries used by other programs for reading and writing PNG 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.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://downloads.sourceforge.net/libpng/libpng-1.6.31.tar.xz
Download MD5 sum: 1b34eab440263e32cfa39d19413fad54
Download size: 972 KB
Estimated disk space required: 14 MB (with tests)
Estimated build time: 0.8 SBU (with tests)
Recommended patch to include animated png functionality in libpng (required to use the system libpng in Firefox, Seamonkey, and Thunderbird): https://downloads.sourceforge.net/apng/libpng-1.6.31-apng.patch.gz
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libpng
If you want to patch libpng to support apng files, apply it here:
gzip -cd ../libpng-1.6.31-apng.patch.gz | patch -p0
Install libpng by running the following commands:
LIBS=-lpthread ./configure --prefix=/usr --disable-static && make
To test the results, issue: make check.
Now, as the root
user:
make install && mkdir -v /usr/share/doc/libpng-1.6.31 && cp -v README libpng-manual.txt /usr/share/doc/libpng-1.6.31
LIBS=-lpthread
: Ensure the
libpthread library is used to allow parallelism on systems
with multiple cores.
--disable-static
:
This switch prevents installation of static versions of the
libraries.
tests, optimizes and optionally fixes the zlib header in PNG files. Optionally, when fixing, strips ancillary chunks from the file. |
|
fixes PNG files that have an incorrect length field in the iTXt chunks. |
|
is a shell script that provides configuration information for applications wanting to use libpng. |
|
contain routines used to create and manipulate PNG format graphics files. |
Last updated on 2017-08-19 15:43:35 -0700
Libraw is a library for reading RAW files obtained from digital photo cameras (CRW/CR2, NEF, RAF, DNG, and others).
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://www.libraw.org/data/LibRaw-0.18.2.tar.gz
Download MD5 sum: 7bd923ea7c9cc71897b005be46c01b2b
Download size: 1.2 MB
Estimated disk space required: 19 MB
Estimated build time: 0.2 SBU
libjpeg-turbo-1.5.2, JasPer-2.0.12, and Little CMS-2.8
LibRaw-demosaic-pack-GPL2 and LibRaw-demosaic-pack-GPL3
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libraw
Install libraw by running the following commands:
./configure --prefix=/usr \ --enable-jpeg \ --enable-jasper \ --enable-lcms \ --disable-static \ --docdir=/usr/share/doc/libraw-0.18.2 && make
This package does not come with a test suite.
Now, as the root
user:
make install
CXX="g++ -Wno-narrowing"
: This
environment variable disables a warning that prevents the
package from compiling.
--enable-jpeg
: This
switch enables support for jpeg. Remove if you don't have
libjpeg-turbo-1.5.2 installed.
--enable-jasper
: This
switch enables support for jasper. Remove if you don't have
JasPer-2.0.12 installed.
--enable-lcms
: This
switch enables support for Little CMS2. Remove if you don't
have Little CMS-2.8 installed.
--disable-static
:
This switch prevents installation of static versions of the
libraries.
All the installed programs are examples of libraw use.
generates four TIFF files from RAW data, one file per channel. |
|
emulates "dcraw -h" (see DCRAW manpage). |
|
emulates "dcraw [-4] [-6] [-e]" (see DCRAW manpage). |
|
creates eight different renderings from one source file. The first and fourth one should be identical. |
|
emulates call to "dcraw [-D] [-T] [-v] [-e] [-4]" (see DCRAW manpage). |
|
is an almost complete dcraw emulator (see DCRAW manpage). |
|
emulates call to "dcraw -h [-w] [-a] [-v]" (see DCRAW manpage). |
|
creates eight different renderings from one source file. The first and fourth one should be identical. |
|
emulates call to "dcraw -i [-v]" (see DCRAW manpage). |
|
generates unprocessed raw image: with masked pixels and without black subtraction. |
Last updated on 2017-08-26 21:18:25 -0700
The librsvg package contains a library and tools used to manipulate, convert and view Scalable Vector Graphic (SVG) images.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://ftp.gnome.org/pub/gnome/sources/librsvg/2.40/librsvg-2.40.18.tar.xz
Download (FTP): ftp://ftp.gnome.org/pub/gnome/sources/librsvg/2.40/librsvg-2.40.18.tar.xz
Download MD5 sum: eaa5c8a8bbe2600ab5194c0d3b1b621b
Download size: 561 KB
Estimated disk space required: 14 MB (with tests)
Estimated build time: 0.2 SBU (with tests)
gdk-pixbuf-2.36.8, libcroco-0.6.12 and Pango-1.40.10
gobject-introspection-1.52.1, GTK+-3.22.18 (For the rsvg-view-3), and Vala-0.36.4
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/librsvg
Install librsvg by running the following commands:
sed -i 's/ --nogtkinit//' doc/Makefile.in && ./configure --prefix=/usr \ --enable-vala \ --disable-static && make
To test the results, issue: make check.
Now, as the root
user:
make install
sed ... doc/Makefile.in: This change removes a switch that prevents building the API documentation (if requested).
--enable-vala
: This
switch enables building of the Vala bindings. Remove this
switch if you don't have Vala-0.36.4 installed.
--disable-static
:
This switch prevents installation of static versions of the
libraries.
--disable-introspection
: Use this
switch if you have not installed Gobject Introspection.
--enable-gtk-doc
: Use this
parameter if GTK-Doc is
installed and you wish to rebuild and install the API
documentation.
is used to convert images into PNG, PDF, PS, SVG and other formats. |
|
is a simple GTK+ 3 application that can be used to view an SVG file. |
|
provides the functions to render Scalable Vector Graphics. |
|
is the Gdk Pixbuf plugin that allows GTK+ applications to render Scalable Vector Graphics images. |
Last updated on 2017-09-01 14:59:47 -0700
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 used for general work with TIFF files.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://download.osgeo.org/libtiff/tiff-4.0.8.tar.gz
Download MD5 sum: 2a7d1c1318416ddf36d5f6fa4600069b
Download size: 2.0 MB
Estimated disk space required: 24 MB (with tests)
Estimated build time: 0.3 SBU (with tests)
Freeglut-3.0.0 (required for tiffgt), libjpeg-turbo-1.5.2 and JBIG-KIT
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libtiff
Install LibTIFF by running the following commands:
./configure --prefix=/usr --disable-static && make
To test the results, issue: make check.
Now, as the root
user:
make install
--disable-static
:
This switch prevents installation of static versions of the
libraries.
converts a Microsoft Windows Device Independent Bitmap image file to a TIFF image. |
|
converts a TIFF facsimile to compressed PostScript file. |
|
creates a TIFF Class F fax file from raw fax data. |
|
creates a TIFF file from a GIF87 format image file. |
|
converts a palette color TIFF image to a full color image. |
|
creates a TIFF file from a PPM image file. |
|
creates a TIFF file from a Sun rasterfile. |
|
converts a raw byte sequence into TIFF. |
|
converts non-YCbCr TIFF images to YCbCr TIFF images. |
|
creates a TIFF file with thumbnail images. |
|
converts a color TIFF image to grayscale. |
|
converts a TIFF image to a PDF document. |
|
converts a TIFF image to a PostScript file. |
|
converts a wide variety of TIFF images into an RGBA TIFF image. |
|
compares two TIFF files. |
|
copies (and possibly converts) a TIFF file. |
|
selects, copies, crops, converts, extracts and/or processes one or more TIFF files. |
|
converts a grayscale image to bilevel using dithering. |
|
prints verbatim information about TIFF files. |
|
displays an image stored in a TIFF file. |
|
prints information about TIFF files. |
|
applies the median cut algorithm to data in a TIFF file. |
|
sets the value of a TIFF header to a specified value. |
|
splits a multi-image TIFF into single-image TIFF files. |
|
contains the API functions used by the libtiff programs as well as other programs to read and write TIFF files. |
|
contains the C++ API functions used by programs to read and write TIFF files. |
Last updated on 2017-08-20 20:24:54 -0700
The libwebp package contains a library and support programs to encode and decode images in WebP format.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://downloads.webmproject.org/releases/webp/libwebp-0.6.0.tar.gz
Download MD5 sum: 19a6e926ab1721268df03161b84bb4a0
Download size: 1.2 MB
Estimated disk space required: 27 MB
Estimated build time: 0.3 SBU
libjpeg-turbo-1.5.2, libpng-1.6.31 and LibTIFF-4.0.8
Freeglut-3.0.0 and giflib-5.1.4
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libwebp
Install libwebp by running the following commands:
If you are updating from libwebp-0.4.x or 0.5.x, and wish that installed applications link to the new version 0.6.x, they need to be reinstalled.
./configure --prefix=/usr \ --enable-libwebpmux \ --enable-libwebpdemux \ --enable-libwebpdecoder \ --enable-libwebpextras \ --enable-swap-16bit-csp \ --disable-static && make
This package does not come with a test suite.
Now, as the root
user:
make install
--enable-swap-16bit-csp
: This
switch enables byte swap for 16 bit colorspaces.
--disable-static
:
This switch prevents installation of static versions of the
libraries.
compresses an image using the WebP format. |
|
decompresses WebP files into PNG, PAM, PPM or PGM images. |
|
converts a GIF image to a WebP image. |
|
decompress a WebP file and display it in a window. |
|
creates animated WebP files from non-animated WebP images, extracts frames from animated WebP images, and manages XMP/EXIF metadata and ICC profile. |
|
contains the API functions for WebP encoding and decoding. |
Last updated on 2017-08-21 23:29:00 -0700
Newt is a programming library for color text mode, widget based user interfaces. It can be used to add stacked windows, entry widgets, checkboxes, radio buttons, labels, plain text fields, scrollbars, etc., to text mode user interfaces. Newt is based on the S-Lang library.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://releases.pagure.org/newt/newt-0.52.20.tar.gz
Download MD5 sum: 70b288f821234593a8e7920e435b259b
Download size: 180 KB
Estimated disk space required: 4.1 MB
Estimated build time: less than 0.1 SBU
popt-1.16 and slang-2.3.1
GPM-1.20.7 (runtime)
Python-2.7.13 and Python-3.6.2
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/newt
Install newt by running the following command:
sed -e 's/^LIBNEWT =/#&/' \ -e '/install -m 644 $(LIBNEWT)/ s/^/#/' \ -e 's/$(LIBNEWT)/$(LIBNEWTSONAME)/g' \ -i Makefile.in && ./configure --prefix=/usr --with-gpm-support && make
This package does not come with a test suite.
Now, as the root
user:
make install
sed -e ... -i Makefile.in: Disables installation of a static library.
Last updated on 2017-08-28 23:13:49 -0700
The opencv package contains graphics libraries mainly aimed at real-time computer vision.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://downloads.sourceforge.net/opencvlibrary/opencv-3.3.0.zip
Download MD5 sum: cc586ebe960a7cdd87100e89088abc06
Download size: 81 MB
Estimated disk space required: 851 MB
Estimated build time: 2.1 SBU (using parallelism=4)
Optional file (x86_64 only; will be downloaded when running cmake if not present): https://raw.githubusercontent.com/opencv/opencv_3rdparty/a62e20676a60ee0ad6581e217fe7e4bada3b95db/ippicv/ippicv_2017u2_lnx_intel64_20170418.tgz
Optional additional modules: https://github.com/opencv/opencv_contrib/archive/3.3.0/opencv_contrib-3.3.0.tar.gz
CMake-3.9.1 and UnZip-6.0
FFmpeg-3.3.3, gst-plugins-base-1.12.2, GTK+-3.22.18, JasPer-2.0.12, libjpeg-turbo-1.5.2, libpng-1.6.31, LibTIFF-4.0.8, libwebp-0.6.0, Python-2.7.13, v4l-utils-1.12.5, and xine-lib-1.2.8
apache-ant-1.10.1, Doxygen-1.8.13, Java-1.8.0.141, Python-3.6.2, Cuda, Eigen, OpenEXR, GCD, GDAL, GigEVisionSDK, JACK, libdc1394, libgphoto2, NumPy, OpenNI, PlanetUML, PvAPI, Threading Building Blocks (TBB), UniCap, VTK - The Visualization Toolkit, and XIMEA
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/opencv
If the optional Integrated Performance Primitives (IPP) package has been downloaded, put it in place so the cmake script does not try to download it again:
ipp_file=ippicv_2017u2_lnx_intel64_20170418.tgz && ipp_hash=$(md5sum ../$ipp_file | cut -d" " -f1) && ipp_dir=.cache/ippicv && mkdir -p $ipp_dir && cp ../$ipp_file $ipp_dir/$ipp_hash-$ipp_file
If needed, unpack the additional modules package:
tar xf ../opencv_contrib-3.3.0.tar.gz
Install opencv by running the following commands:
mkdir build && cd build && cmake -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_BUILD_TYPE=Release \ -DENABLE_CXX11=ON \ -DBUILD_PERF_TESTS=OFF \ -DWITH_XINE=ON \ -DBUILD_TESTS=OFF \ -DENABLE_PRECOMPILED_HEADERS=OFF \ -DCMAKE_SKIP_RPATH=ON \ -DBUILD_WITH_DEBUG_INFO=OFF \ -Wno-dev .. && make
The package does not come with an operable test suite.
Now, as the root
user:
make install && case $(uname -m) in x86_64) ARCH=intel64 ;; *) ARCH=ia32 ;; esac && cp -v 3rdparty/ippicv/ippicv_lnx/lib/$ARCH/libippicv.a /usr/lib && unset ARCH
-DWITH_XINE=ON
: This
option instructs the make procedure to use xine-lib-1.2.8.
-DENABLE_PRECOMPILED_HEADERS=OFF
:
This option is needed for compatibiiity with gcc-6.1 and
later.
-DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib-3.3.0/modules
:
instructs the build system to build the additional modules.
cp -v 3rdparty/.../libippicv.a /usr/lib: This command installs a 3rdparty library.
Last updated on 2017-08-23 12:11:26 -0700
OpenJPEG is an open-source implementation of the JPEG-2000 standard. OpenJPEG fully respects the JPEG-2000 specifications and can compress/decompress lossless 16-bit images.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://downloads.sourceforge.net/openjpeg.mirror/openjpeg-1.5.2.tar.gz
Download MD5 sum: c41772c30fb1c272358b3707233134a1
Download size: 1.4 MB
Estimated disk space required: 16 MB
Estimated build time: 0.2 SBU
Little CMS-2.8, libpng-1.6.31, LibTIFF-4.0.8 and Doxygen-1.8.13 (to build the API documentation)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/openjpeg
Install OpenJPEG by running the following commands:
autoreconf -f -i && ./configure --prefix=/usr --disable-static && make
This package does not come with a testsuite.
Now, as the root
user:
make install
--disable-static
:
This switch prevents installation of static versions of the
libraries.
Last updated on 2017-08-23 12:11:26 -0700
OpenJPEG is an open-source implementation of the JPEG-2000 standard. OpenJPEG fully respects the JPEG-2000 specifications and can compress/decompress lossless 16-bit images.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://github.com/uclouvain/openjpeg/archive/v2.2.0/openjpeg-2.2.0.tar.gz
Download MD5 sum: 269bb0b175476f3addcc0d03bd9a97b6
Download size: 2.7 MB
Estimated disk space required: 18 MB
Estimated build time: 0.2 SBU
Little CMS-2.8, libpng-1.6.31, LibTIFF-4.0.8, and Doxygen-1.8.13 (to build the API documentation)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/openjpeg2
Install OpenJPEG by running the following commands:
mkdir -v build && cd build && cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr .. && make
This package does not come with a working test suite.
Now, as the root
user:
make install && pushd ../doc && for man in man/man?/* ; do install -v -D -m 644 $man /usr/share/$man done popd
Last updated on 2017-08-23 19:39:45 -0700
The Pixman package contains a library that provides low-level pixel manipulation features such as image compositing and trapezoid rasterization.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://www.cairographics.org/releases/pixman-0.34.0.tar.gz
Download MD5 sum: e80ebae4da01e77f68744319f01d52a3
Download size: 860 KB
Estimated disk space required: 47 MB (with tests)
Estimated build time: 0.8 SBU (with tests)
GTK+-2.24.31 and libpng-1.6.31 (for tests and demos)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/pixman
Install Pixman by running the following commands:
./configure --prefix=/usr --disable-static && make
To test the results, issue: make check.
Now, as the root
user:
make install
--disable-static
:
This switch prevents installation of static versions of the
libraries.
Last updated on 2017-08-20 20:24:54 -0700
The Poppler package contains a PDF rendering library and command line tools used to manipulate PDF files. This is useful for providing PDF rendering functionality as a shared library.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://poppler.freedesktop.org/poppler-0.57.0.tar.xz
Download MD5 sum: bc5a191741604552c90d484103229374
Download size: 1.6 MB
Estimated disk space required: 50 MB (with Qt5 library)
Estimated build time: 1.3 SBU (with Qt5 library)
Poppler Encoding Data
Download (HTTP): https://poppler.freedesktop.org/poppler-data-0.4.8.tar.gz
Download MD5 sum: 00f8989c804de84af0ba2ea629949980
Download size: 4.1 MB
Estimated disk space required: 13 MB
Estimated build time: less than 0.1 SBU
The additional package consists of encoding files for use with Poppler. The encoding files are optional and Poppler will automatically read them if they are present. When installed, they enable Poppler to render CJK and Cyrillic properly.
Cairo-1.14.10, libjpeg-turbo-1.5.2, libpng-1.6.31, NSS-3.32, and OpenJPEG-1.5.2
cURL-7.55.1, gobject-introspection-1.52.1, GTK-Doc-1.26, GTK+-2.24.31, Little CMS-1.19 or Little CMS-2.8, LibTIFF-4.0.8, OpenJPEG-2.2.0 (preference is for OpenJPEG1, due to regressions with OpenJPEG2), and Qt-5.9.1 (required for PDF support in Okular-17.08.0)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/poppler
Install Poppler by running the following commands:
./configure --prefix=/usr \ --sysconfdir=/etc \ --disable-static \ --enable-build-type=release \ --enable-cmyk \ --enable-xpdf-headers \ --with-testdatadir=$PWD/testfiles && make
In order to run the test suite, some testcases are needed and can be obtained only from a git repository. The command to download them is: git clone git://git.freedesktop.org/git/poppler/test testfiles. Then issue: LC_ALL=en_US.UTF-8 make check. It seems that only the Qt4/5 libraries are tested.
Now, as the root
user:
make install
To install the documentation, run the following commands as
root
:
install -v -m755 -d /usr/share/doc/poppler-0.57.0 && install -v -m644 README* /usr/share/doc/poppler-0.57.0 && cp -vr glib/reference/html /usr/share/doc/poppler-0.57.0
If you downloaded the additional encoding data package, install it by issuing the following commands:
tar -xf ../poppler-data-0.4.8.tar.gz && cd poppler-data-0.4.8
Now, as the root
user:
make prefix=/usr install
--enable-build-type=release
:
This switch is used to apply a higher level of compiler
optimizations. Other options are: [relwithdebinfo/debug/debugfull/profile
]
--enable-cmyk
:
Include support for CMYK rasterization.
--disable-static
:
This switch prevents installation of static versions of the
libraries.
--enable-xpdf-headers
: Install
some old Xpdf headers
required by certain programs (e.g. Okular, LibreOffice and Inkscape).
--with-testdatadir=$PWD/testfiles
:
Tell the test programs where the auxiliary files are located.
--enable-libcurl
: Use libcurl for
HTTP support.
--enable-gtk-doc
: Use this
parameter if GTK-Doc is
installed and you wish to rebuild and install the API
documentation.
--disable-poppler-qt5
: Don't
compile poppler Qt5 wrapper, when Qt5 is installed. Note that
Qt5 support is required for PDF support in Okular-17.08.0.
LC_ALL=en_US.UTF-8 make check: Run the test suite. The environment variable LC_ALL=en_US.UTF-8 is only needed if the default locale does not include UTF-8.
lists or extracts embedded files from PDF files. |
|
lists the fonts used in a PDF file along with various information for each font. |
|
saves images from a PDF file as PPM, PBM, or JPEG files. |
|
prints the contents of the 'Info' dictionary (plus some other useful information) from a PDF file. |
|
extracts single pages from a PDF file. |
|
verifies the digital signatures in a PDF document. |
|
converts a PDF file to one of several formats (PNG, JPEG, PDF, PS, EPS, SVG) using the cairo output device of the poppler library. |
|
converts a PDF file to HTML. |
|
converts PDF files to PBM, PGM and PPM formats. |
|
converts PDF files to Postscript format. |
|
converts PDF files to plain text. |
|
merges several PDF files, in the order of their occurrence on the command line, to one PDF output file. |
|
is a tool to demonstrate the API, and for use when debugging and testing Poppler. |
|
contains the API functions to render PDF files. |
|
is a C++ backend for rendering PDF files. |
|
is a wrapper library used to interface the PDF rendering functions with GTK+. |
|
is a wrapper library used to interface the PDF rendering functions with Qt5. |
Last updated on 2017-08-23 19:39:45 -0700
Potrace™ is a tool for transforming a bitmap (PBM, PGM, PPM, or BMP format) into one of several vector file formats.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://downloads.sourceforge.net/potrace/potrace-1.15.tar.gz
Download MD5 sum: 60cecdaa9d14e0008f96b68dce77d246
Download size: 636 KB
Estimated disk space required: 7.5 MB (including tests)
Estimated build time: less than 0.1 SBU (including tests)
LLVM-4.0.1 (including clang).
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/potrace
Install Potrace by running the following commands:
./configure --prefix=/usr \ --disable-static \ --docdir=/usr/share/doc/potrace-1.15 \ --enable-a4 \ --enable-metric \ --with-libpotrace && make
To run the test suite, issue: make check.
Now, as the root
user:
make install
--enable-a4
: Use A4
as the default paper size.
--enable-metric
: Use
metric units (centimeters) as default
--disable-static
:
This switch prevents installation of static versions of the
libraries.
--with-libpotrace
:
Install the library and headers.
Last updated on 2017-08-25 11:57:45 -0700
The Qpdf package contains command-line programs and library that do structural, content-preserving transformations on PDF files.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://downloads.sourceforge.net/qpdf/qpdf-6.0.0.tar.gz
Download MD5 sum: e014bd3ecf1c4d1a520bbc14d84ac20e
Download size: 8 MB
Estimated disk space required: 108 MB (with tests)
Estimated build time: 1.0 SBU (with tests)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/qpdf
Install Qpdf by running the following commands:
./configure --prefix=/usr \ --disable-static \ --docdir=/usr/share/doc/qpdf-6.0.0 && make
To test the results, issue: make check.
Now, as the root
user:
make install
--disable-static
:
This switch prevents installation of static versions of the
libraries.
Last updated on 2017-08-23 19:39:45 -0700
This chapter contains various utilities that do not fit conveniently into other chapters. Programs include a command line calculator, several utilities for manipulating text and graphics, a program to interface with a palm-pilot, a program for entering PIN numbers and pass-phrases, and a hash generator.
The Asciidoc package is a text document format for writing notes, documentation, articles, books, ebooks, slideshows, web pages, man pages and blogs. AsciiDoc files can be translated to many formats including HTML, PDF, EPUB, and man page.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://downloads.sourceforge.net/asciidoc/asciidoc-8.6.9.tar.gz
Download MD5 sum: c59018f105be8d022714b826b0be130a
Download size: 888 KB
Estimated disk space required: 3.9 MB
Estimated build time: less than 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/asciidoc
Install Asciidoc by running the following commands:
./configure --prefix=/usr \ --sysconfdir=/etc \ --docdir=/usr/share/doc/asciidoc-8.6.9 && make
This package does not come with a test suite.
Now, as the root
user:
make install && make docs
Last updated on 2017-08-24 18:56:23 -0700
The Bogofilter application is a mail filter that classifies mail as spam or ham (non-spam) by a statistical analysis of the message's header and content (body).
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://downloads.sourceforge.net/bogofilter/bogofilter-1.2.4.tar.gz
Download MD5 sum: 6ce27a692d2d4881e9898f3798dcf91c
Download size: 1.9 MB
Estimated disk space required: 16 MB
Estimated build time: 0.1 SBU
SQLite-3.20.0, QDBM and TokyoCabinet
If you do not install the recommended Gsl-2.4 package then a statically linked shipped version will be used instead.
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/bogofilter
Install Bogofilter by running the following commands:
./configure --prefix=/usr --sysconfdir=/etc/bogofilter && make
This application does not come with a test suite.
Now, as the root
user:
make install
--with-database=
: This switch
allows you to change the default database from db to either
qdbm, sqlite3 or tokyocabinet.
creates a more compact bogofilter working directory with a dump/load cycle. |
|
copies a bogofilter working directory to another directory. |
|
bundles a bogofilter working directory in tar format and copies it to standard output. |
|
is a fast Bayesian spam filter. |
|
used to separate messages into tokens and to test new versions of the lexer.l code. |
|
tries to find optimum parameter settings for bogofilter. |
|
upgrades bogofilter database to current version. |
|
dumps, loads, and maintains bogofilter database files. |
Last updated on 2017-08-30 17:02:22 -0700
The chrpath modify the dynamic library load path (rpath and runpath) of compiled programs and libraries.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://alioth.debian.org/frs/download.php/latestfile/813/chrpath-0.16.tar.gz
Download MD5 sum: 2bf8d1d1ee345fc8a7915576f5649982
Download size: 132 KB
Estimated disk space required: 1 MB
Estimated build time: less than 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/chrpath
Install chrpath by running the following commands:
./configure --prefix=/usr && make
This package does not come with a test suite.
Now, as the root
user:
make docdir=/usr/share/doc/chrpath-0.16 install
Last updated on 2017-08-23 21:43:54 -0700
Compface provides utilities and a library to convert from/to X-Face format, a 48x48 bitmap format used to carry thumbnails of email authors in a mail header.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://anduin.linuxfromscratch.org/BLFS/compface/compface-1.5.2.tar.gz
Download (FTP): ftp://anduin.linuxfromscratch.org/BLFS/compface/compface-1.5.2.tar.gz
Download MD5 sum: 62f4f79c0861ad292ba3cf77b4c48319
Download size: 47 KB
Estimated disk space required: 520 KB
Estimated build time: less than 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/compface
Install Compface by running the following commands:
./configure --prefix=/usr --mandir=/usr/share/man && make
This package does not come with a test suite.
Now, as the root
user:
make install && install -m755 -v xbm2xface.pl /usr/bin
is a filter for generating highly compressed representations of 48x48x1 face image files. |
|
is an inverse filter which performs an inverse transformation with no loss of data. |
|
is a script to generate xfaces. |
|
allows the compression and decompression algorithms to be used in other programs such as MTAs. |
Last updated on 2017-08-23 21:43:54 -0700
The Desktop File Utils package contains command line utilities for working with Desktop entries. These utilities are used by Desktop Environments and other applications to manipulate the MIME-types application databases and help adhere to the Desktop Entry Specification.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://www.freedesktop.org/software/desktop-file-utils/releases/desktop-file-utils-0.23.tar.xz
Download MD5 sum: 599133d51cc9a41bfec186414906b6f1
Download size: 132 KB
Estimated disk space required: 1.9 MB
Estimated build time: less than 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/desktop-file-utils
Install Desktop File Utils by running the following commands:
./configure --prefix=/usr && make
This package does not come with a test suite.
Now, as the root
user:
make install
The XDG Base Directory specification defines the standard locations for applications to place data and configuration files. These files can be used, for instance, to define the menu structure and menu items in a desktop environment.
The default location for configuration files to be
installed is /etc/xdg
, and
the default locations for data files are /usr/local/share
and /usr/share
. These locations can be
extended with the environment variables XDG_CONFIG_DIRS
and XDG_DATA_DIRS
, respectively. The
GNOME, KDE and XFCE environments respect these
settings.
When a package installs a .desktop
file to a location in one of the
base data directories, the database that maps MIME-types to
available applications can be updated. For instance, the
cache file at /usr/share/applications/mimeinfo.cache
can be rebuilt by executing the following command as the
root
user:
update-desktop-database /usr/share/applications
Last updated on 2017-08-20 20:24:54 -0700
The Graphviz package contains graph visualization software. Graph visualization is a way of representing structural information as diagrams of abstract graphs and networks. Graphviz has several main graph layout programs. It also has web and interactive graphical interfaces, auxiliary tools, libraries, and language bindings.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://graphviz.org/pub/graphviz/stable/SOURCES/graphviz-2.40.1.tar.gz
Download MD5 sum: 4ea6fd64603536406166600bcc296fc8
Download size: 24 MB
Estimated disk space required: 177 MB
Estimated build time: 0.7 SBU (using parallelism=4)
Optional patch to use Qt-5.9.1: http://www.linuxfromscratch.org/patches/blfs/8.1/graphviz-2.40.1-qt5-1.patch
FreeType-2.8, Fontconfig-2.12.4, Freeglut-3.0.0, gdk-pixbuf-2.36.8, libjpeg-turbo-1.5.2, libpng-1.6.31, librsvg-2.40.18, Pango-1.40.10 and Xorg Libraries
libglade-2.6.4, ghostscript-9.21, GTK+-2.24.31, Qt-5.9.1, DevIL, Electric Fence, libLASi, GD Library, and glitz
SWIG-3.0.12 (SWIG must be installed or no bindings will be built), Guile-2.2.2, OpenJDK-1.8.0.141, Lua-5.3.4, PHP-7.1.8, Python-2.7.13, Ruby-2.4.1, Tcl-8.6.7, Tk-8.6.7, Io, Mono, OCaml, and R
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/graphviz
If Ruby-2.4.1 is installed, and you want to build Ruby bindings, fix ruby's detection:
sed -e '/ruby/s/1\.9/2.4/' -i configure.ac
If Qt-5.9.1 is installed, and you want to build the gvedit graph editor, issue:
patch -p1 -i ../graphviz-2.40.1-qt5-1.patch
Install Graphviz by running the following commands:
sed -i '/LIBPOSTFIX="64"/s/64//' configure.ac && autoreconf && ./configure --prefix=/usr && make
This package does not come with a test suite that provides meaningful results.
Now, as the root
user:
make install
If desired, create a symbolic link in the system documents
directory to the documentation installed in /usr/share/graphviz/doc
using the following
command as the root
user:
ln -v -s /usr/share/graphviz/doc \ /usr/share/doc/graphviz-2.40.1
sed ... configure.ac: This command is needed to avoid installing files in /usr/lib64.
--with-javaincludedir="$JAVA_HOME/include
-I$JAVA_HOME/include/linux"
: If you have built
OpenJDK-1.8.0.141 in /opt, and you
want to build the JAVA bindings, it is necessary to specify
the location of the JAVA header files to configure. The
configure switch is designed for only one directory, but two
directories need to be included. This is possible
nevertheless by using the -I switch inside the variable.
There are no specific configuration requirements for
Graphviz. You may consider
installing the additional plugins and tools available from
the download page at http://www.graphviz.org/Download_source.php
for additional capabilities. If additional plugins are
installed, you can run dot
-c (as the root
user) to update the config
file in /usr/lib/graphviz
.
is a filter that takes a directed graph as input and outputs a copy of the graph with sufficient edges reversed to make the graph acyclic. |
|
decomposes graphs into their biconnected components, printing the components to standard output. |
|
decomposes graphs into their connected components, printing the components to standard output. |
|
draws graphs using a circular layout. |
|
takes as input a graph in DOT format, finds node clusters and augments the graph with this information. |
|
(needs GD Library) generates an image where each pixel is the difference between the corresponding pixel in each of the two source images. |
|
reads a stream of graphs and for each computes the distance of every node from sourcenode. |
|
draws directed graphs. It works well on DAGs and other graphs that can be drawn as hierarchies. It reads attributed graph files and writes drawings. By default, the output format dot is the input file with layout coordinates appended. |
|
converts between graphs represented in GXL and in
the DOT language. Unless a conversion type is
specified using a flag, gxl2dot will
deduce the type of conversion from the suffix of
the input file, a |
|
is a graph editor for the X Window System. It may be run as a standalone editor, or as a front end for applications that use graphs. It can control multiple windows viewing different graphs. |
|
edge coloring to disambiguate crossing edges. |
|
draws undirected graphs using a “spring” model. It relies on a force-directed approach in the spirit of Fruchterman and Reingold. |
|
is a graph analogue to wc in that it prints to standard output the number of nodes, edges, connected components or clusters contained in the input files. It also prints a total count for all graphs if more than one graph is given. |
|
converts a graph specified in the GML format to a graph in the GV (formerly DOT) format. |
|
converts a graph specified in the GRAPHML format to a graph in the GV (formerly DOT) format. |
|
converts a graph specified in the GV format to a graph in the GML format. |
|
converts a graph specified in the GV format to a graph in the GXL format. |
|
is a filter that sets node colors from initial seed values. Colors flow along edges from tail to head, and are averaged (as HSB vectors) at nodes. |
|
provides a simple graph editor and viewer. It allows many graphs to be viewed at the same time. The text of each graph is displayed in its own text window. |
|
generates a variety of simple, regularly-structured abstract graphs. |
|
takes as input a graph in DOT format, finds node clusters and produces a rendering of the graph as a geographic-style map, with clusters highlighted, in xdot format. |
|
is a pipeline for running gvmap. |
|
reads in a stream of graphs, combines the graphs into a single layout, and produces a single graph serving as the union of the input graphs. |
|
is a graph stream editor inspired by awk. It copies input graphs to its output, possibly transforming their structure and attributes, creating new graphs, or printing arbitrary information. |
|
converts between graphs represented in GXL and in
the DOT language. Unless a conversion type is
specified using a flag, gxl2dot will
deduce the type of conversion from the suffix of
the input file, a |
|
converts between graphs represented in GXL and in the GV language. |
|
is a two-view graphics editor for technical pictures. |
|
is a graph editor for the X Window System. It may be run as a standalone editor, or as a front end for applications that use graphs. It can control multiple windows viewing different graphs. |
|
converts a sparse matrix of the Matrix Market format to a graph in the GV (formerly DOT) format. |
|
draws undirected graphs using “spring” models. Input files must be formatted in the dot attributed graph language. By default, the output of neato is the input graph with layout coordinates appended. |
|
reads a stream of graphs and prints each in pretty-printed (canonical) format on stdout. If no files are given, it reads from stdin. |
|
draws clustered graphs. As input, it takes any graph in the DOT format. |
|
draws clustered graphs using a squarified treemap layout. As input, it takes any graph in the DOT format. |
|
reads directed graphs in the same format used by dot and removes subgraphs rooted at nodes specified on the command line via options. |
|
decomposes digraphs into strongly connected components and an auxiliary map of the relationship between components. In this map, each component is collapsed into a node. The resulting graphs are printed to stdout. |
|
draws undirected graphs using the “spring” model, but it uses a multi-scale approach to produce layouts of large graphs in a reasonably short time. |
|
computes the transitive reduction of directed graphs, and prints the resulting graphs to standard output. This removes edges implied by transitivity. Nodes and subgraphs are not otherwise affected. |
|
draws graphs using a radial layout. Basically, one node is chosen as the center and put at the origin. The remaining nodes are placed on a sequence of concentric circles centered about the origin, each a fixed radial distance from the previous circle. |
|
is a preprocessor to dot that is used to improve the aspect ratio of graphs having many leaves or disconnected nodes. The usual layout for such a graph is generally very wide or tall. |
|
is a simple script which launches the gvim or vim editor along with a GUI window showing the dot output of the edited file. |
|
manages run-time dictionaries using standard container data types: unordered set/multiset, ordered set/multiset, list, stack, and queue. |
|
supports graph programming by maintaining graphs in memory and reading and writing graph files. Graphs are composed of nodes, edges, and nested subgraphs. |
|
provides a context for applications wishing to manipulate and render graphs. It provides a command line parsing, common rendering code, and a plugin mechanism for renderers. |
|
contains functions to find the shortest path between two points in a simple polygon. |
|
provides support for parsing and deparsing graphical operations specificed by the xdot language. |
Last updated on 2017-08-29 05:43:57 -0700
The GTK-Doc package contains a code documenter. This is useful for extracting specially formatted comments from the code to create API documentation. This package is optional; if it is not installed, packages will not build the documentation. This does not mean that you will not have any documentation. If GTK-Doc is not available, the install process will copy any pre-built documentation to your system.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://ftp.gnome.org/pub/gnome/sources/gtk-doc/1.26/gtk-doc-1.26.tar.xz
Download (FTP): ftp://ftp.gnome.org/pub/gnome/sources/gtk-doc/1.26/gtk-doc-1.26.tar.xz
Download MD5 sum: 1ad4a1dbf804889fdc85f8eec45e8696
Download size: 692 KB
Estimated disk space required: 16 MB (with tests)
Estimated build time: 0.2 SBU (with tests)
docbook-xml-4.5, docbook-xsl-1.79.1, itstool-2.0.2, libxslt-1.1.29, and Python-2.7.13
dblatex or fop-2.2 (XML PDF support), GLib-2.52.3 (for the test suite), GNOME Doc Utils and Which-2.21 (required for the test suite and gtk-doc documentation), and six (for some tests)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gtk-doc
Install GTK-Doc by running the following commands:
./configure --prefix=/usr && make
To test the results, issue: make check.
Now, as the root
user:
make install
Last updated on 2017-08-29 13:15:22 -0700
The hd2u package contains an any to any text format converter.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://hany.sk/~hany/_data/hd2u/hd2u-1.0.3.tgz
Download MD5 sum: 8f6668fafb279aa19f956ec0515717b6
Download size: 64 KB
Estimated disk space required: 380 KB
Estimated build time: less than 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/hd2u
Install hd2u by running the following commands:
./configure --prefix=/usr && make
This package does not come with a test suite.
Now, as the root
user:
make install
Last updated on 2017-08-23 21:43:54 -0700
Highlight is an utility that converts source code to formatted text with syntax highlighting.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://www.andre-simon.de/zip/highlight-3.39.tar.bz2
Download MD5 sum: 09eb1c78c8599125a0a7fe616e850b76
Download size: 1.2 MB
Estimated disk space required: 17 MB (with gui)
Estimated build time: 0.9 SBU (with gui)
Qt-5.9.1 (to build the GUI front-end)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/highlight
To build Highlight run the following command:
make
To build the Qt5 GUI front-end, run the following command:
make gui
This package does not come with a test suite.
To install Highlight, run
the following command as the root
user:
make install
To install the GUI program, run the following command as the
root
user:
make install-gui
Last updated on 2017-08-19 15:43:35 -0700
IBus is an Intelligent Input Bus. It is a new input framework for Linux OS. It provides a full featured and user friendly input method user interface.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://github.com/ibus/ibus/releases/download/1.5.16/ibus-1.5.16.tar.gz
Download MD5 sum: 31ea7c1259c7285bd9d71f3000cbd95b
Download size: 2.3 MB
Estimated disk space required: 56 MB (with tests)
Estimated build time: 0.7 SBU (with tests)
DConf-0.26.0, ISO Codes-3.75, and Vala-0.36.4
gobject-introspection-1.52.1, GTK+-2.24.31, and libnotify-0.7.7
D-Bus Python-1.2.4 and PyGObject-3.24.1 (both to build the Python support library), GTK-Doc-1.26, Python-3.6.2, PyXDG-0.25 (for the ibus-setup), and libxkbcommon-0.7.2, Wayland-1.14.0 (both to build the Wayland support programs), and EmojiOne
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/ibus
Fix an issue with deprecated schema entries:
sed -i 's@/desktop/ibus@/org/freedesktop/ibus@g' \ data/ibus.schemas.in \ data/dconf/org.freedesktop.ibus.gschema.xml.in
Install IBus by running the following commands:
./configure --prefix=/usr \ --sysconfdir=/etc \ --disable-emoji-dict && rm -f tools/main.c && make
To test the results, issue: make -k check. Some tests may fail for unknown reasons.
Now, as the root
user:
make install
sed -ri ... data/ibus.schemas ...: This sed fixes deprecated entries in the gsettings schema templates installed by this package.
--disable-emoji-dict
:
This switch disables the use of emoticon dictionaries. Omit
if you installed the optional EmojiOne package.
rm -f tools/main.c: This command removes a generated file that was not removed when packaging.
--disable-gtk2
: This switch
disables building the GTK+ 2
immodule. Use it if you have not installed GTK+ 2.
--enable-python-library
: This
switch enables building the Python support library. Use it if have
installed the optional dependencies.
--enable-wayland
: This switch
enables building the Wayland
support programs. Use it if you have installed the optional
dependencies.
--with-python=python3
: This
switch makes the configure script look for
Python 3. Use it if you want
to build the Python 3
support library alongside the Python 2 one.
--enable-gtk-doc
: Use this
parameter if GTK-Doc is
installed and you wish to rebuild and install the API
documentation.
Last updated on 2017-08-22 13:27:15 -0700
ImageMagick underwent many changes in its libraries between versions 6 and 7. Most packages in BLFS which use ImageMagick can use version 7, but for the others this page will install only the libraries, headers and general documentation (not programs, manpages, perl modules), and it will rename the unversioned pkgconfig files so that they do not overwrite the same-named files from version 7.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://www.imagemagick.org/download/releases/ImageMagick-6.9.9-9.tar.xz
Download (FTP): ftp://ftp.imagemagick.org/pub/ImageMagick/releases/ImageMagick-6.9.9-9.tar.xz
Download MD5 sum: 182239bb642ca23f86206bf027caf536
Download size: 8.4 MB
Estimated disk space required: 180 MB, with typical dependencies (add 32 MB for the tests)
Estimated build time: 2.2 SBU - typical build (add 1.7 SBU for the tests)
The ImageMagick source
releases are updated frequently and the version shown above
may no longer be available from the download locations. You
can download a more recent version and use the existing
BLFS instructions to install it. Chances are that it will
work just fine, but this has not been tested by the BLFS
team. If the package version shown above is not available
from the locations shown above, or from the legacy/
directory at ftp.ImageMagick.org/pub/ImageMagick
you
can download it from the BLFS package server at Oregon
State University:
ftp://ftp.osuosl.org/pub/blfs/conglomeration/ImageMagick/.
The optional dependencies listed below should be installed if
you need support for the specific format or the conversion
tool the dependency provides. Many of the dependencies'
capabilities and uses are described in the
“MAGICK DELEGATES”
section of the README.txt
file
located in the source tree. Additional information about the
dependencies can be found in the Install-unix.txt
file located in the source
tree as well as issuing the ./configure --help command.
A summary of this information, as well as some additional
notes can be viewed on-line at
http://www.imagemagick.org/script/advanced-unix-installation.php.
Cups-2.2.4, cURL-7.55.1, FFmpeg-3.3.3, fftw-3.3.6-pl2 p7zip-16.02 (LZMA), SANE-1.0.27, Wget-1.19.1, xdg-utils-1.1.2, xterm-330, Dmalloc, Electric Fence, PGP or GnuPG-2.1.23 (you'll have to do some hacking to use GnuPG), Profiles, and ufraw (for raw formats listed in http://www.imagemagick.org/www/formats.html)
JasPer-2.0.12, Little CMS-1.19 or Little CMS-2.8, libexif-0.6.21, libjpeg-turbo-1.5.2, libpng-1.6.31, librsvg-2.40.18, LibTIFF-4.0.8, libwebp-0.6.0, OpenJPEG-2.2.0, Pango-1.40.10, DjVuLibre, FlashPIX (libfpx), FLIF, JBIG-KIT, libgxps, libraqm, Liquid Rescale, OpenEXR, and RALCGM (or ralcgm)
Dejavu fonts, ghostscript-9.21, Gimp-2.8.22, Graphviz-2.40.1, Inkscape-0.92.2, Blender, corefonts, GhostPCL, Gnuplot, POV-Ray, and Radiance
Enscript-1.6.6, texlive-20170524 (or install-tl-unx) AutoTrace, GeoExpress Command Line Utilities, AKA MrSID Utilities (binary package), hp2xx, html2ps, libwmf, UniConvertor, and Utah Raster Toolkit (or URT-3.1b)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/imagemagick
Install ImageMagick by running the following commands:
patch -Np1 -i ../ImageMagick-6.9.9-9-libs_only-1.patch && ./configure --prefix=/usr \ --sysconfdir=/etc \ --enable-hdri \ --with-modules \ --disable-static && make
Now, as the root
user:
make DOCUMENTATION_PATH=/usr/share/doc/imagemagick-6.9.9 install-libs-only
To test the installation, issue: make check. Note that the EPS, PS, and PDF tests require a working Ghostscript. One test in 'make check' needs “Helvetica” from “Ghostscript Standard Fonts”, which are optionally installed in ghostscript-9.21 - that test, and one other, might fail, but all the validation can still pass.
patch -Np1 -i ../ImageMagick-6.9.9-imagemagick6_libs_only-1.patch: Move unversioned pkgconfig files to versioned names and provide an option to only install libraries and associated files.
--enable-hdri
:
Enables building of a high dynamic range version of
ImageMagick.
--with-modules
:
Enables support for dynamically loadable modules.
--disable-static
:
This switch prevents installation of static versions of the
libraries.
--with-gslib
: Enables support to
use the Ghostscript shared
library.
--with-rsvg
: Enables support to
use the librsvg library.
--with-autotrace
: Enables support
to use the Autotrace
library.
--with-wmf
: Enables support to
use the libwmf library.
--with-gvc
: Enables support to
use GraphViz.
--with-windows-font-dir=
:
This option specifies the directory where the Windows
CoreFonts are installed.
<Some/Directory>
--with-dejavu-font-dir=
:
This option specifies the directory where the DejaVu fonts
are installed.
<Some/Directory>
The options and parameters listed above are the only ones you should have to pass to the configure script to activate all the delegate dependencies. All other dependencies will be automatically detected and utilized in the build if they are installed.
Last updated on 2017-08-24 19:07:28 -0700
ImageMagick is a collection of tools and libraries to read, write, and manipulate an image in various image formats. Image processing operations are available from the command line. Bindings for Perl and C++ are also available.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://www.imagemagick.org/download/releases/ImageMagick-7.0.6-10.tar.xz
Download (FTP): ftp://ftp.imagemagick.org/pub/ImageMagick/releases/ImageMagick-7.0.6-10.tar.xz
Download MD5 sum: 29031b3cc7a6e44b2334ad6692ba1736
Download size: 8.2 MB
Estimated disk space required: 184 MB, with typical dependencies
Estimated build time: 1.0 SBU - typical build with parallelism=4(add 3.2 SBU for the the validation suite)
The ImageMagick source
releases are updated frequently and the version shown above
may no longer be available from the download locations. You
can download a more recent version and use the existing
BLFS instructions to install it. Chances are that it will
work just fine, but this has not been tested by the BLFS
team. If the package version shown above is not available
from the locations shown above, or from the legacy/
directory at ftp.ImageMagick.org/pub/ImageMagick
you
can download it from the BLFS package server at Oregon
State University:
ftp://ftp.osuosl.org/pub/blfs/conglomeration/ImageMagick/.
The optional dependencies listed below should be installed if
you need support for the specific format or the conversion
tool the dependency provides. Many of the dependencies'
capabilities and uses are described in the
“MAGICK DELEGATES”
section of the README.txt
file
located in the source tree. Additional information about the
dependencies can be found in the Install-unix.txt
file located in the source
tree as well as issuing the ./configure --help command.
A summary of this information, as well as some additional
notes can be viewed on-line at
http://www.imagemagick.org/script/advanced-unix-installation.php.
Cups-2.2.4, cURL-7.55.1, FFmpeg-3.3.3, fftw-3.3.6-pl2, p7zip-16.02 (LZMA), SANE-1.0.27, Wget-1.19.1, xdg-utils-1.1.2, xterm-330, Dmalloc, Electric Fence, PGP or GnuPG-2.1.23 (you'll have to do some hacking to use GnuPG), Profiles, and ufraw (for raw formats listed in http://www.imagemagick.org/www/formats.html)
JasPer-2.0.12, Little CMS-1.19 or Little CMS-2.8, libexif-0.6.21, libjpeg-turbo-1.5.2, libpng-1.6.31, librsvg-2.40.18, LibTIFF-4.0.8, libwebp-0.6.0, OpenJPEG-2.2.0, Pango-1.40.10, DjVuLibre, FlashPIX (libfpx), FLIF, JBIG-KIT, libgxps, libraqm, Liquid Rescale, OpenEXR, and RALCGM (or ralcgm)
Dejavu fonts, ghostscript-9.21, Gimp-2.8.22, Graphviz-2.40.1, Inkscape-0.92.2, Blender, corefonts, GhostPCL, Gnuplot, POV-Ray, and Radiance
Enscript-1.6.6, texlive-20170524 (or install-tl-unx) AutoTrace, GeoExpress Command Line Utilities, AKA MrSID Utilities (binary package), hp2xx, html2ps, libwmf, UniConvertor, and Utah Raster Toolkit (or URT-3.1b)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/imagemagick
Install ImageMagick by running the following commands:
./configure --prefix=/usr \ --sysconfdir=/etc \ --enable-hdri \ --with-modules \ --with-perl \ --disable-static && make
Now, as the root
user:
make DOCUMENTATION_PATH=/usr/share/doc/imagemagick-7.0.6 install
To test the installation, issue: make check. A more comprehensive test is the ImageMagick validation suite. If make check has not been executed, run make tests/validate to compile it. Issue tests/validate 2>&1 | tee validate.log to run the validation suite. The result summary may be obtained with grep "validation suite" validate.log. Note that the EPS, PS, and PDF tests require a working Ghostscript. One test in 'make check' needs “Helvetica” from “Ghostscript Standard Fonts”, which are optionally installed in ghostscript-9.21 - that test, and one other, might fail, but all the validation can still pass.
--enable-hdri
:
Enables building of a high dynamic range version of
ImageMagick.
--with-modules
:
Enables support for dynamically loadable modules.
--with-perl
: Enables
building and installing of PerlMagick.
--disable-static
:
This switch prevents installation of static versions of the
libraries.
--with-gslib
: Enables support to
use the Ghostscript shared
library.
--with-rsvg
: Enables support to
use the librsvg library.
--with-autotrace
: Enables support
to use the Autotrace
library.
--with-wmf
: Enables support to
use the libwmf library.
--with-gvc
: Enables support to
use GraphViz.
--with-windows-font-dir=
:
This option specifies the directory where the Windows
CoreFonts are installed.
<Some/Directory>
--with-dejavu-font-dir=
:
This option specifies the directory where the DejaVu fonts
are installed.
<Some/Directory>
The options and parameters listed above are the only ones you should have to pass to the configure script to activate all the delegate dependencies. All other dependencies will be automatically detected and utilized in the build if they are installed.
animates a sequence of images. |
|
compares an image to a reconstructed image. |
|
composites various images into the given base image. |
|
processes a MSL script to create an image. |
|
converts image(s) from one format to another. |
|
displays an image. |
|
describes the format and characteristics of an image file. |
|
captures an X window. |
|
show information about the installed versions of the ImageMagick libraries. |
|
transforms an image. |
|
composites various images into a new image. |
|
streams one or more pixel components of an image or portion of the image to your choice of storage formats. |
|
allows the reading, manipulation and writing of a
large number of image file formats using the
ImageMagick
library. Run make in the
|
|
provides the C API for ImageMagick. |
|
is the recommended C API for ImageMagick. Unlike the MagickCore API it uses only a few opaque types. |
|
provides the C++ API for ImageMagick. |
Last updated on 2017-08-29 05:39:52 -0700
The ISO Codes package contains a list of country, language and currency names and it is used as a central database for accessing this data.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://pkg-isocodes.alioth.debian.org/downloads/iso-codes-3.75.tar.xz
Download MD5 sum: 9ba173b69d4360003414f23837597a92
Download size: 3.3 MB
Estimated disk space required: 78 MB
Estimated build time: 0.2 SBU (with tests)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/iso-codes
Install ISO Codes by running the following commands:
./configure --prefix=/usr && make
To test the results, issue: make check.
If you install ISO codes over a previous installed version, the install step will fail when creating some symlinks. In order to properly update them, run:
sed -i '/^LN_S/s/s/sfvn/' */Makefile
Now, as the root
user:
make install
Last updated on 2017-08-21 16:43:13 -0700
The lsof package is useful to LiSt Open Files for a given running application or process.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://www.mirrorservice.org/sites/lsof.itap.purdue.edu/pub/tools/unix/lsof/lsof_4.89.tar.bz2
Download MD5 sum: 1b9cd34f3fb86856a125abbf2be3a386
Download size: 768 KB
Estimated disk space required: 9.5 MB
Estimated build time: less than 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/lsof
The contents of the lsof tarball include another tarball with the source code, which needs, in turn, to be unpacked. Install lsof by running the following commands:
tar -xf lsof_4.89_src.tar && cd lsof_4.89_src && ./Configure -n linux && make CFGL="-L./lib -ltirpc"
This package does not come with a working test suite.
Now, as the root
user:
install -v -m0755 -o root -g root lsof /usr/bin && install -v lsof.8 /usr/share/man/man8
./Configure -n linux: Avoid AFS, customization, and inventory checks, and use the linux dialect.
make CFGL="-L./lib -ltirpc": Add the libtirpc libraries location to the make command.
Last updated on 2017-08-20 15:06:11 -0700
The PIN-Entry package contains a collection of simple PIN or pass-phrase entry dialogs which utilize the Assuan protocol as described by the Ägypten project. PIN-Entry programs are usually invoked by the gpg-agent daemon, but can be run from the command line as well. There are programs for various text-based and GUI environments, including interfaces designed for Ncurses (text-based), and for the common GTK and Qt toolkits.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://www.gnupg.org/ftp/gcrypt/pinentry/pinentry-1.0.0.tar.bz2
Download (FTP): ftp://ftp.gnupg.org/gcrypt/pinentry/pinentry-1.0.0.tar.bz2
Download MD5 sum: 4a3fad8b31f9b4c5526c8837495015dc
Download size: 428 KB
Estimated disk space required: 7.7 MB
Estimated build time: less than 0.1 SBU
Libassuan-2.4.3 and libgpg-error-1.27
Emacs-25.2, Gcr-3.20.0, GTK+-2.24.31, GTK+-3.22.18, libsecret-0.18.5, and Qt-5.9.1
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/pinentry
Install PIN-Entry by running the following commands:
./configure --prefix=/usr && make
This package does not come with a test suite.
Now, as the root
user:
make install
--enable-inside-emacs=yes/no
:
Default is no.
--enable-pinentry-qt=yes/no
:
Default is yes.
--enable-pinentry-gtk2=yes/no
:
Default is yes. Even if other pinentry-* is installed,
pinentry will
be a symlink to pinentry-gtk-2.
--enable-pinentry-gnome3=yes/no
:
Default is yes. Actually, it is the gtk3 pinentry.
is a symbolic link to the default PIN-Entry program. |
|
is an Ncurses text-based PIN-Entry helper program. |
|
is an Emacs version of the PIN-Entry helper program. |
|
is a GNOME-3 PIN-Entry helper program. |
|
is a GTK+2 PIN-Entry program program. |
|
is a Qt4 or 5 PIN-Entry helper program. |
|
is a tty PIN-Entry helper program. |
Last updated on 2017-08-26 21:14:29 -0700
The Rarian package is a documentation metadata library based on the proposed Freedesktop.org spec. Rarian is designed to be a replacement for ScrollKeeper.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://ftp.gnome.org/pub/gnome/sources/rarian/0.8/rarian-0.8.1.tar.bz2
Download (FTP): ftp://ftp.gnome.org/pub/gnome/sources/rarian/0.8/rarian-0.8.1.tar.bz2
Download MD5 sum: 75091185e13da67a0ff4279de1757b94
Download size: 317 KB
Estimated disk space required: 6 MB
Estimated build time: 0.2 SBU
libxslt-1.1.29 (rarian-sk-extract will not be built without this) and docbook-xml-4.5 (without this, Rarian scripts source DTDs from the net)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/rarian
Install Rarian by running the following commands:
./configure --prefix=/usr \ --disable-static \ --localstatedir=/var && make
This package does not come with a test suite.
Now, as the root
user:
make install
--disable-static
:
This switch prevents installation of static versions of the
libraries.
prints a nice list of all available documents found by the library. |
|
emulates scrollkeeper-config. |
|
is a wrapper around xsltproc to mimic scrollkeeper-extract. |
|
generates a unique (random) uuid. |
|
gets a content list (category tree). |
|
is a simple wrapper to make calling scrollkeeper-get-cl easier. |
|
is a simple wrapper to make calling scrollkeeper-get-cl (extended) easier. |
|
emulates scrollkeeper-get-index-from-index-from-docpath, scrollkeeper-get-toc-from-docpath, and scrollkeeper-get-toc-from-id. |
|
emulates scrollkeeper-install and scrollkeeper-uninstall. |
|
takes in a directory full of omf's, reads and parses them and spews out an equivalent scroll file. |
|
creates the omf file by reading an existing omf file and replacing the url for a resource with the url. |
|
is a simple wrapper script to emulate scrollkeeper-rebuilddb. |
|
is compatible with the scrollkeeper-update script that's required to be run when installing new omf files. It converts the omf files into new-style scrolls. |
|
is the API to build a list of available meta data files and allows access to these. |
Last updated on 2017-08-29 10:55:51 -0700
The rep-gtk package contains a Lisp and GTK binding. This is useful for extending GTK-2 and GDK libraries with Lisp. Starting at rep-gtk-0.15, the package contains the bindings to GTK and uses the same instructions. Both can be installed, if needed.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://download.tuxfamily.org/librep/rep-gtk/rep-gtk_0.90.8.3.tar.xz
Download MD5 sum: b20f72cf00d316d35fa7f84a6e7532af
Download size: 120 KB
Estimated disk space required: 13 MB
Estimated build time: 0.1 SBU
GTK+-2.24.31 and librep-0.92.7
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/rep-gtk
Install rep-gtk by running the following commands:
./autogen.sh --prefix=/usr && make
This package does not come with a test suite.
Now, as the root
user:
make install
Last updated on 2017-08-25 21:58:04 -0700
Screen is a terminal multiplexor that runs several separate processes, typically interactive shells, on a single physical character-based terminal. Each virtual terminal emulates a DEC VT100 plus several ANSI X3.64 and ISO 2022 functions and also provides configurable input and output translation, serial port support, configurable logging, multi-user support, and many character encodings, including UTF-8. Screen sessions can be detached and resumed later on a different terminal.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://ftp.gnu.org/gnu/screen/screen-4.5.1.tar.gz
Download (FTP): ftp://ftp.gnu.org/gnu/screen/screen-4.5.1.tar.gz
Download MD5 sum: a8c5da2f42f8a18fa4dada2419d1549b
Download size: 944 KB
Estimated disk space required: 9.2 MB
Estimated build time: 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/screen
Install Screen by running the following commands:
./configure --prefix=/usr \ --infodir=/usr/share/info \ --mandir=/usr/share/man \ --with-socket-dir=/run/screen \ --with-pty-group=5 \ --with-sys-screenrc=/etc/screenrc && sed -i -e "s%/usr/local/etc/screenrc%/etc/screenrc%" {etc,doc}/* && make
This package does not come with a test suite.
Now, as the root
user:
make install && install -m 644 etc/etcscreenrc /etc/screenrc
--with-socket-dir=/run/screen
:
This option places the per-user sockets in a standard
location.
--with-sys-screenrc=/etc/screenrc
:
This option places the global screenrc file in /etc
.
--with-pty-group=5
:
This option sets the gid to the value used by LFS.
Older versions of LFS use the value 4 for the tty group. If you are using LFS version 7.1 or older, change the pty-group option to 4.
sed -i -e "s%/usr/local/etc/screenrc%/etc/screenrc%" {etc,doc}/*: This command corrects the configuration and documentation files to the location that is used here for the global screenrc file.
Last updated on 2017-08-21 11:12:53 -0700
The Shared Mime Info package contains a MIME database. This allows central updates of MIME information for all supporting applications.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://people.freedesktop.org/~hadess/shared-mime-info-1.8.tar.xz
Download MD5 sum: f6dcadce764605552fc956563efa058c
Download size: 576 KB
Estimated disk space required: 11 MB
Estimated build time: 0.1 SBU (on a minimal system, up to 0.4 SBU on a fully loaded desktop)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/shared-mime-info
If your processor is not a very recent Intel, you may
need to use make -j1
for this
package.
Install Shared Mime Info by running the following commands:
./configure --prefix=/usr && make
To test the results, issue: make check.
Now, as the root
user:
make install
Last updated on 2017-08-20 20:24:54 -0700
The Sharutils package contains utilities that can create 'shell' archives.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://ftp.gnu.org/gnu/sharutils/sharutils-4.15.2.tar.xz
Download (FTP): ftp://ftp.gnu.org/gnu/sharutils/sharutils-4.15.2.tar.xz
Download MD5 sum: 5975ce21da36491d7aa6dc2b0d9788e0
Download size: 1.1 MB
Estimated disk space required: 22 MB (with the test suite)
Estimated build time: 0.4 SBU (with the test suite)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/sharutils
Install Sharutils by running the following commands:
./configure --prefix=/usr && make
To test the results, issue make check.
Now, as the root
user:
make install
creates "shell archives" (or shar files) which are in text format and can be mailed. |
|
unpacks a shar file. |
|
reads a file (or by default the standard input) and writes an encoded version to the standard output. The encoding uses only printing ASCII characters. |
|
reads a file (or by default the standard input) and decodes the uuencoded version to the standard output. |
Last updated on 2017-08-16 21:41:37 -0700
The Tidy HTML5 package contains a command line tool and libraries used to read HTML, XHTML and XML files and write cleaned up markup. It detects and corrects many common coding errors and strives to produce visually equivalent markup that is both W3C compliant and compatible with most browsers.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://github.com/htacg/tidy-html5/releases/download/5.4.0/tidy-html5-5.4.0.tar.gz
Download MD5 sum: 7e121e1da7e21dc47610b87aae4b4f65
Download size: 512 KB
Estimated disk space required: 8.4 MB
Estimated build time: 0.2 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/tidy
Install Tidy HTML5 by running the following commands:
cd build/cmake && cmake -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_BUILD_TYPE=Release \ -DBUILD_TAB2SPACE=ON \ ../.. && make
This package does not come with a test suite.
Now, as the root
user:
make install && install -v -m755 tab2space /usr/bin
-DCMAKE_BUILD_TYPE=Release
:
This switch is used to build the release library without any
debug `assert` in the code.
-DBUILD_TAB2SPACE=ON
:
This switch is used to enable building the tab2space utility.
Last updated on 2017-08-18 12:42:43 -0700
The time utility is a program that measures many of the CPU resources, such as time and memory, that other programs use. The GNU version can format the output in arbitrary ways by using a printf-style format string to include various resource measurements.
Although the shell has a builtin command providing similar functionalities, this utility is reuired by the LSB.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://ftp.gnu.org/gnu/time/time-1.7.tar.gz
Download (FTP): ftp://ftp.gnu.org/gnu/time/time-1.7.tar.gz
Download MD5 sum: e38d2b8b34b1ca259cf7b053caac32b3
Download size: 101 KB
Estimated disk space required: 640 KB
Estimated build time: less than 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/time
Install Time by running the following commands:
sed -i 's/$(ACLOCAL)//' Makefile.in && sed -i 's/lu", ptok ((UL) resp->ru.ru_maxrss)/ld", resp->ru.ru_maxrss/' time.c && ./configure --prefix=/usr --infodir=/usr/share/info && make
This package does not come with a test suite.
Now, as the root
user:
make install
Last updated on 2017-08-23 21:43:54 -0700
The tree application, as the name suggests, is useful to display, in a terminal, directory contents, including directories, files, links.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://mama.indstate.edu/users/ice/tree/src/tree-1.7.0.tgz
Download (FTP): ftp://mama.indstate.edu/linux/tree/tree-1.7.0.tgz
Download MD5 sum: abe3e03e469c542d8e157cdd93f4d8a6
Download size: 48 KB
Estimated disk space required: 656 KB
Estimated build time: less than 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/tree
Install tree by running the following commands:
make
This package does not come with a test suite.
Now, as the root
user:
make MANDIR=/usr/share/man/man1 install && chmod -v 644 /usr/share/man/man1/tree.1
Last updated on 2017-08-23 21:43:54 -0700
The unixODBC package is an Open Source ODBC (Open DataBase Connectivity) sub-system and an ODBC SDK for Linux, Mac OSX, and UNIX. ODBC is an open specification for providing application developers with a predictable API with which to access data sources. Data sources include optional SQL Servers and any data source with an ODBC Driver. unixODBC contains the following components used to assist with the manipulation of ODBC data sources: a driver manager, an installer library and command line tool, command line tools to help install a driver and work with SQL, drivers and driver setup libraries.
This package is known to build and work properly using an LFS-8.1 platform.
Download (FTP): ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-2.3.4.tar.gz
Download MD5 sum: bd25d261ca1808c947cb687e2034be81
Download size: 1.8 MB
Estimated disk space required: 34 MB
Estimated build time: 0.4 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/unixodbc
Install unixODBC by running the following commands:
./configure --prefix=/usr \ --sysconfdir=/etc/unixODBC && make
This package does not come with a test suite.
Now, as the root
user:
make install && find doc -name "Makefile*" -delete && chmod 644 doc/{lst,ProgrammerManual/Tutorial}/* && install -v -m755 -d /usr/share/doc/unixODBC-2.3.4 && cp -v -R doc/* /usr/share/doc/unixODBC-2.3.4
--enable-drivers
: This parameter
enables building the drivers that were installed by default
in previous versions.
--enable-drivers-conf
: This
parameter enables building the driver configuration libraries
that were installed by default in previous versions.
The files in /etc/unixODBC
are meant to be configured by the system administrator (or
the ODBC site administrator if appropriate privileges are
granted to /etc/unixODBC
).
These files are not meant to be directly edited. The ODBC
installer library is responsible for reading and writing
the unixODBC config files.
Unfortunately, there are not many man, or any info pages for the
various programs available in the unixODBC package. Along with the
information in the “Short
Descriptions” below and the documentation
installed in /usr/share/doc/unixODBC-2.3.4
, there are
many README
files throughout
the source tree where the use and functionality of the
programs can be found. Additionally, you can use the
parameter -?
for syntax and
usage information. Lastly, the unixODBC web site at http://www.unixodbc.org/ has
very good information.
is a utility used to check a share library to see if it can be loaded and if a given symbol exists in it. |
|
is a utility which can be used to submit SQL to a data source and to format/output results. It can be used in batch or interactive mode. |
|
provides the same functionality as the isql program. |
|
is used to find out details about the installation of the unixODBC package. |
|
is a utility created for install script/RPM
writers. It is a command line interface to key
functionality in the |
|
is a utility which attempts to check whether an ODBC driver was built with 32-bit or 64-bit SQLLEN types. |
Last updated on 2017-08-20 20:24:54 -0700
Xdg-user-dirs is a tool to help manage “well known” user directories like the desktop folder and the music folder. It also handles localization (i.e. translation) of the filenames.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://user-dirs.freedesktop.org/releases/xdg-user-dirs-0.16.tar.gz
Download MD5 sum: 2c0703d02df610c9eaf0c22431bdabae
Download size: 252 KB
Estimated disk space required: 1.9 MB
Estimated build time: less than 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/xdg-user-dirs
Install xdg-user-dirs by running the following commands:
./configure --prefix=/usr --sysconfdir=/etc && make
This package does not come with a test suite.
Now, as the root
user:
make install
Last updated on 2017-08-26 15:47:53 -0700
This chapter contains mainly hardware utilities. It also contains some applications used by other applications in the book for installation or configuration purposes.
The acpid (Advanced Configuration and Power Interface event daemon) is a completely flexible, totally extensible daemon for delivering ACPI events. It listens on netlink interface and when an event occurs, executes programs to handle the event. The programs it executes are configured through a set of configuration files, which can be dropped into place by packages or by the user.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://downloads.sourceforge.net/acpid2/acpid-2.0.28.tar.xz
Download MD5 sum: 0432407b5ff75ae8e08afb43052fde2b
Download size: 158 KB
Estimated disk space required: 1.9 MB
Estimated build time: less than 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/acpid
Install acpid by running the following commands:
./configure --prefix=/usr \ --docdir=/usr/share/doc/acpid-2.0.28 && make
This package does not come with a test suite.
Now, as the root
user:
make install && install -v -m755 -d /etc/acpi/events && cp -r samples /usr/share/doc/acpid-2.0.28
acpid is configured by user
defined events. Place event files under /etc/acpi/events
directory. If an event
occurs, acpid
recurses through the event files in order to see if the regex
defined after "event" matches. If they do, action is
executed.
The following brief example will suspend the system when the laptop lid is closed (it requires pm-utils-1.4.1):
cat > /etc/acpi/events/lid << "EOF"event=button/lid action=/etc/acpi/lid.sh
EOF cat > /etc/acpi/lid.sh << "EOF"#!/bin/sh /bin/grep -q open /proc/acpi/button/lid/LID/state && exit 0 /usr/sbin/pm-suspend
EOF chmod +x /etc/acpi/lid.sh
Unfortunately, not every computer labels ACPI events in the same way. To determine how your buttons are recognized, use the acpi_listen tool. Also, look in package documentation's samples directory for more examples.
To start the acpid daemon at boot,
install the systemd unit from the blfs-systemd-units-20160602
package by running the following command as the
root
user:
make install-acpid
This package uses socket based activation and will be started when something needs it. No standalone unit file is provided for this package.
is a program that listens for ACPI events and executes the rules that match the received event. |
|
is a simple tool which connects to acpid and listens for events. |
|
is a monitor program that connects to three sources of ACPI events (events file, netlink and input layer) and then reports on what it sees while it is connected. |
Last updated on 2017-08-23 21:43:54 -0700
The at package provide delayed job execution and batch processing. It is required for Linux Standards Base (LSB) conformance.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://ftp.de.debian.org/debian/pool/main/a/at/at_3.1.20.orig.tar.gz
Download (FTP): ftp://ftp.de.debian.org/debian/pool/main/a/at/at_3.1.20.orig.tar.gz
Download MD5 sum: e7bd7b785b2cbb17e133d6bdc0fb099e
Download size: 128 KB
Estimated disk space required: 1.8 MB
Estimated build time: less than 0.1 SBU
An MTA
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/at
Before building at, as the
root
user you should create
the group and user atd
which
will run the atd daemon. Also ensure the
working directory for the daemon exists:
groupadd -g 17 atd && useradd -d /dev/null -c "atd daemon" -g atd -s /bin/false -u 17 atd && mkdir -p /var/spool/cron
Fix Makefile.in
so that the
documentation directory is installed in the specified docdir:
sed -i '/docdir/s/=.*/= @docdir@/' Makefile.in
Regenerate the build files to be consistent with this package version:
autoreconf
Install at with the following commands:
./configure --with-daemon_username=atd \ --with-daemon_groupname=atd \ SENDMAIL=/usr/sbin/sendmail \ --with-systemdsystemunitdir=/lib/systemd/system && make -j1
This package does not come with a test suite.
Now, as the root
user:
make install \ docdir=/usr/share/doc/at-3.1.20 \ atdocdir=/usr/share/doc/at-3.1.20
queues, examines or deletes jobs for later execution. |
|
is the daemon that runs jobs queued for later execution. |
|
lists the user's pending jobs, or all jobs, if superuser. |
|
deletes jobs, identified by their job number. |
|
runs jobs queued for later execution. |
|
is a script that executes commands when system load levels permit. |
Last updated on 2017-08-23 21:43:54 -0700
Autofs controls the operation of the automount daemons. The automount daemons automatically mount filesystems when they are accessed and unmount them after a period of inactivity. This is done based on a set of pre-configured maps.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://www.kernel.org/pub/linux/daemons/autofs/v5/autofs-5.1.3.tar.xz
Download MD5 sum: 57a6791e596b8b8ee2c4c50420881180
Download size: 296 KB
Estimated disk space required: 7.7 MB
Estimated build time: 0.1 SBU
libtirpc-1.0.2, nfs-utils-2.1.1, libxml2-2.9.4, MIT Kerberos V5-1.15.1, OpenLDAP-2.4.45 (client only), and Cyrus SASL-2.1.26
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/autofs
Verify that automounter kernel support has been enabled:
File systems --->
<*/M> Kernel automounter version 4 support (also supports v3) [CONFIG_AUTOFS4_FS]
Optionally, enable the following options in the kernel configuration:
File systems --->
[*] Network File Systems ---> [CONFIG_NETWORK_FILESYSTEMS]
<*/M> NFS client support [CONFIG_NFS_FS]
<*/M> CIFS support (advanced network filesystem, SMBFS successor) [CONFIG_CIFS]
Recompile and install the new kernel, if necessary.
Install Autofs by running the following commands:
./configure --prefix=/ \ --with-systemd \ --without-openldap \ --mandir=/usr/share/man && CFLAGS+='-I/usr/include/tirpc/' make
This package does not come with a test suite.
Now, as the root
user:
make install
--with-systemd
: This
switch enables installation of the bundled systemd units.
--without-openldap
:
This switch disables openldap if found. If openldap is
desired, omit this switch. Note that openldap support in
autofs requires MIT Kerberos V5-1.15.1.
--with-libtirpc
: This switch
enables libtirpc support if available.
The installation process creates auto.master
, auto.misc
, auto.smb
, and auto.net
. Replace the auto.master
file with the following
commands as the root
user:
mv /etc/auto.master /etc/auto.master.bak &&
cat > /etc/auto.master << "EOF"
# Begin /etc/auto.master
/media/auto /etc/auto.misc --ghost
#/home /etc/auto.home
# End /etc/auto.master
EOF
This file creates a new media directory, /media/auto
that will overlay any
existing directory of the same name. In this example, the
file, /etc/auto.misc
, has a
line:
cd -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom
that will mount a cdrom as /media/auto/cd
if that directory is
accessed. The --ghost
option
tells the automounter to create “ghost” versions (i.e. empty
directories) of all the mount points listed in the
configuration file regardless whether any of the file
systems are actually mounted or not. This is very
convenient and highly recommended, because it will show you
the available auto-mountable file systems as existing
directories, even when their file systems aren't currently
mounted. Without the --ghost
option, you'll have to remember the names of the
directories. As soon as you try to access one of them, the
directory will be created and the file system will be
mounted. When the file system gets unmounted again, the
directory is destroyed too, unless the --ghost
option was given.
An alternative method would be to specify another
automount location such as /var/lib/auto/cdrom
and create a
symbolic link from /media/cdrom
to the automount location.
The auto.misc
file must be
configured to your working hardware. The loaded
configuration file should load your cdrom if /dev/cdrom
is active or it can be edited
to match your device setup. Examples for floppies are
available in the file and easily activated. Documentation
for this file is available using the man 5 autofs command.
In the second line, if enabled, a user's home directory
would be mounted via NFS upon login. The /etc/home.auto
would need to exist and
have an entry similar to:
joe example.org:/export/home/joe
where the directory /export/home/joe
is exported via NFS from
the system example.org. NFS shares are covered on the next
page.
This package could also be used to mount SMB shares, however that feature is not configured in these instructions. For additional configuration information, see the man pages for auto.master(5). There are also web resources such as this AUTOFS HOWTO available.
To start Autofs at boot,
enable the previously installed systemd unit by running the
following command as the root
user:
systemctl enable autofs
You can also specify OPTIONS
variable in the /etc/sysconfig/autofs
file with any
additional parameters that you might want to pass to the
automount daemon.
Last updated on 2017-08-29 10:55:51 -0700
The BlueZ package contains the Bluetooth protocol stack for Linux.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://www.kernel.org/pub/linux/bluetooth/bluez-5.46.tar.xz
Download MD5 sum: 913f35d6fa4ca5772c53adb936bf1947
Download size: 1.6 MB
Estimated disk space required: 55 MB (add 13 MB for tests)
Estimated build time: 0.5 SBU (add 0.3 SBU for tests)
Optional patch (required to work properly with gnome-bluetooth and/or kde bluedevil): http://www.linuxfromscratch.org/patches/blfs/8.1/bluez-5.46-obexd_without_systemd-1.patch
dbus-1.10.22, GLib-2.52.3, and libical-2.0.0
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/bluez
Enable the following options in the kernel configuration and recompile the kernel if necessary:
[*] Networking support ---> [CONFIG_NET]
</M> Bluetooth subsystem support ---> [CONFIG_BT]
<*/M> RFCOMM protocol support [CONFIG_BT_RFCOMM]
[*] RFCOMM TTY support [CONFIG_BT_RFCOMM_TTY]
<*/M> BNEP protocol support [CONFIG_BT_BNEP]
[*] Multicast filter support [CONFIG_BT_BNEP_MC_FILTER]
[*] Protocol filter support [CONFIG_BT_BNEP_PROTO_FILTER]
<*/M> HIDP protocol support [CONFIG_BT_HIDP]
Bluetooth device drivers --->
(Select the appropriate drivers for your Bluetooth hardware)
<*/M> RF switch subsystem support ---> [CONFIG_RFKILL]
If you are going to use BlueZ with gnome-bluetooth and/or kde bluedevil, apply the following patch:
patch -Np1 -i ../bluez-5.46-obexd_without_systemd-1.patch
Install BlueZ by running the following commands:
./configure --prefix=/usr \ --sysconfdir=/etc \ --localstatedir=/var \ --enable-library && make
To test the results, issue: make check
.
Now, as the root
user:
make install && ln -svf ../libexec/bluetooth/bluetoothd /usr/sbin
Install the main configuration file as the root
user:
install -v -dm755 /etc/bluetooth && install -v -m644 src/main.conf /etc/bluetooth/main.conf
If desired, install the API documentation as the root
user:
install -v -dm755 /usr/share/doc/bluez-5.46 && install -v -m644 doc/*.txt /usr/share/doc/bluez-5.46
--enable-library
:
This switch enables building the BlueZ 4 compatibility library which is
required by some applications.
ln -svf ../libexec/bluetooth/bluetoothd /usr/sbin: This command makes access to the bluetooth daemon more convenient.
/etc/bluetooth/main.conf
is
installed automatically during the install. Additionally,
there are three supplementary configuration files.
/etc/sysconfig/bluetooth is installed as a part of the boot
script below. In addition, you optionally can install the
following, as the root
user:
cat > /etc/bluetooth/rfcomm.conf << "EOF"
# Start rfcomm.conf
# Set up the RFCOMM configuration of the Bluetooth subsystem in the Linux kernel.
# Use one line per command
# See the rfcomm man page for options
# End of rfcomm.conf
EOF
cat > /etc/bluetooth/uart.conf << "EOF"
# Start uart.conf
# Attach serial devices via UART HCI to BlueZ stack
# Use one line per device
# See the hciattach man page for options
# End of uart.conf
EOF
is used to issue BlueCore commands to Cambridge Silicon Radio devices. |
|
is a Bluemoon configuration utility. |
|
is the interactive Bluetooth control program. |
|
is the Bluetooth daemon. |
|
provides access to the Bluetooth subsystem monitor infrastructure for reading HCI traces. |
|
is used to set up, maintain, and inspect the CIP configuration of the Bluetooth subsystem in the Linux kernel. |
|
is used to attach a serial UART to the Bluetooth stack as HCI transport interface. |
|
is used to configure Bluetooth devices. |
|
reads raw HCI data coming from and going to a Bluetooth device and prints to screen commands, events and data in a human-readable form. |
|
is used to configure Bluetooth connections and send some special command to Bluetooth devices. |
|
is used to convert a file needed by Broadcom devices to hcd (Broadcom bluetooth firmware) format. |
|
is used to send a L2CAP echo request to the Bluetooth MAC address given in dotted hex notation. |
|
is a L2CAP testing program. |
|
is used to test RFCOMM communications on the Bluetooth stack. |
|
is used to set up, maintain, and inspect the RFCOMM configuration of the Bluetooth subsystem in the Linux kernel. |
|
is used to perform SDP queries on Bluetooth devices. |
|
contains the BlueZ 4 API functions. |
Last updated on 2017-08-22 13:27:15 -0700
Colord is a system activated daemon that maps devices to color profiles. It is used by GNOME Color Manager for system integration and use when there are no users logged in.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://www.freedesktop.org/software/colord/releases/colord-1.2.12.tar.xz
Download MD5 sum: 80b106ba18a43c7eeaf2d9a2b8c5725b
Download size: 1.2 MB
Estimated disk space required: 37 MB (without tests)
Estimated build time: 0.4 SBU (without tests)
dbus-1.10.22, GLib-2.52.3, Little CMS-2.8, and SQLite-3.20.0
gobject-introspection-1.52.1, libgudev-231, libgusb-0.2.11, Polkit-0.113+git_2919920+js38, Systemd-234, and Vala-0.36.4
DocBook-utils-0.6.14, gnome-desktop-3.24.2 and colord-gtk-0.1.26 (to build the example tools), GTK-Doc-1.26, libxslt-1.1.29, SANE-1.0.27, ArgllCMS, and Bash Completion,
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/colord
There should be a dedicated user and group to take control of
the colord
daemon after it is started. Issue the following commands as
the root
user:
groupadd -g 71 colord && useradd -c "Color Daemon Owner" -d /var/lib/colord -u 71 \ -g colord -s /bin/false colord
Install Colord by running the following commands:
./configure --prefix=/usr \ --sysconfdir=/etc \ --localstatedir=/var \ --with-daemon-user=colord \ --enable-vala \ --disable-argyllcms-sensor \ --disable-bash-completion \ --disable-static && make
Now, as the root
user:
make install
To test the results, issue: make -k check. For unknown reasons, some tests may fail. Note that the system-wide D-Bus daemon must be running or the tests will fail.
--with-daemon-user=colord
: This
switch is used so the colord daemon will run as
an unprivileged user instead of root
user.
--enable-vala
: This
switch enables building of the Vala bindings. Remove if you
don't have Vala-0.36.4 installed.
--disable-argyllcms-sensor
:
Disables ArgllCMS sensor driver.
--disable-bash-completion
: This
switch disables Bash
Completion support for Colord apps.
--disable-static
:
This switch prevents installation of static versions of the
libraries.
--enable-gtk-doc
: Use this switch
if GTK-Doc is installed and
you wish to build and install the API documentation.
--disable-gusb
: Use this switch
if you don't have libgusb
installed.
--disable-udev
: Use this switch
if you don't have GUdev installed.
--disable-polkit
: Use this switch
if you don't have Polkit
installed.
is a Color Manager Profile Creation Tool. |
|
is a tool used to fix metadata in ICC profiles. |
|
dumps the contents of an ICC profile as human readable text. |
|
is a Color Manager Testing Tool. |
|
is a text-mode program that allows you to interact with colord on the command line. |
|
contains the Colord API functions. |
Last updated on 2017-08-22 13:27:15 -0700
Colord is a system service that makes it easy to manage, install, and generate color profiles. It is used mainly by GNOME Color Manager for system integration and use when no users are logged in.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://www.freedesktop.org/software/colord/releases/colord-1.3.5.tar.xz
Download MD5 sum: a8e7fcf0a45383ca7a65cef91ca5e019
Download size: 1.2 MB
Estimated disk space required: 44 MB (with tests)
Estimated build time: 0.7 SBU (with tests)
dbus-1.10.22, GLib-2.52.3, Little CMS-2.8, and SQLite-3.20.0
gobject-introspection-1.52.1, libgudev-231, libgusb-0.2.11, Polkit-0.113+git_2919920+js38, Systemd-234, and Vala-0.36.4
DocBook-utils-0.6.14, gnome-desktop-3.24.2 and colord-gtk-0.1.26 (to build the example tools), GTK-Doc-1.26, libxslt-1.1.29, SANE-1.0.27, ArgLLCMS, and Bash Completion
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/colord1
This package will overwrite any previous version of Colord that you may have on your system. This package is a development version and is only intended to be used by gnome-color-manager at this time.
There should be a dedicated user and group to take control of
the colord daemon after it has started. Issue the following
commands as the root
user:
groupadd -g 71 colord && useradd -c "Color Daemon Owner" -d /var/lib/colord -u 71 \ -g colord -s /bin/false colord
Install Colord by running the following commands:
./configure --prefix=/usr \ --sysconfdir=/etc \ --localstatedir=/var \ --with-daemon-user=colord \ --enable-vala \ --enable-daemon \ --enable-session-helper \ --enable-libcolordcompat \ --disable-rpath \ --disable-argyllcms-sensor \ --disable-bash-completion \ --disable-static && make
Now, as the root
user:
make install
To test the results, issue: make -k check. At least one
test, ./lib/colord/.libs/lt-cd-test-daemon
, may
fail. The test suite must be run after the package is
installed, and the system-wide D-Bus Daemon must be running.
--with-daemon-user=colord
: This
switch is used so the colord daemon will run as an
unprivileged user instead of the root
user.
--enable-vala
: This
switch enables building the Vala bindings. Remove if you don't have
Vala-0.36.4 installed.
--enable-daemon
: This
switch enables building the Colord daemon.
--enable-session-helper
: This
switch enables building the session helper for Colord.
--enable-libcolordcompat
: This
switch enables building a compatibility library for older
packages that use Colord.
--disable-rpath
: This
switch prevents the build process from hard-coding library
paths into its executables.
--disable-argyllcms-sensor
:
This switch disables the ArgLLCMS sensor driver. Omit if you
have ArgLLCMS installed and wish
to use it.
--disable-bash-completion
: This
switch disables Bash Completion support for Colord
applications.
--disable-static
:
This switch prevents installation of static versions of the
libraries.
--enable-gtk-doc
: Use this
parameter if GTK-Doc is
installed and you wish to rebuild and install the API
documentation.
--disable-gusb
: Use this switch
if you don't have libgusb
installed.
--disable-udev
: Use this switch
if you don't have libgudev
installed.
--disable-polkit
: Use this switch
if you don't have polkit
installed.
is the Color Manager Profile Creation Tool. |
|
is a tool used to fix metadata in ICC profiles. |
|
dumps the contents of an ICC profile as human readable text. |
|
is the Color Manager Testing Tool. |
|
is a text-mode program that allows you to interact with colord on the command line. |
|
contains the Colord API functions. |
|
contains legacy API functions for compatibility with older applications. |
|
contains internal API functions for the programs included with Colord. |
|
contains a simple display hardware colorimiter. |
Last updated on 2017-08-20 20:24:54 -0700
The cpio package contains tools for archiving.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://ftp.gnu.org/gnu/cpio/cpio-2.12.tar.bz2
Download (FTP): ftp://ftp.gnu.org/gnu/cpio/cpio-2.12.tar.bz2
Download MD5 sum: 93eea9f07c0058c097891c73e4955456
Download size: 1.2 MB
Estimated disk space required: 18 MB (with tests and docs)
Estimated build time: 0.3 SBU (with tests and docs)
texlive-20170524 (or install-tl-unx)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/cpio
Install cpio by running the following commands:
./configure --prefix=/usr \ --bindir=/bin \ --enable-mt \ --with-rmt=/usr/libexec/rmt && make && makeinfo --html -o doc/html doc/cpio.texi && makeinfo --html --no-split -o doc/cpio.html doc/cpio.texi && makeinfo --plaintext -o doc/cpio.txt doc/cpio.texi
If you have texlive-20170524 installed and wish to create PDF or Postscript documentation, issue one or both of the following commands:
make -C doc pdf && make -C doc ps
To test the results, issue: make check.
Now, as the root
user:
make install && install -v -m755 -d /usr/share/doc/cpio-2.12/html && install -v -m644 doc/html/* \ /usr/share/doc/cpio-2.12/html && install -v -m644 doc/cpio.{html,txt} \ /usr/share/doc/cpio-2.12
If you built PDF or Postscript documentation, install it by
issuing the following commands as the root
user:
install -v -m644 doc/cpio.{pdf,ps,dvi} \ /usr/share/doc/cpio-2.12
--bindir=/bin
: This
parameter installs cpio to /bin
instead of /usr/bin
as recommended by the FHS
guidelines.
--enable-mt
: This
parameter forces the building and installation of the
mt program.
--with-rmt=/usr/libexec/rmt
:
This parameter inhibits building the rmt program as it is
already installed by the Tar
package in LFS.
Last updated on 2017-08-20 20:24:54 -0700
The cups-pk-helper package contains a PolicyKit helper used to configure Cups with fine-grained privileges.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://www.freedesktop.org/software/cups-pk-helper/releases/cups-pk-helper-0.2.6.tar.xz
Download MD5 sum: a9045c7db6e502d6496da8fc71d8820e
Download size: 160 KB
Estimated disk space required: 5.9 MB
Estimated build time: less than 0.1 SBU
Cups-2.2.4 and Polkit-0.113+git_2919920+js38
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/cups-pk-helper
Install cups-pk-helper by running the following commands:
./configure --prefix=/usr --sysconfdir=/etc && make
This package does not come with a test suite.
Now, as the root
user:
make install
Last updated on 2017-08-30 15:02:32 -0700
Even though D-Bus was built in LFS, there are some features provided by the package that other BLFS packages need, but their dependencies didn't fit into LFS.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://dbus.freedesktop.org/releases/dbus/dbus-1.10.22.tar.gz
Download MD5 sum: baaa10b7cb49086ad91179a8decfadc5
Download size: 1.9 MB
Estimated disk space required: 27 MB (add 33 MB for the tests)
Estimated build time: 0.4 SBU (add 2.4 SBU for the tests)
Xorg Libraries (for dbus-launch program)
For the tests: dbus-glib-0.108, D-Bus Python-1.2.4, PyGObject-2.28.6 (built with gobject-introspection support), and Valgrind-3.13.0; for documentation: Doxygen-1.8.13, xmlto-0.0.28, Ducktype, and Yelp Tools
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/dbus
Install D-Bus by running the following commands (you may wish to review the output from ./configure --help first and add any desired parameters to the configure command shown below):
./configure --prefix=/usr \ --sysconfdir=/etc \ --localstatedir=/var \ --enable-user-session \ --disable-doxygen-docs \ --disable-xml-docs \ --disable-static \ --docdir=/usr/share/doc/dbus-1.10.22 \ --with-console-auth-dir=/run/console \ --with-system-pid-file=/run/dbus/pid \ --with-system-socket=/run/dbus/system_bus_socket && make
See below for test instructions.
Installing the package will override all files installed by
D-Bus in LFS. It is
critical that nothing uses D-Bus libraries or programs during the
installation. The best way to ensure that these libraries
are not being used is to run the installation in rescue
mode. To switch to rescue mode, run the following command
as the root
user (from a
TTY):
systemctl start rescue.target
Now, as the root
user:
make install
The shared library needs to be moved to /lib
, and as a result the .so
file in /usr/lib
will need to be recreated. Run the
following command as the root
user:
mv -v /usr/lib/libdbus-1.so.* /lib && ln -sfv ../../lib/$(readlink /usr/lib/libdbus-1.so) /usr/lib/libdbus-1.so
If you are using a DESTDIR install, dbus-daemon-launch-helper
needs to be fixed afterwards. Issue, as root
user:
chown -v root:messagebus /usr/libexec/dbus-daemon-launch-helper && chmod -v 4750 /usr/libexec/dbus-daemon-launch-helper
If not in chroot, at this point, you should reload the
systemd daemon, and reenter multi-user mode with the
following commands (as the root
user):
systemctl daemon-reload systemctl start multi-user.target
The dbus tests cannot be run until after dbus-glib-0.108
has been installed. They must be run as an unprivileged user
from a local session with bus address. If you want to run
only the unit tests, replace, below, --enable-tests
by --enable-embedded-tests
,
otherwise, D-Bus Python-1.2.4 has to be installed,
before. The tests require passing additional parameters to
configure and
exposing additional functionality in the binaries. These
interfaces are not intended to be used in a production build
of D-Bus. If you would like
to run the tests, issue the following commands (for the
tests, you don't need to build the docs):
make distclean && ./configure --enable-tests \ --enable-asserts \ --disable-doxygen-docs \ --disable-xml-docs && make && make check
The “estimated disk space required” reported above is obtained in a build using the switches disabling documents generation. This and the use of the make distclean command implies that the build directory size is smaller than the one for a full build with documents generated.
There has been a report that the tests may fail if running inside a Midnight Commander shell. You may get out-of-memory error messages when running the tests. These are normal and can be safely ignored.
--disable-doxygen-docs
: This
switch disables doxygen documentation build and install, if
you have doxygen installed.
If doxygen is installed, and
you wish to build them, remove this parameter.
--disable-xml-docs
:
This switch disables html documentation build and install, if
you have xmlto installed. If
xmlto is installed, and you
wish to build them, remove this parameter.
--disable-static
:
This switch prevents installation of static versions of the
libraries.
--enable-user-session
: This
parameter enables per-user DBus sessions with systemd.
--with-console-auth-dir=/run/console/
:
This parameter specifies location of the ConsoleKit auth dir.
--with-system-pid-file=/run/dbus/pid
:
This parameter specifies the location of the PID file.
--with-system-socket=/run/dbus/system_bus_socket
:
This parameter specifies the location of the system bus
socket.
--enable-tests
: Build
extra parts of the code to support all tests. Configure will
end with a NOTE warning about increased size of libraries and
decreased security.
--enable-embedded-tests
: Build
extra parts of the code to support only unit tests. Configure
will end with a NOTE warning about increased size of
libraries and decreased security.
--enable-asserts
:
Enable debugging code to run assertions for statements
normally assumed to be true. This prevents a warning that
'--enable-tests
' on
its own is only useful for profiling and might not give true
results for all tests, but adds its own NOTE that this should
not be used in a production build.
The configuration files listed above should probably not be
modified. If changes are required, you should create
/etc/dbus-1/session-local.conf
and/or
/etc/dbus-1/system-local.conf
and make any desired changes to these files.
If any packages install a D-Bus .service
file outside of the standard
/usr/share/dbus-1/services
directory, that directory should be added to the local
session configuration. For instance, /usr/local/share/dbus-1/services
can be
added by performing the following commands as the
root
user:
cat > /etc/dbus-1/session-local.conf << "EOF"
<!DOCTYPE busconfig PUBLIC
"-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>
<!-- Search for .service files in /usr/local -->
<servicedir>/usr/local/share/dbus-1/services</servicedir>
</busconfig>
EOF
There are many methods you can use to start a session daemon using the dbus-launch command. Review the dbus-launch man page for details about the available parameters and options. Here are some suggestions and examples:
Add dbus-launch to the
line in the ~/.xinitrc
file that starts your graphical desktop environment.
If you use xdm or some other
display manager that calls the ~/.xsession
file, you can add
dbus-launch to the
line in your ~/.xsession
file that starts your
graphical desktop environment. The syntax would be
similar to the example in the ~/.xinitrc
file.
The examples shown previously use dbus-launch to
specify a program to be run. This has the benefit
(when also using the --exit-with-session
parameter) of stopping the session daemon when the
specified program is stopped. You can also start the
session daemon in your system or personal startup
scripts by adding the following lines:
# Start the D-Bus session daemon
eval `dbus-launch`
export DBUS_SESSION_BUS_ADDRESS
This method will not stop the session daemon when you
exit your shell, therefore you should add the
following line to your ~/.bash_logout
file:
# Kill the D-Bus session daemon
kill $DBUS_SESSION_BUS_PID
A hint has been written that provides ways to start scripts using the KDM session manager of KDE. The concepts in this hint could possibly be used with other session managers as well. The hint is located at http://www.linuxfromscratch.org/hints/downloads/files/execute-session-scripts-using-kdm.txt.
A list of the installed files, along with their short descriptions can be found at ../../../../lfs/view/8.1-systemd/chapter06/dbus.html#contents-dbus.
Last updated on 2017-08-20 19:38:12 -0700
The Fcron package contains a periodical command scheduler which aims at replacing Vixie Cron.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://fcron.free.fr/archives/fcron-3.2.0.src.tar.gz
Download MD5 sum: 4b031c2fba32a98fa814d1557158b0e9
Download size: 584 KB
Estimated disk space required: 5.1 MB
Estimated build time: 0.1 SBU
An MTA, text editor (default is vi from the Vim-8.0.586 package), Linux-PAM-1.3.0, and DocBook-utils-0.6.14
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/fcron
For security reasons, an unprivileged user and group for
Fcron should be created
(perform as the root
user):
groupadd -g 22 fcron && useradd -d /dev/null -c "Fcron User" -g fcron -s /bin/false -u 22 fcron
Install Fcron by running the following commands:
./configure --prefix=/usr \ --sysconfdir=/etc \ --localstatedir=/var \ --without-sendmail \ --with-boot-install=no && make
This package does not come with a test suite.
Now, as the root
user:
make install
DESTDIR install must be done as root
user.
--without-sendmail
:
By default, Fcron will
attempt to use the sendmail command from an
MTA package
to email you the results of the fcron script. This switch
is used to disable default email notification. Omit the
switch to enable the default. Alternatively, you can use the
--with-sendmail=
to use a different mailer
command.
</path/to/MTA
command>
--with-boot-install=no
: This
prevents installation of the bootscript included with the
package.
--with-editor=
:
This switch allows you to set the default text editor.
</path/to/editor>
--with-dsssl-dir=
:
May be used if you have DocBook-utils-0.6.14
installed. Currently, the dsssl stylesheets are located at
</path/to/dsssl-stylesheets>
/usr/share/sgml/docbook/dsssl-stylesheets-1.79
.
There are no required changes in any of the config files.
Configuration information can be found in the man page for
fcron.conf
.
fcron scripts are written using fcrontab. Refer to the fcrontab man page for proper parameters to address your situation.
If Linux-PAM is installed, two PAM
configuration files are installed in /etc/pam.d
. Alternatively if /etc/pam.d
is not used, the installation
will append two configuration sections to the existing
/etc/pam.conf
file. You
should ensure the files match your preferences. Modify them
as required to suit your needs.
Last updated on 2017-08-20 15:06:11 -0700
The GPM (General Purpose Mouse daemon) package contains a mouse server for the console and xterm. It not only provides cut and paste support generally, but its library component is used by various software such as Links to provide mouse support to the application. It is useful on desktops, especially if following (Beyond) Linux From Scratch instructions; it's often much easier (and less error prone) to cut and paste between two console windows than to type everything by hand!
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://www.nico.schottelius.org/software/gpm/archives/gpm-1.20.7.tar.bz2
Download MD5 sum: bf84143905a6a903dbd4d4b911a2a2b8
Download size: 820 KB
Estimated disk space required: 7.4 MB
Estimated build time: 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/GPM
Install GPM by running the following commands:
sed -i -e 's:<gpm.h>:"headers/gpm.h":' src/prog/{display-buttons,display-coords,get-versions}.c && patch -Np1 -i ../gpm-1.20.7-glibc_2.26-1.patch && ./autogen.sh && ./configure --prefix=/usr --sysconfdir=/etc && make
This package does not come with a test suite.
Now, as the root
user:
make install && install-info --dir-file=/usr/share/info/dir \ /usr/share/info/gpm.info && ln -sfv libgpm.so.2.1.0 /usr/lib/libgpm.so && install -v -m644 conf/gpm-root.conf /etc && install -v -m755 -d /usr/share/doc/gpm-1.20.7/support && install -v -m644 doc/support/* \ /usr/share/doc/gpm-1.20.7/support && install -v -m644 doc/{FAQ,HACK_GPM,README*} \ /usr/share/doc/gpm-1.20.7
./autogen.sh: This command creates the missing configure script.
install-info
...: This package installs an .info
file, but does not update the system
dir
file. This command makes
the update.
ln -v -sfn libgpm.so.2.1.0
/usr/lib/libgpm.so: This command is used to
create (or update) the .so
symlink to the library.
To start the gpm daemon at boot,
install the systemd unit from the blfs-systemd-units-20160602
package by running the following command as the
root
user:
make install-gpm
/etc/gpm-root.conf
and
~/.gpm-root
: The default and
individual user gpm-root configuration
files.
GPM is by default started
with the following parameters: -m /dev/input/mice -t imps2
.
If the mentioned parameters don't suit your needs, you can
override them by running the following commands as the
root
user:
install -v -dm755 /etc/systemd/system/gpm.service.d echo "ExecStart=/usr/sbin/gpm <list of parameters>" > /etc/systemd/system/gpm.service.d/99-user.conf
is a security mechanism used to disable the paste buffer. |
|
is a simple program that reports the mouse buttons being pressed and released. |
|
is a simple program that reports the mouse coordinates. |
|
is used to report the GPM library and server versions. |
|
is a cut and paste utility and mouse server for virtual consoles. |
|
is a default handler for gpm. It is used to draw menus on the root window. |
|
is a simple sample application using the high-level library, meant to be read by programmers trying to use the high-level library. |
|
is a program to report mouse events. |
|
is a tool for determining the mouse type and device it's attached to. |
|
contains the API functions to access the GPM daemon. |
Last updated on 2017-08-17 12:47:47 -0700
The Hdparm package contains a utility that is useful for controlling ATA/IDE controllers and hard drives both to increase performance and sometimes to increase stability.
This package is known to build and work properly using an LFS-8.1 platform.
As well as being useful, incorrect usage of Hdparm can destroy your information and in rare cases, drives. Use with caution and make sure you know what you are doing. If in doubt, it is recommended that you leave the default kernel parameters alone.
Download (HTTP): https://downloads.sourceforge.net/hdparm/hdparm-9.52.tar.gz
Download MD5 sum: 410539d0bf3cc247181594581edbfb53
Download size: 140 KB
Estimated disk space required: 1.0 MB
Estimated build time: less than 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/hdparm
Build Hdparm by running the following command:
make
This package does not come with a test suite.
Now, as the root
user:
make install
Note that by default, hdparm is installed in
/sbin
as some systems may
require it during the boot process before /usr
is mounted. If you wish to install
hdparm under
the /usr
hierarchy, then
replace the above command with the following:
make binprefix=/usr install
Last updated on 2017-08-23 21:43:54 -0700
The lm_sensors package provides user-space support for the hardware monitoring drivers in the Linux kernel. This is useful for monitoring the temperature of the CPU and adjusting the performance of some hardware (such as cooling fans).
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://ftp.gwdg.de/pub/linux/misc/lm-sensors/lm_sensors-3.4.0.tar.bz2
Download (FTP): ftp://ftp.gwdg.de/pub/linux/misc/lm-sensors/lm_sensors-3.4.0.tar.bz2
Download MD5 sum: c03675ae9d43d60322110c679416901a
Download size: 172 KB
Estimated disk space required: 2.4 MB
Estimated build time: less than 0.1 SBU
RRDtool (required to build the sensord program)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/lm_sensors
Getting your kernel config right is an iterative process that may require that you recompile your kernel a couple of times. The simplest way to go about it is to start by enabling modules and then compile everything that may be needed by Lm Sensors as a module:
[*] Enable loadable module support ---> [CONFIG_MODULES]
Bus options (PCI etc.) --->
[*] PCI support [CONFIG_PCI]
Device Drivers --->
I2C support --->
<*/M> I2C device interface [CONFIG_I2C_CHARDEV]
I2C Hardware Bus support --->
<M> (configure all of them as modules)
<*/M> Hardware Monitoring support ---> [CONFIG_HWMON]
<M> (configure all of them as modules)
Recompile your kernel and reboot into the new kernel. Don't forget to make modules_install We will come back to the kernel in the Configuring section below.
Install lm_sensors by running the following commands:
make PREFIX=/usr \ BUILD_STATIC_LIB=0 \ MANDIR=/usr/share/man
This package does not come with a test suite.
Now, as the root
user:
make PREFIX=/usr \ BUILD_STATIC_LIB=0 \ MANDIR=/usr/share/man install && install -v -m755 -d /usr/share/doc/lm_sensors-3.4.0 && cp -rv README INSTALL doc/* \ /usr/share/doc/lm_sensors-3.4.0
BUILD_STATIC_LIB=0
:
This parameter disables compiling and installing the static
version of libsensors
.
PROG_EXTRA=sensord
:
This parameter enables compiling sensord, a daemon that can
monitor your system at regular intervals. Compiling
sensord
requires RRDtool. Compiling
RRDtool 1.4.6 requires a sed: sed -i '/ sv_undef/d'
bindings/perl-shared/RRDs.xs.
To find out what hardware sensors your system has, issue
the following command as the root
user:
sensors-detect
The appropriate modules should have been loaded and a summary is displayed at the end. Now you know what is needed and you can recompile your kernel to enable just the options you need (i.e., don't enable the modules you cannot use).
is a shell script for use with lm_sensors. It reads its configuration from a file, then calculates fan speeds from temperatures and sets the corresponding PWM outputs to the computed values. |
|
is a small helper program to examine registers visible through the ISA bus. It is intended to probe any chip that lives on the ISA bus working with an address register and a data register (I2C-like access) or a flat range (of up to 256 bytes). |
|
is a small helper program to set registers visible through the ISA bus. |
|
tests the pulse width modulation (PWM) outputs of sensors and configures fancontrol. |
|
prints the current readings of all sensor chips. |
|
is a Perl script to convert lm-sensors version 2 configuration files to work with version 3. |
|
is a Perl script
that will walk you through the process of scanning
your system for various hardware monitoring chips
(sensors) supported by |
|
(optional) is a daemon that can be used to periodically log sensor readings. |
|
contains the lm_sensors API functions. |
Last updated on 2017-08-20 15:06:11 -0700
The logrotate package allows automatic rotation, compression, removal, and mailing of log files.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://github.com/logrotate/logrotate/releases/download/3.11.0/logrotate-3.11.0.tar.xz
Download MD5 sum: 3a9280e4caeb837427a2d54518fbcdac
Download size: 132 KB
Estimated disk space required: 1.7 MB
Estimated build time: 0.1 SBU
Fcron-3.2.0 (runtime)
An MTA (runtime)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/logrotate
Install logrotate by running the following command:
sed -i '/exit 5/s/^/echo uncompress failed -- skipping #/' test/test && ./configure --prefix=/usr && make
To test the results, issue: make test.
Now, as the root
user:
make install
sed ... test/test: Prevents the tests from failing due to a problem in the test script.
Logrotate needs a
configuration file, which must be passed as an argument to
the command when executed. Create the file as the
root
user:
cat > /etc/logrotate.conf << EOF # Begin of /etc/logrotate.conf # Rotate log files weekly weekly # Don't mail logs to anybody nomail # If the log file is empty, it will not be rotated notifempty # Number of backups that will be kept # This will keep the 2 newest backups only rotate 2 # Create new empty files after rotating old ones # This will create empty log files, with owner # set to root, group set to sys, and permissions 644 create 0664 root sys # Compress the backups with gzip compress # No packages own lastlog or wtmp -- rotate them here /var/log/wtmp { monthly create 0664 root utmp rotate 1 } /var/log/lastlog { monthly rotate 1 } # Some packages drop log rotation info in this directory # so we include any file in it. include /etc/logrotate.d # End of /etc/logrotate.conf EOF chmod -v 0644 /etc/logrotate.conf
Now create the /etc/logrotate.d
directory as the root
user:
mkdir -p /etc/logrotate.d
At this point additional log rotation commands can be
entered, typically in the /etc/logrotate.d
directory. For example:
cat > /etc/logrotate.d/sys.log << EOF /var/log/sys.log { # If the log file is larger than 100kb, rotate it size 100k rotate 5 weekly postrotate /bin/killall -HUP syslogd endscript } EOF chmod -v 0644 /etc/logrotate.d/sys.log
You can designate multiple files in one entry:
cat > /etc/logrotate.d/example.log << EOF file1 file2 file3 { ... postrotate ... endscript } EOF chmod -v 0644 /etc/logrotate.d/example.log
You can use in the same line the list of files: file1 file2 file3. See the logrotate man page or http://www.techrepublic.com/article/manage-linux-log-files-with-logrotate/ for more examples.
The command logrotate
/etc/logrotate.conf can be run manually,
however, the command should be run daily. Other useful
commands are logrotate -d
/etc/logrotate.conf for debugging purposes
and logrotate -f
/etc/logrotate.conf forcing the logrotate
commands to be run immediately. Combining the previous
options -df
, you can debug the
effect of the force command. When debugging, the command is
only simulated, not really run, thus, eventual non-existing
errors appear, when some intermediate files are expected,
because they are not actually created.
To set up Fcron-3.2.0 to run logrotate ... at 3AM daily, root's crontab should be edited to add:
0 3 * * * /usr/sbin/logrotate /etc/logrotate.conf
Last updated on 2017-08-20 15:06:11 -0700
MC (Midnight Commander) is a text-mode full-screen file manager and visual shell. It provides a clear, user-friendly, and somewhat protected interface to a Unix system while making many frequent file operations more efficient and preserving the full power of the command prompt.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://ftp.midnight-commander.org/mc-4.8.19.tar.xz
Download (FTP): ftp://ftp.osuosl.org/pub/midnightcommander/mc-4.8.19.tar.xz
Download MD5 sum: 57209d138c0adcb9ea01dfe6bbb4cb87
Download size: 2.4 MB
Estimated disk space required: 179 MB (with tests)
Estimated build time: 1.0 SBU (with tests)
GLib-2.52.3 and PCRE-8.41
Doxygen-1.8.13, GPM-1.20.7, Samba-4.6.7, UnZip-6.0, X Window System, and Zip-3.0
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/MC
Install MC by running the following commands:
./configure --prefix=/usr \ --sysconfdir=/etc \ --enable-charset && make
To test the results, issue: make check. One test concerning rpm files fails.
Now, as the root
user:
make install && cp -v doc/keybind-migration.txt /usr/share/mc
--sysconfdir=/etc
:
This switch places the global configureation directory in
/etc
.
--enable-charset
:
This switch adds support to mcedit for editing files in
encodings different from the one implied by the current
locale.
The ~/.config/mc
directory
and its contents are created when you start mc for the first time.
Then you can edit the main ~/.config/mc/ini
configuration file
manually or through the MC
shell. Consult the mc(1) man page for details.
On 8.x versions of mc,
keybind names used in mc.keymap.* files are changed. This
is described in keybind-migration.txt
.
Last updated on 2017-08-28 20:59:34 -0700
ModemManager provides a unified high level API for communicating with mobile broadband modems, regardless of the protocol used to communicate with the actual device.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://www.freedesktop.org/software/ModemManager/ModemManager-1.6.8.tar.xz
Download MD5 sum: ac08d539ec3dc35db8d6b7c8d6c660ff
Download size: 1.4 MB
Estimated disk space required: 82 MB (with tests)
Estimated build time: 1.0 SBU (with tests)
gobject-introspection-1.52.1, libmbim-1.14.2, libqmi-1.18.0, Polkit-0.113+git_2919920+js38, and Vala-0.36.4
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/ModemManager
Install ModemManager by running the following commands:
./configure --prefix=/usr \ --sysconfdir=/etc \ --localstatedir=/var \ --enable-more-warnings=no \ --with-suspend-resume=systemd \ --disable-static && make
To test the results, issue: make check.
Now, as the root
user:
make install
--with-suspend-resume=systemd
:
This switch forces ModemManager to use the systemd power
management facilities.
--disable-static
:
This switch prevents installation of static versions of the
libraries.
--enable-gtk-doc
: Use this
parameter if GTK-Doc is
installed and you wish to rebuild and install the API
documentation.
Last updated on 2017-08-24 18:56:23 -0700
OBEX Data Server package contains D-Bus service providing high-level OBEX client and server side functionality.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://tadas.dailyda.com/software/obex-data-server-0.4.6.tar.gz
Download MD5 sum: 961ca5db6fe9c97024e133cc6203cc4d
Download size: 196 KB
Estimated disk space required: 2.2 MB
Estimated build time: less than 0.1 SBU
BlueZ-5.46, dbus-glib-0.108, ImageMagick-7.0.6-10 or gdk-pixbuf-2.36.8, libusb-compat-0.1.5, and OpenOBEX-1.7.2
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/obex-data-server
Install OBEX Data Server by running the following commands:
patch -Np1 -i ../obex-data-server-0.4.6-build-fixes-1.patch && ./configure --prefix=/usr --sysconfdir=/etc && make
This package does not come with a test suite.
Now, as the root
user:
make install
Last updated on 2017-08-28 20:59:34 -0700
p7zip is the Unix command-line port of 7-Zip, a file archiver that archives with high compression ratios. It handles 7z, ZIP, GZIP, BZIP2, XZ, TAR, APM, ARJ, CAB, CHM, CPIO, CramFS, DEB, DMG, FAT, HFS, ISO, LZH, LZMA, LZMA2, MBR, MSI, MSLZ, NSIS, NTFS, RAR RPM, SquashFS, UDF, VHD, WIM, XAR and Z formats.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://downloads.sourceforge.net/p7zip/p7zip_16.02_src_all.tar.bz2
Download MD5 sum: a0128d661cfe7cc8c121e73519c54fbf
Download size: 4.0 MB
Estimated disk space required: 33 MB
Estimated build time: 1.3 SBU (with tests)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/p7zip
Install p7zip by running the following commands:
make all3
To test the results, issue: make test.
Now, as the root
user:
make DEST_HOME=/usr \ DEST_MAN=/usr/share/man \ DEST_SHARE_DOC=/usr/share/doc/p7zip-16.02 install
If using DESTDIR techniques, use DEST_DIR instead.
Last updated on 2017-08-23 21:43:54 -0700
pax is an archiving utility created by POSIX and defined by the POSIX.1-2001 standard. Rather than sort out the incompatible options that have crept up between tar and cpio, along with their implementations across various versions of UNIX, the IEEE designed a new archive utility. The name “pax” is an acronym for portable archive exchange. Furthermore, “pax” means “peace” in Latin, so its name implies that it shall create peace between the tar and cpio format supporters. The command invocation and command structure is somewhat a unification of both tar and cpio.
pax has been required to be present in LSB conformant systems since LSB version 3.0.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://downloads.sourceforge.net/heirloom/heirloom-070715.tar.bz2
Download MD5 sum: d846be4b268b1d55b6ffcef847f09979
Download size: 977 KB
Estimated disk space required: 9.2 MB
Estimated build time: less than 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/pax
This package has somewhat unusual installation instructions, because pax is part of a larger set of utilities included in the same tarball. Issue the following commands:
sed -i build/mk.config \ -e '/LIBZ/s@ -Wl[^ ]*@@g' \ -e '/LIBBZ2/{s@^#@@;s@ -Wl[^ ]*@@g}' \ -e '/BZLIB/s@0@1@' && make makefiles && make -C libcommon && make -C libuxre && make -C cpio
Now, as the root
user:
install -v -m755 cpio/pax_su3 /usr/bin/pax && install -v -m644 cpio/pax.1 /usr/share/man/man1
sed ...: This
changes the configuration file build/mk.config
so that the system zlib and
libbz2 are used and linked as shared libraries.
make makefiles: This command builds all the makefiles.
make -C lib...: First builds the necessary libraries.
make -C cpio: Then builds the archive utilities.
Last updated on 2017-08-23 21:43:54 -0700
The PCI Utils package contains a set of programs for listing PCI devices, inspecting their status and setting their configuration registers.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://www.kernel.org/pub/software/utils/pciutils/pciutils-3.5.5.tar.xz
Download MD5 sum: 238d9969cc0de8b9105d972007d9d546
Download size: 317 KB
Estimated disk space required: 3.6 MB
Estimated build time: less than 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/pciutils
Install PCI Utils by running the following commands:
make PREFIX=/usr \ SHAREDIR=/usr/share/hwdata \ SHARED=yes
This package does not come with a test suite.
Now, as the root
user:
make PREFIX=/usr \ SHAREDIR=/usr/share/hwdata \ SHARED=yes \ install install-lib && chmod -v 755 /usr/lib/libpci.so
SHARED=yes
: This
parameter enables building of the shared library instead of
the static one.
ZLIB=no
: This option prevents
compression of the pci.ids
file.
The pci.ids
data file is
constantly being updated. To get a current version of this
file, run update-pciids as the
root
user. This program
requires the Which-2.21 script or
program to find cURL-7.55.1, Lynx-2.8.8rel.2 or Wget-1.19.1 which
are used to download the most current file, and then replace
the existing file in /usr/share/hwdata
.
You may wish to add an entry to root
's (or any other user who has write
privilege to /usr/share/hwdata
)
crontab to automatically update the pci.ids
file periodically.
is a utility for displaying information about all PCI buses in the system and all devices connected to them. |
|
is a utility for querying and configuring PCI devices. |
|
fetches the current version of the PCI ID list. Requires cURL-7.55.1, Lynx-2.8.8rel.2 or Wget-1.19.1. |
|
is library that allows applications to access the PCI subsystem. |
Last updated on 2017-08-20 15:06:11 -0700
The Power Management Utilities is a small collection of scripts to suspend and hibernate computer that can be used to run user supplied scripts on suspend and resume.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://pm-utils.freedesktop.org/releases/pm-utils-1.4.1.tar.gz
Download MD5 sum: 1742a556089c36c3a89eb1b957da5a60
Download size: 204 KB
Estimated disk space required: 1.6 MB
Estimated build time: 0.1 SBU
xmlto-0.0.28 (to generate man pages)
Hdparm-9.52, Wireless Tools-29, ethtool, and vbetool
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/pm-utils
If needed, enable the following options in the kernel configuration and recompile the kernel:
Power management and ACPI options --->
<*> Suspend to RAM and standby [CONFIG_SUSPEND]
<*> Hibernation (aka 'suspend to disk') [CONFIG_HIBERNATION]
Suspend to RAM allows the system to enter sleep states in which main memory is powered and thus its contents are preserved. The method cuts power to most parts of the machine aside from the RAM. Because of the large power savings, it is advisable for laptops to automatically enter this mode when the computer is running on batteries and the lid is closed (or the user is inactive for some time).
Suspend to disk (Hibernation) saves the machine's state into swap space and completely powers off the machine. When the machine is powered on, the state is restored. Until then, there is zero power consumption. Suspend to RAM and hibernation are normally appropriate for portable devices such as laptops, but can be used on workstations. The capability is not really appropriate for servers.
To use hibernation, the kernel parameter resume=/dev/<swap_partition> has to be used on the kernel command line (in grub.cfg). The swap partition should be at least the size of the physical RAM on the system.
Install Power Management Utilities by running the following commands:
./configure --prefix=/usr \ --sysconfdir=/etc \ --docdir=/usr/share/doc/pm-utils-1.4.1 && make
This package does not come with a test suite.
Now, as the root
user:
make install
If you don't have xmlto-0.0.28 installed, copy pregenerated man pages:
install -v -m644 man/*.1 /usr/share/man/man1 && install -v -m644 man/*.8 /usr/share/man/man8 && ln -sv pm-action.8 /usr/share/man/man8/pm-suspend.8 && ln -sv pm-action.8 /usr/share/man/man8/pm-hibernate.8 && ln -sv pm-action.8 /usr/share/man/man8/pm-suspend-hybrid.8
Suspend or resume functionality can be easily modified by
installing files into the /etc/pm/sleep.d
directory. These files,
known as hooks, are run when the system is put into a sleep
state or resumed. Default hooks are located in /usr/lib/pm-utils/sleep.d
, and user hooks
should be put in /etc/pm/sleep.d
. See the pm-action(8) man
page for more information.
In order to use hibernation with GRUB and a swap partition, you need to
add kernel parameter resume=
(i.e.
swap_partition
resume=/dev/sda1
) to the kernel
line in the /boot/grub/grub.cfg
configuration file.
is a script that determines whether the system is running on AC power (rather than a battery). |
|
is a symlink to pm-action script that puts the computer into hibernate mode (the system is fully powered off and system state is saved to disk). |
|
is a script that checks whether power management features such as suspend and hibernate are supported. |
|
is a script that puts the computer into powersaving (low power) mode. |
|
is a symlink to pm-action script that puts the computer into suspend mode (most devices are shut down and system state is saved in RAM). |
|
is a symlink to pm-action script that puts the computer into hybrid-suspend mode (the system does everything it needs to hibernate, but suspends instead of shutting down). |
Last updated on 2017-08-20 15:06:11 -0700
Raptor is a C library that provides a set of parsers and serializers that generate Resource Description Framework (RDF) triples.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://download.librdf.org/source/raptor2-2.0.15.tar.gz
Download MD5 sum: a39f6c07ddb20d7dd2ff1f95fa21e2cd
Download size: 1.9 MB
Estimated disk space required: 28 MB (additional 1 MB for the tests)
Estimated build time: 0.2 SBU (additional 0.5 SBU for the tests)
cURL-7.55.1 and libxslt-1.1.29
GTK-Doc-1.26, ICU-59.1 and libyajl
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/raptor
Install Raptor by running the following commands:
./configure --prefix=/usr --disable-static && make
To test the results, issue: make check.
Now, as the root
user:
make install
--disable-static
:
This switch prevents installation of static versions of the
libraries.
--with-icu-config=/usr/bin/icu-config
: Use
this switch if you have installed ICU-59.1 and wish to build Raptor with its support.
Last updated on 2017-08-28 20:59:34 -0700
Rasqal is a C library that handles Resource Description Framework (RDF) query language syntaxes, query construction, and execution of queries returning results as bindings, boolean, RDF graphs/triples or syntaxes.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://download.librdf.org/source/rasqal-0.9.33.tar.gz
Download MD5 sum: 1f5def51ca0026cd192958ef07228b52
Download size: 1.6 MB
Estimated disk space required: 22 MB (additional 4 MB for the tests)
Estimated build time: 0.3 SBU (additional 0.7 SBU for the tests)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/rasqal
Install Rasqal by running the following commands:
./configure --prefix=/usr --disable-static && make
To test the results, issue: make check.
Now, as the root
user:
make install
--disable-static
:
This switch prevents installation of static versions of the
libraries.
Last updated on 2017-08-28 20:59:34 -0700
Redland is a set of free software C libraries that provide support for the Resource Description Framework (RDF).
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://download.librdf.org/source/redland-1.0.17.tar.gz
Download MD5 sum: e5be03eda13ef68aabab6e42aa67715e
Download size: 1.6 MB
Estimated disk space required: 18 MB
Estimated build time: 0.2 SBU
Berkeley DB-6.2.32, libiodbc-3.52.12, SQLite-3.20.0, MariaDB-10.2.8 or MySQL, PostgreSQL-9.6.4, virtuoso, and 3store
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/redland
Install Redland by running the following commands:
./configure --prefix=/usr --disable-static && make
To test the results, issue make check.
Now, as the root
user:
make install
--disable-static
:
This switch prevents installation of static versions of the
libraries.
Last updated on 2017-08-28 20:59:34 -0700
The sg3_utils package contains low level utilities for devices that use a SCSI command set. Apart from SCSI parallel interface (SPI) devices, the SCSI command set is used by ATAPI devices (CD/DVDs and tapes), USB mass storage devices, Fibre Channel disks, IEEE 1394 storage devices (that use the "SBP" protocol), SAS, iSCSI and FCoE devices (amongst others).
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://sg.danny.cz/sg/p/sg3_utils-1.42.tar.xz
Download MD5 sum: 913ac2c9069d2ba44e05565a445810ab
Download size: 752 KB
Estimated disk space required: 23 MB
Estimated build time: 0.2 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/sg3_utils
Install sg3_utils by running the following commands:
./configure --prefix=/usr --disable-static && make
This package does not come with a test suite.
Now, as the root
user:
make install
--disable-static
:
This switch prevents installation of static versions of the
libraries.
accesses Linux SCSI logging level information. |
|
checks SCSI device support for mandatory commands. |
|
does the SCSI READ CAPACITY command on disks. |
|
does the SCSI TEST UNIT READY on devices. |
|
checks for SCSI to ATA Translation (SAT) device support. |
|
starts one or more SCSI disks. |
|
stops one or more SCSI disks. |
|
fetches the temperature of a SCSI device. |
|
sends the SCSI COMPARE AND WRITE command to device. |
|
sends the SCSI RECEIVE COPY RESULTS command (XCOPY related). |
|
copies data to and from files and devices. Specialised for devices that understand the SCSI command set. |
|
takes SCSI sense data in binary or as a sequence of ASCII hexadecimal bytes and decodes it. |
|
changes ownership of a LUN from another Service-Processor to this one. |
|
formats or resizes a SCSI disk (perhaps changes its block size). |
|
sends a SCSI GET CONFIGURATION command (MMC-4 +). |
|
sends the SCSI GET LBA STATUS command. |
|
sends a SCSI REPORT or SET IDENTIFYING INFORMATION command. |
|
access mode page information for a SCSI (or ATAPI) device. |
|
sends a SCSI INQUIRY or ATA IDENTIFY (PACKET) DEVICE command and outputs the response. |
|
access log pages with SCSI LOG SENSE command. |
|
sends the SCSI REPORT LUNS command. |
|
displays mapping between linux sg and other SCSI devices. |
|
maps a special file to a SCSI generic (sg) device (or vice versa). |
|
copies data to and from files and devices. Specialized for devices that understand the SCSI command set and does memory mapped transfers from sg devices. |
|
reads mode pages with SCSI MODE SENSE command. |
|
reports information on supported SCSI commands or task management functions. |
|
copies data to and from files and devices. Specialized for devices that understand the SCSI command set. |
|
sends a SCSI PERSISTENT RESERVE (IN or OUT) command to manipulate registrations and reservations. |
|
sends a SCSI PREVENT ALLOW MEDIUM REMOVAL command. |
|
sends an arbitrary SCSI command to a device. |
|
reads data using SCSI READ BUFFER command. |
|
displays or modifies RDAC Redundant Controller Page. |
|
reads blocks of data continually from the same offset. |
|
sends a SCSI READ BLOCK LIMITS command. |
|
sends a SCSI READ BUFFER command. |
|
sends a SCSI READ CAPACITY command. |
|
sends a SCSI READ LONG command. |
|
sends a SCSI REASSIGN BLOCKS command. |
|
sends the SCSI REPORT REFERRALS command. |
|
sends a SCSI REPORT ZONES command. |
|
sends one or more SCSI REQUEST SENSE commands. |
|
sends SCSI device, target, bus or host reset; or checks reset state. |
|
sends a SCSI RESET WRITE POINTER command. |
|
sends a SCSI READ MEDIA SERIAL NUMBER command. |
|
sends a SCSI REPORT TARGET PORT GROUPS command. |
|
fetches status from a SCSI Accessed Fault-Tolerant Enclosure (SAF-TE) device. |
|
sends a SCSI SANITIZE command. |
|
sends an ATA IDENTIFY (PACKET) DEVICE command via a SCSI to ATA Translation (SAT) layer. |
|
sends an ATA READ LOG EXT command via a SAT pass through to fetch log page 11h which contains SATA phy event counters. |
|
uses an ATA READ LOG EXT command via a SCSI to ATA Translation (SAT) layer. |
|
sends an ATA SET FEATURES command via a SCSI to ATA Translation (SAT) layer. |
|
does a scan of sg devices (or given SCSI/ATAPI/ATA devices) and prints the results. |
|
performs a SCSI SEND DIAGNOSTIC command. |
|
sends controls and fetch status from a SCSI Enclosure Services (SES) device. |
|
sends microcode to a SCSI enclosure. |
|
sends a SCSI START STOP UNIT command to start, stop, load or eject medium. |
|
sends a SCSI SET TARGET PORT GROUPS command. |
|
sends the scsi command synchronize cache. |
|
tests the SCSI host adapter by issuing write and read operations on a device's buffer and calculating checksums. |
|
sends one or more SCSI TEST UNIT READY commands. |
|
sends a SCSI UNMAP command. |
|
invokes SCSI VERIFY command(s) on a block device. |
|
fetches Vital Product Data (VPD) pages using a SCSI INQUIRY command. |
|
sends a SCSI WRITE BUFFER command. |
|
sends the SCSI WRITE LONG command. |
|
sends the SCSI WRITE SAME command. |
|
sends the SCSI WRITE AND VERIFY command. |
|
writes mode page. |
|
copies data to and from files and devices using SCSI EXTENDED COPY (XCOPY). |
|
contains the sg3_utils API functions. |
Last updated on 2017-08-23 21:43:54 -0700
The Sysstat package contains utilities to monitor system performance and usage activity. Sysstat contains the sar utility, common to many commercial Unixes, and tools you can schedule via cron to collect and historize performance and activity data.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://perso.wanadoo.fr/sebastien.godard/sysstat-11.6.0.tar.xz
Download MD5 sum: e03e6dfd1d2acd0128e964526c447146
Download size: 460 KB
Estimated disk space required: 7.0 MB
Estimated build time: 0.1 SBU
There are no build-time requirements for this package; however, it is designed to be controlled by a cron daemon such as Fcron-3.2.0.
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/sysstat
Install Sysstat by running the following commands:
sa_lib_dir=/usr/lib/sa \ sa_dir=/var/log/sa \ conf_dir=/etc/sysconfig \ ./configure --prefix=/usr \ --disable-file-attr && make
This package does not come with a test suite.
Now, as the root
user:
make install
Install the systemd unit by running the following command as
the root
user:
install -v -m644 sysstat.service /lib/systemd/system/sysstat.service
Fix the systemd unit by running the following command as the
root
user:
sed -i "/^Also=/d" /lib/systemd/system/sysstat.service
sa_lib_dir
: This environment
variable specifies the location of the package-specific
library directory.
sa_dir
: This environment variable
specifies the location of the directory containing the data
files.
conf_dir
: This environment
variable specifies the location of the system configuration
directory.
--disable-file-attr
:
Do not set attributes on files being installed. This
parameter causes the installation to ignore the man group
variable resulting in the man files having root
: root
ownership.
Run ./configure
--help to see other influential environment
variables you can pass to configure. You may want
to use the history
and
compressafter
variables to
customize the amount of data files kept on the system.
To begin gathering Sysstat
history information, you must add to, or create a
privileged user's crontab. The history data location is
/var/log/sa
. The user running
Sysstat utilities via cron
must have write access to this location.
Below is an example of what to install in the crontab. Adjust the parameters to suit your needs. Use man sa1 and man sa2 for information about the commands.
# 8am-7pm activity reports every 10 minutes during weekdays
0 8-18 * * 1-5 /usr/lib/sa/sa1 600 6 &
# 7pm-8am activity reports every hour during weekdays
0 19-7 * * 1-5 /usr/lib/sa/sa1 &
# Activity reports every hour on Saturday and Sunday
0 * * * 0,6 /usr/lib/sa/sa1 &
# Daily summary prepared at 19:05
5 19 * * * /usr/lib/sa/sa2 -A &
Ensure you submit the revised crontab to the cron daemon.
displays statistics about read and write operations on CIFS filesystems. |
|
reports CPU statistics and input/output statistics for devices and partitions. |
|
writes activities for each available processor. |
|
is used for monitoring individual tasks currently being managed by the Linux kernel. |
|
is used for displaying the contents of data files created by the sar command. But unlike sar, sadf can write its data in many different formats. |
|
is used for displaying the contents of elected cumulative activity counters in the operating system. |
|
is used for monitoring the activity of tape drives connected to a system. |
Last updated on 2017-08-24 20:14:11 -0700
While systemd was installed when building LFS, there are many features provided by the package that were not included in the initial installation because Linux-PAM was not yet installed. The systemd package needs to be rebuilt to provide a working systemd-logind service, which provides many additional features for dependent packages.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://anduin.linuxfromscratch.org/sources/other/systemd/systemd-234-lfs.tar.xz
Download MD5 sum: be1338f2775713dc33da74ac0146e37b
Download size: 4.0 MB
Estimated disk space required: 371 MB (an additional 29 MB for tests)
Estimated build time: 7.7 SBU (an additional 0.5 SBU for tests)
Polkit-0.113+git_2919920+js38 and Python-3.6.2 (required for the test suite)
Certificate Authority Certificates, cURL-7.55.1, elfutils-0.170, GnuTLS-3.5.14, Iptables-1.6.1, libgcrypt-1.8.0, libidn-1.33, libxkbcommon-0.7.2, qemu-2.9.0, Valgrind-3.13.0, zsh-5.4.2 (for the zsh completions), cryptsetup, gnu-efi, kexec-tools, libmicrohttpd, libseccomp, lz4, qrencode, quota-tools and Sphinx
docbook-xml-4.5, docbook-xsl-1.79.1, libxslt-1.1.29, and lxml-3.8.0
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/systemd
Rebuild systemd by running the following commands:
./configure --prefix=/usr \ --sysconfdir=/etc \ --localstatedir=/var \ --with-rootprefix= \ --with-rootlibdir=/lib \ --enable-split-usr \ --disable-firstboot \ --disable-ldconfig \ --disable-sysusers \ --disable-manpages \ --with-default-dnssec=no \ --docdir=/usr/share/doc/systemd-234 && make
For the best results, make sure you run the testsuite from a system that is booted by the same systemd version you are rebuilding.
To test the results, issue: make check.
Installing the package will overwrite all files installed
by systemd in LFS. It is
critical that nothing uses either systemd or Udev libraries during the
installation. The best way to ensure that these libraries
are not being used is to run the installation in rescue
mode. To switch to rescue mode, run the following command
as the root
user (from a
TTY):
systemctl start rescue.target
Now, as the root
user:
make install
If RPM is not installed,
remove an unnecessary directory by running the following
command as the root
user:
rm -rfv /usr/lib/rpm
The /etc/pam.d/system-session
file needs to be modified and a new file needs to be created
in order for systemd-logind to work
correctly. Run the following commands as the root
user:
cat >> /etc/pam.d/system-session << "EOF"# Begin Systemd addition session required pam_loginuid.so session optional pam_systemd.so # End Systemd addition
EOF cat > /etc/pam.d/systemd-user << "EOF"# Begin /etc/pam.d/systemd-user account required pam_access.so account include system-account session required pam_env.so session required pam_limits.so session include system-session auth required pam_deny.so password required pam_deny.so # End /etc/pam.d/systemd-user
EOF
At this point, you should reload the systemd daemon, and
reenter multi-user mode with the following commands (as the
root
user):
systemctl daemon-reload systemctl start multi-user.target
If upgrading from a previous version of systemd and an initrd is used for system boot, you should generate a new initrd before rebooting the system.
A list of the installed files, along with their short descriptions can be found at ../../../../lfs/view/8.1/chapter06/systemd.html#contents-systemd.
Listed below are the newly installed libraries and directories along with short descriptions.
/lib/security
)
Last updated on 2017-08-25 21:58:04 -0700
The UDisks package provides a storage daemon that implements well-defined D-Bus interfaces that can be used to query and manipulate storage devices.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://hal.freedesktop.org/releases/udisks-1.0.5.tar.gz
Download MD5 sum: 70d48dcfe523a74cd7c7fbbc2847fcdd
Download size: 720 KB
Estimated disk space required: 12 MB
Estimated build time: 0.1 SBU
dbus-glib-0.108, libatasmart-0.19, libgudev-231, LVM2-2.02.171, parted-3.2, Polkit-0.113+git_2919920+js38, and sg3_utils-1.42
GTK-Doc-1.26, libxslt-1.1.29 and Sudo-1.8.20p2 (to run the test)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/udisks
Fix a build issue with glibc-2.24:
sed 's@#include <stdio\.h>@#include <sys/stat.h>\n#include <stdio.h>@' \ -i src/helpers/job-drive-detach.c
Install UDisks by running the following commands:
./configure --prefix=/usr \ --sysconfdir=/etc \ --localstatedir=/var && make
To test the results, issue: make check.
Now, as the root
user:
make profiledir=/etc/bash_completion.d install
--enable-gtk-doc
: Use this
parameter if GTK-Doc is
installed and you wish to rebuild and install the API
documentation.
Last updated on 2017-08-28 20:59:34 -0700
The UDisks package provides a daemon, tools and libraries to access and manipulate disks and storage devices.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://github.com/storaged-project/udisks/releases/download/udisks-2.7.2/udisks-2.7.2.tar.bz2
Download MD5 sum: 587651b3864ba396e2702dca765dbda0
Download size: 1.2 MB
Estimated disk space required: 46 MB (with tests)
Estimated build time: 0.3 SBU (with tests)
libatasmart-0.19, libblockdev-2.11-1, libgudev-231, libxslt-1.1.29, and Polkit-0.113+git_2919920+js38
btrfs-progs-4.12, dosfstools-4.1, gptfdisk-1.0.3, mdadm-4.0, and xfsprogs-4.12.0
GTK-Doc-1.26, LVM2-2.02.171, ntfs-3g-2017.3.23, and libiscsi
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/udisks2
Install UDisks by running the following commands:
./configure --prefix=/usr \ --sysconfdir=/etc \ --localstatedir=/var \ --disable-static && make
To test the results, issue: make check.
Now, as the root
user:
make install
--disable-static
:
This switch prevents installation of static versions of the
libraries.
--enable-gtk-doc
: Use this
parameter if GTK-Doc is
installed and you wish to rebuild and install the API
documentation.
Last updated on 2017-08-24 18:56:23 -0700
The UnRar package contains a
RAR
extraction utility used for
extracting files from RAR
archives. RAR
archives are
usually created with WinRAR,
primarily in a Windows environment.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://www.rarlab.com/rar/unrarsrc-5.5.8.tar.gz
Download MD5 sum: 8d74b4d16b1317c4b1081e5f44025180
Download size: 220 KB
Estimated disk space required: 2.1 MB
Estimated build time: less than 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/unrar
Install UnRar by running the following commands:
make -f makefile
This package does not come with a test suite.
Now, as the root
user:
install -v -m755 unrar /usr/bin
Last updated on 2017-08-26 15:47:53 -0700
The UnZip package contains
ZIP
extraction utilities. These
are useful for extracting files from ZIP
archives. ZIP
archives are created with PKZIP or Info-ZIP utilities, primarily in a DOS
environment.
This package is known to build and work properly using an LFS-8.1 platform.
The previous version of the UnZip package had some locale related issues. Currently there are no BLFS editors capable of testing these locale issues. Therefore, the locale related information is left on this page, but has not been tested. A more general discussion of these problems can be found in the Program Assumes Encoding section of the Locale Related Issues page.
Download (HTTP): https://downloads.sourceforge.net/infozip/unzip60.tar.gz
Download (FTP): ftp://ftp.info-zip.org/pub/infozip/src/unzip60.tgz
Download MD5 sum: 62b490407489521db863b523a7f86375
Download size: 1.3 MB
Estimated disk space required: 9 MB
Estimated build time: less than 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/unzip
Use of UnZip in the JDK, Mozilla, DocBook or any other BLFS package installation is not a problem, as BLFS instructions never use UnZip to extract a file with non-ASCII characters in the file's name.
The UnZip package assumes
that filenames stored in the ZIP archives created on non-Unix
systems are encoded in CP850, and that they should be
converted to ISO-8859-1 when writing files onto the
filesystem. Such assumptions are not always valid. In fact,
inside the ZIP archive, filenames are encoded in the DOS
codepage that is in use in the relevant country, and the
filenames on disk should be in the locale encoding. In MS
Windows, the OemToChar() C function (from User32.DLL
) does the correct conversion
(which is indeed the conversion from CP850 to a superset of
ISO-8859-1 if MS Windows is set up to use the US English
language), but there is no equivalent in Linux.
When using unzip to unpack a ZIP archive containing non-ASCII filenames, the filenames are damaged because unzip uses improper conversion when any of its encoding assumptions are incorrect. For example, in the ru_RU.KOI8-R locale, conversion of filenames from CP866 to KOI8-R is required, but conversion from CP850 to ISO-8859-1 is done, which produces filenames consisting of undecipherable characters instead of words (the closest equivalent understandable example for English-only users is rot13). There are several ways around this limitation:
1) For unpacking ZIP archives with filenames containing non-ASCII characters, use WinZip while running the Wine Windows emulator.
2) After running unzip, fix the damage made to the filenames using the convmv tool (http://j3e.de/linux/convmv/). The following is an example for the ru_RU.KOI8-R locale:
Step 1. Undo the conversion done by unzip:
convmv -f iso-8859-1 -t cp850 -r --nosmart --notest \</path/to/unzipped/files>
Step 2. Do the correct conversion instead:
convmv -f cp866 -t koi8-r -r --nosmart --notest \</path/to/unzipped/files>
make -f unix/Makefile generic
The test suite does not work for present target “generic”.
Now, as the root
user:
make prefix=/usr MANDIR=/usr/share/man/man1 \ -f unix/Makefile install
make -f unix/Makefile generic: This target begins by running a configure script (unlike the older targets such as linux and linux_noasm) which creates a flags file that is then used in the build. This ensures that the 32-bit x86 build receives the right flags to unzip files which which are larger than 2GB when extracted.
allows the output of unzip commands to be redirected. |
|
lists, tests or extracts files from a |
|
is a self-extracting stub that can be prepended to
a |
|
searches files in a |
|
produces technical information about the files in a
|
Last updated on 2017-08-16 21:41:37 -0700
The UPower package provides an interface to enumerating power devices, listening to device events and querying history and statistics. Any application or service on the system can access the org.freedesktop.UPower service via the system message bus.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://upower.freedesktop.org/releases/upower-0.99.5.tar.xz
Download MD5 sum: ec57b4b7bf0af568f9a7a5603c921d97
Download size: 422 KB
Estimated disk space required: 12 MB (add 2 MB for tests)
Estimated build time: 0.2 SBU
dbus-glib-0.108, libgudev-231, libusb-1.0.21, and Polkit-0.113+git_2919920+js38
GTK-Doc-1.26 and Python-3.6.2, with PyGObject-3.24.1, umockdev, and python-dbusmock (for part of the testsuite).
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/upower
Install UPower by running the following commands:
./configure --prefix=/usr \ --sysconfdir=/etc \ --localstatedir=/var \ --enable-deprecated \ --disable-static && make
To test the results, issue: make check. Some checks may not pass due to missing files. Test suite should be run from a local GUI session started with dbus-launch.
Now, as the root
user:
make install
--enable-deprecated
:
This switch enables deprecated functionality which is still
needed by some applications.
--disable-static
:
This switch prevents installation of static versions of the
libraries.
--enable-gtk-doc
: Use this
parameter if GTK-Doc is
installed and you wish to rebuild and install the API
documentation.
Last updated on 2017-08-21 16:43:13 -0700
The USB Utils package contains utilities used to display information about USB buses in the system and the devices connected to them.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://www.kernel.org/pub/linux/utils/usb/usbutils/usbutils-008.tar.xz
Download MD5 sum: 2780b6ae21264c888f8f30fb2aab1259
Download size: 284 KB
Estimated disk space required: 3.8 MB
Estimated build time: less than 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/usbutils
Install USB Utils by running the following commands:
sed -i '/^usbids/ s:usb.ids:hwdata/&:' lsusb.py && ./configure --prefix=/usr --datadir=/usr/share/hwdata && make
This package does not come with a test suite.
Now, as the root
user:
make install
To install the usb.ids
data
file, using Wget-1.19.1, run, as the root
user:
install -dm755 /usr/share/hwdata/ && wget http://www.linux-usb.org/usb.ids -O /usr/share/hwdata/usb.ids
The script lsusb.py displays information in a more easily readable form than lsusb. To find the options, use lsusb.py -h. One form of use recommended by the developer is lsusb.py -ciu.
sed ...
lsusb.py: Instructs lsusb.py where to search
usb.ids
.
The usb.ids
data file is
constantly being updated. To get a current version of this
file, using Wget-1.19.1, periodically run again, as the
root
user:
wget http://www.linux-usb.org/usb.ids -O /usr/share/hwdata/usb.ids
You may wish to add an entry to root
's (or any other user who has write
privilege to /usr/share/hwdata
)
crontab to automatically update the usb.ids
file periodically.
is a utility for displaying information about all USB buses in the system and all devices connected to them, but not in human friendly form. |
|
displays information about all USB buses in the system and all devices connected to them in reasonable human friendly form. |
|
is a shell script that displays details of USB buses and devices connected to them. It is designed to be used if /proc/bus/usb/devices is not available on your system. |
|
is used to dump report descriptors and streams from HID (human interface device) interfaces of USB devices. |
Last updated on 2017-08-20 15:06:11 -0700
The presence or absence of the which program in the main LFS book is probably one of the most contentious issues on the mailing lists. It has resulted in at least one flame war in the past. To hopefully put an end to this once and for all, presented here are two options for equipping your system with which. The question of which “which” is for you to decide.
The first option is to install the actual GNU which package.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://ftp.gnu.org/gnu/which/which-2.21.tar.gz
Download (FTP): ftp://ftp.gnu.org/gnu/which/which-2.21.tar.gz
Download MD5 sum: 097ff1a324ae02e0a3b0369f07a7544a
Download size: 148 KB
Estimated disk space required: 1 MB
Estimated build time: less than 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/which
Install which by running the following commands:
./configure --prefix=/usr && make
This package does not come with a test suite.
Now, as the root
user:
make install
The second option (for those who don't want to install the
package) is to create a simple script (execute as the
root
user):
cat > /usr/bin/which << "EOF"
#!/bin/bash
type -pa "$@" | head -n 1 ; exit ${PIPESTATUS[0]}
EOF
chmod -v 755 /usr/bin/which
chown -v root:root /usr/bin/which
This should work OK and is probably the easiest solution for most cases, but is not the most comprehensive implementation.
Last updated on 2017-08-16 21:41:37 -0700
The Zip package contains
Zip utilities. These are
useful for compressing files into ZIP
archives.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://downloads.sourceforge.net/infozip/zip30.tar.gz
Download (FTP): ftp://ftp.info-zip.org/pub/infozip/src/zip30.tgz
Download MD5 sum: 7b74551e63f8ee6aab6fbc86676c0d37
Download size: 1.1 MB
Estimated disk space required: 6.4 MB
Estimated build time: 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/zip
Install Zip by running the following commands:
make -f unix/Makefile generic_gcc
This package does not come with a test suite.
Now, as the root
user:
make prefix=/usr MANDIR=/usr/share/man/man1 -f unix/Makefile install
make prefix=/usr -f
unix/Makefile install: This command overrides
the prefix
variable that is set
to /usr/local
in the
unix/Makefile
. Alternatives to
generic_gcc
can be seen with a
make -f unix/Makefile
list command.
Last updated on 2017-08-16 21:41:37 -0700
A base LFS system can be used as a development platform, however the base system only includes language support for C, C++ and Perl. This chapter provides instructions to build many popular programming environments to greatly expand your system's development capabilities.
Autoconf-2.13 is an old version of Autoconf . This old version accepts switches which are not valid in more recent versions. Now that firefox has started to use python2 for configuring, this old version is required even if configure files have not been changed.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://ftp.gnu.org/gnu/autoconf/autoconf-2.13.tar.gz
Download (FTP): ftp://ftp.gnu.org/gnu/autoconf/autoconf-2.13.tar.gz
Download MD5 sum: 9de56d4a161a723228220b0f425dc711
Download size: 434 KB
Estimated disk space required: 2.8 MB
Estimated build time: less than 0.1 SBU (additional 0.1 SBU for the tests)
DejaGnu-1.6 (Required for the tests)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/autoconf213
Install Autoconf by running the following commands:
patch -Np1 -i ../autoconf-2.13-consolidated_fixes-1.patch && mv -v autoconf.texi autoconf213.texi && rm -v autoconf.info && ./configure --prefix=/usr --program-suffix=2.13 && make
To test the installation, if you have installed DejaGnu-1.6, issue make check (all 253 tests should pass).
Now, as the root
user:
make install && install -v -m644 autoconf213.info /usr/share/info && install-info --info-dir=/usr/share/info autoconf213.info
mv -v autoconf.texi autoconf213.texi: ensure that the info file added by this package will not overwrite the more recent version.
rm -v autoconf.info: ensure that the info file will be created by the current version of texinfo.
--program-suffix=2.13: ensure that the installed programs have the version added to their names, so that only a script which specifically looks for these old versions will find them.
install -v -m644
...: the patch removes install-info from the
Makefile because that would install (and if necessary
recreate) standards.info which is an old version, so now
autoconf213.info
has to be
manually installed.
Produces shell scripts that automatically configure software source code packages to adapt to many kinds of Unix-like systems. |
|
is a tool for creating template files of C #define statements for configure to use |
|
This automatically runs autoconf-2.13, autoheader-2.13, aclocal, automake, gettextize and libtoolize in the right order when changes have been made to autoconf or automake template files. |
|
Can be used as a preliminary step in creating a
|
|
Modifies a |
|
Prints the identifiers that the package uses in C preprocessor conditionals [If a package has already been set up to have some portability, this program can help determine what configure needs to check for. It can also fill in gaps in a configure.in file generated by autoscan.] |
Last updated on 2017-08-20 15:06:11 -0700
Check is a unit testing framework for C. It was installed by LFS in the temporary /tools directory. These instructions install it permanently.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://github.com/libcheck/check/releases/download/0.11.0/check-0.11.0.tar.gz
Download MD5 sum: 9b90522b31f5628c2e0f55dda348e558
Download size: 736 KB
Estimated disk space required: 9.5 MB (add 1.2 MB for the tests)
Estimated build time: 0.1 SBU (add 3.4 SBU for the tests)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/check
Install Check by running the following commands:
./configure --prefix=/usr --disable-static && make
To test the installation, issue make check.
Now, as the root
user:
make docdir=/usr/share/doc/check-0.11.0 install
--disable-static
:
This switch prevents installation of static versions of the
libraries.
Last updated on 2017-08-21 11:12:53 -0700
GNU Clisp is a Common Lisp implementation which includes an interpreter, compiler, debugger, and many extensions.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://ftp.gnu.org/gnu/clisp/latest/clisp-2.49.tar.bz2
Download (FTP): ftp://ftp.gnu.org/gnu/clisp/latest/clisp-2.49.tar.bz2
Download MD5 sum: 1962b99d5e530390ec3829236d168649
Download size: 7.8 MB
Estimated disk space required: 163 MB (add 8 MB for tests)
Estimated build time: 0.9 SBU (18 SBU with tests)
Optional patch: http://www.linuxfromscratch.org/patches/blfs/8.1/clisp-2.49-readline7_fixes-1.patch (required if building against libffcall)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/clisp
This package does not support parallel build.
Remove two tests, which fail for unknown reasons:
sed -i -e '/socket/d' -e '/"streams"/d' tests/tests.lisp
Install Clisp by running the following commands:
If you are building clisp against libffcall, apply the patch to fix a build failure with current readline:
patch -Np1 -i ../clisp-2.49-readline7_fixes-1.patch
Install Clisp by running the following commands:
mkdir build && cd build && ../configure --srcdir=../ \ --prefix=/usr \ --docdir=/usr/share/doc/clisp-2.49 \ --with-libsigsegv-prefix=/usr && ulimit -s 16384 && make -j1
To test the results, issue: make check.
Now, as the root
user:
make install
ulimit -s 16384: this increases the maximum stack size, as recommended by the configure.
--docdir=/usr/share/doc/clisp-2.49:
this ensures the html documentation will go into a versioned
directory instead of straight into /usr/share/html/
.
--with-libsigsegv-prefix=/usr: use this to tell configure that you have installed libsigsegv in /usr, otherwise it will not be found.
--with-libffcall-prefix=/usr
: use
this to tell configure that you have
installed the optional libffcall
in /usr, otherwise like libsigsegv it will not be found.
/usr/lib/clisp-2.49/base/
Last updated on 2017-08-26 10:08:22 -0700
The CMake package contains a modern toolset used for generating Makefiles. It is a successor of the auto-generated configure script and aims to be platform- and compiler-independent. A significant user of CMake is KDE since version 4.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://cmake.org/files/v3.9/cmake-3.9.1.tar.gz
Download MD5 sum: 00f43c6a56d4903436317c14f9ca7f37
Download size: 7.4 MB
Estimated disk space required: 335 MB (add 375 MB for tests)
Estimated build time: 2.2 SBU (add 2.8 SBU for tests, both using parallelism=4)
cURL-7.55.1 and libarchive-3.3.2
Qt-5.9.1 (for the Qt-based GUI), Subversion-1.9.7 (for testing), libuv, and Sphinx (for building documents)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/cmake
Install CMake by running the following commands:
sed -i '/CMAKE_USE_LIBUV 1/s/1/0/' CMakeLists.txt && sed -i '/"lib64"/s/64//' Modules/GNUInstallDirs.cmake && ./bootstrap --prefix=/usr \ --system-libs \ --mandir=/share/man \ --no-system-jsoncpp \ --no-system-librhash \ --docdir=/share/doc/cmake-3.9.1 && make
To test the results, issue: bin/ctest -j<N>
-O
cmake-3.9.1-test.log, where <N>
is an integer
between 1 and the number of system cores.
Now, as the root
user:
make install
sed ... CMakeLists.txt: This command disables the attempt to use the external libuv library.
sed ... Modules/GNUInstallDirs.cmake: This command disables applications using cmake from attempting to install files in /usr/lib64/.
--system-libs
: This
switch forces the build system to link against Zlib, Bzip2, cURL, Expat and libarchive installed on the system.
--no-system-jsoncpp
:
This switch removes the JSON-C++ library from the list of system
libraries. A bundled version of that library is used instead.
--qt-gui
: This switch enables
building of the Qt-based GUI
for CMake.
Last updated on 2017-08-18 12:42:43 -0700
DejaGnu is a framework for
running test suites on GNU tools. It is written in
expect, which
uses Tcl (Tool command
language). It was installed by LFS in the temporary
/tools
directory. These
instructions install it permanently.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://ftp.gnu.org/gnu/dejagnu/dejagnu-1.6.tar.gz
Download (FTP): ftp://ftp.gnu.org/gnu/dejagnu/dejagnu-1.6.tar.gz
Download MD5 sum: 1fdc2eb0d592c4f89d82d24dfdf02f0b
Download size: 512 KB
Estimated disk space required: 3.2 MB
Estimated build time: less than 0.1 SBU
DocBook-utils-0.6.14 and docbook2X (both looked for by the configure script but not used in the build)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/dejagnu
Install DejaGnu by running the following commands:
./configure --prefix=/usr && makeinfo --html --no-split -o doc/dejagnu.html doc/dejagnu.texi && makeinfo --plaintext -o doc/dejagnu.txt doc/dejagnu.texi
To test the results, issue make check.
Now, as the root
user:
make install && install -v -dm755 /usr/share/doc/dejagnu-1.6 && install -v -m644 doc/dejagnu.{html,txt} \ /usr/share/doc/dejagnu-1.6
Last updated on 2017-08-21 11:12:53 -0700
The Doxygen package contains a documentation system for C++, C, Java, Objective-C, Corba IDL and to some extent PHP, C# and D. It is useful for generating HTML documentation and/or an off-line reference manual from a set of documented source files. There is also support for generating output in RTF, PostScript, hyperlinked PDF, compressed HTML, and Unix man pages. The documentation is extracted directly from the sources, which makes it much easier to keep the documentation consistent with the source code.
You can also configure Doxygen to extract the code structure from undocumented source files. This is very useful to quickly find your way in large source distributions. Used along with Graphviz, you can also visualize the relations between the various elements by means of include dependency graphs, inheritance diagrams, and collaboration diagrams, which are all generated automatically.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://ftp.stack.nl/pub/doxygen/doxygen-1.8.13.src.tar.gz
Download (FTP): ftp://ftp.stack.nl/pub/doxygen/doxygen-1.8.13.src.tar.gz
Download MD5 sum: 0fa414975f8cd6d30e126c28327c1f7c
Download size: 4.7 MB
Estimated disk space required: 180 MB (with all programs, docs, and tests)
Estimated build time: 2.2 SBU (with all programs, docs, and tests)
Graphviz-2.40.1, ghostscript-9.21, libxml2-2.9.4 (required for the tests), LLVM-4.0.1 (with clang), Python-2.7.13 or Python-3.6.2, Qt-5.9.1 (for doxywizard), texlive-20170524 (or install-tl-unx), and xapian-1.4.4 (for doxyindexer)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/doxygen
Install Doxygen by running the following commands:
mkdir -v build && cd build && cmake -G "Unix Makefiles" \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=/usr \ -Wno-dev .. && make
To test the results, issue: make tests.
If you wish to generate the package documentation, you must have Python, TeX Live (for HTML docs) and Ghostscript (for PDF docs) installed, then issue the following command:
cmake -DDOC_INSTALL_DIR=share/doc/doxygen-1.8.13 -Dbuild_doc=ON .. && make docs
Now, as the root
user:
make install && install -vm644 ../doc/*.1 /usr/share/man/man1
If you have generated the package documentation, then the man pages are automatically installed, and you do not need to run the last install ... command.
-Dbuild_wizard=ON
: Use this
switch if Qt5 is installed
and you wish to build the GUI front-end.
-Dbuild_search=ON
: Use this
switch if xapian is
installed and you wish to build external search tools
(doxysearch.cgi
and doxyindexer).
-Duse_libclang=ON
: Use this
switch if llvm with
clang are installed, to add
support for libclang parsing.
There is no real configuration necessary for the Doxygen package although three additional packages are required if you wish to use extended capabilities. If you need to use the language translation features, you must have Python-2.7.13 installed. If you require formulas to create PDF documentation, then you must have texlive-20170524 installed. If you require formulas to convert PostScript files to bitmaps, then you must have ghostscript-9.21 installed.
is a command-line based utility used to generate template configuration files and then generate documentation from these templates. Use doxygen --help for an explanation of the command-line parameters. |
|
is a GUI front-end for configuring and running doxygen. |
|
generates a search index called |
|
is a CGI program to search the data indexed by doxyindexer. |
Last updated on 2017-08-24 18:56:23 -0700
The elfutils package contains a set of utilities and libraries for handling ELF (Executable and Linkable Format) files.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://sourceware.org/ftp/elfutils/0.170/elfutils-0.170.tar.bz2
Download (FTP): ftp://sourceware.org/pub/elfutils/0.170/elfutils-0.170.tar.bz2
Download MD5 sum: 03599aee98c9b726c7a732a2dd0245d5
Download size: 8.0 MB
Estimated disk space required: 78 MB (with tests)
Estimated build time: 0.9 SBU (with tests)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/elfutils
Install elfutils by running the following commands:
./configure --prefix=/usr --program-prefix="eu-" && make
To test the results, issue: make check. One test, run-strip-nothing.sh, is known to fail.
Now, as the root
user:
make install
--program-prefix="eu-"
: This
switch renames installed programs to avoid conflict with
Binutils programs installed
in LFS.
--enable-valgrind
: Run all tests
under valgrind.
converts addresses into file names and line numbers. |
|
creates, modifies, and extracts from archives. |
|
compares relevant parts of two ELF files for equality. |
|
compresses or decompresses sections in an ELF file. |
|
does pedantic checking of ELF files compliance with gABI/psABI spec. |
|
locates the source of text relocations in FILEs (a.out by default). |
|
lists symbols from FILEs (a.out by default). |
|
shows information from FILEs (a.out by default). |
|
generates an index to speed up access to archives. |
|
prints information from ELF files in human-readable form. |
|
lists section sizes of FILEs (a.out by default). |
|
prints a stack for each thread in a process or core file. |
|
prints the strings of printable characters in files. |
|
discards symbols from object files. |
|
combines stripped files with separate symbols and debug information. |
Last updated on 2017-08-19 20:26:54 -0700
The Expect package was installed in the LFS temporary tools directory for testing other packages. These procedures install it in a permanent location. It contains tools for automating interactive applications such as telnet, ftp, passwd, fsck, rlogin, tip, etc. Expect is also useful for testing these same applications as well as easing all sorts of tasks that are prohibitively difficult with anything else.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://downloads.sourceforge.net/expect/expect5.45.tar.gz
Download MD5 sum: 44e1a4f4c877e9ddc5a542dfa7ecc92b
Download size: 620 KB
Estimated disk space required: 4.1 MB
Estimated build time: 0.2 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/expect
Install Expect by running the following commands:
./configure --prefix=/usr \ --with-tcl=/usr/lib \ --enable-shared \ --mandir=/usr/share/man \ --with-tclinclude=/usr/include && make
To test the results, issue: make test.
Now, as the root
user:
make install && ln -svf expect5.45/libexpect5.45.so /usr/lib
-with-tcl=/usr/lib
:
This parameter is used to tell the configure script where the
tclConfig.sh is
located.
--enable-shared
: This
option enables building the shared library.
ln -sf ...: This command creates a required link to the shared library.
Reference the expect man page for
information about utilizing the expect.rc
configuration files.
Additionally, many of the tools contained in the
Expect package will use
their own configuration files. Reference the respective man
page, or examine the script directly for configuration file
information.
generates an Expect script from watching a session. |
|
is a wrapper to make passwd(1) be non-interactive. |
|
encrypts all files in a directory. |
|
decrypts all files in a directory. |
|
allows processes to be disconnected and reconnected to a terminal. |
|
is a program that “talks” to other interactive programs according to a script. |
|
retrieves an RFC (or the index) from UUNET. |
|
allows two (or more) people to interact with one shell (or any arbitrary program). |
|
unhangs a printer which claims it is “waiting for lock”. |
|
generates passwords and can apply them automatically to users. |
|
changes a password on multiple machines. |
|
is much like ftp except it
uses |
|
is rlogin except it uses the local current directory as the current working directory on the remote machine. |
|
reads a complete line from stdin and aborts after a given number of seconds. |
|
runs a program for a given amount of time. |
|
disables the output buffering that occurs when program output is redirected. |
|
retrieves a weather report (courtesy University of Michigan) for a given city or geographical area. |
|
creates multiple xterms that can be driven together or separately. |
|
pops up a window when there is unread news in your favorite newsgroups and removes the window after you've read the news. |
|
is a script to change passwords using expect and Tk. |
|
allows users in separate xterms to share one shell (or any program that runs in an xterm). |
|
is a script that acts as a front-end for xpilot. |
|
contains functions that allow Expect to be used as a Tcl extension or to be used directly from C or C++ (without Tcl). |
Last updated on 2017-08-21 11:12:53 -0700
The GCC package contains the GNU Compiler Collection. This page describes the installation of compilers for the following languages: C, C++, Fortran, Objective C, Objective C++, and Go. One additional languages , Ada is available in the collection. It has specific requirements, so it is described in a separate page (GCC-Ada-7.2.0). Since C and C++ are installed in LFS, this page is either for upgrading C and C++, or for installing additional compilers.
This package is known to build and work properly using an LFS-8.1 platform.
If you are upgrading GCC from any other version prior to 7.2.0, then you must be careful compiling 3rd party kernel modules. You should ensure that the kernel and all its native modules are also compiled using the same version of GCC that you use to build the 3rd party module. This issue does not affect native kernel (and kernel modules) updates, as the instructions below are a complete reinstallation of GCC. If you have existing 3rd party modules installed, ensure they are recompiled using the updated version of GCC. As always, never update the kernel headers from the ones used when Glibc was compiled during LFS.
Some system headers need to be fixed to be used with GCC.
This is done during the installation of GCC, and the
“fixed” headers are
installed in /usr/lib/gcc/<machine triplet>/<GCC
version>/include-fixed
. This is harmless if GCC
is built during the LFS stage. But if you reinstall GCC in
BLFS, some of the BLFS packages may be “fixed”. If one of those packages is
reinstalled afterwards, the “fixed” headers are not updated, which
may lead to version mismatches. In case that happens, the
“fixed” headers must
be updated by running (as root
): /usr/libexec/gcc/x86_64-pc-linux-gnu/7.1.0/install-tools/mkheaders
. The machine triplet may be different on a 32bit system.
Download (HTTP): https://ftp.gnu.org/gnu/gcc/gcc-7.2.0/gcc-7.2.0.tar.xz
Download (FTP): ftp://ftp.gnu.org/gnu/gcc/gcc-7.2.0/gcc-7.2.0.tar.xz
Download MD5 sum: ff370482573133a7fcdd96cd2f552292
Download size: 59 MB
Estimated disk space required: 7.4 GB (with tests)
Estimated build time: 60 SBU (with tests and parallelism=4)
DejaGnu-1.6, for tests
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gcc
Even if you specify only languages other than C and C++ to the ./configure command below, the installation process will overwrite your existing GCC C and C++ compilers and libraries. Having the Tcl, Expect and DejaGnu packages installed before beginning the build is highly recommended so you can run the full suite of tests.
Do not continue with the make install command until you are confident the build was successful. You can compare your test results with those found at http://gcc.gnu.org/ml/gcc-testresults/. You may also want to refer to the information found in the GCC section of Chapter 6 in the LFS book (../../../../lfs/view/8.1/chapter06/gcc.html).
The instructions below are intentionally performing a
“bootstrap” process.
Bootstrapping is needed for robustness and is highly
recommended when upgrading the compilers version. To disable
bootstrap anyways, add --disable-bootstrap
to the
./configure
options below.
Install GCC by running the following commands:
case $(uname -m) in x86_64) sed -e '/m64=/s/lib64/lib/' \ -i.orig gcc/config/i386/t-linux64 ;; esac mkdir build && cd build && ../configure \ --prefix=/usr \ --disable-multilib \ --with-system-zlib \ --enable-languages=c,c++,fortran,go,objc,obj-c++ && make
If you have installed additional packages such as Valgrind and GDB, the GCC part of the testsuite will run more tests than in LFS. Some of those will report FAIL and others XPASS (pass when expected to FAIL). To run the tests, issue:
ulimit -s 32768 && make -k check
The tests are very long, and the results may be hard to find in the logs, specially if you use parallel jobs with make. You can get a summary of the tests with:
../contrib/test_summary
Now, as the root
user:
make install && mkdir -pv /usr/share/gdb/auto-load/usr/lib && mv -v /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib && chown -v -R root:root \ /usr/lib/gcc/*linux-gnu/7.2.0/include{,-fixed}
Some packages expect to find the C preprocessor in
/lib
or may refer to the C
compiler under the name cc. The following symbolic
links are not needed if you have followed the LFS
instructions, since they have been already created. If you do
not have them on your system, issue as the root
user:
ln -v -sf ../usr/bin/cpp /lib && ln -v -sf gcc /usr/bin/cc && install -v -dm755 /usr/lib/bfd-plugins && ln -sfv ../../libexec/gcc/$(gcc -dumpmachine)/7.2.0/liblto_plugin.so /usr/lib/bfd-plugins/
mkdir build; cd build: The GCC documentation recommends building the package in a dedicated build directory.
--disable-multilib
:
This parameter ensures that files are created for the
specific architecture of your computer.
--with-system-zlib
:
Uses the system zlib instead
of the bundled one. zlib is
used for compressing and uncompressing GCC's intermediate language in LTO (Link
Time Optimization) object files.
--enable-languages=c,c++,fortran,go,objc,obj-c++
:
This command identifies which languages to build. You may
modify this command to remove undesired languages. Two other
languages can be added, besides ADA, which is described on a
separate page: BRIG (add brig
to the list of enabled
languages), a binary format for HSAIL (Heterogeneous System
Architecture Intermediate Language), and JIT (add jit
to the list of enabled
languages), a library which can be linked into interpreters
that want to generate machine code “on the fly” at run-time. They have not
been tested by the BLFS developers.
--with-default-libstdcxx-abi=gcc4-compatible
:
Use this switch if you are upgrading from a GCC version prior to 5.1.0, and you do
not want to recompile all the libraries written in C++.
ulimit -s 32768: This command prevents several tests from running out of stack space.
make -k check: This command runs the test suite without stopping if any errors are encountered.
../contrib/test_summary: This command will produce a summary of the test suite results. You can append | grep -A7 Summ to the command to produce an even more condensed version of the summary. You may also wish to redirect the output to a file for review and comparison later on.
mv -v /usr/lib/*gdb.py
...: The installation stage puts some files
used by gdb under the
/usr/lib
directory. This
generates spurious error messages when performing
ldconfig. This
command moves the files to another location.
chown -v -R root:root
/usr/lib/gcc/*linux-gnu/...: If the package
is built by a user other than root, the ownership of the
installed include
directory
(and its content) will be incorrect. This command changes the
ownership to the root
user
and group.
Some program and library names and descriptions are not listed here, but can be found at ../../../../lfs/view/8.1/chapter06/gcc.html#contents-gcc as they were initially installed during the building of LFS.
Last updated on 2017-08-26 09:42:24 -0700
Ada is a modern programming language designed for large, long-lived applications — and embedded systems in particular — where reliability and efficiency are essential. It has a set of unique technical features that make it highly effective for use in large, complex and safety-critical projects.
The compiler and associated tools on this page are known as the GNAT technology, developed by the Adacore company, using the GCC backend. Since parts of the Ada compiler are written in Ada, there is a circular dependency on an Ada compiler. The instructions below first install a binary compiler. You do not need to do that if you already have built GNAT tools.
This package is known to build and work properly using an LFS-8.1 platform.
Using the instructions on this page will have the effect that the C and C++ compiler and libraries will be reinstalled, overwriting the ones on your system. This may lead to some issues. Please read the notes and caution on the GCC-7.2.0 page.
If you want to install other compilers in the GCC collection, do that first, or
specify ada in the --enable-languages
switch to
configure. If
you rebuild GCC without
enabling ada after running the instructions on this page,
the new compiler will not be able to compile ADA anymore.
Download (HTTP): https://ftp.gnu.org/gnu/gcc/gcc-7.2.0/gcc-7.2.0.tar.xz
Download (FTP): ftp://ftp.gnu.org/gnu/gcc/gcc-7.2.0/gcc-7.2.0.tar.xz
Download MD5 sum: ff370482573133a7fcdd96cd2f552292
Download size: 59 MB
Estimated disk space required: 8.9 GB (1.5 GB added if GNAT install dir is not removed)
Estimated build time: 56 SBU (with tests and parallelism=4)
You will need to install GNAT temporarily to satisfy the circular dependency. You may point your browser to the AdaCore download page, choose your platform and 2016 (64 bit machines) or 2014 (32 bit machines), then select the file to download. Alternatively, direct links to the 64 bit and 32 bit linux versions are given below.
GNAT 64 bit binary: http://mirrors.cdn.adacore.com/art/591c6d80c7a447af2deed1d7
GNAT 64 bit MD5 sum: 226dac83d9e6490fc8542ac0934a1db0
GNAT 64 bit size: 473 MB
GNAT 32 bit binary: http://mirrors.cdn.adacore.com/art/564b3e9dc8e196b040fbe248
GNAT 32 bit MD5 sum: 69423c7ad8d9759377d4fff71a78992d
GNAT 32 bit size: 222 MB
DejaGnu-1.6, for tests
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gcc-ada
Before unpacking and changing into the GCC source directory,
first unpack the GNAT
tarball, and change to the GNAT directory. Then, install the
GNAT binary by running the
following command as the root
user:
make ins-all prefix=/opt/gnat
The GNAT compiler can be
invoked by executing the gcc binary installed in
/opt/gnat/bin
.
You may now remove the GNAT source directory if desired.
Prepare to compile GCC by
placing the GNAT version of
gcc at the
beginning of the PATH
variable by
using the following commands:
PATH_HOLD=$PATH && export PATH=/opt/gnat/bin:$PATH_HOLD
Doing so has the drawback that the GCC and Binutils executables are taken from the
just installed GNAT package,
but the versions of those executables are outdated compared
to those installed in LFS. This is not important for the
GCC compilers, since they
recompile themselves during the bootstrap process. On the
other hand, the outdated ld and as tools are used all
along. In order to use the LFS tools, issue as the
root
user:
find /opt/gnat -name ld -exec mv -v {} {}.old \; find /opt/gnat -name as -exec mv -v {} {}.old \;
Install GCC Ada by running the following commands:
case $(uname -m) in x86_64) sed -e '/m64=/s/lib64/lib/' \ -i.orig gcc/config/i386/t-linux64 ;; esac mkdir build && cd build && ../configure \ --prefix=/usr \ --disable-multilib \ --with-system-zlib \ --enable-languages=ada && make
If you have installed additional packages such as Valgrind and GDB, the GCC part of the testsuite will run more tests than in LFS. Some of those will report FAIL and others XPASS (pass when expected to FAIL). To run the tests, issue:
ulimit -s 32768 && make -k check
The tests are very long, and the results may be hard to find in the logs, specially if you use parallel jobs with make. You can get a summary of the tests with:
../contrib/test_summary
Now, as the root
user:
make install && mkdir -pv /usr/share/gdb/auto-load/usr/lib && mv -v /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib && chown -v -R root:root \ /usr/lib/gcc/*linux-gnu/7.2.0/include{,-fixed} \ /usr/lib/gcc/*linux-gnu/7.2.0/ada{lib,include}
You should now remove the GNAT installation and perform other
cleanups. First, as the root
user:
rm -rf /opt/gnat
Then, as a normal user:
export PATH=$PATH_HOLD && unset PATH_HOLD
mkdir build; cd build: The GCC documentation recommends building the package in a dedicated build directory.
--disable-multilib
:
This parameter ensures that files are created for the
specific architecture of your computer.
--with-system-zlib
:
Uses the system zlib instead
of the bundled one. zlib is
used for compressing and uncompressing GCC's intermediate language in LTO (Link
Time Optimization) object files.
--enable-languages=ada
:
Instructs the build system to build the Ada tools and
compiler. It is unavoidable that the C and C++ compilers be built too.
--with-default-libstdcxx-abi=gcc4-compatible
:
Use this switch if you are building GNAT tools using a GCC version prior to 5.1.0, and you do
not want to recompile all the libraries written in C++.
ulimit -s 32768: This command prevents several tests from running out of stack space.
make -k check: This command runs the test suite without stopping if any errors are encountered.
../contrib/test_summary: This command will produce a summary of the test suite results. You can append | grep -A7 Summ to the command to produce an even more condensed version of the summary. You may also wish to redirect the output to a file for review and comparison later on.
chown -v -R root:root
/usr/lib/gcc/*linux-gnu/...: If the package
is built by a user other than root, the ownership of the
installed include
and
adalib
directories (and their
contents) will be incorrect. These commands change the
ownership to the root
user
and group.
/usr/lib/gcc/<arch-triplet>/7.2.0/adalib
Only the Ada specific files are listed here. Others can be found at ../../../../lfs/view/8.1/chapter06/gcc.html#contents-gcc as they were initially installed during the building of LFS.
is a wrapper that accepts a number of commands and calls the corresponding tool from the list below. |
|
is used to bind compiled objects. |
|
is useful for renaming files to meet the standard Ada default file naming conventions. |
|
is used to remove files associated with a GNAT project. |
|
is intended for locating definition and/or references to specified entities in a GNAT project. |
|
is used to determine the crunched name for a given file, when crunched to a specified maximum length. |
|
is used to link programs and build an executable file. |
|
is the compiled unit browser. |
|
is the Ada compiler, which performs compilation, binding and linking. |
|
will list the files associated with a GNAT project. |
|
is the GNAT external preprocessor. |
|
is similar to gnatfind, but generates a full report of all cross-references. |
Last updated on 2017-08-26 09:42:24 -0700
The GC package contains the Boehm-Demers-Weiser conservative garbage collector, which can be used as a garbage collecting replacement for the C malloc function or C++ new operator. It allows you to allocate memory basically as you normally would, without explicitly deallocating memory that is no longer useful. The collector automatically recycles memory when it determines that it can no longer be otherwise accessed. The collector is also used by a number of programming language implementations that either use C as intermediate code, want to facilitate easier interoperation with C libraries, or just prefer the simple collector interface. Alternatively, the garbage collector may be used as a leak detector for C or C++ programs, though that is not its primary goal.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://www.hboehm.info/gc/gc_source/gc-7.6.0.tar.gz
Download MD5 sum: bf46ccbdaccfa3186c2ab87191c8855a
Download size: 1.1 MB
Estimated disk space required: 13 MB (with tests)
Estimated build time: 0.2 SBU (with tests)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gc
Install GC by running the following commands:
sed -i 's#pkgdata#doc#' doc/doc.am && autoreconf -fi && ./configure --prefix=/usr \ --enable-cplusplus \ --disable-static \ --docdir=/usr/share/doc/gc-7.6.0 && make
To test the results, issue: make check.
Now, as the root
user:
make install && install -v -m644 doc/gc.man /usr/share/man/man3/gc_malloc.3 && ln -sfv gc_malloc.3 /usr/share/man/man3/gc.3
sed -i 's#pkgdata#doc#'
doc/doc.am and --docdir=/usr/share/doc/gc-7.6.0
:
These commands are used so the package will install the
documentation in a versioned directory.
autoreconf -fi:
This regenerates the configure script and the
Makefile.in
files.
--enable-cplusplus
:
This parameter enables the building and installing of the C++
library along with the standard C library.
--disable-static
:
This switch prevents installation of static versions of the
libraries.
Last updated on 2017-08-21 11:12:53 -0700
GDB, the GNU Project debugger, allows you to see what is going on “inside” another program while it executes -- or what another program was doing at the moment it crashed. Note that GDB is most effective when tracing programs and libraries that were built with debugging symbols and not stripped.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://ftp.gnu.org/gnu/gdb/gdb-8.0.tar.xz
Download (FTP): ftp://ftp.gnu.org/gnu/gdb/gdb-8.0.tar.xz
Download MD5 sum: c3d35cd949084be53b92cc1e03485f88
Download size: 19 MB
Estimated disk space required: 450 MB (add 193 MB for tests, add 677 MB for docs)
Estimated build time: 4.3 SBU (add 27 SBU for tests, add 0.7 for docs)
DejaGnu-1.6 (for tests), Doxygen-1.8.13, GCC-7.2.0 (gfortran, for some tests), Guile-2.2.2 (currently broken), Python-2.7.13, rustc-1.19.0 (for some tests), Valgrind-3.13.0, and SystemTap (run-time dependency, also used in a few tests)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/gdb
Install GDB by running the following commands:
./configure --prefix=/usr --with-system-readline --without-guile && make
Optionally, to build the API documentation using Doxygen-1.8.13, run:
make -C gdb/doc doxy
To test the results, issue:
pushd gdb/testsuite && make site.exp && echo "set gdb_test_timeout 120" >> site.exp && runtest TRANSCRIPT=y popd
See gdb/testsuite/README and TestingGDB. There are many problems with the test suite:
Clean directories are needed if re-running the tests. For that reason, it is recommended to make a copy of the compiled source code directory before the tests in case you need to run the tests again.
Results depend on installed compilers.
There are a large number of timeouts (there is a variable that can be set to increase time for timeout, but changing it will result in a different number of tests being run).
There are failures associated with system readline 6.x.
A few tests assume that the header file <sys/sdt.h>
, part of SystemTap, is
present.
About 3% of the tests fail (out of over 35000 tests).
Now, as the root
user:
make -C gdb install
If you have built the API documentation, it is now in
gdb/doc/doxy. You can install it (as the root
user):
install -d /usr/share/doc/gdb-8.0 && rm -rf gdb/doc/doxy/xml && cp -Rv gdb/doc/doxy /usr/share/doc/gdb-8.0
--without-guile
: This
switch disables support for Guile since version 2.2 changed the way
that C ports were handled.
--with-system-readline
: This
switch forces GDB to use the
copy of Readline installed
in LFS.
generates a core dump of a running program. |
|
is the GNU Debugger. |
|
is a remote server for the GNU debugger (it allows programs to be debugged from a different machine). |
|
contains functions for the in-process tracing agent. The agent allows for installing fast tracepoints, listing static tracepoint markers, probing static tracepoints markers, and starting trace monitoring. |
Last updated on 2017-08-23 10:58:13 -0700
Git is a free and open source, distributed version control system designed to handle everything from small to very large projects with speed and efficiency. Every Git clone is a full-fledged repository with complete history and full revision tracking capabilities, not dependent on network access or a central server. Branching and merging are fast and easy to do. Git is used for version control of files, much like tools such as Mercurial-4.3.1, Bazaar, Subversion-1.9.7, CVS, Perforce, and Team Foundation Server.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://www.kernel.org/pub/software/scm/git/git-2.14.1.tar.xz
Download MD5 sum: a55bc6a2164d3ef1c3e5fc2f0c1d0d52
Download size: 4.6 MB
Estimated disk space required: 542 MB (with optional dependencies and documentation, add 24MB if building the docs)
Estimated build time: 0.3 SBU (with parallelism=4, add 2.1 SBU if building documentation, add 1.4 SBU for tests with parallelism=4)
https://www.kernel.org/pub/software/scm/git/git-manpages-2.14.1.tar.xz (not needed if you've installed asciidoc-8.6.9, xmlto-0.0.28, and prefer to rebuild them)
https://www.kernel.org/pub/software/scm/git/git-htmldocs-2.14.1.tar.xz and other docs (not needed if you've installed asciidoc-8.6.9 and want to rebuild the documentation).
cURL-7.55.1 (needed to use Git over http, https, ftp or ftps), OpenSSL-1.1.0f, Error-0.17025, and Python-2.7.13
pcre2-10.30 (or the deprecated PCRE-8.41), in either case
configured with --enable-jit
,
Subversion-1.9.7 with Perl bindings
(for git svn),
Tk-8.6.7
(gitk, a simple Git
repository viewer, uses Tk
at runtime), and Valgrind-3.13.0
xmlto-0.0.28 and asciidoc-8.6.9 or AsciiDoctor, and also dblatex (for the PDF version of the user manual), and docbook2x to create info pages
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/git
Install Git by running the following commands:
./configure --prefix=/usr --with-gitconfig=/etc/gitconfig && make
You can build the man pages and/or html docs, or use downloaded ones. If you choose to build them, use next two following instructions.
If you have installed asciidoc-8.6.9 you can create the html version of the man pages and other docs:
make html
If you have installed asciidoc-8.6.9 and xmlto-0.0.28 you can create the man pages:
make man
The test suite can be run in parallel mode. To run the test suite, issue: make test. If run as a normal user, 0 tests should be reported as failed in the final summary.
Now, as the root
user:
make install
Install the man pages as root
user:
make install-man
Install the html docs as root
user:
make htmldir=/usr/share/doc/git-2.14.1 install-html
If you downloaded the man pages untar them as the
root
user:
tar -xf ../git-manpages-2.14.1.tar.xz \ -C /usr/share/man --no-same-owner --no-overwrite-dir
If you downloaded the html docs untar them as the
root
user:
mkdir -vp /usr/share/doc/git-2.14.1 && tar -xf ../git-htmldocs-2.14.1.tar.xz \ -C /usr/share/doc/git-2.14.1 --no-same-owner --no-overwrite-dir && find /usr/share/doc/git-2.14.1 -type d -exec chmod 755 {} \; && find /usr/share/doc/git-2.14.1 -type f -exec chmod 644 {} \;
For both methods, the html-docs include a lot of plain text
files. Reorganize the files as the root
user:
mkdir -vp /usr/share/doc/git-2.14.1/man-pages/{html,text} && mv /usr/share/doc/git-2.14.1/{git*.txt,man-pages/text} && mv /usr/share/doc/git-2.14.1/{git*.,index.,man-pages/}html && mkdir -vp /usr/share/doc/git-2.14.1/technical/{html,text} && mv /usr/share/doc/git-2.14.1/technical/{*.txt,text} && mv /usr/share/doc/git-2.14.1/technical/{*.,}html && mkdir -vp /usr/share/doc/git-2.14.1/howto/{html,text} && mv /usr/share/doc/git-2.14.1/howto/{*.txt,text} && mv /usr/share/doc/git-2.14.1/howto/{*.,}html && sed -i '/^<a href=/s|howto/|&html/|' /usr/share/doc/git-2.14.1/howto-index.html && sed -i '/^\* link:/s|howto/|&html/|' /usr/share/doc/git-2.14.1/howto-index.txt
--with-gitconfig=/etc/gitconfig
:
This sets /etc/gitconfig
as the
file that stores the default, system wide, Git settings.
--without-python
: Use this switch
if Python is not installed.
--with-libpcre2
: Use this switch
if PCRE2 is installed and
has been built with the non-default JIT enabled.
--with-libpcre2
: As an
alternative to PCRE2, use this switch if the deprecated
PCRE is installed and has
been built with the non-default JIT enabled.
tar -xf
../git-manpages-2.14.1.tar.gz -C /usr/share/man
--no-same-owner: This untars git-manpages-2.14.1.tar.gz
. The
-C
option makes tar change
directory to /usr/share/man
before it starts to decompress the docs. The --no-same-owner
option stops tar from
preserving the user and group details of the files. This is
useful as that user or group may not exist on your system;
this could (potentially) be a security risk.
mv /usr/share/doc/git-2.14.1 ...: These commands move some of the files into subfolders to make it easier to sort through the docs and find what you're looking for.
find ... chmod ...: These commands correct the permissions in the shipped documentation tar file.
is the stupid content tracker. |
|
is a CVS server emulator for Git. |
|
is a graphical Git repository browser (needs Tk-8.6.7). |
|
is invoked by git send-pack and updates the repository with the information fed from the remote end. |
|
is a login shell for SSH accounts to provide restricted Git access. |
|
is invoked by git archive --remote and sends a generated archive to the other end over the git protocol. |
|
is invoked by git fetch-pack, it discovers what objects the other side is missing, and sends them after packing. |
Last updated on 2017-08-20 15:06:11 -0700
The Guile package contains the GNU Project's extension language library. Guile also contains a stand alone Scheme interpreter.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://ftp.gnu.org/gnu/guile/guile-2.2.2.tar.xz
Download (FTP): ftp://ftp.gnu.org/gnu/guile/guile-2.2.2.tar.xz
Download MD5 sum: d3c002bcf92dbf68f6de45803874db0f
Download size: 10.3 MB
Estimated disk space required: 176 MB (add 3 MB for tests)
Estimated build time: 9.3 SBU (add 0.5 SBU for tests)
GC-7.6.0, libffi-3.2.1 and libunistring-0.9.7
Emacs-25.2 and GDB-8.0 (run-time only dependencies).
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/guile
Install Guile by running the following commands:
./configure --prefix=/usr \ --disable-static \ --docdir=/usr/share/doc/guile-2.2.2 && make && make html && makeinfo --plaintext -o doc/r5rs/r5rs.txt doc/r5rs/r5rs.texi && makeinfo --plaintext -o doc/ref/guile.txt doc/ref/guile.texi
To test the results, issue: ./check-guile.
Now, as the root
user:
make install && make install-html && mv /usr/lib/libguile-*-gdb.scm /usr/share/gdb/auto-load/usr/lib && mv /usr/share/doc/guile-2.2.2/{guile.html,ref} && mv /usr/share/doc/guile-2.2.2/r5rs{.html,} && find examples -name "Makefile*" -delete && cp -vR examples /usr/share/doc/guile-2.2.2 && for DIRNAME in r5rs ref; do install -v -m644 doc/${DIRNAME}/*.txt \ /usr/share/doc/guile-2.2.2/${DIRNAME} done && unset DIRNAME
--disable-static
:
This switch prevents installation of static versions of the
libraries.
is a stand-alone Scheme interpreter for Guile. |
|
is a Guile script which provides the information necessary to link your programs against the Guile library, in much the same way PkgConfig does. |
|
is a script to parse declarations in your C code for Scheme visible C functions. |
|
is a wrapper program installed along with guile, which knows where a particular module is installed and calls it, passing its arguments to the program. |
|
is a symlink to guild. |
Last updated on 2017-08-20 20:24:54 -0700
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.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://download.tuxfamily.org/librep/librep_0.92.7.tar.xz
Download MD5 sum: 036195b371006848e29ed6f50ddc8475
Download size: 840 KB
Estimated disk space required: 10 MB
Estimated build time: 0.3 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/librep
Install librep by running the following commands:
./configure --prefix=/usr --disable-static && make
This package does not come with a test suite.
Now, as the root
user:
make install
Last updated on 2017-08-26 15:47:53 -0700
The LLVM package contains a collection of modular and reusable compiler and toolchain technologies. The Low Level Virtual Machine (LLVM) Core libraries provide a modern source and target-independent optimizer, along with code generation support for many popular CPUs (as well as some less common ones!). These libraries are built around a well specified code representation known as the LLVM intermediate representation ("LLVM IR").
The optional Clang and Compiler RT packages provide new C, C++, Objective C and Objective C++ front-ends and runtime libraries for the LLVM.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://llvm.org/releases/4.0.1/llvm-4.0.1.src.tar.xz
Download MD5 sum: a818e70321b91e2bb2d47e60edd5408f
Download size: 20 MB
Estimated disk space required: 1.8 GB (with Clang, add 8.2 GB for tests)
Estimated build time: 19 SBU (with Clang and parallelism=4, add 14 SBU for tests using 12 cores)
Download: http://llvm.org/releases/4.0.1/cfe-4.0.1.src.tar.xz
Download MD5 sum: a6c7b3e953f8b93e252af5917df7db97
Download size: 11 MB
Download: http://llvm.org/releases/4.0.1/compiler-rt-4.0.1.src.tar.xz
Download MD5 sum: 0227ac853ce422125f8bb08f6ad5c995
Download size: 1.4 MB
Optional patch: http://www.linuxfromscratch.org/patches/blfs/8.1/compiler-rt-4.0.1-glibc-2.26-1.patch (required if using compiler-rt)
libffi-3.2.1 and Python-2.7.13
Doxygen-1.8.13, Graphviz-2.40.1, libxml2-2.9.4, texlive-20170524 (or install-tl-unx), Valgrind-3.13.0, Zip-3.0, OCaml, and Sphinx
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/llvm
If you have downloaded the optional packages, install them into the source tree by running the following commands:
tar -xf ../cfe-4.0.1.src.tar.xz -C tools && tar -xf ../compiler-rt-4.0.1.src.tar.xz -C projects && mv tools/cfe-4.0.1.src tools/clang && mv projects/compiler-rt-4.0.1.src projects/compiler-rt patch -Np1 -d projects/compiler-rt < ../compiler-rt-4.0.1-glibc-2.26-1.patch
Install LLVM by running the following commands:
mkdir -v build && cd build && CC=gcc CXX=g++ \ cmake -DCMAKE_INSTALL_PREFIX=/usr \ -DLLVM_ENABLE_FFI=ON \ -DCMAKE_BUILD_TYPE=Release \ -DLLVM_BUILD_LLVM_DYLIB=ON \ -DLLVM_TARGETS_TO_BUILD="host;AMDGPU" \ -Wno-dev .. && make
If you have installed Sphinx and wish to generate the html documentation and manual pages, issue the following commands:
cmake -DLLVM_ENABLE_SPHINX=ON \ -DSPHINX_WARNINGS_AS_ERRORS=OFF \ -Wno-dev .. && make docs-llvm-html docs-llvm-man
If you have downloaded the optional packages, the clang documentation can be built too:
make docs-clang-html docs-clang-man
To test the results, issue: make check-all. Tests are run using the maximum number of processors/threads available. Note that the Address Sanitizer tests are known to fail, and that 19 tests fail because of the removal of an obsolete header.
Now, as the root
user:
make install
If you have built the documentation, install it by running
the following command as the root
user:
install -v -m644 docs/man/* /usr/share/man/man1 && install -v -d -m755 /usr/share/doc/llvm-4.0.1/llvm-html && cp -Rv docs/html/* /usr/share/doc/llvm-4.0.1/llvm-html
The clang documentation can be installed in the same way
(again as the root
user):
install -v -m644 tools/clang/docs/man/* /usr/share/man/man1 && install -v -d -m755 /usr/share/doc/llvm-4.0.1/clang-html && cp -Rv tools/clang/docs/html/* /usr/share/doc/llvm-4.0.1/clang-html
-DLLVM_ENABLE_FFI=ON
:
This switch enables LLVM to
use libffi. Remove if you
did not install libffi.
-DLLVM_BUILD_LLVM_DYLIB=ON
:
builds libraries as static and links all of them into an
unique shared one. This is the recommended way of building a
shared library.
-DCMAKE_BUILD_TYPE=Release
:
This switch enables compiler optimizations in order to speed
up the code and reduce its size. It also disables some
compile checks, not necessary on a production system.
-DLLVM_TARGETS_TO_BUILD="host;AMDGPU"
:
This switch enables building for the same target as the host,
and also for the r600 AMD GPU used by the Mesa r600 and
radeonsi drivers. Default is all. You can use a semicolon
separated list. Valid targets are: host, X86, Sparc, PowerPC,
ARM, AArch64, Mips, Hexagon, Xcore, MSP430, NVPTX, SystemZ,
AMDGPU, BPF, CppBackend, or all.
-DLLVM_LINK_LLVM_DYLIB=ON
: Used
in conjunction with -DLLVM_BUILD_LLVM_DYLIB=ON
,
this switch enables linking the tools against the shared
library instead of the static ones.
-DBUILD_SHARED_LIBS=ON
: if used
instead of -DLLVM_BUILD_LLVM_DYLIB=ON
,
builds all the LLVM
libraries (about 60) as shared libraries instead of static.
-DLLVM_ENABLE_DOXYGEN
: Enables
the generation of browsable HTML documentation if you have
installed Doxygen-1.8.13. You should run
make
doxygen-html afterwards, and install the
generated documentation manually.
is the automatic test case reduction tool. |
|
is the Clang C, C++, and Objective-C compiler. |
|
is a tool to format C/C++/Java/JavaScript/Objective-C/Protobuf code. |
|
is the LLVM static compiler. |
|
is used to directly execute programs from LLVM bitcode. |
|
is the LLVM archiver. |
|
is the LLVM assembler. |
|
is the LLVM bitcode analyzer. |
|
Prints LLVM compilation options. |
|
is used to emit coverage information. |
|
is a bytecode disassembler. |
|
is used as a C++ ABI Data Dumper. |
|
is the LLVM structural 'diff'. |
|
is the LLVM disassembler. |
|
is a tool used to manipulate archived DWARF debug symbol files, compatible with the Darwin command dsymutil. |
|
prints the content of DWARF sections in object files. |
|
merges split DWARF files. |
|
is used to extract a function from an LLVM module. |
|
is the LLVM linker. |
|
is the LLVM LTO (link time optimization) linker. |
|
is a standalone machine code assembler/disassembler. |
|
is used to list LLVM bitcode and object file's symbol table. |
|
is an LLVM object file dumper. |
|
is used as PDB Dumper. |
|
is a small tool to manipulate and print profile data files. |
|
is used to generate an index for a LLVM archive. |
|
displays low-level format-specific information about object files. |
|
is the LLVM MC-JIT tool. |
|
is the LLVM object size dumper. |
|
is the LLVM module splitter. |
|
is used to generate random |
|
converts adresses into source code locations. |
|
is the LLVM Target Description To C++ Code Generator. |
|
takes an object file,and produces a YAML representation of the file. |
|
is the LLVM optimizer. |
|
is the sanitizer coverage processing tool. |
|
is the sanitizer statistics processing tool. |
|
is a Perl script that invokes the Clang static analyzer. |
|
is a viewer for Clang static analyzer results. |
|
is the LLVM tool to verify use-list order. |
|
takes a YAML representation of an object file and converts it to a binary file. |
Last updated on 2017-08-23 21:43:54 -0700
Lua is a powerful light-weight programming language designed for extending applications. It is also frequently used as a general-purpose, stand-alone language. Lua is implemented as a small library of C functions, written in ANSI C, and compiles unmodified in all known platforms. The implementation goals are simplicity, efficiency, portability, and low embedding cost. The result is a fast language engine with small footprint, making it ideal in embedded systems too.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://www.lua.org/ftp/lua-5.3.4.tar.gz
Download MD5 sum: 53a9c68bcc0eda58bdc2095ad5cdfc63
Download size: 300 KB
Estimated disk space required: 2.8 MB (with Basic tests)
Estimated build time: less than 0.1 SBU (with Basic tests)
Required patch: http://www.linuxfromscratch.org/patches/blfs/8.1/lua-5.3.4-shared_library-1.patch
Optional Test Suite Download (HTTP): http://www.lua.org/tests/lua-5.3.4-tests.tar.gz
Optional Test Suite Download MD5 sum: b14fe3748c1cb2d74e3acd1943629ba3
Optional Test Suite Download size: 104 KB
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/lua
Some packages check for the pkg-config file for Lua, which is created with:
cat > lua.pc << "EOF"
V=5.3
R=5.3.4
prefix=/usr
INSTALL_BIN=${prefix}/bin
INSTALL_INC=${prefix}/include
INSTALL_LIB=${prefix}/lib
INSTALL_MAN=${prefix}/share/man/man1
INSTALL_LMOD=${prefix}/share/lua/${V}
INSTALL_CMOD=${prefix}/lib/lua/${V}
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include
Name: Lua
Description: An Extensible Extension Language
Version: ${R}
Requires:
Libs: -L${libdir} -llua -lm -ldl
Cflags: -I${includedir}
EOF
Install Lua by running the following commands:
patch -Np1 -i ../lua-5.3.4-shared_library-1.patch && sed -i '/#define LUA_ROOT/s:/usr/local/:/usr/:' src/luaconf.h && make MYCFLAGS="-DLUA_COMPAT_5_2 -DLUA_COMPAT_5_1" linux
To test the results, issue: make test. “This will run the interpreter and print its version.”. More comprehensive tests can be performed if you downloaded the "Test suite" tarball. Those tests need to be executed after the package is installed, thus we defer to the description below.
Now, as the root
user:
make INSTALL_TOP=/usr \ INSTALL_DATA="cp -d" \ INSTALL_MAN=/usr/share/man/man1 \ TO_LIB="liblua.so liblua.so.5.3 liblua.so.5.3.4" \ install && mkdir -pv /usr/share/doc/lua-5.3.4 && cp -v doc/*.{html,css,gif,png} /usr/share/doc/lua-5.3.4 && install -v -m644 -D lua.pc /usr/lib/pkgconfig/lua.pc
Here we describe only the "Basic tests". Untar the tarball
and change to the lua-5.3.4-tests
directory, then issue
lua -e "_U=true"
all.lua. If the tests finish without error,
you will see a message containing the string "final OK".
sed -i ... src/luaconf.h: This command changes the Lua search path to match the install path.
MYCFLAGS="-DLUA_COMPAT_5_2
-DLUA_COMPAT_5_1"
: This environment variable includes
compatibility layers with Lua 5.1 and 5.2 in the build.
Last updated on 2017-08-21 23:29:00 -0700
Mercurial is a distributed source control management tool similar to Git and Bazaar. Mercurial is written in Python and is used by projects such as Mozilla and Vim.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://www.mercurial-scm.org/release/mercurial-4.3.1.tar.gz
Download MD5 sum: b9cbdcf0bd41a2b385b35b9fbfeb0eea
Download size: 5.2 MB
Estimated disk space required: 68 MB (add 403 MB for tests)
Estimated build time: 0.2 SBU (add 7.2 SBU for tests using -j4)
git-2.14.1, GnuPG-2.1.23 (gpg2 with Python bindings), OpenSSH-7.5p1 (runtime, to access ssh://... repositories), Subversion-1.9.7 (with Python bindings), Bazaar, CVS, Docutils (required to build the documentation), pyflakes, pygments, and pyOpenSSL
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/mercurial
Build Mercurial by issuing the following command:
make build
To build the documentation (requires Docutils), issue:
make doc
To run the test suite, issue:
rm -rf tests/tmp &&
TESTFLAGS="-j<N>
--tmpdir tmp --blacklist blacklists/failed-tests" \
make check
where <N>
is
an integer between one and the number of ( processor X
threads ), inclusive. One test, test-gpg.t, fails if
GnuPG-2.1.23 is not installed. In order to
investigate any other apparently failing tests, you may use
the run-tests.py script. To see
the almost forty switches, some of them very useful, issue
tests/run-tests.py
--help. Running the following commands, you
will execute only the tests that failed before:
pushd tests && rm -rf tmp && ./run-tests.py - -tmpdir tmp test-gpg.t && popd
Normally, the previous failures will be confirmed. However, if you add the switch "- -debug" before "- -tmpdir", and run again, some failures are gone, which seems to be a problem with the test suite. If this happens, normally, from now on, there will be no more such failures whether you use the debug switch or not.
An interesting switch is "- -time", which will generate at
the end of the test suite execution, a table with all
executed tests and respective start, end, user, system and
real times. Notice that the switches may be used with
make check,
including them in the TESTFLAGS
environment variable.
Install Mercurial by running
the following command (as root
):
make PREFIX=/usr install-bin
If you built the documentation, install it by running the
following command (as root
):
make PREFIX=/usr install-doc
After installed, two very quick and simple tests should run correctly. First one needs some configuration:
cat >> ~/.hgrc << "EOF"
[ui]
username = <user_name> <user@mail>
EOF
where you must replace <user_name> and <your@mail> (mail is optional and can be omitted). With the user identity defined, run hg debuginstall and several lines will be displayed, the last one reading "no problems detected". Another quick and simple test is just hg, which should output basic commands that can be used with hg.
/etc/mercurial/hgrc
and
~/.hgrc
The great majority of extensions are disabled by default. Run hg help extensions if you need to enable any, e.g. when investigating test failures. You will obtain the lists of enabled and disabled extensions, and more information, such as how to enable or disable them using configuration files.
If you have installed the Certificate
Authority Certificates and want Mercurial to use them, as the
root
user, issue:
install -v -d -m755 /etc/mercurial &&
cat > /etc/mercurial/hgrc << "EOF"
[web]
cacerts = /etc/ssl/ca-bundle.crt
EOF
Last updated on 2017-08-29 10:55:51 -0700
NASM (Netwide Assembler) is an 80x86 assembler designed for portability and modularity. It includes a disassembler as well.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://www.nasm.us/pub/nasm/releasebuilds/2.13.01/nasm-2.13.01.tar.xz
Download MD5 sum: b3ae134bd1b5ead73d659286f568da95
Download size: 784 KB
Estimated disk space required: 28 MB
Estimated build time: 0.2 SBU
Optional documentation: http://www.nasm.us/pub/nasm/releasebuilds/2.13.01/nasm-2.13.01-xdoc.tar.xz
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/nasm
If you downloaded the optional documentation, put it into the source tree:
tar -xf ../nasm-2.13.01-xdoc.tar.xz --strip-components=1
Install NASM by running the following commands:
./configure --prefix=/usr && make
This package does not come with a test suite.
Now, as the root
user:
make install
If you downloaded the optional documentation, install it with
the following instructions as the root
user:
install -m755 -d /usr/share/doc/nasm-2.13.01/html && cp -v doc/html/*.html /usr/share/doc/nasm-2.13.01/html && cp -v doc/*.{txt,ps,pdf} /usr/share/doc/nasm-2.13.01
Last updated on 2017-08-20 20:24:54 -0700
Ninja is a small build system with a focus on speed.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://github.com/ninja-build/ninja/archive/v1.7.2/ninja-1.7.2.tar.gz
Download MD5 sum: 7b482218757acbaeac4d4d54a3cd94e1
Download size: 176 KB
Estimated disk space required: 58.0 MB
Estimated build time: 0.2 SBU
re2c (only needed to modify the build), Emacs-25.2 (to generate lisp files), asciidoc-8.6.9 (to build the manual), and Doxygen-1.8.13 (to build API documentation)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/ninja
Install Ninja by running the following commands:
./configure.py --bootstrap
If Emacs is installed and you wish to build lisp files:
emacs -Q --batch -f batch-byte-compile misc/ninja-mode.el
To test the results, issue the following commands:
./configure.py && ./ninja ninja_test && ./ninja_test --gtest_filter=-SubprocessTest.SetWithLots
Now, as the root
user:
install -vm755 ninja /usr/bin/ && install -vDm644 misc/ninja.vim \ /usr/share/vim/vim80/syntax/ninja.vim && install -vDm644 misc/bash-completion \ /usr/share/bash-completion/completions/ninja && install -vDm644 misc/zsh-completion \ /usr/share/zsh/site-functions/_ninja
If Emacs is installed, while still the root
user:
install -vDm644 misc/ninja-mode.el \ /usr/share/emacs/site-lisp/ninja-mode.el install -vDm644 misc/ninja-mode.elc \ /usr/share/emacs/site-lisp/ninja-mode.elc
If you have asciidoc-8.6.9 installed and wish to
build the HTML manual, execute the following commands (as the
root
user):
ninja manual && install -vDm644 doc/manual.html /usr/share/doc/ninja-1.7.2/manual.html
If you have Doxygen-1.8.13 installed and wish to
build the API documentation, execute the following commands
(as the root
user):
ninja doxygen && install -vDdm644 doc/doxygen/html/* /usr/share/doc/ninja-1.7.2/
emacs -Q --batch -f batch-byte-compile misc/ninja-mode.el: regenerates the emacs lisp files.
Last updated on 2017-08-21 23:29:00 -0700
NPAPI-SDK is a bundle of Netscape Plugin Application Programming Interface headers by Mozilla. This package provides a clear way to install those headers and depend on them.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://bitbucket.org/mgorny/npapi-sdk/downloads/npapi-sdk-0.27.2.tar.bz2
Download MD5 sum: e81db61e206cd615cf56c4a9f301e636
Download size: 65 KB
Estimated disk space required: 520 KB
Estimated build time: less than 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/NPAPI-SDK
Install NPAPI-SDK by running the following commands:
./configure --prefix=/usr
This package does not come with a test suite.
Now, as the root
user:
make install
Last updated on 2017-08-26 13:10:53 -0700
The Perl module packages add useful objects to the Perl language. Modules utilized by packages throughout BLFS are listed here, along with their dependencies. Installation of the modules shown on this page should be accomplished by installing the dependencies in the order listed. The Perl Module standard build and installation instructions are shown at the bottom of this page.
If a module is used by more than one other module on this page, but not by other packages in the book, it is listed by name here at the top level (but without a version) to slightly reduce the complexity of the XML source for this page.
Where a module is shown as '(for the testsuite)' it is
required if you wish to run the test for the module which
uses it. In these cases, only the required or recommended
dependencies are listed - there might be other modules which
allow more tests to be run, but omitting them will still
allow the tests to PASS
.
For unversioned modules on this page, if you are building without using the CPAN automated install you should check when the current version was released. If it is recent you should review the 'Changes' link for it at http://search .cpan.org in case the dependencies have altered.
The Archive::Zip module allows a Perl program to create, manipulate, read, and write Zip archive files. This module uses the standard build and installation instructions.
This package is known to build and work properly using an LFS-8.1 platform.
https://www.cpan.org/authors/id/P/PH/PHRED/Archive-Zip-1.59.tar.gz
MD5 sum: b649a593391573f9382cef8c08d1d5ba
Test::MockModule - This uses the instructions for packages using Build.PL
(http://search.cpan.org/dist/Test-MockModule/)
SUPER
(http://search.cpan.org/dist/SUPER/) (for the testsuite)
The autovivification module allows you to lexically disable autovivification. This module uses the standard build and installation instructions.
This package is known to build and work properly using an LFS-8.1 platform.
https://www.cpan.org/authors/id/V/VP/VPIT/autovivification-0.17.tar.gz
MD5 sum: 925c7d4c64c623db02845b355e3c6a19
The Business::ISBN module is for work with International Standard Book Numbers. This module and its dependencies use the standard build and installation instructions.
This package is known to build and work properly using an LFS-8.1 platform.
https://www.cpan.org/authors/id/B/BD/BDFOY/Business-ISBN-3.004.tar.gz
MD5 sum: 60b36c0a92cf51e9027ec3d9f38e7224
Business::ISBN::Data
(http://search.cpan.org/dist/Business-ISBN-Data/)
Mojolicious
(http://search.cpan.org/dist/Mojolicious/)
The Business::ISMN module is for work with International Standard Music Numbers. This module uses the standard build and installation instructions.
This package is known to build and work properly using an LFS-8.1 platform.
https://www.cpan.org/authors/id/B/BD/BDFOY/Business-ISMN-1.131.tar.gz
MD5 sum: 87e36c8ccc9a9434494a849b7cf2fcc5
Tie::Cycle
(http://search.cpan.org/~bdfoy/Tie-Cycle/)
The Business::ISSN module is for work with International Standard Serial Numbers. This module uses the standard build and installation instructions.
This package is known to build and work properly using an LFS-8.1 platform.
https://www.cpan.org/authors/id/B/BD/BDFOY/Business-ISSN-1.002.tar.gz
MD5 sum: c226db6cdb9dfe77d17ad1d540b49f47
The Capture::Tiny module captures STDOUT and STDERR from Perl, XS (eXternal Subroutine, i.e. written in C or C++) or external programs. This module uses the standard build and installation instructions.
Capture::Tiny
(http://search.cpan.org/dist/Capture-Tiny/)
This module generators accessors/mutators for your class. It uses the standard build and installation instructions.
This package is known to build and work properly using an LFS-8.1 platform.
https://www.cpan.org/authors/id/K/KA/KASEI/Class-Accessor-0.34.tar.gz
MD5 sum: 0d9640d237a13276145f7e44b4855b89
The Data::Compare module compares two perl data structures. This module and its dependencies use the standard build and installation instructions.
This package is known to build and work properly using an LFS-8.1 platform.
https://www.cpan.org/authors/id/D/DC/DCANTRELL/Data-Compare-1.25.tar.gz
MD5 sum: 6a397ab5833237f3ca05ed7277b19a7a
File::Find::Rule
(http://search.cpan.org/~rclamp/File-Find-Rule/)
Number::Compare
(http://search.cpan.org/dist/Number-Compare/)
Text::Glob
(http://search.cpan.org/dist/Text-Glob/)
This module provides pretty printing of data structures. It uses the standard build and installation instructions.
This package is known to build and work properly using an LFS-8.1 platform.
https://www.cpan.org/authors/id/G/GA/GAAS/Data-Dump-1.23.tar.gz
MD5 sum: 762c111e525c82ff23d62c90821b26e9
This module provides three simple routines for generating unique IDs. It uses the standard build and installation instructions but requires a patch because one of its tests fails in recent builds.
This package is known to build and work properly using an LFS-8.1 platform.
https://www.cpan.org/authors/id/M/MW/MWX/Data-Uniqid-0.12.tar.gz
MD5 sum: 6bab3b5da09fedfdf60ce2629a7367db
DateTime provides a date and time object for perl. It and its dependencies use the standard build and installation instructions except for those needing Module::Build-0.4224, which use instructions for packages using Build.PL.
This package is known to build and work properly using an LFS-8.1 platform.
DateTime
(http://search.cpan.org/dist/DateTime)
CPAN::Meta::Check
(http://search.cpan.org/dist/CPAN-Meta-Check/)
Test::Deep
(http://search.cpan.org/dist/Test-Deep/)
namespace::autoclean
(http://search.cpan.org/dist/namespace-autoclean/)
B::Hooks::EndOfScope
(http://search.cpan.org/dist/B-Hooks-EndOfScope/)
Sub::Exporter::Progressive
(http://search.cpan.org/dist/Sub-Exporter-Progressive/)
Variable::Magic
(http://search.cpan.org/dist/Variable-Magic/)
namespace::clean
(http://search.cpan.org/dist/namespace-clean/)
Package::Stash
(http://search.cpan.org/dist/Package-Stash/)
Dist::CheckConflicts
(http://search.cpan.org/dist/Dist-CheckConflicts/)
Package::Stash::XS
(http://search .cpan.org/dist/Package-Stash-XS/)
Test::Requires (for the testsuite)
Specio
(http://search.cpan.org/dist/Specio/)
Devel::StackTrace
(http://search.cpan.org/dist/Devel-StackTrace/)
Eval::Closure
(http://search.cpan.org/dist/Eval-Closure/)
MRO::Compat
(http://search.cpan.org/dist/MRO-Compat/)
Role::Tiny
(http://search.cpan.org/dist/Role-Tiny/)
Sub::Quote
(http://search.cpan.org/dist/Sub-Quote/) (for the testsuite)
Test::Fatal (for the testsuite)
Params::ValidationCompiler
(http://search.cpan.org/dist/Params-ValidationCompiler/)
Exception::Class
(http://search.cpan.org/dist/Exception-Class/)
Class::Data::Inheritable
(http://search.cpan.org/dist/Class-Data-Inheritable/)
Test2::Plugin::NoWarnings
(http://search.cpan.org/dist/Test2-Plugin-NoWarnings/) (for the testsuite)
Test2::Suite
(http://search.cpan.org/dist/Test2-Suite/)
Importer
(http://search.cpan.org/dist/Importer/)
(this is a core module, but a newer version is needed)
Test::Simple
(http://search.cpan.org/dist/Test-Simple/)
Sub::Info
(http://search.cpan.org/dist/Sub-Info/)
Term::Table
(http://search.cpan.org/dist/Term-Table/)
Test::Without::Module
(http://search.cpan.org/dist/Test-Without-Module/)
DateTime::Locale
(http://search.cpan.org/dist/DateTime-Locale/)
File::ShareDir::Install
(http://search.cpan.org/dist/File-ShareDir-Install/)
Module::Build::Tiny
(http://search.cpan.org/dist/Module-Build-Tiny/)
ExtUtils::Config
(http://search.cpan.org/dist/Extutils-Config)
ExtUtils::Helpers
(http://search.cpan.org/dist/Extutils-Helpers)
ExtUtils::InstallPaths
(http://search.cpan.org/dist/Extutils-InstallPaths)
File::ShareDir
(http://search.cpan.org/dist/File-ShareDir) (for the testsuite)
Class::Inspector
(http://search.cpan.org/dist/Class-Inspector)
Test::File::ShareDir
(http://search.cpan.org/dist/Test-File-ShareDir) (for the testsuite)
Class::Tiny
(http://search.cpan.org/dist/Class-Tiny)
File::Copy::Recursive
(http://search.cpan.org/dist/File-Copy-Recursive)
Path::Tiny
(http://search.cpan.org/dist/Path-Tiny)
Scope::Guard
(http://search.cpan.org/dist/Scope-Guard)
Test::Warnings (for the testsuite)
DateTime::TimeZone
(http://search.cpan.org/dist/DateTime-TimeZone/)
Class::Singleton
(http://search.cpan.org/dist/Class-Singleton/)
DateTime::Calendar::Julian implements the Julian Calendar. This module and its dependencies use the standard build and installation instructions except for those needing Module::Build-0.4224, which use instructions for packages using Build.PL.
This package is known to build and work properly using an LFS-8.1 platform.
https://www.cpan.org/authors/id/P/PI/PIJLL/DateTime-Calendar-Julian-0.04.tar.gz
MD5 sum: de688324eb33a27449ac2a5bfe1453a0
DateTime::Format::Builder creates DateTime parser classes and objects. This module and its dependencies use the standard build and installation instructions except for those needing Module::Build-0.4224, which use instructions for packages using Build.PL.
This package is known to build and work properly using an LFS-8.1 platform.
https://www.cpan.org/authors/id/D/DR/DROLSKY/DateTime-Format-Builder-0.81.tar.gz
MD5 sum: 21d950a9425c0173d6191697bf9dc4dc
Class::Factory::Util
(http://search.cpan.org/dist/Class-Factory-Util/)
DateTime::Format::Strptime
(http://search.cpan.org/dist/DateTime-Format-Strptime/)
Package::DeprecationManager
(http://search.cpan.org/dist/Package-DeprecationManager/)
Params::Util
(http://search.cpan.org/dist/Params-Util/)
Sub::Install
(http://search.cpan.org/dist/Sub-Install/)
Sub::Name
(http://search.cpan.org/dist/Sub-Name/)
Params::Validate
(http::/search.cpan.org/dist/Params-Validate/) - uses instructions for packages using Build.PL
Encode::EUCJPASCII provides an eucJP-open (Extended Unix Code, Japanese) mapping. This module uses the standard build and installation instructions.
This package is known to build and work properly using an LFS-8.1 platform.
https://www.cpan.org/authors/id/N/NE/NEZUMI/Encode-EUCJPASCII-0.03.tar.gz
MD5 sum: 5daa65f55b7c2050bb0713d9e95f239d
The Encode::HanExtra module provides extra sets of Chinese Encodings. This module uses the 'unsafe' variant of the standard build and installation instructions.
This package is known to build and work properly using an LFS-8.1 platform.
https://www.cpan.org/authors/id/A/AU/AUDREYT/Encode-HanExtra-0.23.tar.gz
MD5 sum: e1d3bc32c1c8ee304235a06fbcd5d5a4
The Encode::JIS2K module provides JIS X 0212 (aka JIS 2000) Encodings. This module uses the standard build and installation instructions.
This package is known to build and work properly using an LFS-8.1 platform.
https://www.cpan.org/authors/id/D/DA/DANKOGAI/Encode-JIS2K-0.03.tar.gz
MD5 sum: 60539471aa408a2b793cd45a6ce651db
The Error module provides Error/exception handling in an object-oriented way. This module uses the standard build and installation instructions.
This package is known to build and work properly using an LFS-8.1 platform.
https://www.cpan.org/authors/id/S/SH/SHLOMIF/Error-0.17025.tar.gz
MD5 sum: 1a2ee7f0dc44f9ee76661a16bbbc0c48
The File::BaseDir module compares two perl data structures. This module and its dependencies use the standard build and installation instructions.
This package is known to build and work properly using an LFS-8.1 platform.
https://www.cpan.org/authors/id/K/KI/KIMRYAN/File-BaseDir-0.07.tar.gz
MD5 sum: 5d10401970d209049c8491d2906c3e13
IPC::System::Simple
(http://search.cpan.org/~pjf/IPC-System-Simple/)
The File::Slurp module provides Simple and Efficient Reading/Writing/Modifying of Complete Files. This module uses the standard build and installation instructions.
This package is known to build and work properly using an LFS-8.1 platform.
https://www.cpan.org/authors/id/U/UR/URI/File-Slurp-9999.19.tar.gz
MD5 sum: 7d584cd15c4f8b9547765eff8c4ef078
File::Which provides a portable implementation of the 'which' utility. This module and its dependencies use the standard build and installation instructions.
This package is known to build and work properly using an LFS-8.1 platform.
https://www.cpan.org/authors/id/P/PL/PLICEASE/File-Which-1.21.tar.gz
MD5 sum: 115a6efe5d7e9621237fcb655c7a0980
The HTML::Parser distribution is a collection of modules that parse and extract information from HTML documents. This module and the dependency modules use the standard build and installation instructions.
This package is known to build and work properly using an LFS-8.1 platform.
https://www.cpan.org/authors/id/G/GA/GAAS/HTML-Parser-3.72.tar.gz
MD5 sum: eb7505e5f626913350df9dd4a03d54a8
HTML::Tagset
(http://search.cpan.org/~petdance/HTML-Tagset/)
libwww-perl-6.26 (circular; howevever, it can be installed after HTML::Parser as it is only a run-time requirement for the included HTML::HeadParser module)
The IPC::Run3 module is used to run a subprocess with input/ouput redirection. This module uses the standard build and installation instructions.
This package is known to build and work properly using an LFS-8.1 platform.
https://www.cpan.org/authors/id/R/RJ/RJBS/IPC-Run3-0.048.tar.gz
MD5 sum: 5a8cec571c51a118b265cf6e24e55761
The libwww-perl (Bundle::LWP) collection is a set of Perl modules which provide a simple and consistent application programming interface to the World-Wide Web. The main focus of the library is to provide classes and functions that allow you to write WWW clients. The library also contains modules that are of more general use and even classes that help you implement simple HTTP servers. The LWP collection and all its dependency modules use the standard build and installation instructions. The dependencies should be installed in the order listed below. Ensure you install the dependency chain for each module before installing the modules.
This package is known to build and work properly using an LFS-8.1 platform.
https://www.cpan.org/authors/id/O/OA/OALDERS/libwww-perl-6.26.tar.gz
MD5 sum: 457bf4a4f40af3e2f43653329a9c6ab7
Encode::Locale
(http://search.cpan.org/~gaas/Encode-Locale/)
HTML::Form
(http://search.cpan.org/~gaas/HTML-Form/)
HTTP::Message
(http://search.cpan.org/~gaas/HTTP-Message/)
HTTP::Date
(http://search.cpan.org/~gaas/HTTP-Date/)
IO::HTML
(http://search.cpan.org/~cjm/IO-HTML/)
LWP::MediaTypes
(http://search.cpan.org/~gaas/LWP-MediaTypes/)
Try::Tiny (for the testsuite)
HTTP::Cookies
(http://search.cpan.org/~gaas/HTTP-Cookies/)
HTTP::Negotiate
(http://search.cpan.org/~gaas/HTTP-Negotiate/)
Net::HTTP
(http://search.cpan.org/~gaas/Net-HTTP/)
WWW::RobotRules
(http://search.cpan.org/~gaas/WWW-RobotRules/)
HTTP::Daemon
(http://search.cpan.org/~gaas/HTTP-Daemon/)
File::Listing
(http://search.cpan.org/~gaas/File-Listing/)
Test::RequiresInternet (for the testsuite)
(http://search.cpan.org/~mallen/Test-RequiresInternet/)
Test::Fatal (for the testsuite)
After the LWP installation, if you want HTTPS protocol support, install LWP::Protocol::https-6.06
Lingua::Translit and its translit program transliterate text between writing systems. This module uses the standard build and installation instructions.
This package is known to build and work properly using an LFS-8.1 platform.
https://www.cpan.org/authors/id/A/AL/ALINKE/Lingua-Translit-0.27.tar.gz
MD5 sum: e95386614b65b32a8ed9c1a24ae110f8
The List::Allutils module combines List::Util and List::MoreUtils in one bite-sized package. This module and its dependencies use the standard build and installation instructions.
This package is known to build and work properly using an LFS-8.1 platform.
https://www.cpan.org/authors/id/D/DR/DROLSKY/List-AllUtils-0.14.tar.gz
MD5 sum: 5d7f33d6b21aa461c12b002e20a2cbb6
List::SomeUtils
(http://search.cpan.org/dist/List-SomeUtils/) (for the testsuite)
List::SomeUtils::XS
(http://search.cpan.org/dist/List-SomeUtils::XS/)
Test::LeakTrace
(http://search.cpan.org/dist/Test-LeakTrace/) (for the testsuite) - this uses the 'unsafe' variant of the Standard Installation
List::UtilsBy
(http://search.cpan.org/dist/List-UtilsBy/)
Number::Compare
(http://search.cpan.org/dist/Number-Compare/)
Test::Warnings (for the testsuite)
Text::Glob
(http://search.cpan.org/dist/Text-Glob/)
List::MoreUtils provides the stuff missing in List::Util. This module uses the standard build and installation instructions.
This package is known to build and work properly using an LFS-8.1 platform.
https://www.cpan.org/authors/id/R/RE/REHSACK/List-MoreUtils-0.419.tar.gz
MD5 sum: 0a5462045de148c807d3f18e5074064f
XSLoader
(http://search.cpan.org/dist/XSLoader/)
XSLoader is a core perl module, but the version in perl-5.24.1 is not new enough.
Exporter::Tiny
(http://search.cpan.org/dist/Exporter-Tiny/) (for the testsuite)
Log::Log4perl provides a Log4j implementation for perl. This module uses the standard build and installation instructions.
This package is known to build and work properly using an LFS-8.1 platform.
https://www.cpan.org/authors/id/M/MS/MSCHILLI/Log-Log4perl-1.49.tar.gz
MD5 sum: 8e96fb5e236c92445947eceb903326ba
LWP::Protocol::https provides https support for LWP::UserAgent (i.e. for LWP). This module uses the standard build and installation instructions.
This package is known to build and work properly using an LFS-8.1 platform.
https://www.cpan.org/authors/id/M/MS/MSCHILLI/LWP-Protocol-https-6.06.tar.gz
MD5 sum: 404c7984521699ab4a6973f155f1726f
IO::Socket::SSL
(http://search.cpan.org/~behroozi/IO-Socket-SSL/)
Net::SSLeay
(http://search.cpan.org/dist/Net-SSLeay/)
When scripting, pipe the perl Makefile.PL command through yes "" |, since some user input is sought
Mozilla::CA
(http://search.cpan.org/~abh/Mozilla-CA/)
Module::Build allows perl modules to be built without a make command being present. This module uses the standard build and installation instructions.
When creating the Makefile, this module will report
inc_bundling_support....disabled
requires:
! inc::latest is not installed
but inc::latest is experimental and not needed.
This package is known to build and work properly using an LFS-8.1 platform.
https://www.cpan.org/authors/id/L/LE/LEONT/Module-Build-0.4224.tar.gz
MD5 sum: b74c2f6e84b60aad3a3defd30b6f0f4d
Module::Implementation loads one of several alternate underlying implementation of a module (e.g. eXternal Subroutine or pure Perl, or an implementation for a given OS). This module and its dependencies use the standard build and installation instructions except for those needing Module::Build-0.4224, which use instructions for packages using Build.PL.
This package is known to build and work properly using an LFS-8.1 platform.
Module::Implementation
(http://search.cpan.org/dist/Module-Implementation)
Test::Fatal (for the testsuite)
Test::Requires (for the testsuite)
Module::Runtime provides functions to deal with runtime handling of Perl modules. This module itself uses the standard build and installation instructions.
This package is known to build and work properly using an LFS-8.1 platform.
Module::Runtime
(http://search.cpan.org/dist/Module-Runtime/)
Net::DNS is a DNS resolver implemented in Perl. It can be used to perform nearly any type of DNS query from a Perl script. The Net::DNS module and all its dependencies are installed using the standard build and installation instructions.
This package is known to build and work properly using an LFS-8.1 platform.
https://www.cpan.org/authors/id/N/NL/NLNETLABS/Net-DNS-1.12.tar.gz
MD5 sum: 7e7c6cf8184df4d49500a003d998764a
Digest::HMAC
(http://search.cpan.org/~gaas/Digest-HMAC/) (for the testsuite)
IO::Socket::INET6
(http://search.cpan.org/~shlomif/IO-Socket-INET6-2.72/) (required for IPv6 support)
Socket6
(http://search.cpan.org/~umemoto/Socket6/)
IO
(http://search.cpan.org/~gbarr/IO/)
(for the IO::Socket module, which is a core module, but whose version is too old in 5.24.1)
Parse::Yapp is a Perl extension for generating and using LALR parsers.. This module uses the standard build and installation instructions.
This package is known to build and work properly using an LFS-8.1 platform.
https://www.cpan.org/authors/id/W/WB/WBRASWELL/Parse-Yapp-1.21.tar.gz
MD5 sum: 69584d5b0f0304bb2a23cffcd982c5de
Regexp::Common provides commonly requested regular expressions. This module uses the standard build and installation instructions.
This package is known to build and work properly using an LFS-8.1 platform.
https://www.cpan.org/authors/id/A/AB/ABIGAIL/Regexp-Common-2017060201.tar.gz
MD5 sum: b1bb40759b84154990f36a160160fb94
Scalar::List::Utils provides a selection of list and scalar subroutines. This is a core module, but the version in perl-5.24.1 is not new enough for the packages which link to this module. If you are using perl-5.26.0, the version included in that is adequate. This module uses the standard build and installation instructions.
Scalar::List::Utils
(http://search.cpan.org/dist/Scalar-List-Utils/)
The SGMLSpm module is a Perl library used for parsing the output from James Clark's SGMLS and NSGMLS parsers. This modules uses the standard build and installation instructions.
This package is known to build and work properly using an LFS-8.1 platform.
Before beginning the build, issue the following command to prevent an error:
chmod -v 644 MYMETA.yml
After the package has been installed, run the following
command as the root
user:
ln -sv sgmlspl.pl /usr/bin/sgmlspl
https://www.cpan.org/authors/id/R/RA/RAAB/SGMLSpm-1.1.tar.gz
MD5 sum: 746c74ae969992cedb1a2879b4168090
Sort::Key provides a set of functions to sort lists of values by some calculated key value. This module uses the standard build and installation instructions.
This package is known to build and work properly using an LFS-8.1 platform.
https://www.cpan.org/authors/id/S/SA/SALVA/Sort-Key-1.33.tar.gz
MD5 sum: a37ab0da0cfdc26e57b4c79e39f6d98f
Sub::Identify allows you to retrieve the real names of code references. It uses the standard build and installation instructions.
This package is known to build and work properly using an LFS-8.1 platform.
Sub::Identify
(http://search.cpan.org/dist/Sub-Identify/)
This module tests the exit status, STDOUT, or STDERR, of an external command. This module uses the standard build and installation instructions.
This package is known to build and work properly using an LFS-8.1 platform.
https://www.cpan.org/authors/id/D/DA/DANBOO/Test-Command-0.11.tar.gz
MD5 sum: 9ab83c4695961dbe92cd86efe08f0634
Test::Differences - Test strings and data structures and show differences if not ok. This module and its dependency modules use the standard build and installation instructions.
This package is known to build and work properly using an LFS-8.1 platform.
https://www.cpan.org/authors/id/D/DC/DCANTRELL/Test-Differences-0.64.tar.gz
MD5 sum: ecfda620fe133e36a6e392d94ab8424d
Text::Diff (for the testsuite)
(http://search.cpan.org/~ovid/Text-Diff/)
Algorithm::Diff (for the testsuite)
(http://search.cpan.org/~tyemq/Algorithm-Diff/)
The Test::Fatal module provides simple helpers for testing code which throws exceptions. This module uses the standard build and installation instructions.
This package is known to build and work properly using an LFS-8.1 platform.
Test::Fatal
(http://search.cpan.org/dist/Test-Fatal/)
The Test::Needs module skips tests when a module is not available.
This package is known to build and work properly using an LFS-8.1 platform.
Test::Needs
(http://search.cpan.org/dist/Test-Needs/)
The Test::Requires module checks if another (optional) module can be loaded, and if not it skips all the current tests. This module uses the standard build and installation instructions.
This package is known to build and work properly using an LFS-8.1 platform.
Test::Requires
(http://search.cpan.org/dist/Test-Requires/)
The Test::Warnings module tests for warnings and the lack of them. This module uses the standard build and installation instructions.
This package is known to build and work properly using an LFS-8.1 platform.
Test::Warnings
(http://search.cpan.org/dist/Test-Warnings/)
Text::BibTeX provides an interface to read and parse BibTeX files. This module uses the instructions for packages using Build.PL, but except where noted, its dependencies are installed using the standard build and installation instructions.
This package is known to build and work properly using an LFS-8.1 platform.
https://www.cpan.org/authors/id/A/AM/AMBS/Text-BibTeX-0.81.tar.gz
MD5 sum: a754759c80ab484c9f2b02b2fd4467c9
Config::AutoConf
(http://search.cpan.org/dist/Config-AutoConf/)
ExtUtils-LibBuilder
(http://search.cpan.org/dist/LibBuilder/)
this uses the instructions for packages using Build.PL
Text::CSV is a comma-separated values manipulator, using XS (eXternal Subroutine - for subroutines written in C or C++) or pure perl. This module uses the standard build and installation instructions.
This package is known to build and work properly using an LFS-8.1 platform.
https://www.cpan.org/authors/id/I/IS/ISHIGAKI/Text-CSV-1.95.tar.gz
MD5 sum: 1e076b4b1f8ba6a5003bf93f3c437a9e
Text::CSV_XS
(http://search.cpan.org/dist/Text-CSV_XS/)
This is Recommended by Text-CSV but Required for biber-2.7.
GNU tar dislikes Text-CSV_XS-1.26.tar.gz
and
reports it does not look like a tar file :
decompress it with gunzip before
extracting it.
Text::Roman allows conversion between Roman and Arabic algorisms (number systems, e.g. MCMXLV and 1945). This module uses the standard build and installation instructions.
This package is known to build and work properly using an LFS-8.1 platform.
https://www.cpan.org/authors/id/S/SY/SYP/Text-Roman-3.5.tar.gz
MD5 sum: 1f6b09c0cc1f4425b565ff787a39fd83
The Try::Tiny module provides minimal try/catch with proper preservation of $0. This module uses the standard build and installation instructions.
This package is known to build and work properly using an LFS-8.1 platform.
Try::Tiny
(http://search.cpan.org/dist/Try-Tiny/)
Unicode::Collate provides a Unicode collation algorithm. This module uses the 'unsafe' variant of the standard build and installation instructions.
This package is known to build and work properly using an LFS-8.1 platform.
https://www.cpan.org/authors/id/S/SA/SADAHIRO/Unicode-Collate-1.19.tar.gz
MD5 sum: 6f9dcc7801fa2516993dcb59f8b61f6d
Unicode::LineBreak provides a UAX #14 Unicode Line Breaking Algorithm. This module and its dependencies use the standard build and installation instructions.
This package is known to build and work properly using an LFS-8.1 platform.
https://www.cpan.org/authors/id/N/NE/NEZUMI/Unicode-LineBreak-2017.004.tar.gz
MD5 sum: de7672227922260ac92d20bbad29660b
MIME::Charset
(http://search.cpan.org/dist/MIME-Charset/)
When scripting, pipe the perl Makefile.PL command through yes "" |, since some user input is sought
Wget-1.19.1 (to download two files from unicode.org in the testsuite)
This module implements the URI class. Objects of this class represent "Uniform Resource Identifier references" as specified in RFC 2396 (and updated by RFC 2732). A Uniform Resource Identifier is a compact string of characters that identifies an abstract or physical resource. A Uniform Resource Identifier can be further classified as either a Uniform Resource Locator (URL) or a Uniform Resource Name (URN). The distinction between URL and URN does not matter to the URI class interface. A "URI-reference" is a URI that may have additional information attached in the form of a fragment identifier. This module uses the standard build and installation instructions.
This package is known to build and work properly using an LFS-8.1 platform.
https://www.cpan.org/authors/id/E/ET/ETHER/URI-1.72.tar.gz
MD5 sum: cd56d81ed429efaa97e7f3ff08851b48
Test::Needs (for the testsuite)
The XML::LibXML is a perl binding for libxml2-2.9.4. This module uses the standard build and installation instructions.
Upstream blacklists the current version of libxml2-2.9.4 on the grounds of "schema regression" and the build will warn that the version of libxml2 is incompatible, but it appears to work.
This package is known to build and work properly using an LFS-8.1 platform.
XML::LibXML
(http://search.cpan.org/dist/XML-LibXML/)
The XML::LibXML::Simple module is a rewrite of XML::Simple to use the XML::LibXML parser for XML structures,instead of the plain Perl or SAX parsers. This module and all dependency modules use the standard build and installation instructions.
This package is known to build and work properly using an LFS-8.1 platform.
https://www.cpan.org/authors/id/G/GR/GRANTM/XML-LibXML-Simple-0.97.tar.gz
MD5 sum: 1cd2e8e3421160c42277523d5b2f4dd2
File::Slurp::Tiny
(http://search.cpan.org/dist/File-Slurp-Tiny/)
The XML::LibXSLT module provides an interface to libxslt. This module uses the standard build and installation instructions.
This package is known to build and work properly using an LFS-8.1 platform.
https://www.cpan.org/authors/id/S/SH/SHLOMIF/XML-LibXSLT-1.95.tar.gz
MD5 sum: adf26f5195e18087c89ef3e7f7d97c43
XML::SAX provides a simple API for XML. This module uses the standard build and installation instructions.
Note: this module does not support parallel builds.
This package is known to build and work properly using an LFS-8.1 platform.
XML::SAX
(http://search.cpan.org/dist/XML-SAX/)
XML::NamespaceSupport
(http://search.cpan.org/~perigrin/XML-NamespaceSupport/)
XML::SAX::Base
(http://search.cpan.org/~grantm/XML-SAX-Base/)
The XML::Simple module is a Perl extension that provides an easy API to read and write XML (especially config files). This module and all dependency modules use the standard build and installation instructions.
This package is known to build and work properly using an LFS-8.1 platform.
https://www.cpan.org/authors/id/G/GR/GRANTM/XML-Simple-2.24.tar.gz
MD5 sum: 1cd2e8e3421160c42277523d5b2f4dd2
XML::SAX::Expat
(http://search.cpan.org/~bjoern/XML-SAX-Expat/)
(Note: this package does not support parallel build)
XML::LibXML (recommended for faster parsing)
Tie::IxHash
(http://search.cpan.org/~chorny/Tie-IxHash/)
(optionally used in the test suite)
XML::Writer provides a Perl extension for writing XML documents. This module uses the standard build and installation instructions.
This package is known to build and work properly using an LFS-8.1 platform.
https://www.cpan.org/authors/id/J/JO/JOSEPHW/XML-Writer-0.625.tar.gz
MD5 sum: b9c2420c243c6a36ce45a008740fcede
Install Perl modules by running the following commands:
For Data::Uniqid-0.12, first apply the required patch with:
patch -Np1 -i ../Data-Uniqid-0.12-disable_failing_test-1.patch
Then, or for all other modules using the standard installation, proceed with:
perl Makefile.PL && make && make test
If the module is described as using the unsafe variant of the Standard
Installation, and you are using perl-5.26.0 or later, (the use of the
current directory in @INC
was
removed for security reasons) you should change the perl
invocation to:
PERL_USE_UNSAFE_INC=1 &&
If, however, you are using the Auto Installation described below, that environment variable will be set whenever the cpan shell install is used.
Now, as the root
user:
make install
When reinstalling a Perl
module, sometimes older versions of the module being
reinstalled are in other directories specified in
@INC
. To delete all
other versions of the module being reinstalled (not simply
older ones) set the UNINST
variable:
make install UNINST=1
Install Perl modules which use Build.PL by running the following commands:
perl Build.PL && ./Build && ./Build test
Now, as the root
user:
./Build install
There is an alternate way of installing the modules using the cpan shell install command. The command automatically downloads the source from the CPAN archive, extracts it, runs the compilation, testing and installation commands mentioned above, and removes the build source tree. You may still need to install dependent library packages before running the automated installation method.
The first time you run cpan, you'll be prompted to
enter some information regarding download locations and
methods. This information is retained in files located in
~/.cpan
. Start the cpan shell by issuing
'cpan' as the
root
user. Any module may now
be installed from the cpan>
prompt with the
command:
install <Module::Name>
For additional commands and help, issue 'help' from the cpan>
prompt.
Alternatively, for scripted or non-interactive installations,
use the following syntax as the root
user to install one or more modules:
cpan -i <Module1::Name> <Module2::Name>
Review the cpan.1
man page for
additional parameters you can pass to cpan on the command line.
Most of these modules only install into the perl directories,
but a few will also install programs (mostly, perl scripts),
or even a library, into /usr
computes and prints to stdout the CRC-32 values of the given files. |
|
is a command line wrapper to File:Find:Rule. |
|
is a script to fetch a large file from the web. |
|
is used to see what headers and content is returned for a URL. |
|
is a simple mirror utility. |
|
is a simple command line user agent. |
|
transliterates text between writing systems using various standards. |
|
prints out the text of a template Log4perl configuration for starting a new Log4perl configuration file. |
|
is used to query or change the configuration of perl modules. |
|
is an HTTP and WebSocket server. |
|
is used to list and run Mojolicious commands. |
|
is an HTTP and WebSocket development server. |
|
performs lexical analysis on a BibTeX file. |
|
parses a series of BibTeX files with command line options to control the string post-processing behaviour. |
|
parses a BibTeX file, splitting 'author' and 'editor' fields into lists of names, and then dumps everything to stdout. |
|
is a library for parsing and processing BibTeX data files. |
Last updated on 2017-08-30 16:29:05 -0700
PHP is the PHP Hypertext Preprocessor. Primarily used in dynamic web sites, it allows for programming code to be directly embedded into the HTML markup. It is also useful as a general purpose scripting language.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://www.php.net/distributions/php-7.1.8.tar.xz
Download MD5 sum: 937dba5d7f12bca3c6864db52ea499e1
Download size: 12 MB
Estimated disk space required: 459 MB (add 2 MB for tests)
Estimated build time: 0.9 SBU (using parallelism=4, add 2.5 SBU for tests)
Pre-built documentation (optional): http://www.php.net/download-docs.php
Apache-2.4.27 and libxml2-2.9.4
Aspell-0.60.6.1, enchant-1.6.0, libxslt-1.1.29, an MTA (that provides a sendmail command), PCRE-8.41, Pth-2.0.7, Dmalloc, Net-SNMP, OSSP mm, re2c, and XMLRPC-EPI
FreeType-2.8, libexif-0.6.21, libjpeg-turbo-1.5.2, libpng-1.6.31, LibTIFF-4.0.8, X Window System, FDF Toolkit, GD, and t1lib
cURL-7.55.1, tidy-html5-5.4.0, Caudium, Hyperwave, mnoGoSearch, Roxen WebServer, and WDDX
Berkeley DB-6.2.32 (Note that PHP does not officially support versions above 5.3), MariaDB-10.2.8 or MySQL, OpenLDAP-2.4.45, PostgreSQL-9.6.4, SQLite-3.20.0, unixODBC-2.3.4, Adabas, Birdstep, cdb, DBMaker, Empress, FrontBase, Mini SQL, Monetra, and QDBM
PHP also provides support for many commercial database tools such as Oracle, SAP and ODBC Router.
OpenSSL-1.1.0f, Cyrus SASL-2.1.26, MIT Kerberos V5-1.15.1, libmcrypt, and mhash
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/php
You can use PHP for server-side scripting, command-line scripting or client-side GUI applications. This book provides instructions for setting up PHP for server-side scripting as it is the most common form.
PHP has many more configure options that will enable support for various things. You can use ./configure --help to see a full list of the available options. Also, use of the PHP web site is highly recommended, as their online docs are very good. An example of a configure command that utilizes many of the most common dependencies can be found at http://anduin.linuxfromscratch.org/BLFS/files/php_configure.txt.
If, for whatever reason, you don't have libxml2-2.9.4
installed, you need to add --disable-libxml
to the configure command in the
instructions below. Note that this will prevent the
pear command
from being built.
Install PHP by running the following commands:
./configure --prefix=/usr \ --sysconfdir=/etc \ --localstatedir=/var \ --datadir=/usr/share/php \ --mandir=/usr/share/man \ --enable-fpm \ --with-fpm-user=apache \ --with-fpm-group=apache \ --with-fpm-systemd \ --with-config-file-path=/etc \ --with-zlib \ --enable-bcmath \ --with-bz2 \ --enable-calendar \ --enable-dba=shared \ --with-gdbm \ --with-gmp \ --enable-ftp \ --with-gettext \ --enable-mbstring \ --with-readline && make
To test the results, issue: make test. A few tests may fail, in which case you are asked whether you want to send the report to the PHP developers. If you want to automate the test, you may prefix the command with yes "n" | .
Now, as the root
user:
make install && install -v -m644 php.ini-production /etc/php.ini && install -v -m755 -d /usr/share/doc/php-7.1.8 && install -v -m644 CODING_STANDARDS EXTENSIONS INSTALL NEWS README* UPGRADING* php.gif \ /usr/share/doc/php-7.1.8 && ln -v -sfn /usr/lib/php/doc/Archive_Tar/docs/Archive_Tar.txt \ /usr/share/doc/php-7.1.8 && ln -v -sfn /usr/lib/php/doc/Structures_Graph/docs \ /usr/share/doc/php-7.1.8
The default configuration files for the fastCGI process
manager are installed only if they do not already exist on
the system. If this is the first installation, they should be
renamed, as the root
user:
if [ -f /etc/php-fpm.conf.default ]; then mv -v /etc/php-fpm.conf{.default,} && mv -v /etc/php-fpm.d/www.conf{.default,} fi
The pre-built HTML documentation is packaged in two forms: a
tarball containing many individual files, useful for quick
loading into your browser, and one large individual file,
which is useful for using the search utility of your browser.
If you downloaded either, or both, of the documentation
files, issue the following commands as the root
user to install them (note these
instructions assume English docs, modify the tarball names
below if necessary).
For the “Single HTML” file:
install -v -m644 ../php_manual_en.html.gz \ /usr/share/doc/php-7.1.8 && gunzip -v /usr/share/doc/php-7.1.8/php_manual_en.html.gz
For the “Many HTML files” tarball:
tar -xvf ../php_manual_en.tar.gz \ -C /usr/share/doc/php-7.1.8 --no-same-owner
sed -i "s|lsystemd-daemon|lsystemd|g" configure: This command fixes the detection of the systemd library.
--datadir=/usr/share/php
: This
works around a bug in the build machinery, which installs
some data to a wrong location.
--enable-fpm
: This
parameter allows building the fastCGI Process Manager.
--with-fpm-systemd
:
This parameter allows the FastCGI Process Manager to
integrate with systemd.
--with-config-file-path=/etc
:
This parameter makes PHP
look for the php.ini
configuration file in /etc
.
--with-zlib
: This
parameter adds support for Zlib compression.
--enable-bcmath
:
Enables bc
style precision math functions.
--with-bz2
: Adds
support for Bzip2
compression functions.
--enable-calendar
:
This parameter provides support for calendar conversion.
--enable-dba=shared
:
This parameter enables support for database (dbm-style)
abstraction layer functions.
--enable-ftp
: This
parameter enables FTP functions.
--with-gettext
:
Enables functions that use Gettext text translation.
--enable-mbstring
:
This parameter enables multibyte string support.
--with-readline
: This
parameter enables command line Readline support.
--disable-libxml
: This option
allows building PHP without libxml2 installed.
--with-apxs2
: Instead of building
the fastCGI process manager, it is possible to build an
apache module. This has some
performance penalty for heavy loaded servers, but may be
easier to set up. This switch is incompatible with the
--enable-fpm
and
--with-fpm-...
switches.
--with-mysqli=shared
: This option
includes MySQLi support.
--with-mysql-sock=/run/mysqld/mysqld.sock
:
Location of the MySQL unix socket pointer.
--with-pdo-mysql=shared
: This
option includes PDO: MySQL support.
--with-tidy=shared
: This option
includes tidy library support.
The file used as the default /etc/php.ini
configuration file is
recommended by the PHP
development team. This file modifies the default behavior
of PHP. If no /etc/php.ini
is used, all configuration
settings fall to the defaults. You should review the
comments in this file and ensure the changes are acceptable
in your particular environment.
The fastCGI process manager uses the configuration file
/etc/php-fpm.conf
. The
default file shipped with PHP includes all the /etc/php-fpm.d/*.conf
in turn. There is a
shipped /etc/php-fpm.d/www.conf
file, that
contains the parameters related to the interaction with the
Apache Web server.
You may have noticed the following from the output of the make install command:
You may want to add: /usr/lib/php to your php.ini include_path
If desired, add the entry using the following command as
the root
user:
sed -i 's@php/includes"@&\ninclude_path = ".:/usr/lib/php"@' \ /etc/php.ini
To enable fastCGI support in the Apache web server, two LoadModule
directives must be added to the httpd.conf
file. They are commented out,
so just issue the following command as root
user:
sed -i -e '/proxy_module/s/^#//' \ -e '/proxy_fcgi_module/s/^#//' \ /etc/httpd/httpd.conf
Those modules accept various ProxyPass directives. One
possibility is (as the root
user):
echo \ 'ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/srv/www/$1' >> \ /etc/httpd/httpd.conf
Additionally, it may be useful to add an entry for
index.php
to the
DirectoryIndex directive of the httpd.conf
file. Lastly, adding a line to
setup the .phps
extension to
show highlighted PHP
source may be desirable:
AddType application/x-httpd-php-source .phps
You'll need to restart the Apache web server after making any
modifications to the httpd.conf
file.
To start the php-fpm daemon at boot,
install the systemd unit from the blfs-systemd-units-20160602
package by running the following command as the
root
user:
make install-php-fpm
Last updated on 2017-08-26 09:42:24 -0700
The Python 2 package contains the Python development environment. It is useful for object-oriented programming, writing scripts, prototyping large programs or developing entire applications. This version is for backward compatibility with other dependent packages.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tar.xz
Download MD5 sum: 53b43534153bb2a0363f08bae8b9d990
Download size: 12 MB
Estimated disk space required: 253 MB (additional 18 MB for tests)
Estimated build time: 0.8 SBU (additional 4.3 SBU for tests)
Optional HTML Documentation
Download (HTTP): https://docs.python.org/2.7/archives/python-2.7.13-docs-html.tar.bz2
BlueZ-5.46 and Valgrind-3.13.0
OpenSSL-1.1.0f, SQLite-3.20.0 and Tk-8.6.7
If you are building Thunderbird-52.3.0 or Firefox-55.0.3 you must install openssl before you build Python 2.
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/Python
Install Python 2 by running the following commands:
./configure --prefix=/usr \ --enable-shared \ --with-system-expat \ --with-system-ffi \ --with-ensurepip=yes \ --enable-unicode=ucs4 && make
To test the results, issue: make -k test. One test fails for unknown reasons.
Now, as the root
user:
make install && chmod -v 755 /usr/lib/libpython2.7.so.1.0
Since Python 2 is in
maintenance mode, and Python
3 is recommended by upstream for development, you
probably do not need to install the documentation. However,
if you still want to install documentation for both
Python versions, be sure to
define the PYTHONDOCS
variable for
the version you want to use, each time you need to consult
the documentation. If you have downloaded the preformatted
documentation from http://docs.python.org/download.html,
install it as the root
user:
install -v -dm755 /usr/share/doc/python-2.7.13 && tar --strip-components=1 \ --no-same-owner \ --directory /usr/share/doc/python-2.7.13 \ -xvf ../python-2.7.13-docs-html.tar.bz2 && find /usr/share/doc/python-2.7.13 -type d -exec chmod 0755 {} \; && find /usr/share/doc/python-2.7.13 -type f -exec chmod 0644 {} \;
--with-system-expat
:
This switch enables linking against system version of
Expat.
--with-system-ffi
:
This switch enables linking against system version of
libffi. Remove if you have
not installed libffi-3.2.1.
--with-ensurepip=yes
: This switch enables building pip and setuptools packaging
programs. setuptools is needed for
building some Python modules.
--enable-unicode=ucs4
: This
switch enables 32bit Unicode support in Python.
--with-dbmliborder=bdb:gdbm:ndbm
:
Use this switch if you want to build Python DBM Module against Berkeley DB instead of GDBM.
chmod ...: Fix permissions for libraries to be consistent with other libraries.
In order for python to find the installed documentation, you must add the following environment variable to individual user's or the system's profile:
export PYTHONDOCS=/usr/share/doc/python-2.7.13
is a Python program that reads Python 2.x source code and applies a series of fixes to transform it into valid Python 3.x code. |
|
is a wrapper script that opens a Python aware GUI editor. For this script to run, you must have installed Tk before Python so that the Tkinter Python module is built. |
|
is the Python documentation tool. |
|
is an interpreted, interactive, object-oriented programming language. |
|
is a version-specific name for the python program. |
|
is an SMTP proxy implemented in Python. |
Last updated on 2017-08-18 12:42:43 -0700
The Python 3 package contains the Python development environment. This is useful for object-oriented programming, writing scripts, prototyping large programs or developing entire applications.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz
Download MD5 sum: 2c68846471994897278364fc18730dd9
Download size: 16 MB
Estimated disk space required: 345 MB (with docs; add 30 MB for the tests)
Estimated build time: 1.1 SBU (add 3.4 SBU for tests)
Optional HTML Documentation
Download (HTTP): https://docs.python.org/3.6/archives/python-3.6.2-docs-html.tar.bz2
BlueZ-5.46, GDB-8.0 (required for some tests), and Valgrind-3.13.0
Berkeley DB-6.2.32, OpenSSL-1.1.0f, SQLite-3.20.0 and Tk-8.6.7
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/Python3
Install Python 3 by running the following commands:
CXX="/usr/bin/g++" \ ./configure --prefix=/usr \ --enable-shared \ --with-system-expat \ --with-system-ffi \ --with-ensurepip=yes && make
The test suite must be run separately, using an X terminal (see below).
Now, as the root
user:
make install && chmod -v 755 /usr/lib/libpython3.6m.so && chmod -v 755 /usr/lib/libpython3.so
If you have downloaded the preformatted documentation from
http://docs.python.org/download.html,
install it as the root
user:
install -v -dm755 /usr/share/doc/python-3.6.2/html && tar --strip-components=1 \ --no-same-owner \ --no-same-permissions \ -C /usr/share/doc/python-3.6.2/html \ -xvf ../python-3.6.2-docs-html.tar.bz2
The test suite must be run separately from the build, either before or after the package is built and installed. Do not run make install, after running the test suite. To build and install the package, you need to start with a fresh or clean source tree. For the test, you also need a clean source code, so either start by removing the source code directory and starting over, by uncompressing the source tarball or by running make clean. Then configure again, adding “--with-pydebug” to the configure switches above, run make, then make test. Remember that tests must be executed using an X terminal. One test fails. The test SBU highly depends on the speed of the internet connexion.
CXX="/usr/bin/g++" ./configure ...: Avoid an annoying message during configuration.
--with-system-expat
:
This switch enables linking against the system version of
Expat.
--with-system-ffi
:
This switch enables linking against system version of
libffi. Remove if you have
not installed libffi-3.2.1.
--with-ensurepip=yes
: This switch enables building pip and setuptools packaging
programs. setuptools is needed for
building some Python modules.
--with-dbmliborder=bdb:gdbm:ndbm
:
Use this switch if you want to build Python DBM Module against Berkeley DB instead of GDBM.
chmod ...: Fix permissions for shared libraries to be consistent with other libraries.
In order for python3 to find the installed documentation, create the following version independent symlink:
ln -svfn python-3.6.2 /usr/share/doc/python-3
and add the following environment variable to the individual user's or system's profile:
export PYTHONDOCS=/usr/share/doc/python-3/html
is a wrapper script that opens a Python aware GUI editor. For this script to run, you must have installed Tk before Python so that the Tkinter Python module is built. |
|
is the Python documentation tool. |
|
is an interpreted, interactive, object-oriented programming language. |
|
is a version-specific name for the python program. |
|
creates virtual Python environments in one or more target directories. |
Last updated on 2017-08-18 12:42:43 -0700
The Python module packages add useful objects to the Python language. Modules utilized by packages throughout BLFS are listed here, along with their dependencies. Installation of the modules shown on this page is meant to follow from top to bottom to handle optional dependencies in each module.
D-Bus Python provides Python bindings to the D-Bus.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://dbus.freedesktop.org/releases/dbus-python/dbus-python-1.2.4.tar.gz
Download MD5 sum: 7372a588c83a7232b4e08159bfd48fe5
Download size: 600 KB
Estimated disk space required: 9.3 MB (both versions with tests)
Estimated build time: 0.4 SBU (both versions with tests)
dbus-glib-0.108 and Python-2.7.13 and/or Python-3.6.2
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/dbus-python
Both Python 2 and Python 3 modules can be built and installed without any conflicts.
To build D-Bus Python as the Python 2 module, run the following commands:
mkdir python2 && pushd python2 && PYTHON=/usr/bin/python \ ../configure --prefix=/usr --docdir=/usr/share/doc/dbus-python-1.2.4 && make && popd
To test the results, issue: make -C python2 check.
To build D-Bus Python as the Python 3 module, run the following commands:
mkdir python3 && pushd python3 && PYTHON=/usr/bin/python3 \ ../configure --prefix=/usr --docdir=/usr/share/doc/dbus-python-1.2.4 && make && popd
To test the results, issue: make -C python3 check.
To install the Python 2
module, run the following command as the root
user:
make -C python2 install
To install the Python 3
module, run the following command as the root
user:
make -C python3 install
The PyAtSpi2 package contains Python bindings for the core components of the GNOME Accessibility.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://ftp.gnome.org/pub/gnome/sources/pyatspi/2.24/pyatspi-2.24.0.tar.xz
Download (FTP): ftp://ftp.gnome.org/pub/gnome/sources/pyatspi/2.24/pyatspi-2.24.0.tar.xz
Download MD5 sum: db049a2306a93ef32e3d5a3412918e75
Download size: 292 KB
Estimated disk space required: 3.6 MB
Estimated build time: less than 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/pyatspi2
Both Python 2 and Python 3 modules can be built and installed without any conflicts.
To build PyAtSpi2 as the Python 2 module, run the following commands:
mkdir python2 && pushd python2 && ../configure --prefix=/usr --with-python=/usr/bin/python && make && popd
To build PyAtSpi2 as the Python 3 module, run the following commands:
mkdir python3 && pushd python3 && ../configure --prefix=/usr --with-python=/usr/bin/python3 && make && popd
This package does not come with a testsuite.
To install the Python 2
module, run the following command as the root
user:
make -C python2 install
To install the Python 3
module, run the following command as the root
user:
make -C python3 install
PyCairo provides Python bindings to Cairo.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://github.com/pygobject/pycairo/releases/download/v1.15.1/pycairo-1.15.1.tar.gz
Download MD5 sum: 29620ad9b0fa4a7052760e4fa4b71b4c
Download size: 172 KB
Estimated disk space required: 4.5 MB
Estimated build time: less than 0.1 SBU
Cairo-1.14.10, Python-2.7.13, and/or Python-3.6.2
Hypothesis (for tests)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/pycairo
Install PyCairo for Python2 by running the following commands:
python2 setup.py build
This package does not come with a test suite.
Now, as the root
user:
python2 setup.py install --optimize=1
Install PyCairo for Python3 by running the following commands:
python3 setup.py build
This package does not come with a test suite.
Now, as the root
user:
python3 setup.py install --optimize=1
PyCrypto is a collection of both secure hash functions (such as SHA256 and RIPEMD160), and various encryption algorithms (AES, DES, RSA, ElGamal, etc.).
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://files.pythonhosted.org/packages/source/p/pycrypto/pycrypto-2.6.1.tar.gz
Download MD5 sum: 55a61a054aa66812daf5161a0d5d7eda
Download size: 440 KB
Estimated disk space required: 14 MB
Estimated build time: 0.1 SBU
Python-2.7.13 and/or Python-3.6.2
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/pycrypto
Both Python 2 and Python 3 modules can be built and installed without any conflicts.
To build the Python 2 module, run the following command:
python setup.py build
To install the Python 2
module, run the following command as the root
user:
python setup.py install --optimize=1
To build the Python 3 module, run the following command:
python3 setup.py build
To install the Python 3
module, run the following command as the root
user:
python3 setup.py install --optimize=1
PyGObject-2.28.6 provides Python 2 bindings to the GObject class from GLib.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://ftp.gnome.org/pub/gnome/sources/pygobject/2.28/pygobject-2.28.6.tar.xz
Download (FTP): ftp://ftp.gnome.org/pub/gnome/sources/pygobject/2.28/pygobject-2.28.6.tar.xz
Download MD5 sum: 9415cb7f2b3a847f2310ccea258b101e
Download size: 732 KB
Estimated disk space required: 24 MB
Estimated build time: 0.2 SBU
GLib-2.52.3 and PyCairo-1.15.1 (Python 2)
gobject-introspection-1.52.1 and libxslt-1.1.29 (to Build Documentation)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/pygobject2
Install PyGObject by running the following commands:
patch -Np1 -i ../pygobject-2.28.6-fixes-1.patch && ./configure --prefix=/usr --disable-introspection && make
This package does not have a working testsuite.
Now, as the root
user:
make install
--disable-introspection
: Omit
this switch if you have installed gobject-introspection-1.52.1.
Note that it conflicts with PyGObject-3.24.1.
--disable-docs
: This option
disables the rebuilding of the html documentation if
libxslt-1.1.29 is installed.
PyGObject3 provides Python bindings to the GObject class from GLib.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://ftp.gnome.org/pub/gnome/sources/pygobject/3.24/pygobject-3.24.1.tar.xz
Download (FTP): ftp://ftp.gnome.org/pub/gnome/sources/pygobject/3.24/pygobject-3.24.1.tar.xz
Download MD5 sum: 69a843311d0f0385dff376e11a2d83d2
Download size: 744 KB
Estimated disk space required: 25 MB (both modules, with tests)
Estimated build time: 0.5 SBU (both modules, with tests)
gobject-introspection-1.52.1 and PyCairo-1.15.1 (for Python 2 and/or Python 3 bindings)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/pygobject3
Both Python 2 and Python 3 modules can be built and installed without any conflicts.
To build PyGObject3 as the Python 2 module, run the following commands:
mkdir python2 && pushd python2 && ../configure --prefix=/usr --with-python=/usr/bin/python && make && popd
To test the results, issue: make -C python2 check. An already active graphical session with bus address is necessary to run the tests.
To build PyGObject3 as the Python 3 module, run the following commands:
mkdir python3 && pushd python3 && ../configure --prefix=/usr --with-python=/usr/bin/python3 && make && popd
To test the results, issue: make -C python3 check. An already active graphical session with bus address is necessary to run the tests.
To install the Python 2
module, run the following command as the root
user:
make -C python2 install
To install the Python 3
module, run the following command as the root
user:
make -C python3 install
PyGTK lets you to easily create programs with a graphical user interface using the Python programming language.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://ftp.gnome.org/pub/gnome/sources/pygtk/2.24/pygtk-2.24.0.tar.bz2
Download (FTP): ftp://ftp.gnome.org/pub/gnome/sources/pygtk/2.24/pygtk-2.24.0.tar.bz2
Download MD5 sum: a1051d5794fd7696d3c1af6422d17a49
Download size: 2.2 MB
Estimated disk space required: 83 MB
Estimated build time: 0.7 SBU
PyCairo-1.15.1 (Python 2) and Pango-1.40.10
PyCairo-1.15.1 (Python 2) and GTK+-2.24.31.
PyCairo-1.15.1 (Python 2) and libglade-2.6.4.
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/pygtk
Install PyGTK by running the following commands:
./configure --prefix=/usr && make
The tests must be run from an active X display. If this is so, issue: make check.
Now, as the root
user:
make install
--enable-docs
: This
option enables rebuilding the html documentation if
libxslt-1.1.29 is installed.
PyXDG is a Python library to access freedesktop.org standards.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://people.freedesktop.org/~takluyver/pyxdg-0.25.tar.gz
Download MD5 sum: bedcdb3a0ed85986d40044c87f23477c
Download size: 48 KB
Estimated disk space required: 800 KB
Estimated build time: less than 0.1 SBU
Python-2.7.13 and/or Python-3.6.2
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/pyxdg
Both Python 2 and Python 3 modules can be built and installed without any conflicts.
To install the Python 2
module, run the following command as the root
user:
python setup.py install --optimize=1
To install the Python 3
module, run the following command as the root
user:
python3 setup.py install --optimize=1
funcsigs is a is a backport of the PEP 362 function signature features from Python 3.3's inspect module for Python 2.x.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://files.pythonhosted.org/packages/source/f/funcsigs/funcsigs-1.0.2.tar.gz
Download MD5 sum: 7e583285b1fb8a76305d6d68f4ccc14e
Download size: 32 KB
Estimated disk space required: 440 KB
Estimated build time: less than 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/funcsigs
To install the Python 2
module, run the following command as the root
user:
python setup.py install --optimize=1
This module is included with Python distributions after 3.3.
Beaker is a Python module that implements caching and sessions WSGI middleware for use with web applications and stand-alone Python scripts and applications.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://files.pythonhosted.org/packages/source/B/Beaker/Beaker-1.9.0.tar.gz
Download MD5 sum: 38b3fcdfa24faf97c6cf66991eb54e9c
Download size: 40 KB
Estimated disk space required: 900 KB
Estimated build time: less than 0.1 SBU
funcsigs-1.0.2 (required for Python-2.7)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/Beaker
Both Python 2 and Python 3 modules can be built and installed without any conflicts.
To install the Python 2
module, run the following command as the root
user:
python setup.py install --optimize=1
To install the Python 3
module, run the following command as the root
user:
python3 setup.py install --optimize=1
lxml provides Python bindings for libxslt-1.1.29 and libxml2-2.9.4.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://files.pythonhosted.org/packages/source/l/lxml/lxml-3.8.0.tar.gz
Download MD5 sum: e54e2fae44d684d6b9c636fe189e93ff
Download size: 3.6 MB
Estimated disk space required: 104 MB
Estimated build time: 1.3 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/lxml
Both Python 2 and Python 3 modules can be built and installed without any conflicts.
To install the Python 2
module, run the following commands as the root
user:
python setup.py build && python setup.py install --optimize=1
To install the Python 3
module, run the following commands as the root
user:
python3 setup.py clean && python3 setup.py build && python3 setup.py install --optimize=1
MarkupSafe is a Python module that implements a XML/HTML/XHTML Markup safe string.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://files.pythonhosted.org/packages/source/M/MarkupSafe/MarkupSafe-1.0.tar.gz
Download MD5 sum: 2fcedc9284d50e577b5192e8e3578355
Download size: 16 KB
Estimated disk space required: 872 KB
Estimated build time: less than 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/MarkupSafe
Both Python 2 and Python 3 modules can be built and installed without any conflicts.
To build the Python 2 module, run the following command:
python setup.py build
To install the Python 2
module, run the following command as the root
user:
python setup.py install --optimize=1
To build the Python 3 module, run the following command:
python3 setup.py build
To install the Python 3
module, run the following command as the root
user:
python3 setup.py install --optimize=1
Jinja2 is a Python module that implements a simple pythonic template language.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://files.pythonhosted.org/packages/source/J/Jinja2/Jinja2-2.9.6.tar.gz
Download MD5 sum: 6411537324b4dba0956aaa8109f3c77b
Download size: 428 KB
Estimated disk space required: 10 MB
Estimated build time: less than 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/Jinja2
Both Python 2 and Python 3 modules can be built and installed without any conflicts.
To install the Python 2
module, run the following command as the root
user:
python setup.py install --optimize=1
To install the Python 3
module, run the following command as the root
user:
python3 setup.py install --optimize=1
Mako is a Python module that implements hyperfast and lightweight templating for the Python platform.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://files.pythonhosted.org/packages/source/M/Mako/Mako-1.0.4.tar.gz
Download MD5 sum: c5fc31a323dd4990683d2f2da02d4e20
Download size: 564 KB
Estimated disk space required: 5.6 MB
Estimated build time: less than 0.1 SBU
Beaker-1.9.0 and MarkupSafe-1.0
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/Mako
Both Python 2 and Python 3 modules can be built and installed without any conflicts.
To install the Python 2
module, run the following command as the root
user:
python setup.py install --optimize=1
To install the Python 3
module, run the following command as the root
user:
sed -i "s:mako-render:&3:g" setup.py && python3 setup.py install --optimize=1
sed -i "s:mako-render:&3:g" setup.py: This sed prevents setup.py from overwriting an already installed script by the Python 2 module. Remove it if you are building this module only for Python 3.
PyYAML is a Python module that implements the next generation YAML parser and emitter.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://pyyaml.org/download/pyyaml/PyYAML-3.12.tar.gz
Download MD5 sum: 4c129761b661d181ebf7ff4eb2d79950
Download size: 248 KB
Estimated disk space required: 10 MB
Estimated build time: 0.1 SBU
Python-2.7.13 and/or Python-3.6.2 and YAML-0.1.7
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/PyYAML
Both Python 2 and Python 3 modules can be built and installed without any conflicts.
To build the Python 2 module, run the following command:
python setup.py build
To install the Python 2
module, run the following command as the root
user:
python setup.py install --optimize=1
To build the Python 3 module, run the following command:
python3 setup.py build
To install the Python 3
module, run the following command as the root
user:
python3 setup.py install --optimize=1
Scour is an SVG (Scalable Vector Graphics) optimizer/cleaner that reduces their size by optimizing structure and removing unnecessary data.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://github.com/scour-project/scour/archive/v0.36/scour-0.36.tar.gz
Download MD5 sum: f7d03395a9ce51f822e5741034783e04
Download size: 90 KB
Estimated disk space required: 1.6 MB
Estimated build time: less than 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/scour
Although this package installs modules for Python 2 or Python 3 they are usually invoked by scour which is a script using the version of Python for which it was compiled.
For the moment, use of Python 2 will normally be adequate.
To build the Python 2 module, issue:
python setup.py build
To partially test the results, issue: python testcss.py. If you have installed Six you can run the main tests by issuing: python testscour.py.
To install the Python 2
module run the following command as the root
user:
python setup.py install --optimize=1
If you wish to install the Python 3 modules, change 'python' to 'python3' in each of the above steps.
Six is a Python 2 and 3 compatibility library.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://pypi.io/packages/source/s/six/six-1.10.0.tar.gz
Download MD5 sum: 34eed507548117b2ab523ab14b2f8b55
Download size: 32 KB
Estimated disk space required: 356 KB
Estimated build time: less than 0.1 SBU
Python-2.7.13 and/or Python-3.6.2
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/six
Install six for Python2 by running the following commands:
python2 setup.py build
This package does not come with a test suite.
Now, as the root
user:
python2 setup.py install --optimize=1
Install six for Python3 by running the following commands:
python3 setup.py build
This package does not come with a test suite.
Now, as the root
user:
python3 setup.py install --optimize=1
Last updated on 2017-08-21 13:22:19 -0700
The Ruby package contains the Ruby development environment. This is useful for object-oriented scripting.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.1.tar.xz
Download MD5 sum: 894467211c4ae1dbf8a41bb0d58bbc89
Download size: 9.5 MB
Estimated disk space required: 338 MB, with checks (add 247 MB for C API docs)
Estimated build time: 2.4 SBU, with checks (add 0.5 SBU for C API docs)
Berkeley DB-6.2.32, Doxygen-1.8.13, Graphviz-2.40.1, libffi-3.2.1, OpenSSL-1.1.0f, Tk-8.6.7, Valgrind-3.13.0, and YAML-0.1.7
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/ruby
Install Ruby by running the following command:
./configure --prefix=/usr \ --enable-shared \ --docdir=/usr/share/doc/ruby-2.4.1 && make
Optionally, build the CAPI documents by running the following commands:
make capi
To test the results, issue: make check.
Now, as the root
user:
make install
--enable-shared
: This
switch enables building of the libruby
shared library.
--disable-install-doc
: This
switch disables building and installing rdoc indexes and C
API documents.
--disable-install-rdoc
: This
switch disables building and installing rdoc indexes.
--disable-install-capi
: This
switch disables building and installing C API documents.
is Tiny eRuby. It interprets a Ruby code embedded text file. |
|
command for RubyGems - a sophisticated package manager for Ruby. |
|
is the interactive interface for Ruby. |
|
a make-like build utility for Ruby. |
|
generates Ruby documentation. |
|
displays documentation from a database on Ruby classes, modules, and methods. |
|
is an interpreted scripting language for quick and easy object-oriented programming. |
|
contains the API functions required by Ruby. |
Last updated on 2017-08-20 20:24:54 -0700
The Rust programming language is designed to be a safe, concurrent, practical language.
As with many other programming languages, rustc (the rust compiler) needs a binary from which to bootstrap. It will download a stage0 binary, and several cargo files (these are actually .tar.gz source archives) at the start of the build, so you cannot compile it without an internet connection.
The current rustbuild build-system will use all available processors, although it does not scale well and often falls back to just using one core while waiting for a library to compile.
At the moment Rust does not provide any guarantees of a stable ABI.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://static.rust-lang.org/dist/rustc-1.19.0-src.tar.gz
Download MD5 sum: 75e779670ac79edf023497a9c37eb35d
Download size: 48 MB
Estimated disk space required: 4.2 GB (362 MB installed), (add 0.6GB for tests) plus 273MB for ~/.cargo files
Estimated build time: 33 SBU (add 14 SBU for tests, both with 4 processors)
cURL-7.55.1, CMake-3.9.1, Python-2.7.13
GDB-8.0 (used by debuginfo-gdb in the testsuite), Ninja-1.7.2
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/rust
This package is updated on a six-weekly release cycle. Because it is such a large and slow package to build, and is at the moment only used by one package in this book, the BLFS editors take the view that it should only be updated when that is necessary.
First create a suitable config.toml
file which will configure the
build :
cat <<EOF > config.toml # see src/bootstrap/config.toml.example for more possible options [llvm] targets = "X86" [build] # install cargo as well as rust extended = true [install] prefix = "/usr" docdir = "share/doc/rustc-1.19.0" channel = "stable" EOF
Now install Rust by running the following commands:
./x.py build
To run the tests issue ./x.py test --verbose --no-fail-fast >../rustc-testlog: as with the build, that will use all available CPUs. This runs maniy suites of tests (in an apparently random order), three may fail: compile-fail/issue-37131.rs and run-make/target-without-atomics both try to compile for the thumbv6m-none-eabi target, but the BLFS build does not cater for that, and all 105 tests in debuginfo-gdb will fail if gdb has not been installed.
If you wish to look at the numbers for the results, you can find the total number of tests which were considered by running:
grep 'running .* tests' ../rustc-testlog | awk '{ sum += $2 } END { print sum }'
That should report 14029 tests. Similarly, the total tests which failed can be found by running:
grep '^test result:' ../rustc-testlog | awk '{ sum += $6 } END { print sum }'
And similarly for the tests which passed use $4, for those which were ignored (i.e. skipped) use $8 (and $10 for 'measured', $12 for 'filtered out' but both are probably zero). The breakdown does not match the overall total.
Now, as the root
user:
./x.py install
targets = "X86": this avoids building all the available linux cross-compilers (Aarch64, MIPS, PowerPC, SystemZ, etc).
extended = true: this installs Cargo alongside Rust.
channel =
"stable": this ensures only stable features
can be used, the default in config.toml
is to use development features,
which is not appropriate for a released version.
--verbose: this switch can sometimes provide more information about a test which fails.
--no-fail-fast: this switch ensures that the testsuite will not stop at the first error.
Last updated on 2017-08-29 11:35:03 -0700
SCons is a tool for building software (and other files) implemented in Python.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://downloads.sourceforge.net/scons/scons-2.5.1.tar.gz
Download MD5 sum: aaaf09e1351a598f98d17b0cf1103e7a
Download size: 608 KB
Estimated disk space required: 5.3 MB
Estimated build time: less than 0.1 SBU
docbook-xsl-1.79.1, libxml2-2.9.4, and libxslt-1.1.29
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/scons
Install SCons by running the
following commands as the root
user:
python setup.py install --prefix=/usr \ --standard-lib \ --optimize=1 \ --install-data=/usr/share
Last updated on 2017-08-18 12:42:43 -0700
S-Lang (slang) is an interpreted language that may be embedded into an application to make the application extensible. It provides facilities required by interactive applications such as display/screen management, keyboard input and keymaps.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://www.jedsoft.org/releases/slang/slang-2.3.1.tar.bz2
Download MD5 sum: bd46d1dc17a50c72004ad842829d7b1f
Download size: 1.5 MB
Estimated disk space required: 41 MB (with tests)
Estimated build time: 0.6 SBU (with tests)
libpng-1.6.31, PCRE-8.41, and Oniguruma
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/slang
This package does not support parallel build.
Install slang by running the following commands:
./configure --prefix=/usr \ --sysconfdir=/etc \ --with-readline=gnu && make -j1
To test the results, issue: make check. Note that this will also create a static version of the library which will then be installed in the next step.
Now, as the root
user:
make install_doc_dir=/usr/share/doc/slang-2.3.1 \ SLSH_DOC_DIR=/usr/share/doc/slang-2.3.1/slsh \ install-all && chmod -v 755 /usr/lib/libslang.so.2.3.1 \ /usr/lib/slang/v2/modules/*.so
--with-readline=gnu
:
This parameter sets GNU Readline to be used by the parser
interface instead of the slang internal version.
make install_doc_dir=/usr/share/doc/slang-2.3.1 SLSH_DOC_DIR=/usr/share/doc/slang-2.3.1/slsh install-all: This command installs the static library as well as the dynamic shared version and related modules. It also changes the documentation installation directories to a versioned directory.
Last updated on 2017-08-23 17:35:52 -0700
Subversion is a version control system that is designed to be a compelling replacement for CVS in the open source community. It extends and enhances CVS' feature set, while maintaining a similar interface for those already familiar with CVS. These instructions install the client and server software used to manipulate a Subversion repository. Creation of a repository is covered at Running a Subversion Server.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://archive.apache.org/dist/subversion/subversion-1.9.7.tar.bz2
Download MD5 sum: 05b0c677681073920f938c1f322e0be2
Download size: 7.6 MB
Estimated disk space required: 198 MB (add 173 MB for bindings, 24 MB for docs, 1 GB for tests)
Estimated build time: 1.2 SBU (add 1.4 SBU for bindings, 6.0 SBU for tests)
Apr-Util-1.6.0 and SQLite-3.20.0
Serf-1.3.9 (for handling http:// and https:// URLs)
Apache-2.4.27, Cyrus SASL-2.1.26, dbus-1.10.22, Python-2.7.13 (with sqlite support for the tests), Ruby-2.4.1, and SWIG-3.0.12 (for building Perl, Python and Ruby bindings)
One of OpenJDK-1.8.0.141, Dante or Jikes, and JUnit-4.11 (to test the Java bindings)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/subversion
This package may fail during the make phase when using multiple processors. If this occurs try continuing with make -j1 or redo the entire build process with fresh sources using -j1.
Install Subversion by running the following commands:
./configure --prefix=/usr \ --disable-static \ --with-apache-libexecdir && make
If you have Doxygen-1.8.13 installed and you wish to build the API documentation, issue: doxygen doc/doxygen.conf.
If you passed the --enable-javahl
parameter to configure and wish to build
the Java bindings, issue the following command:
make javahl
If you want to compile Perl, Python2, or Ruby bindings, issue any of the following command:
make swig-pl # for Perl make swig-py \ swig_pydir=/usr/lib/python2.7/site-packages/libsvn \ swig_pydir_extra=/usr/lib/python2.7/site-packages/svn # for Python make swig-rb # for Ruby
To test the results, issue: make check.
To test the results of the Java bindings build, issue
make
check-javahl. The JUnit testing framework must be
installed, and the location of the JUnit jar has to be
specified by passing the --with-junit=<path to junit jar>
parameter to configure.
To test the results of any of the SWIG bindings, you can use any of the following commands: make check-swig-pl, make check-swig-py, or make check-swig-rb.
Now, as the root
user:
make install && install -v -m755 -d /usr/share/doc/subversion-1.9.7 && cp -v -R doc/* \ /usr/share/doc/subversion-1.9.7
If you built the Java bindings, issue the following command
as the root
user to install
them:
make install-javahl
If you built the Perl,
Python2, or Ruby bindings, issue any of the
following commands as the root
user to install them:
make install-swig-pl make install-swig-py \ swig_pydir=/usr/lib/python2.7/site-packages/libsvn \ swig_pydir_extra=/usr/lib/python2.7/site-packages/svn make install-swig-rb
--disable-static
:
This switch prevents installation of static versions of the
libraries.
--with-apache-libexecdir
: If
Apache-2.4.27 is installed, the shared
Apache modules are built.
This switch allows to have those modules installed to
Apache's configured module
dir instead of /usr/libexec
. It
has no effect if Apache is
not installed.
--enable-javahl
: enables
compilation of Java high level bindings. Running make javahl is necessary to
do the compilation.
--with-junit=<location of the junit
jar file>
: gives the location of the junit jar,
otherwise the javahl tests cannot be run.
--disable-gmock
: Do not use the
Googlemock testing framework.
/etc/subversion/config
is the
Subversion system-wide
configuration file. This file is used to specify defaults
for different svn commands.
~/.subversion/config
is the
user's personal configuration file. It is used to override
the system-wide defaults set in /etc/subversion/config
.
is a command-line client program used to access Subversion repositories. |
|
is a tool for creating, tweaking or repairing a Subversion repository. |
|
is a benchmarking tool. |
|
is a program for filtering Subversion repository dumpfile format streams. |
|
is the FSFS (FileSystem atop of the FileSystem - Subversion filesystem implementation) repository manipulation tool. |
|
is a tool for inspecting a Subversion repository. |
|
is a Multiple URL Command Client for Subversion. |
|
is a tool for dumping or loading a remote Subversion repository. |
|
is a custom standalone server program, able to run as a daemon process or invoked by SSH. |
|
is a Subversion repository synchronisation tool. |
|
is used to report the version number and state of a working Subversion repository copy. |
|
are the support libraries used by the Subversion programs. |
|
is a plug-in module for the Apache HTTP server, used to authenticate users to a Subversion repository over the Internet or an intranet. |
|
is a plug-in module for the Apache HTTP server, used to make a Subversion repository available to others over the Internet or an intranet. |
Last updated on 2017-08-18 12:42:43 -0700
This section will describe how to set up, administer and secure a Subversion server.
The following instructions will install a Subversion server, which will be set up to use OpenSSH as the secure remote access method, with svnserve available for anonymous access.
Configuration of the Subversion server consists of the following steps:
You'll need to be user root
for the initial portion of configuration. Create the
svn
user and group with the
following commands:
groupadd -g 56 svn && useradd -c "SVN Owner" -d /home/svn -m -g svn -s /bin/false -u 56 svn
If you plan to have multiple repositories, you should have
a group dedicated to each repository for ease of
administration. Create the svntest
group for the test repository
and add the svn
user to
that group with the following commands:
groupadd -g 57 svntest && usermod -G svntest -a svn
Additionally you should set umask 002 while working with a repository so that all new files will be writable by owner and group. This is made mandatory by creating a wrapper script for svn and svnserve:
mv /usr/bin/svn /usr/bin/svn.orig && mv /usr/bin/svnserve /usr/bin/svnserve.orig && cat >> /usr/bin/svn << "EOF"#!/bin/sh umask 002 /usr/bin/svn.orig "$@"
EOF cat >> /usr/bin/svnserve << "EOF"#!/bin/sh umask 002 /usr/bin/svnserve.orig "$@"
EOF chmod 0755 /usr/bin/svn{,serve}
If you use Apache for working with the repository over HTTP, even for anonymous access, you should wrap /usr/sbin/httpd in a similar script.
There are several ways to set up a subversion repository. It is recommended to have a look at the SVN Book corresponding chapter. A basic repository can be set up with the instructions below.
Create a new Subversion
repository with the following commands (as the root
user):
install -v -m 0755 -d /srv/svn && install -v -m 0755 -o svn -g svn -d /srv/svn/repositories && svnadmin create /srv/svn/repositories/svntest
Now that the repository is created, it should be populated
with something useful. You'll need to have a predefined
directory layout set up exactly as you want your repository
to look. For example, here is a sample BLFS layout setup
with a root of svntest/
.
You'll need to setup a directory tree similar to the
following:
svntest/ # The name of the repository
trunk/ # Contains the existing source tree
BOOK/
bootscripts/
edguide/
patches/
scripts/
branches/ # Needed for additional branches
tags/ # Needed for tagging release points
Once you've created your directory layout as shown above, you are ready to do the initial import:
svn import -m "Initial import." \
</path/to/source/tree>
\
file:///srv/svn/repositories/svntest
Now change owner and group information on the repository,
and add an unprivileged user to the svn
and svntest
groups:
chown -R svn:svntest /srv/svn/repositories/svntest &&
chmod -R g+w /srv/svn/repositories/svntest &&
chmod g+s /srv/svn/repositories/svntest/db &&
usermod -G svn,svntest -a <username>
svntest
is the group
assigned to the svntest repository. As mentioned earlier,
this eases administration of multiple repositories when
using OpenSSH for
authentication. Going forward, you'll need to add your
unprivileged user, and any additional users that you wish
to have write access to the repository, to the svn
and svntest
groups.
In addition, you'll notice that the new repository's
db
directory is set-groupID.
If the reasoning is not immediately obvious, when using any
external authentication method (such as ssh), the sticky bit is
set so that all new files will be owned by the user, but
group of svntest
. Anyone in
the svntest
group can
create files, but still give the entire group write access
to those files. This avoids locking out other users from
the repository.
Now, return to an unprivileged user account, and take a look at the new repository using svnlook:
svnlook tree /srv/svn/repositories/svntest/
You may need to log out and back in again to refresh your
group memberships. 'su
<username>
'
should work as well.
As mentioned previously, these instructions will configure the server to use only ssh for write access to the repository and to provide anonymous access using svnserve. There are several other ways to provide access to the repository. These additional configurations are best explained at http://svnbook.red-bean.com/.
Access configuration needs to be done for each repository.
Create the svnserve.conf
file
for the svntest repository using the following commands:
cp /srv/svn/repositories/svntest/conf/svnserve.conf \
/srv/svn/repositories/svntest/conf/svnserve.conf.default &&
cat > /srv/svn/repositories/svntest/conf/svnserve.conf << "EOF"
[general]
anon-access = read
auth-access = write
EOF
There is not a lot to the configuration file at all. You'll
notice that only the general section is required. Take a
look at the svnserve.conf.default
file for
information on using svnserve's built-in
authentication method.
To start the server at boot time, install the svnserve.service
unit from the blfs-systemd-units-20160602
package.
make install-svnserve
Additionally, the instructions above require that svn server uses umask 002 so that all new files will be writable by owner and group. This can be achieved by creating a systemd unit override file by running the following command:
mkdir -p /etc/systemd/system/svnserve.service.d echo "UMask=0002" > /etc/systemd/system/svnserve.service.d/99-user.conf
Options which are passed to svnserve daemon can be
changed in /etc/default/svnserve
.
Last updated on 2016-06-08 20:56:23 -0700
SWIG (Simplified Wrapper and Interface Generator) is a compiler that integrates C and C++ with languages including Perl, Python, Tcl, Ruby, PHP, Java, C#, D, Go, Lua, Octave, R, Scheme, Ocaml, Modula-3, Common Lisp, and Pike. SWIG can also export its parse tree into Lisp s-expressions and XML.
SWIG reads annotated C/C++ header files and creates wrapper code (glue code) in order to make the corresponding C/C++ libraries available to the listed languages, or to extend C/C++ programs with a scripting language.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://downloads.sourceforge.net/swig/swig-3.0.12.tar.gz
Download MD5 sum: 82133dfa7bba75ff9ad98a7046be687c
Download size: 7.8 MB
Estimated disk space required: 91 MB (1.7 GB with tests)
Estimated build time: 0.3 SBU (26 SBU for tests)
Boost-1.64.0 for tests, and any of the languages mentioned in the introduction, as run-time dependencies
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/swig
If you plan to run the tests, some fixes are needed for using Perl-5.26:
sed -i 's/\$(PERL5_SCRIPT/-I. &/' Examples/Makefile.in && sed -i 's/\$command 2/-I. &/' Examples/test-suite/perl5/run-perl-test.pl
Install SWIG by running the following commands:
./configure --prefix=/usr \ --without-clisp \ --without-maximum-compile-warnings && make
To test the results, issue: make -k check TCL_INCLUDE=
GOGCC=true. The (un)setting of the two
variables GOGCC
and TCL_INCLUDE
is necessary, since they are not
correctly set by configure. The tests are only
executed for the languages installed on your machine, so the
disk space and SBU values given for the tests may vary, and
should be considered as mere orders of magnitude. If you have
both Python-2.7.13 and Python-3.6.2 installed,
the Python-3 tests are not run. You can run tests for
Python-3 by issuing PY3=1 make
check-python-examples followed by
PY3=1 make
check-python-test-suite. According to
SWIG's documentation, the
failure of some tests should not be considered harmful.
Now, as the root
user:
make install && install -v -m755 -d /usr/share/doc/swig-3.0.12 && cp -v -R Doc/* /usr/share/doc/swig-3.0.12
--without-maximum-compile-warnings
:
disables compiler ansi conformance enforcement, which
triggers errors in the Lua
headers (starting with Lua 5.3).
--without-<language>
:
allows disabling the building of tests and examples for
<language>, but all the languages capabilities of
SWIG are always built. We
use it for Clisp, because
the SWIG implementation is very incomplete and a lot of tests
fail.
Last updated on 2017-08-26 09:42:24 -0700
The Tcl package contains the Tool Command Language, a robust general-purpose scripting language.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://downloads.sourceforge.net/tcl/tcl8.6.7-src.tar.gz
Download MD5 sum: 5673aaf45b5de5d8dd80bb3daaeb8838
Download size: 9.2 MB
Estimated disk space required: 65 MB (including html documentation)
Estimated build time: 0.9 SBU (additional 2.9 SBU for the tests)
Optional Documentation
Download (HTTP): https://downloads.sourceforge.net/tcl/tcl8.6.7-html.tar.gz
Download MD5 sum: 0da678eaf3041346030898c23c14e97e
Download size: 1.2 MB
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/tcl
This package is also installed in LFS during the bootstrap phase. As it is not installed during Chapter 6 of LFS, installation instructions are included here in BLFS.
If you downloaded the optional documentation, unpack the tarball by issuing the following command:
tar -xf ../tcl8.6.7-html.tar.gz --strip-components=1
Install Tcl by running the following commands:
export SRCDIR=`pwd` && cd unix && ./configure --prefix=/usr \ --mandir=/usr/share/man \ $([ $(uname -m) = x86_64 ] && echo --enable-64bit) && make && sed -e "s#$SRCDIR/unix#/usr/lib#" \ -e "s#$SRCDIR#/usr/include#" \ -i tclConfig.sh && sed -e "s#$SRCDIR/unix/pkgs/tdbc1.0.5#/usr/lib/tdbc1.0.5#" \ -e "s#$SRCDIR/pkgs/tdbc1.0.5/generic#/usr/include#" \ -e "s#$SRCDIR/pkgs/tdbc1.0.5/library#/usr/lib/tcl8.6#" \ -e "s#$SRCDIR/pkgs/tdbc1.0.5#/usr/include#" \ -i pkgs/tdbc1.0.5/tdbcConfig.sh && sed -e "s#$SRCDIR/unix/pkgs/itcl4.1.0#/usr/lib/itcl4.1.0#" \ -e "s#$SRCDIR/pkgs/itcl4.1.0/generic#/usr/include#" \ -e "s#$SRCDIR/pkgs/itcl4.1.0#/usr/include#" \ -i pkgs/itcl4.1.0/itclConfig.sh && unset SRCDIR
To test the results, issue: make test. Tests known to fail: cmdAH.test and tdbcodbc.test.
Now, as the root
user:
make install && make install-private-headers && ln -v -sf tclsh8.6 /usr/bin/tclsh && chmod -v 755 /usr/lib/libtcl8.6.so
If you downloaded the optional documentation, install it by
issuing the following commands as the root
user:
mkdir -v -p /usr/share/doc/tcl-8.6.7 && cp -v -r ../html/* /usr/share/doc/tcl-8.6.7
$([ $(uname -m) = x86_64 ]
&& echo --enable-64bit)
: This switch is
used to enable 64 bit support in Tcl on 64 bit operating systems.
make install-private-headers: This command is used to install the Tcl library interface headers used by other packages if they link to the Tcl library.
ln -v -sf tclsh8.6 /usr/bin/tclsh: This command is used to create a compatibility symbolic link to the tclsh8.6 file as many packages expect a file named tclsh.
sed -e ...: The Tcl package expects that its source tree is preserved so that packages depending on it for their compilation can utilize it. These sed remove the references to the build directory and replace them with saner system-wide locations.
Last updated on 2017-08-16 21:41:37 -0700
The Tk package contains a TCL GUI Toolkit.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://downloads.sourceforge.net/tcl/tk8.6.7-src.tar.gz
Download MD5 sum: 46ea9c0165c515d87393700f4891ab6f
Download size: 4.1 MB
Estimated disk space required: 24 MB
Estimated build time: 0.3 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/tk
Install Tk by running the following commands:
cd unix && ./configure --prefix=/usr \ --mandir=/usr/share/man \ $([ $(uname -m) = x86_64 ] && echo --enable-64bit) && make && sed -e "s@^\(TK_SRC_DIR='\).*@\1/usr/include'@" \ -e "/TK_B/s@='\(-L\)\?.*unix@='\1/usr/lib@" \ -i tkConfig.sh
Running the tests is not recommended. Failures will be reported during the tests, depending on the screen resolution/capabilities, fonts installed and other X related parameters, but the end report can show 0 failures. Some tests will steal focus and some might crash your X Server. To test the results anyway, issue: make test. Ensure you run it from an X Window display device with the GLX extensions loaded, but even so, tests might hang.
Now, as the root
user:
make install && make install-private-headers && ln -v -sf wish8.6 /usr/bin/wish && chmod -v 755 /usr/lib/libtk8.6.so
$([ $(uname -m) = x86_64 ]
&& echo --enable-64bit)
: This switch is
used to enable 64 bit support in Tk on 64 bit operating systems.
make install-private-headers: This command is used to install the Tk library interface headers used by other packages if they link to the Tk library.
ln -v -sf wish8.6 /usr/bin/wish: This command is used to create a compatibility symbolic link to the wish8.6 file as many packages expect a file named wish.
sed -e ... tkConfig.sh: The Tk package expects that its source tree is preserved so that packages depending on it for their compilation can utilize it. This sed removes the references to the build directory and replaces them with saner system-wide locations.
Last updated on 2017-08-20 15:06:11 -0700
Vala is a new programming language that aims to bring modern programming language features to GNOME developers without imposing any additional runtime requirements and without using a different ABI compared to applications and libraries written in C.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://ftp.gnome.org/pub/gnome/sources/vala/0.36/vala-0.36.4.tar.xz
Download (FTP): ftp://ftp.gnome.org/pub/gnome/sources/vala/0.36/vala-0.36.4.tar.xz
Download MD5 sum: 3c19014093f1a3d995357253b463082c
Download size: 2.7 MB
Estimated disk space required: 112 MB (including tests)
Estimated build time: 1.0 SBU (including tests)
dbus-1.10.22 (Required for the tests) and libxslt-1.1.29 (Required for generating the documentation)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/vala
Install Vala by running the following commands:
./configure --prefix=/usr && make
To test the results, issue: make check.
Now, as the root
user:
make install
Last updated on 2017-08-20 20:24:54 -0700
Valgrind is an instrumentation framework for building dynamic analysis tools. There are Valgrind tools that can automatically detect many memory management and threading bugs, and profile programs in detail. Valgrind can also be used to build new tools.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://sourceware.org/ftp/valgrind/valgrind-3.13.0.tar.bz2
Download (FTP): ftp://sourceware.org/pub/valgrind/valgrind-3.13.0.tar.bz2
Download MD5 sum: 817dd08f1e8a66336b9ff206400a5369
Download size: 14 MB
Estimated disk space required: 347 MB (additional 228 MB for tests)
Estimated build time: 1.1 SBU (additional 5.1 SBU for tests)
BIND-9.11.2 or BIND Utilities-9.11.2 (for tests), Boost-1.64.0, GDB-8.0 (for tests), LLVM-4.0.1 (with Clang), and Which-2.21 (for tests)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/valgrind
Install Valgrind by running the following commands:
sed -i 's|/doc/valgrind||' docs/Makefile.in && ./configure --prefix=/usr \ --datadir=/usr/share/doc/valgrind-3.13.0 && make
To run the tests for this package, valgrind requires a version of the /lib/ld-2.26.so (or later) library with debugging symbols present. Normally in LFS these debugging symbols are stripped at the end of Chapter 6. To get this library, glibc must be rebuilt with the current glibc version using the same compiler that was used to build LFS. The ld.so can then be renamed to ld-2.26.so.dbg and copied to /lib. Then a symlink needs to be changed:
ln -sfv ld-2.26.so.dbg /lib/ld-linux-x86-64.so.2
Adjust the above instruction as needed for a 32-bit system or for a different version of glibc.
In addition, other glibc libraries with debugging symbols present may be needed for some tests.
To test the results, issue: make regtest. The tests may
hang forever if GDB-8.0 is not installed. Some tests are known
to hang also, depending on the version of glibc. Problematic
tests can be disabled by changing the prereq:
line in the
corresponding .vgtest
file to
prereq:
false
. For example:
sed -e 's@prereq:.*@prereq: false@' \ -i {helgrind,drd}/tests/pth_cond_destroy_busy.vgtest
The OpenMP tests are
skipped if libgomp has been compiled with --enable-linux-futex
(the default). If
needed, just recompile the libgomp library from the gcc
build tree, passing --disable-linux-futex
to configure, storing
the library to some place and changing the link from
/usr/lib/libgomp.so.1
to
point to the new library.
Now, as the root
user:
make install
sed -i ... docs/Makefile.in : This sed provides for installing the documentation in a versioned directory.
is a program for debugging and profiling Linux executables. |
|
takes an output file produced by the Valgrind tool Callgrind and prints the information in an easy-to-read form. |
|
controls programs being run by the Valgrind tool Callgrind. |
|
is a post-processing tool for the Valgrind tool Cachegrind. |
|
compares two Cachegrind output files. |
|
merges multiple Cachegrind output files into one. |
|
takes an output file produced by the Valgrind tool Massif and prints the information in an easy-to-read form. |
|
is a server that reads debuginfo from objects stored on a different machine. |
|
listens on a socket for Valgrind commentary. |
|
is an intermediary between Valgrind and GDB or a shell. |
Last updated on 2017-08-23 21:43:54 -0700
Yasm is a complete rewrite of the NASM-2.13.01 assembler. It supports the x86 and AMD64 instruction sets, accepts NASM and GAS assembler syntaxes and outputs binary, ELF32 and ELF64 object formats.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
Download MD5 sum: fc9e586751ff789b34b1f21d572d96af
Download size: 1.5 MB
Estimated disk space required: 27 MB (additional 12 MB for the tests)
Estimated build time: 0.1 SBU (additional 0.1 SBU for the tests)
Python-2.7.13 or Python-3.6.2, and Cython
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/yasm
Install yasm by running the following commands:
sed -i 's#) ytasm.*#)#' Makefile.in && ./configure --prefix=/usr && make
To test the results, issue: make check.
Now, as the root
user:
make install
sed -i 's#) ytasm.*#)#' Makefile.in: This sed prevents it compiling 2 programs (vsyasm and ytasm) that are only of use on Microsoft Windows.
is a portable, retargetable assembler that supports the x86 and AMD64 instruction sets, accepts NASM and GAS assembler syntaxes and outputs binaries in ELF32 and ELF64 object formats. |
|
provides all of the core functionality of yasm, for manipulating machine instructions and object file constructs. |
Last updated on 2017-08-20 15:06:11 -0700
This section is provided to show you some additional programming tools for which instructions have not yet been created in the book or for those that are not appropriate for the book. Note that these packages may not have been tested by the BLFS team, but their mention here is meant to be a convenient source of additional information.
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/OtherProgrammingTools
A+ is a powerful and efficient programming language. It is freely available under the GNU General Public License. It embodies a rich set of functions and operators, a modern graphical user interface with many widgets and automatic synchronization of widgets and variables, asynchronous execution of functions associated with variables and events, dynamic loading of user compiled subroutines, and many other features. Execution is by a rather efficient interpreter. A+ was created at Morgan Stanley. Primarily used in a computationally-intensive business environment, many critical applications written in A+ have withstood the demands of real world developers over many years. Written in an interpreted language, A+ applications tend to be portable.
Project Home Page: http://www.aplusdev.org/
Download Location: http://www.aplusdev.org/Download/index.html
ABC is an interactive programming language and environment for personal computing, originally intended as a good replacement for BASIC. It was designed by first doing a task analysis of the programming task. ABC is easy to learn (an hour or so for someone who has already programmed), and yet easy to use. Originally intended as a language for beginners, it has evolved into a powerful tool for beginners and experts alike. Some features of the language include: a powerful collection of only five data types that easily combines strong typing, yet without declarations, no limitations (such as max int), apart from sheer exhaustion of memory refinements to support top-down programming, nesting by indentation and programs typically are one fourth or one fifth the size of the equivalent Pascal or C program.
Project Home Page: http://homepages.cwi.nl/~steven/abc/
Download Location: http://homepages.cwi.nl/~steven/abc/implementations.html
ALF is a language which combines functional and logic programming techniques. The foundation of ALF is Horn clause logic with equality which consists of predicates and Horn clauses for logic programming, and functions and equations for functional programming. The ALF system is an efficient implementation of the combination of resolution, narrowing, rewriting and rejection. Similarly to Prolog, ALF uses a backtracking strategy corresponding to a depth-first search in the derivation tree.
Project Home Page: http://www.informatik.uni-kiel.de/~mh/systems/ALF.html
Download Location: http://www.informatik.uni-kiel.de/~mh/systems/ALF/
ASM is a Java bytecode manipulation framework. It can be used to dynamically generate stub classes or other proxy classes, directly in binary form, or to dynamically modify classes at load time, i.e., just before they are loaded into the Java Virtual Machine. ASM offers similar functionalities as BCEL or SERP, but is much smaller (33KB instead of 350KB for BCEL and 150KB for SERP) and faster than these tools (the overhead of a load time class transformation is of the order of 60% with ASM, 700% or more with BCEL, and 1100% or more with SERP). Indeed ASM was designed to be used in a dynamic way (though it works statically as well) and was therefore designed and implemented to be as small and as fast as possible.
Project Home Page: http://asm.objectweb.org/
Download Location: http://forge.objectweb.org/projects/asm/
BCPL is a simple typeless language that was designed in 1966 by Martin Richards and implemented for the first time at MIT in the Spring of 1967.
Project Home Page: http://www.cl.cam.ac.uk/users/mr/BCPL.html
Download Location: http://www.cl.cam.ac.uk/users/mr/BCPL/
BETA is developed within the Scandinavian School of object-orientation, where the first object-oriented language, Simula, was developed. BETA is a modern language in the Simula tradition. The resulting language is smaller than Simula in spite of being considerably more expressive. BETA is a strongly typed language like Simula, Eiffel and C++, with most type checking being carried out at compile-time. It is well known that it is not possible to obtain all type checking at compile time without sacrificing the expressiveness of the language. BETA has optimum balance between compile-time type checking and run-time type checking.
Project Home Page: http://www.daimi.au.dk/~beta/
Download Location: ftp://ftp.daimi.au.dk/pub/beta/
<bigwig> is a high-level programming language for developing interactive Web services. Programs are compiled into a conglomerate of lower-level technologies such as C code, HTTP, HTML, JavaScript, and SSL, all running on top of a runtime system based on an Apache Web server module. It is a descendant of the Mawl project but is a completely new design and implementation with vastly expanded ambitions. The <bigwig> language is really a collection of tiny domain-specific languages focusing on different aspects of interactive Web services. These contributing languages are held together by a C-like skeleton language. Thus, <bigwig> has the look and feel of C-programs but with special data and control structures.
Project Home Page: http://www.brics.dk/bigwig/
Download Location: http://www.brics.dk/bigwig/download/
Bigloo is a Scheme implementation devoted to one goal: enabling Scheme based programming style where C(++) is usually required. Bigloo attempts to make Scheme practical by offering features usually presented by traditional programming languages but not offered by Scheme and functional programming. Bigloo compiles Scheme modules and delivers small and fast stand-alone binary executables. It enables full connections between Scheme and C programs, between Scheme and Java programs, and between Scheme and C# programs.
Project Home Page: http://www-sop.inria.fr/mimosa/fp/Bigloo/
Download Location: ftp://ftp-sop.inria.fr/mimosa/fp/Bigloo/
C-- is a portable assembly language that can be generated by a front end and implemented by any of several code generators. It serves as an interface between high-level compilers and retargetable, optimizing code generators. Authors of front ends and code generators can cooperate easily.
Project Home Page: http://www.cminusminus.org/
Download Location: http://www.cminusminus.org/code.html
Caml is a general-purpose programming language, designed with program safety and reliability in mind. It is very expressive, yet easy to learn and use. Caml supports functional, imperative, and object-oriented programming styles. It has been developed and distributed by INRIA, France's national research institute for computer science, since 1985. The Objective Caml system is the main implementation of the Caml language. It features a powerful module system and a full-fledged object-oriented layer. It comes with a native-code compiler that supports numerous architectures, for high performance; a bytecode compiler, for increased portability; and an interactive loop, for experimentation and rapid development.
Project Home Page: http://caml.inria.fr/
Download Location: http://caml.inria.fr/pub/distrib/
Ch is an embeddable C/C++ interpreter for cross-platform scripting, shell programming, 2D/3D plotting, numerical computing, and embedded scripting.
Project Home Page: http://www.softintegration.com/
Download Location: http://www.softintegration.com/products/chstandard/download/
Clean is a general purpose, state-of-the-art, pure and lazy functional programming language designed for making real-world applications. Clean is the only functional language in the world which offers uniqueness typing. This type system makes it possible in a pure functional language to incorporate destructive updates of arbitrary data structures (including arrays) and to make direct interfaces to the outside imperative world. The type system makes it possible to develop efficient applications.
Project Home Page: http://wiki.clean.cs.ru.nl/Clean
Download Location: http://wiki.clean.cs.ru.nl/Download_Clean
Cyclone is a programming language based on C that is safe, meaning that it rules out programs that have buffer overflows, dangling pointers, format string attacks, and so on. High-level, type-safe languages, such as Java, Scheme, or ML also provide safety, but they don't give the same control over data representations and memory management that C does (witness the fact that the run-time systems for these languages are usually written in C.) Furthermore, porting legacy C code to these languages or interfacing with legacy C libraries is a difficult and error-prone process. The goal of Cyclone is to give programmers the same low-level control and performance of C without sacrificing safety, and to make it easy to port or interface with legacy C code.
Project Home Page: http://cyclone.thelanguage.org/
Download Location: http://cyclone.thelanguage.org/wiki/Download/
D is a general purpose systems and applications programming language. It is a higher level language than C++, but retains the ability to write high performance code and interface directly with the operating system APIs and with hardware. D is well suited to writing medium to large scale million line programs with teams of developers. It is easy to learn, provides many capabilities to aid the programmer, and is well suited to aggressive compiler optimization technology. D is not a scripting language, nor an interpreted language. It doesn't come with a VM, a religion, or an overriding philosophy. It's a practical language for practical programmers who need to get the job done quickly, reliably, and leave behind maintainable, easy to understand code. D is the culmination of decades of experience implementing compilers for many diverse languages, and attempting to construct large projects using those languages. It draws inspiration from those other languages (most especially C++) and tempers it with experience and real world practicality.
Project Home Page: http://www.digitalmars.com/d/
Download Location: ftp://ftp.digitalmars.com/
DMDScript is Digital Mars' implementation of the ECMA 262 scripting language. Netscape's implementation is called JavaScript, Microsoft's implementation is called JScript. DMDScript is much faster than other implementations, which you can verify with the included benchmark.
Project Home Page: http://www.digitalmars.com/dscript/index.html
Download Location: ftp://ftp.digitalmars.com/
DotGNU Portable.NET goal is to build a suite of free software tools to build and execute .NET applications, including a C# compiler, assembler, disassembler, and runtime engine. While the initial target platform was GNU/Linux, it is also known to run under Windows, Solaris, NetBSD, FreeBSD, and MacOS X. The runtime engine has been tested on the x86, PowerPC, ARM, Sparc, PARISC, s390, Alpha, and IA-64 processors. DotGNU Portable.NET is part of the DotGNU project, built in accordance with the requirements of the GNU Project. DotGNU Portable.NET is focused on compatibility with the ECMA specifications for CLI. There are other projects under the DotGNU meta-project to build other necessary pieces of infrastructure, and to explore non-CLI approaches to virtual machine implementation.
Project Home Page: http://www.gnu.org/software/dotgnu/
Download Location: http://www.gnu.org/software/dotgnu/pnet-packages.html
Dylan is an advanced, object-oriented, dynamic language which supports rapid program development. When needed, programs can be optimized for more efficient execution by supplying more type information to the compiler. Nearly all entities in Dylan (including functions, classes, and basic data types such as integers) are first class objects. Additionally, Dylan supports multiple inheritance, polymorphism, multiple dispatch, keyword arguments, object introspection, macros, and many other advanced features... --Peter Hinely.
Project Home Page: http://www.opendylan.org/
Download Location: http://opendylan.org/download/index.html
E is a secure distributed Java-based pure-object platform and p2p scripting language. It has two parts: ELib and the E Language. Elib provides the stuff that goes on between objects. As a pure-Java library, ELib provides for inter-process capability-secure distributed programming. Its cryptographic capability protocol enables mutually suspicious Java processes to cooperate safely, and its event-loop concurrency and promise pipelining enable high performance deadlock free distributed pure-object computing. The E Language can be used to express what happens within an object. It provides a convenient and familiar notation for the ELib computational model, so you can program in one model rather than two. Under the covers, this notation expands into Kernel-E, a minimalist lambda-language much like Scheme or Smalltalk. Objects written in the E language are only able to interact with other objects according to ELib's semantics, enabling object granularity intra-process security, including the ability to safely run untrusted mobile code (such as caplets).
Project Home Page: http://www.erights.org/
Download Location: http://www.erights.org/download/
elastiC is a portable high-level object-oriented interpreted language with a C like syntax. Its main characteristics are: open source, interpreted, has portable bytecode compilation, dynamic typing, automatic real very fast garbage collection, object oriented with meta-programming support (a la Smalltalk), functional programming support (Scheme-like closures with lexical scoping, and eval-like functionality), hierarchical namespaces, a rich set of useful built-in types (dynamic arrays, dictionaries, symbols, ...), extensible with C (you can add functions, types, classes, methods, packages, ...), embeddable in C. elastiC has been strongly influenced by C, Smalltalk, Scheme and Python and tries to merge the best characteristics of all these languages, while still coherently maintaining its unique personality.
Project Home Page: http://www.elasticworld.org/
Download Location: http://www.elasticworld.org/download.html
Erlang/OTP is a development environment based on Erlang. Erlang is a programming language which has many features more commonly associated with an operating system than with a programming language: concurrent processes, scheduling, memory management, distribution, networking, etc. The initial open-source Erlang release contains the implementation of Erlang, as well as a large part of Ericsson's middleware for building distributed high-availability systems. Erlang is characterized by the following features: robustness, soft real-time, hot code upgrades and incremental code loading.
Project Home Page: http://www.erlang.org/
Download Location: http://www.erlang.org/download.html
Euphoria is a simple, flexible, and easy-to-learn programming language. It lets you quickly and easily develop programs for Windows, DOS, Linux and FreeBSD. Euphoria was first released in 1993. Since then Rapid Deployment Software has been steadily improving it with the help of a growing number of enthusiastic users. Although Euphoria provides subscript checking, uninitialized variable checking and numerous other run-time checks, it is extremely fast. People have used it to develop high-speed DOS games, Windows GUI programs, and X Window System programs. It is also very useful for CGI (Web-based) programming.
Project Home Page: http://www.rapideuphoria.com/
Download Location: http://www.rapideuphoria.com/v20.htm
Felix is an advanced Algol like procedural programming language with a strong functional subsystem. It features ML style static typing, first class functions, pattern matching, garbage collection, polymorphism, and has built in support for high performance microthreading, regular expressions and context free parsing. The system provides a scripting harness so the language can be used like other scripting languages such as Python and Perl, but underneath it generates native code to obtain high performance. A key feature of the system is that it uses the C/C++ object model, and provides an advanced binding sublanguage to support integration with C/C++ at both the source and object levels, both for embedding C/C++ data types and functions into Felix, and for embedding Felix into existing C++ architectures. The Felix compiler is written in Objective Caml, and generates ISO C++ which should compile on any platform.
Project Home Page: http://felix.sourceforge.net/
Download Location: http://felix-lang.org/$/usr/local/lib/felix/tarballs
ferite is a scripting language and engine all in one manageable chunk. It is designed to be easily extended in terms of API, and to be used within other applications making them more configurable and useful to the end user. It has a syntax similar to a number of other languages but remains clean and its own language.
Project Home Page: http://www.ferite.org/
Download Location: http://www.ferite.org/download.html
Forth is a stack-based, extensible language without type-checking. It is probably best known for its "reverse Polish" (postfix) arithmetic notation, familiar to users of Hewlett-Packard calculators. Forth is a real-time programming language originally developed to control telescopes. Forth has many unique features and applications: it can compile itself into a new compiler, reverse-polish coding, edit time error checking and compiling (similar to BASIC), extremely efficient thread based language, can be used to debug itself, extensible; thus can become what ever you need it to be. The links below lead to the website of the Forth Interest Group (FIG), a world-wide, non-profit organization for education in and the promotion of the Forth computer language. Another worthwhile website dedicated to the Forth community is http://wiki.forthfreak.net/.
Project Home Page: http://www.forth.org/
Download Location: http://www.forth.org/compilers.html
GNU Smalltalk is a free implementation of the Smalltalk-80 language which runs on most versions on Unix and, in general, everywhere you can find a POSIX-compliance library. An uncommon feature of it is that it is well-versed to scripting tasks and headless processing. See http://www.gnu.org/software/smalltalk/manual/html_node/Overview.html for a more detailed explanation of GNU Smalltalk.
Project Home Page: http://smalltalk.gnu.org/
Download Location: https://ftp.gnu.org/gnu/smalltalk/
Haskell is a computer programming language. In particular, it is a polymorphicly typed, lazy, purely functional language, quite different from most other programming languages. The language is named for Haskell Brooks Curry, whose work in mathematical logic serves as a foundation for functional languages. Haskell is based on lambda calculus. There are many implementations of Haskell, among them:
The HLA language was developed as a tool to help teach assembly language programming and machine organization to University students at the University of California, Riverside. The basic idea was to teach students assembly language programming by leveraging their knowledge of high level languages like C/C++ and Pascal/Delphi. At the same time, HLA was designed to allow advanced assembly language programmers write more readable and more powerful assembly language code.
Project Home Page: http://www.plantation-productions.com/Webster/HighLevelAsm/index.html
Download Location: http://www.plantation-productions.com/Webster/HighLevelAsm/dnld.html
Icon is a high-level, general-purpose programming language with a large repertoire of features for processing data structures and character strings. It is an imperative, procedural language with a syntax reminiscent of C and Pascal, but with semantics at a much higher level.
Project Home Page: http://www.cs.arizona.edu/icon/
Download Location: ftp://ftp.cs.arizona.edu/icon/
Io is a small, prototype-based programming language. The ideas in Io are mostly inspired by Smalltalk (all values are objects), Self (prototype-based), NewtonScript (differential inheritance), Act1 (actors and futures for concurrency), LISP (code is a runtime inspectable/modifiable tree) and Lua (small, embeddable).
Project Home Page: http://iolanguage.org
Download Location: http://iobin.suspended-chord.info/
J is a modern, high-level, general-purpose, high-performance programming language. It is portable and runs on Windows, Unix, Mac, and PocketPC handhelds, both as a GUI and in a console. True 64-bit J systems are available for XP64 or Linux64, on AMD64 or Intel EM64T platforms. J systems can be installed and distributed for free.
Project Home Page: http://www.jsoftware.com/
Download Location: http://www.jsoftware.com/stable.htm
Jamaica, the JVM Macro Assembler, is an easy-to-learn and easy-to-use assembly language for JVM bytecode programming. It uses Java syntax to define a JVM class except for the method body that takes bytecode instructions, including Jamaica's built-in macros. In Jamaica, bytecode instructions use mnemonics and symbolic names for all variables, parameters, data fields, constants and labels.
Project Home Page: http://judoscript.org/jamaica.html
Download Location: http://judoscript.org/download.html
Joy is a purely functional programming language. Whereas all other functional programming languages are based on the application of functions to arguments, Joy is based on the composition of functions. All such functions take a stack as an argument and produce a stack as a value. Consequently much of Joy looks like ordinary postfix notation. However, in Joy a function can consume any number of parameters from the stack and leave any number of results on the stack. The concatenation of appropriate programs denotes the composition of the functions which the programs denote.
Judo is a practical, functional scripting language. It is designed to cover the use cases of not only algorithmic/object-oriented/multi-threaded programming and Java scripting but also a number of major application domain tasks, such as scripting for JDBC, WSDL, ActiveX, OS, multiple file/data formats, etc. Despite its rich functionality, the base language is extremely simple, and domain support syntax is totally intuitive to domain experts, so that even though you have never programmed in Judo, you would have little trouble figuring out what the code does.
Project Home Page: http://judoscript.org/judo.html
Download Location: http://judoscript.org/download.html
JWIG is a Java-based high-level programming language for development of interactive Web services. It contains an advanced session model, a flexible mechanism for dynamic construction of XML documents, in particular XHTML, and a powerful API for simplifying use of the HTTP protocol and many other aspects of Web service programming. To support program development, JWIG provides a unique suite of highly specialized program analysers that at compile time verify for a given program that no runtime errors can occur while building documents or receiving form input, and that all documents being shown are valid according to the document type definition for XHTML 1.0. The main goal of the JWIG project is to simplify development of complex Web services, compared to alternatives, such as, Servlets, JSP, ASP, and PHP. JWIG is a descendant of the <bigwig> research language.
Project Home Page: http://www.brics.dk/JWIG/
Download Location: http://www.brics.dk/JWIG/download.html
Lava is a name unfortunately chosen for several unrelated software development languages/projects. So it doesn't appear as though BLFS has a preference for one over another, the project web sites are listed below, without descriptions of the capabilities or features for any of them.
Project Home Page: http://lavape.sourceforge.net/index.htm
Project Home Page: http://mathias.tripod.com/IavaHomepage.html
Mercury is a new logic/functional programming language, which combines the clarity and expressiveness of declarative programming with advanced static analysis and error detection features. Its highly optimized execution algorithm delivers efficiency far in excess of existing logic programming systems, and close to conventional programming systems. Mercury addresses the problems of large-scale program development, allowing modularity, separate compilation, and numerous optimization/time trade-offs.
Project Home Page: http://mercurylang.org/
Download Location: http://mercurylang.org/download.html
Mono provides the necessary software to develop and run .NET client and server applications on Linux, Solaris, Mac OS X, Windows, and Unix. Sponsored by Novell, the Mono open source project has an active and enthusiastic contributing community and is positioned to become the leading choice for development of Linux applications.
Project Home Page: http://www.mono-project.com/Main_Page
Download Location: http://ftp.novell.com/pub/mono/archive/
MPD is a variant of the SR programming language. SR has a Pascal-like syntax and uses guarded commands for control statements. MPD has a C-like syntax and C-like control statements. However, the main components of the two languages are the same: resources, globals, operations, procs, procedures, processes, and virtual machines. Moreover, MPD supports the same variety of concurrent programming mechanisms as SR: co statements, semaphores, call/send/forward invocations, and receive and input statements.
Project Home Page: http://www.cs.arizona.edu/mpd/
Download Location: http://www.cs.arizona.edu/mpd/download/
Nemerle is a high-level statically-typed programming language for the .NET platform. It offers functional, object-oriented and imperative features. It has a simple C#-like syntax and a powerful meta-programming system. Features that come from the functional land are variants, pattern matching, type inference and parameter polymorphism (aka generics). The meta-programming system allows great compiler extensibility, embedding domain specific languages, partial evaluation and aspect-oriented programming.
Project Home Page: http://nemerle.org/About
Download Location: http://nemerle.org/Downloads
GNU Octave is a high-level language, primarily intended for numerical computations. It provides a convenient command line interface for solving linear and nonlinear problems numerically, and for performing other numerical experiments using a language that is mostly compatible with Matlab. It may also be used as a batch-oriented language. Octave has extensive tools for solving common numerical linear algebra problems, finding the roots of nonlinear equations, integrating ordinary functions, manipulating polynomials, and integrating ordinary differential and differential-algebraic equations. It is easily extensible and customizable via user-defined functions written in Octave's own language, or using dynamically loaded modules written in C++, C, Fortran, or other languages.
Project Home Page: http://www.gnu.org/software/octave/
Download Location: http://www.gnu.org/software/octave/download.html
OO2C is an Oberon-2 development platform. It consists of an optimizing compiler, a number of related tools, a set of standard library modules and a reference manual. Oberon-2 is a general-purpose programming language in the tradition of Pascal and Modula-2. Its most important features are block structure, modularity, separate compilation, static typing with strong type checking (also across module boundaries) and type extension with type-bound procedures. Type extension makes Oberon-2 an object-oriented language.
Project Home Page: http://sourceforge.net/projects/ooc/
Download Location: https://downloads.sourceforge.net/ooc/
OGDL is a structured textual format that represents information in the form of graphs, where the nodes are strings and the arcs or edges are spaces or indentation.
Project Home Page: http://ogdl.sourceforge.net/
Download Location: https://downloads.sourceforge.net/ogdl/
Pike is a dynamic programming language with a syntax similar to Java and C. It is simple to learn, does not require long compilation passes and has powerful built-in data types allowing simple and really fast data manipulation. Pike is released under the GNU GPL, GNU LGPL and MPL.
Project Home Page: http://pike.ida.liu.se/
Download Location: http://pike.ida.liu.se/download/pub/pike
Pyrex is a language specially designed for writing Python extension modules. It's designed to bridge the gap between the nice, high-level, easy-to-use world of Python and the messy, low-level world of C. Pyrex lets you write code that mixes Python and C data types any way you want, and compiles it into a C extension for Python.
Project Home Page: http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/
Q is a functional programming language based on term rewriting. Thus, a Q program or “script” is simply a collection of equations which are used to evaluate expressions in a symbolic fashion. The equations establish algebraic identities and are interpreted as rewriting rules in order to reduce expressions to “normal forms”.
Project Home Page: http://q-lang.sourceforge.net/
Download Location: https://downloads.sourceforge.net/q-lang/
R is a language and environment for statistical computing and graphics. It is a GNU project similar to the S language and environment which was developed at Bell Laboratories (formerly AT&T, now Lucent Technologies) by John Chambers and colleagues. R can be considered as a different implementation of S. There are some important differences, but much code written for S runs unaltered under R. R provides a wide variety of statistical (linear and nonlinear modelling, classical statistical tests, time-series analysis, classification, clustering, ...) and graphical techniques, and is highly extensible. The S language is often the vehicle of choice for research in statistical methodology, and R provides an Open Source route to participation in that activity.
Project Home Page: http://www.r-project.org/
Download Location: http://cran.r-project.org/mirrors.html
Regina is a Rexx interpreter that has been ported to most Unix platforms (Linux, FreeBSD, Solaris, AIX, HP-UX, etc.) and also to OS/2, eCS, DOS, Win9x/Me/NT/2k/XP, Amiga, AROS, QNX4.x, QNX6.x BeOS, MacOS X, EPOC32, AtheOS, OpenVMS, SkyOS and OpenEdition. Rexx is a programming language that was designed to be easy to use for inexperienced programmers yet powerful enough for experienced users. It is also a language ideally suited as a macro language for other applications.
Project Home Page: http://regina-rexx.sourceforge.net/
Download Location: https://downloads.sourceforge.net/regina-rexx
SDCC is a Freeware, retargetable, optimizing ANSI-C compiler that targets the Intel 8051, Maxim 80DS390 and the Zilog Z80 based MCUs. Work is in progress on supporting the Motorola 68HC08 as well as Microchip PIC16 and PIC18 series. The entire source code for the compiler is distributed under GPL.
Project Home Page: http://sdcc.sourceforge.net/
Download Location: http://sdcc.sourceforge.net/snap.php#Source
SmartEiffel claims to be “the fastest and the slimmest multi-platform Eiffel compiler on Earth”. Eiffel is an object-oriented programming language which emphasizes the production of robust software. Its syntax is keyword-oriented in the ALGOL and Pascal tradition. Eiffel is strongly statically typed, with automatic memory management (typically implemented by garbage collection). Distinguishing characteristics of Eiffel include Design by contract (DbC), liberal use of inheritance including multiple inheritance, a type system handling both value and reference semantics, and generic classes. Eiffel has a unified type system—all types in Eiffel are classes, so it is possible to create subclasses of the basic classes such as INTEGER. Eiffel has operator overloading, including the ability to define new operators, but does not have method overloading.
Project Home Page: http://smarteiffel.loria.fr/
Download Location: https://gforge.inria.fr/frs/?group_id=184
Squeak is an open, highly-portable Smalltalk implementation whose virtual machine is written entirely in Smalltalk, making it easy to debug, analyze, and change. To achieve practical performance, a translator produces an equivalent C program whose performance is comparable to commercial Smalltalks. Other noteworthy aspects of Squeak include: real-time sound and music synthesis written entirely in Smalltalk, extensions of BitBlt to handle color of any depth and anti-aliased image rotation and scaling, network access support that allows simple construction of servers and other useful facilities, it runs bit-identical on many platforms (Windows, Mac, Unix, and others), a compact object format that typically requires only a single word of overhead per object and a simple yet efficient incremental garbage collector for 32-bit direct pointers efficient bulk-mutation of objects.
Project Home Page: http://www.squeak.org/
Download Location: http://www.squeak.org/Download/
SR is a language for writing concurrent programs. The main language constructs are resources and operations. Resources encapsulate processes and variables they share; operations provide the primary mechanism for process interaction. SR provides a novel integration of the mechanisms for invoking and servicing operations. Consequently, all of local and remote procedure call, rendezvous, message passing, dynamic process creation, multicast, and semaphores are supported. SR also supports shared global variables and operations.
Project Home Page: http://www.cs.arizona.edu/sr/index.html
Download Location: ftp://ftp.cs.arizona.edu/sr/
Standard ML is a safe, modular, strict, functional, polymorphic programming language with compile-time type checking and type inference, garbage collection, exception handling, immutable data types and updatable references, abstract data types, and parametric modules. It has efficient implementations and a formal definition with a proof of soundness. There are many implementations of Standard ML, among them:
MLton: http://mlton.org/
Poly/ML: http://www.polyml.org/
Standard ML of New Jersey: http://www.smlnj.org/
SBCL is an open source (free software) compiler and runtime system for ANSI Common Lisp. It provides an interactive environment including an integrated native compiler, a debugger, and many extensions. SBCL runs on a number of platforms.
Project Home Page: http://www.sbcl.org/
Download Location: https://downloads.sourceforge.net/sbcl/
Tiny C Compiler is a small C compiler that can be used to compile and execute C code everywhere, for example on rescue disks (about 100KB for x86 TCC executable, including C preprocessor, C compiler, assembler and linker). TCC is fast. It generates optimized x86 code, has no byte code overhead and compiles, assembles and links several times faster than GCC. TCC is versatile, any C dynamic library can be used directly. It is heading toward full ISOC99 compliance and can compile itself. The compiler is safe as it includes an optional memory and bound checker. Bound checked code can be mixed freely with standard code. TCC compiles and executes C source directly. No linking or assembly necessary. A full C preprocessor and GNU-like assembler is included. It is C script supported; just add “#!/usr/local/bin/tcc -run” on the first line of your C source, and execute it directly from the command line. With libtcc, you can use TCC as a backend for dynamic code generation.
Project Home Page: http://bellard.org/tcc/
Download Location: http://download.savannah.gnu.org/releases-noredirect/tinycc/
TinyCOBOL is a COBOL compiler being developed by members of the free software community. The mission is to produce a COBOL compiler based on the COBOL 85 standards. TinyCOBOL is available for the Intel architecture (IA32) and compatible processors on the following platforms: BeOS, FreeBSD, Linux and MinGW on Windows.
Project Home Page: http://sourceforge.net/projects/tiny-cobol/
Download Location: https://downloads.sourceforge.net/tiny-cobol/
Yorick is an interpreted programming language, designed for postprocessing or steering large scientific simulation codes. Smaller scientific simulations or calculations, such as the flow past an airfoil or the motion of a drumhead, can be written as standalone yorick programs. The language features a compact syntax for many common array operations, so it processes large arrays of numbers very efficiently. Unlike most interpreters, which are several hundred times slower than compiled code for number crunching, Yorick can approach to within a factor of four or five of compiled speed for many common tasks. Superficially, Yorick code resembles C code, but Yorick variables are never explicitly declared and have a dynamic scoping similar to many Lisp dialects. The “unofficial” home page for Yorick can be found at http://www.maumae.net/yorick.
Project Home Page: http://yorick.sourceforge.net/index.php
Download Location: http://sourceforge.net/projects/yorick/files/
ZPL is an array programming language designed from first principles for fast execution on both sequential and parallel computers. It provides a convenient high-level programming medium for supercomputers and large-scale clusters with efficiency comparable to hand-coded message passing. It is the perfect alternative to using a sequential language like C or Fortran and a message passing library like MPI.
Project Home Page: http://www.cs.washington.edu/research/zpl/home/index.html
Download Location: http://www.cs.washington.edu/research/zpl/download/download.html
BECL is intended to give
users a convenient possibility to analyze, create, and
manipulate (binary) Java class files (those ending with
.class
). Classes are
represented by objects which contain all the symbolic
information of the given class: methods, fields and byte
code instructions, in particular. Such objects can be read
from an existing file, be transformed by a program (e.g., a
class loader at run-time) and dumped to a file again. An
even more interesting application is the creation of
classes from scratch at run-time. The Byte Code Engineering
Library may be also useful if you want to learn about the
Java Virtual Machine (JVM) and the format of Java
.class
files. BCEL is already being used
successfully in several projects such as compilers,
optimizers, obfuscators, code generators and analysis
tools.
Project Home Page: http://jakarta.apache.org/bcel/index.html
Download Location: http://archive.apache.org/dist/jakarta/bcel/
Choco is a Java library for constraint satisfaction problems (CSP), constraint programming (CP) and explanation-based constraint solving (e-CP). It is built on a event-based propagation mechanism with backtrackable structures.
Project Home Page: http://sourceforge.net/projects/choco/
Download Location: http://choco.sourceforge.net/download.html
GOB (GOB2 anyway) is a preprocessor for making GObjects with inline C code so that generated files are not edited. Syntax is inspired by Java and Yacc or Lex. The implementation is intentionally kept simple, and no C actual code parsing is done.
Project Home Page: http://www.5z.com/jirka/gob.html
Download Location: http://ftp.5z.com/pub/gob/
GTK+/GNOME language bindings allow GTK+ to be used from other programming languages, in the style of those languages.
Project Home Page: http://www.gtk.org/language-bindings.php
Java-GNOME is a set of Java bindings for the GNOME and GTK+ libraries that allow GNOME and GTK+ applications to be written in Java. The Java-GNOME API has been carefully designed to be easy to use, maintaining a good OO paradigm, yet still wrapping the entire functionality of the underlying libraries. Java-GNOME can be used with the Eclipse development environment and Glade user interface designer to create applications with ease.
Project Home Page: http://java-gnome.sourceforge.net/4.0/
Download Location: http://java-gnome.sourceforge.net/4.0/get/
gtk2-perl is the collective name for a set of Perl bindings for GTK+ 2.x and various related libraries. These modules make it easy to write GTK and GNOME applications using a natural, Perlish, object-oriented syntax.
Project Home Page: http://gtk2-perl.sourceforge.net/
Download Location: https://downloads.sourceforge.net/gtk2-perl
KDE and most KDE applications are implemented using the C++ programming language, however there are number of bindings to other languages are available. These include scripting languages like Perl, Python and Ruby, and systems programming languages such as Java and C#.
Project Home Page: http://techbase.kde.org/Development/Languages
Numerical Python adds a fast array facility to the Python language.
Project Home Page: http://numeric.scipy.org/
Download Location: https://downloads.sourceforge.net/numpy/
There are many Perl scripts and additional modules located on the Comprehensive Perl Archive Network (CPAN) web site. Here you will find “All Things Perl”.
Project Home Page: http://cpan.org/
A-A-P makes it easy to locate, download, build and install software. It also supports browsing source code, developing programs, managing different versions and distribution of software and documentation. This means that A-A-P is useful both for users and for developers.
Project Home Page: http://www.a-a-p.org/index.html
Download Location: http://www.a-a-p.org/download.html
Anujuta is a versatile Integrated Development Environment (IDE) for C and C++ on GNU/Linux. It has been written for GTK/GNOME and features a number of advanced programming facilities. These include project management, application wizards, an on-board interactive debugger, and a powerful source editor with source browsing and syntax highlighting.
Project Home Page: http://projects.gnome.org/anjuta/index.shtml
Download Location: http://projects.gnome.org/anjuta/downloads.html
Eclipse is an open source community whose projects are focused on providing an extensible development platform and application frameworks for building software. Eclipse contains many projects, including an Integrated Development Environment (IDE) for Java.
Project Home Page: http://www.eclipse.org/
Download Location: http://www.eclipse.org/downloads/
The Mozart Programming System is an advanced development platform for intelligent, distributed applications. Mozart is based on the Oz language, which supports declarative programming, object-oriented programming, constraint programming, and concurrency as part of a coherent whole. For distribution, Mozart provides a true network transparent implementation with support for network awareness, openness, and fault tolerance. Security is upcoming. It is an ideal platform for both general-purpose distributed applications as well as for hard problems requiring sophisticated optimization and inferencing abilities.
Project Home Page: http://mozart.github.io/
Download Location: https://github.com/mozart/mozart2#downloads
cachecc1 is a GCC cache. It can be compared with the well known ccache package. It has some unique features including the use of an LD_PRELOADed shared object to catch invocations to cc1, cc1plus and as, it transparently supports all build methods, it can cache GCC bootstraps and it can be combined with distcc to transparently distribute compilations.
Project Home Page: http://cachecc1.sourceforge.net/
Download Location: https://downloads.sourceforge.net/cachecc1
ccache is a compiler
cache. It acts as a caching pre-processor to C/C++
compilers, using the -E
compiler switch and a hash to detect when a compilation can
be satisfied from cache. This often results in 5 to 10
times faster speeds in common compilations.
Project Home Page: http://ccache.samba.org/
Download Location: http://samba.org/ftp/ccache/
GNU DDD is a graphical front-end for command-line debuggers such as GDB, DBX, WDB, Ladebug, JDB, XDB, the Perl debugger, the Bash debugger, or the Python debugger. Besides “usual” front-end features such as viewing source texts, DDD has an interactive graphical data display, where data structures are displayed as graphs..
Project Home Page: http://www.gnu.org/software/ddd/
Download Location: https://ftp.gnu.org/gnu/ddd/
distcc is a program to distribute builds of C, C++, Objective C or Objective C++ code across several machines on a network. distcc should always generate the same results as a local build, is simple to install and use, and is usually much faster than a local compile. distcc does not require all machines to share a filesystem, have synchronized clocks, or to have the same libraries or header files installed. They can even have different processors or operating systems, if cross-compilers are installed.
Project Home Page: http://distcc.samba.org/
Download Location: http://distcc.samba.org/download.html
Exuberant Ctags generates an index (or tag) file of language objects found in source files that allows these items to be quickly and easily located by a text editor or other utility. A tag signifies a language object for which an index entry is available (or, alternatively, the index entry created for that object). Tag generation is supported for the following languages: Assembler, AWK, ASP, BETA, Bourne/Korn/Zsh Shell, C, C++, COBOL, Eiffel, Fortran, Java, Lisp, Lua, Make, Pascal, Perl, PHP, Python, REXX, Ruby, S-Lang, Scheme, Tcl, Vim, and YACC. A list of editors and tools utilizing tag files may be found at http://ctags.sourceforge.net/tools.html.
Project Home Page: http://ctags.sourceforge.net/
Download Location: https://downloads.sourceforge.net/ctags/
ccache is a clone of ccache, with the goal of supporting compilers other than GCC and adding additional features. Embedded compilers will especially be in focus.
Project Home Page: http://sourceforge.net/projects/gocache/
Download Location: https://downloads.sourceforge.net/gocache/
OProfile is a system-wide profiler for Linux systems, capable of profiling all running code at low overhead. OProfile is released under the GNU GPL. It consists of a kernel driver and a daemon for collecting sample data, and several post-profiling tools for turning data into information. OProfile leverages the hardware performance counters of the CPU to enable profiling of a wide variety of interesting statistics, which can also be used for basic time-spent profiling. All code is profiled: hardware and software interrupt handlers, kernel modules, the kernel, shared libraries, and applications. OProfile is currently in alpha status; however it has proven stable over a large number of differing configurations. It is being used on machines ranging from laptops to 16-way NUMA-Q boxes.
Project Home Page: http://oprofile.sourceforge.net/news/
Download Location: http://oprofile.sourceforge.net/download/
strace is a system call tracer, i.e., a debugging tool which prints out a trace of all the system calls made by another process or program.
Project Home Page: http://sourceforge.net/projects/strace/
Download Location: https://downloads.sourceforge.net/strace/
Last updated on 2017-08-15 11:49:48 -0700
Java is different from most of the packages in LFS and BLFS. It is a programming language that works with files of byte codes to obtain instructions and executes then in a Java Virtual Machine (JVM). An introductory java program looks like:
public class HelloWorld
{
public static void main(String[] args)
{
System.out.println("Hello, World");
}
}
This program is saved as HelloWorld.java
. The file name,
HelloWorld, must match
the class name. It is then converted into byte code with
javac
HelloWorld.java. The output file is
HelloWorld.class
. The program
is executed with java
HelloWorld. This creates a JVM and runs the
code. The 'class' extension must not be specified.
Several class files can be combined into one file with the jar command. This is similar to the standard tar command. For instance, the command jar cf myjar.jar *.class will combine all class files in a directory into one jar file. These act as library files.
The JVM can search for and use classes in jar files
automatically. It uses the CLASSPATH
environment variable to search for
jar files. This is a standard list of colon-separated
directory names similar to the PATH
environment variable.
Creating a JVM from source requires a set of circular dependencies. The first thing that's needed is a set of programs called a Java Development Kit (JDK). This set of programs includes java, javac, jar, and several others. It also includes several base jar files.
To start, we set up a binary installation of the JDK created
by the BLFS editors. It is installed in the /opt
directory to allow for multiple
installations, including a source based version.
This package is known to build and work properly using an LFS-8.1 platform.
Binary download (x86): http://anduin.linuxfromscratch.org/BLFS/OpenJDK/OpenJDK-1.8.0.141/OpenJDK-1.8.0.141-i686-bin.tar.xz
Download MD5 sum: 08ea7bd6d308382d9fb605ffe1599d15
Download size (binary): 57 MB
Estimated disk space required: 167 MB
Binary download (x86_64): http://anduin.linuxfromscratch.org/BLFS/OpenJDK/OpenJDK-1.8.0.141/OpenJDK-1.8.0.141-x86_64-bin.tar.xz
Download MD5 sum: e924a6923dc156e9f65ca53fffcdcf30
Download size (binary): 58 MB
Estimated disk space required: 170 MB
alsa-lib-1.1.4.1, Cups-2.2.4, giflib-5.1.4, and Xorg Libraries
Begin by extracting the appropriate binary tarball for your
architecture and changing to the extracted directory. Install
the binary OpenJDK with the
following commands as the root
user:
install -vdm755 /opt/OpenJDK-1.8.0.141-bin && mv -v * /opt/OpenJDK-1.8.0.141-bin && chown -R root:root /opt/OpenJDK-1.8.0.141-bin
The binary version is now installed. You may create a symlink
to that version by issuing, as the root
user:
ln -sfn OpenJDK-1.8.0.141-bin /opt/jdk
You may now proceed to Configuring the JAVA environment, where the instructions assume that the above link exists.
Last updated on 2017-08-21 23:29:00 -0700
OpenJDK is an open-source implementation of Oracle's Java Standard Edition platform. OpenJDK is useful for developing Java programs, and provides a complete runtime environment to run Java programs.
This package is known to build and work properly using an LFS-8.1 platform.
A browser plugin and webstart implementation is provided by the Icedtea project. To provide a complete implementation, you will need to later install IcedTea-Web-1.7.
OpenJDK is GPL'd code, with a special exception made for non-free projects to use these classes in their proprietary products. In similar fashion to the LGPL, which allows non-free programs to link to libraries provided by free software, the GNU General Public License, version 2, with the Classpath Exception allows third party programs to use classes provided by free software without the requirement that the third party software also be free. As with the LGPL, any modifications made to the free software portions of a third party application, must also be made freely available.
The OpenJDK source includes a very thorough, open source test suite using the JTreg test harness. The testing instructions below allow to test the just built JDK for reasonable compatibility with the proprietary Oracle JDK. However, in order for an independent implementation to claim compatibility, it must pass a proprietary JCK/TCK test suite. No claims of compatibility, even partial compatibility, may be made without passing an approved test suite.
Oracle does provide free community access, on a case by case basis, to a closed toolkit to ensure 100% compatibility with its proprietary JDK. Neither the binary version provided on the Java-1.8.0.141 page nor the JVM built with the instructions below have been tested against the TCK. Any version that is built using the instructions given, cannot claim to be compatible with the proprietary JDK, without the user applying for, and completing the compatibility tests themselves.
With that in mind, the binaries produced using this build method are regularly tested against the TCK by the members listed on the site above. In addition to the community license above, an educational, non-commercial license for the TCK can be obtained from here.
OpenJDK Root Package
Download:
http://hg.openjdk.java.net/jdk8u/jdk8u/archive/jdk8u141-b15.tar.bz2
Download MD5 sum:
df3504e95d6e88924babb3821d4210a6
Download Size: 498 KB
In addition to the root package, the instructions below first download seven subproject tarballs, whose total size is 63 MB.
Estimated disk space required: 3.5 GB (additional 529 MB for tests)
Estimated build time: 4.3 SBU with 8 jobs in parallel (up to 120 SBU for tests, see below)
Optional test harness
Download:
http://anduin.linuxfromscratch.org/BLFS/OpenJDK/OpenJDK-1.8.0.141/jtreg-4.2-b08-891.tar.gz
Download MD5 sum:
f409d5313b5d9aa81bb6868082fda161
Download Size: 6.8 MB
Optional package (to get an icon for the openjdk-8-policytool.desktop
file):
http://icedtea.classpath.org/download/source/icedtea-web-1.7.tar.gz
An existing binary (Java-1.8.0.141 or an earlier built version of this package. The instructions below assume that you are using Configuring the JAVA environment), alsa-lib-1.1.4.1, cpio-2.12, Cups-2.2.4, UnZip-6.0, Which-2.21, Xorg Libraries, and Zip-3.0
Certificate Authority Certificates, giflib-5.1.4, and Wget-1.19.1
Mercurial-4.3.1 and an X Window manager such as twm-1.0.9 (for the tests)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/openjdk
Unlike other packages in BLFS, the OpenJDK source packages are distributed
in multiple tarballs. You need to first extract the source
root from jdk8u141-b15.tar.bz2
,
change into the extracted directory, then proceed with the
following instructions:
cat > subprojects.md5 << EOF && 4061c0f2dc553cf92847e4a39a03ea4e corba.tar.bz2 269a0fde90b9ab5ca19fa82bdb3d6485 hotspot.tar.bz2 a1dfcd15119dd10db6e91dc2019f14e7 jaxp.tar.bz2 16f904d990cb6a3c84ebb81bd6bea1e7 jaxws.tar.bz2 4fb652cdd6fee5f2873b00404e9a01f3 langtools.tar.bz2 c4a99c9c5293bb5c174366664843c8ce jdk.tar.bz2 c2f06cd8d6e90f3dcc57bec53f419afe nashorn.tar.bz2 EOF for subproject in corba hotspot jaxp jaxws langtools jdk nashorn; do wget -c http://hg.openjdk.java.net/jdk8u/jdk8u/${subproject}/archive/jdk8u141-b15.tar.bz2 \ -O ${subproject}.tar.bz2 done && md5sum -c subprojects.md5 && for subproject in corba hotspot jaxp jaxws langtools jdk nashorn; do mkdir -pv ${subproject} && tar -xf ${subproject}.tar.bz2 --strip-components=1 -C ${subproject} done
If you have downloaded the optional test harness, unpack it too:
tar -xf ../jtreg-4.2-b08-891.tar.gz
Before proceeding, you should ensure that your environment
PATH
variable contains the
location of the Java compiler used for bootstrapping
OpenJDK. This is the only
requirement for the environment. Modern Java installations
do not need JAVA_HOME
and
CLASSPATH
is not used here.
Furthermore, OpenJDK developers recommend to unset
JAVA_HOME
.
The build system does not support the -j
switch in MAKEFLAGS
.
Configure and build the package with the following commands (--with-milestone value can be modified to fit user preferences):
unset JAVA_HOME && sh ./configure \ --with-update-version=141 \ --with-build-number=b15 \ --with-milestone=BLFS \ --enable-unlimited-crypto \ --with-zlib=system \ --with-giflib=system \ --with-extra-cflags="-std=c++98 -Wno-error -fno-delete-null-pointer-checks -fno-lifetime-dse" \ --with-extra-cxxflags="-std=c++98 -fno-delete-null-pointer-checks -fno-lifetime-dse" && make DEBUG_BINARIES=true SCTP_WERROR= all && find build/*/images/j2sdk-image -iname \*.diz -delete
Testing will involve the interplay of pairs of JVMs using the networking interface, so networking must be started. If it isn't, not only will these tests fail, but the test cleanup will leave orphaned JVMs running. There will be many of them. Rebooting may be the easiest recovery.
Testing the newly built JVM involves several steps. First, it is better to run the test suite in a frame buffer on a different display, using Xvfb:
if [ -n "$DISPLAY" ]; then OLD_DISP=$DISPLAY fi export DISPLAY=:20 nohup Xvfb $DISPLAY \ -fbdir $(pwd) \ -pixdepths 8 16 24 32 > Xvfb.out 2>&1 & echo $! > Xvfb.pid echo Waiting for Xvfb to initialize; sleep 1 nohup twm -display $DISPLAY \ -f /dev/null > twm.out 2>&1 & echo $! > twm.pid echo Waiting for twm to initialize; sleep 1 xhost +
Then, it is necessary to modify some files:
echo -e " jdk_all = :jdk_core \\ :jdk_svc \\ :jdk_beans \\ :jdk_imageio \\ :jdk_sound \\ :jdk_sctp \\ com/sun/awt \\ javax/accessibility \\ javax/print \\ sun/pisces \\ com/sun/java/swing" >> jdk/test/TEST.groups && sed -e 's/all:.*jck.*/all: jtreg/' \ -e '/^JTREG /s@\$(JT_PLATFORM)/@@' \ -i langtools/test/Makefile
Some variables have to be set:
JT_JAVA=$(type -p javac | sed 's@/bin.*@@') && JT_HOME=$(pwd)/jtreg && PRODUCT_HOME=$(echo $(pwd)/build/*/images/j2sdk-image)
The tests are run as follows:
LANG=C make -k -C test \ JT_HOME=${JT_HOME} \ JT_JAVA=${JT_JAVA} \ PRODUCT_HOME=${PRODUCT_HOME} all || true LANG=C ${JT_HOME}/bin/jtreg -a -v:fail,error \ -dir:$(pwd)/hotspot/test \ -k:\!ignore \ -jdk:${PRODUCT_HOME} \ :jdk || true
Tests duration depends on various factors such as the network speed and the number of concurrent VM, which is computed from the number of cores and threads, and the amount of RAM installed. A maximum of 120 SBU has been observed, but it may be as “low” as 80 SBU.
The test results can be compared to these
results, although they usually are run on a newer
version. About 30 tests are known to fail, but the exact
number depends on various conditions, like whether the
computer is connected to network, or to a printer, and on the
options given to configure (--enable-unlimited-crypto
is
known to trigger failures, but those come from the code in
the tests, not from the installation). Also, some tests may
timeout if the machine is under load.
Next some cleanup has to be done. The instructions below only stop the frame buffer, but it has been reported that some java VM may be left running after the tests, so it is necessary to check orphaned processes:
kill -9 `cat twm.pid` && kill -9 `cat Xvfb.pid` && rm -f Xvfb.out twm.out && rm -f Xvfb.pid twm.pid && if [ -n "$OLD_DISP" ]; then DISPLAY=$OLD_DISP fi
Install the package with the following commands as the
root
user:
cp -RT build/*/images/j2sdk-image /opt/OpenJDK-1.8.0.141 && chown -R root:root /opt/OpenJDK-1.8.0.141
There are now two OpenJDK
SDKs installed in /opt
. You
should decide on which one you would like to use as the
default. Normally, you would opt for the just installed
OpenJDK. If so, do the
following as the root
user:
ln -v -nsf OpenJDK-1.8.0.141 /opt/jdk
If desired, you may install a .desktop file corresponding to an entry in a desktop menu for policytool. First, you need to obtain an icon from IcedTea-Web-1.7:
tar -xf ../icedtea-web-1.7.tar.gz \ icedtea-web-1.7/javaws.png \ --strip-components=1
Now, as root
user:
mkdir -pv /usr/share/applications &&
cat > /usr/share/applications/openjdk-8-policytool.desktop << "EOF" &&
[Desktop Entry]
Name=OpenJDK Java Policy Tool
Name[pt_BR]=OpenJDK Java - Ferramenta de Política
Comment=OpenJDK Java Policy Tool
Comment[pt_BR]=OpenJDK Java - Ferramenta de Política
Exec=/opt/jdk/bin/policytool
Terminal=false
Type=Application
Icon=javaws
Categories=Settings;
EOF
install -v -Dm0644 javaws.png /usr/share/pixmaps/javaws.png
The choice of pt_BR is just an example. You can add any translation by adding lines corresponding to your locale, e.g. for fr_FR, “Name[fr_FR]=” and “Comment[fr_FR]=” with the appropriate text as values.
sh
configure...: the top level configure
is a wrapper around the autotools
one. It is not executable and must be run through
sh.
--with-boot-jdk
: This switch
provides the location of the temporary JDK. It is normally not needed if
java is found
in the PATH
.
--with-update-version
:
Currently, the build system does not include the update
number in the version string. It has to be specified here.
--with-build-number
:
Again, the build system does not include the build number in
the version string. It has to be specified here too.
--with-milestone
:
Used to customize the version string.
--enable-unlimited-crypto
:
Because of limitations on the usage of cryptography in some
countries, there is the possibility to limit the size of
encryption keys and the use of some algorithms in a policy
file. This switch allows to ship a policy file with no
restriction. It is the responsibility of the user to ensure
proper adherence to the law.
--with-zlib=system,
--with-giflib=system
: Allows to use the system
libraries instead of the bundled ones.
--with-extra-cflags=...
--with-extra-cxxflags=...
: Works around some
defects in the code brought to light by the GCC 6 more
rigorous checking of the C/C++ constructs. Remove those
switches if compiling with GCC 5.
--with-jobs=N
: Allows setting the
number of jobs for make equal to N. The
default is the result of a calculation involving the
available memory and the number of processors. Note that even
if you specify N=1, some parallelization may be used during
the build. The SBU given above are with N=4, on a single
processor, 4-core, virtual machine, with 4 GB of memory.
--with-cacerts-file=...
:
Specifies where to find a cacerts
file, /etc/ssl/java/cacerts
on a BLFS system.
Otherwise, an empty one is created. You can use the
make-ca.sh
--force command to generate it, once you have
installed the Java binaries.
make DEBUG_BINARIES=true SCTP_WERROR= all: The build fails on 32 bit machines if DEBUG_BINARIES is not set to true. Unsetting SCTP_WERROR is part of the workarounds needed to use GCC 6. You may omit that part of the command if using GCC 5.
find ... -iname '*.diz' -delete: This command removes redundant files.
Normally, the JAVA environment has been configured after installing the binary version, and can be used with the just built package as well. Review Configuring the JAVA environment in case you want to modify something.
To test if the man pages are correctly installed, issue source /etc/profile and man java to display the respective man page.
OpenJDK uses its own
format for the CA certificates. Those certificates are
located in a file named /etc/ssl/java/cacerts
. That file should
be generated using the system PKI trust store. The
instructions on the Certificate Authority
Certificates page should be used to update the file
located in /etc/ssl/java
.
Setup a symlink in the default location as the root
user:
ln -sfv /etc/ssl/java/cacerts /opt/jdk/jre/lib/security/cacerts
Use the following commands to check if the cacerts
file has been successfully
installed:
cd /opt/jdk bin/keytool -list -keystore /etc/ssl/java/cacerts
At the prompt "Enter keystore password:", enter "changeit"
(the default). If the cacerts
file was installed correctly, you will see a list of the
certificates with related information for each one. If not,
you need to reinstall them.
allows to run applets outside of a web browser. |
|
checks a specified jar file for title and version conflicts with any extensions installed in the OpenJDK software. |
|
generates Java bindings from a given IDL file. |
|
combines multiple files into a single jar archive. |
|
signs jar files and verifies the signatures and integrity of a signed jar file. |
|
launches a Java application by starting a Java runtime environment, loading a specified class and invoking its main method. |
|
reads class and interface definitions, written in the Java programming language, and compiles them into bytecode class files. |
|
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. |
|
generates C header and source files that are needed to implement native methods. |
|
disassembles a Java class file. |
|
is the Java RMI client. |
|
is a utility to send diagnostic command requests to a running Java Virtual Machine. |
|
is a graphical console tool to monitor and manage both local and remote Java applications and virtual machines. |
|
is a simple command-line debugger for Java classes. |
|
shows the package-level or class-level dependencies of Java class files. |
|
parses a java heap dump file and allows viewing it in a web browser. |
|
prints Java configuration information for a given Java process, core file, or a remote debug server. |
|
is a command-line tool used to invoke the Nashorn engine. It can be used to interpret one or several script files, or to run an interactive shell. |
|
prints shared object memory maps or heap memory details of a given process, core file, or a remote debug server. |
|
lists the instrumented JVMs on the target system. |
|
is a command line script shell. |
|
attaches to a Java process or core file and acts as a debug server. |
|
prints Java stack traces of Java threads for a given Java process, core file, or a remote debug server. |
|
displays performance statistics for an instrumented JVM. |
|
is an RMI server application that monitors for the creation and termination of instrumented JVMs. |
|
is a key and certificate management utility. |
|
converts files that contain non-supported character encoding into files containing Latin-1 or Unicode-encoded characters. |
|
is used to enable clients to transparently locate and invoke persistent objects on servers in the CORBA environment. |
|
is a Java application that transforms a jar file into a compressed pack200 file using the Java gzip compressor. |
|
creates and manages a policy file graphically. |
|
generates stub and skeleton class files for remote objects from the names of compiled Java classes that contain remote object implementations. |
|
starts the activation system daemon. |
|
creates and starts a remote object registry on the specified port on the current host. |
|
is a Java XML binding schema generator. |
|
returns the serialVersionUID for one or more classes in a form suitable for copying into an evolving class. |
|
provides an ease-of-use interface for application programmers to register, unregister, startup and shutdown a server. |
|
starts the Java IDL name server. |
|
is a native implementation that transforms a packed file produced by pack200 into a jar file. |
|
generates JAX-WS portable artifacts used in JAX-WS web services. |
|
generates JAX-WS portable artifacts. |
|
is a Java XML binding compiler. |
Last updated on 2017-08-30 17:11:31 -0700
After the package installation is complete, the next step is to
make sure that the system can properly find the files. If you
set up your login scripts as recommended in The Bash Shell Startup
Files, update the environment by creating the openjdk.sh
script, as the root
user:
cat > /etc/profile.d/openjdk.sh << "EOF"
# Begin /etc/profile.d/openjdk.sh
# Set JAVA_HOME directory
JAVA_HOME=/opt/jdk
# Adjust PATH
pathappend $JAVA_HOME/bin
# Add to MANPATH
pathappend $JAVA_HOME/man MANPATH
# Auto Java CLASSPATH: Copy jar files to, or create symlinks in, the
# /usr/share/java directory. Note that having gcj jars with OpenJDK 8
# may lead to errors.
AUTO_CLASSPATH_DIR=/usr/share/java
pathprepend . CLASSPATH
for dir in `find ${AUTO_CLASSPATH_DIR} -type d 2>/dev/null`; do
pathappend $dir CLASSPATH
done
for jar in `find ${AUTO_CLASSPATH_DIR} -name "*.jar" 2>/dev/null`; do
pathappend $jar CLASSPATH
done
export JAVA_HOME
unset AUTO_CLASSPATH_DIR dir jar
# End /etc/profile.d/openjdk.sh
EOF
For allowing mandb to include the OpenJDK
man pages in its database, issue, as the root
user:
cat >> /etc/man_db.conf << "EOF" &&
# Begin Java addition
MANDATORY_MANPATH /opt/jdk/man
MANPATH_MAP /opt/jdk/bin /opt/jdk/man
MANDB_MAP /opt/jdk/man /var/cache/man/jdk
# End Java addition
EOF
mkdir -p /var/cache/man
mandb -c /opt/jdk/man
The installation of the JRE Certificate Authority Certificates (cacerts) is described in the JRE Certificate Authority Certificates section. If you are using the binary version, those certificates may already be installed.
Last updated on 2016-08-28 02:28:15 -0700
The Apache Ant package is a Java-based build tool. In theory, it is like the make command, but without make's wrinkles. Ant is different. Instead of a model that is extended with shell-based commands, Ant is extended using Java classes. Instead of writing shell commands, the configuration files are XML-based, calling out a target tree that executes various tasks. Each task is run by an object that implements a particular task interface.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://archive.apache.org/dist/ant/source/apache-ant-1.10.1-src.tar.xz
Download MD5 sum: ebecbe7488c624b06bc6a264a3a7c4ec
Download size: 3.4 MB
Estimated disk space required: 121 MB
Estimated build time: 0.3 SBU (with a JVM using 4 cores)
A JDK (Java Binary or OpenJDK-1.8.0.141) and GLib-2.52.3
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/apache-ant
You may need additional libraries to satisfy the build
requirements of various packages installed using
Apache Ant. Review the
table at
http://ant.apache.org/manual/install.html#librarydependencies
for any prerequisite libraries you may need. Place any
needed libraries in lib/optional
.
Unpack and copy the junit and hamcrest jar files to the local directory tree.
cp -v ../junit-4.11.jar \ ../hamcrest-core-1.3.jar lib/optional
Install Apache Ant by running the following commands:
The unit regression tests are performed during the build step
below unless JUnit is not
installed. Now, as the root
user:
./build.sh -Ddist.dir=/opt/ant-1.10.1 dist && ln -v -sfn ant-1.10.1 /opt/ant
Make sure the JAVA_HOME environment variable is set for the
root
user.
cp -v ... lib/optional: This command copies the JUnit and hamcrest jar files into the directory where Apache Ant will look for them.
./build.sh
-Ddist.dir=/opt/ant-1.10.1 dist: This command
does everything. It builds, tests, then installs the package
into /opt/ant-1.10.1
.
ln -v -sfn ant-1.10.1 /opt/ant: This command is optional, and creates a convenience symlink.
Some packages will require ant to be in the search
path and the ANT_HOME
environment variable defined. Satisfy these requirements by
issuing, as the root
user:
cat > /etc/profile.d/ant.sh << EOF
# Begin /etc/profile.d/ant.sh
pathappend /opt/ant/bin
export ANT_HOME=/opt/ant
# End /etc/profile.d/ant.sh
EOF
The above instrutions assume you have configured your system as described in The Bash Shell Startup Files.
is a Java based build tool used by many packages instead of the conventional make program. |
|
is a support script used to start ant build scripts in a given directory. |
|
is a Perl script that provides similar functionality offered by the antRun script. |
|
is a Perl script that allows Bash to complete an ant command-line. |
|
is a Perl wrapper script used to invoke ant. |
|
is a Python wrapper script used to invoke ant. |
|
files are the Apache Ant Java class libraries. |
Last updated on 2017-08-26 09:42:24 -0700
The JUnit package contains a simple, open source framework to write and run repeatable tests. It is an instance of the xUnit architecture for unit testing frameworks. JUnit features include assertions for testing expected results, test fixtures for sharing common test data, and test runners for running tests.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://launchpad.net/debian/+archive/primary/+files/junit4_4.11.orig.tar.gz
Download MD5 sum: b4d163832583dcec8bedb5427c795cc4
Download size: 1.7 MB
Estimated disk space required: 34 MB
Estimated build time: 0.1 SBU
apache-ant-1.10.1 and UnZip-6.0
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/junit
The javadoc command coming with OpenJDK 8 has become much stricter than before regarding the conformance of the Javadoc comments in source code to HTML. The Junit documentation does not meet that standard, so the conformance checks have to be disabled. This can be done with the following command:
sed -i '\@/docs/@a<arg value="-Xdoclint:none"/>' build.xml
Now place the required hamcrest jar files where needed and build the package:
cp -v ../hamcrest-core-1.3{,-sources}.jar lib/ && ant populate-dist
Test the package by issuing ant dist. One test fails for unknown reason.
Install the files in the final location as the root
user:
install -v -m755 -d /usr/share/{doc,java}/junit-4.11 && chown -R root:root . && cp -v -R junit*/javadoc/* /usr/share/doc/junit-4.11 && cp -v junit*/junit*.jar /usr/share/java/junit-4.11 && cp -v hamcrest-1.3/hamcrest-core*.jar /usr/share/java/junit-4.11
If you have followed the instructions in Configuring the JAVA
environment, there is nothing more to do: the
CLASSPATH
variable would be
automatically updated.
Last updated on 2017-08-26 09:42:24 -0700
The LFS book covers setting up networking by connecting to a LAN with a static IP address. There are other methods used to obtain an IP address and connect to a LAN and other networks (such as the Internet). The most popular methods (DHCP and PPP) are covered in this chapter.
DHCP stands for Dynamic Host Configuration Protocol. It is a protocol used by many sites to automatically provide information such as IP addresses, subnet masks and routing information to computers. If your network uses DHCP, you will need a DHCP client in order to connect to it.
PPP stands for Point-to-Point Protocol. It is a data link protocol commonly used for establishing authenticated IP connections over a phone line with a modem, or over radio waves with a cellular phone. There is also a variant (PPPoE) that works over Ethernet and is used by cable providers to authenticate the Internet connections.
Enable the following options in the kernel configuration and recompile the kernel if necessary:
Networking support: Y
Networking options:
802.1d Ethernet Bridging: M or Y
In this section we are are going to discuss how to set up a
network bridge using systemd-networkd. In the
examples below, eth0
represents the
external interface that is being bridged, while br0
represents the bridge
interface.
To create a bridge interface, create the following
configuration file by running the following command as the
root
user:
cat > /etc/systemd/network/50-br0.netdev << EOF
[NetDev]
Name=br0
Kind=bridge
EOF
To assign a network interface to a bridge, create the
following configuration file by running the following
command as the root
user:
cat > /etc/systemd/network/51-eth0.network << EOF
[Match]
Name=eth0
[Network]
Bridge=br0
EOF
Repeat the process for any other interfaces that need to be bridged. Note that it is important that nothing assigns any addresses to the bridged interfaces. If you are using NetworkManager-1.8.2 or Wicd-1.7.4, make sure you configure them to ignore the bridged interfaces, as well as the bridge interface itself.
If you are on a network which uses DHCP for assigning ip
addresses, create the following configuration file by
running the following command as the root
user:
cat > /etc/systemd/network/60-br0.network << EOF
[Match]
Name=br0
[Network]
DHCP=yes
EOF
Alternatively, if using a static ip setup, create the
following configuration file by running the following
command as the root
user:
cat > /etc/systemd/network/60-br0.network << EOF
[Match]
Name=br0
[Network]
Address=192.168.0.2/24
Gateway=192.168.0.1
DNS=192.168.0.1
EOF
To bring up the bridge interface, simply restart the
systemd-networkd daemon
by running the following command as the root
user:
systemctl restart systemd-networkd
Last updated on 2016-06-03 22:29:03 -0700
dhcpcd is an implementation of the DHCP client specified in RFC2131. A DHCP client is useful for connecting your computer to a network which uses DHCP to assign network addresses. dhcpcd strives to be a fully featured, yet very lightweight DHCP client.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://roy.marples.name/downloads/dhcpcd/dhcpcd-6.11.5.tar.xz
Download (FTP): ftp://roy.marples.name/pub/dhcpcd/dhcpcd-6.11.5.tar.xz
Download MD5 sum: 2465624b62c1154f0e89dc69c42c849b
Download size: 196 KB
Estimated disk space required: 2.7 MB
Estimated build time: less than 0.1 SBU
LLVM-4.0.1 (with Clang)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/dhcpcd
Install dhcpcd by running the following commands:
./configure --libexecdir=/lib/dhcpcd \ --dbdir=/var/lib/dhcpcd && make
This package does not come with a test suite.
Now, as the root
user:
make install
--libexecdir=/lib/dhcpcd
: The
default /libexec
is not
FHS-compliant. Since this directory may need to be available
early in the boot, /usr/libexec
cannot be used either.
--dbdir=/var/lib/dhcpcd
: The
default /var/db
is not
FHS-compliant
--with-hook=...
: You can
optionally install more hooks, for example to install some
configuration files such as ntp.conf
. The set of hooks is in the
dhcpcd-hooks
directory in the
build tree.
If you want to configure network interfaces at boot using
dhcpcd, you
need to install the systemd unit included in blfs-systemd-units-20160602
package by running the following command as the
root
user:
make install-dhcpcd
Whenever dhcpcd configures or shuts down a network interface, it executes hook scripts. For more details about those scripts, see the dhcpcd-run-hooks and dhcpcd man pages.
The
default behavior of dhcpcd sets the
hostname and mtu settings. It also overwrites
/etc/resolv.conf
and
/etc/ntp.conf
. These
modifications to system files and settings on system
configuration files are done by hooks which are stored in
/lib/dhcpcd/dhcpcd-hooks
.
Setup dhcpcd by removing or
adding hooks from/to that directory. The execution of
hooks can be disabled by using the --nohook
(-C
)
command line option or by the nohook
option in the /etc/dhcpcd.conf
file.
Make sure that you disable the systemd-networkd service or configure it not to manage the interfaces you want to manage with dhcpcd.
At this point you can test if dhcpcd is behaving as
expected by running the following command as the
root
user:
systemctl start dhcpcd@eth0
To start dhcpcd on a specific
interface at boot, enable the previously installed systemd
unit by running the following command as the root
user:
systemctl enable dhcpcd@eth0
Replace eth0
with
the actual interface name.
Last updated on 2017-08-25 14:22:07 -0700
The ISC DHCP package contains both the client and server programs for DHCP. dhclient (the client) is used for connecting to a network which uses DHCP to assign network addresses. dhcpd (the server) is used for assigning network addresses on private networks.
This package is known to build and work properly using an LFS-8.1 platform.
Download (FTP): ftp://ftp.isc.org/isc/dhcp/4.3.6/dhcp-4.3.6.tar.gz
Download MD5 sum: afa6e9b3eb7539ea048421a82c668adc
Download size: 9.7 MB
Estimated disk space required: 177 MB
Estimated build time: 0.5 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/dhcp
You must have Packet Socket support:
[*] Networking support ---> [CONFIG_NET]
Networking options --->
<*> Packet socket [CONFIG_PACKET]
If you do not have IPv6 support:
[*] Networking support ---> [CONFIG_NET]
Networking Options --->
<*> The IPv6 Protocol ---> [CONFIG_IPV6]
compiled in, then you must use the “missing_ipv6” patch.
This package does not support parallel build.
Be careful with the instructions below. The single and double quotes are important because the defined variables are used verbatim in the code.
Install ISC DHCP by running the following commands:
CFLAGS="-D_PATH_DHCLIENT_SCRIPT='\"/sbin/dhclient-script\"' \ -D_PATH_DHCPD_CONF='\"/etc/dhcp/dhcpd.conf\"' \ -D_PATH_DHCLIENT_CONF='\"/etc/dhcp/dhclient.conf\"'" && ./configure --prefix=/usr \ --sysconfdir=/etc/dhcp \ --localstatedir=/var \ --with-srv-lease-file=/var/lib/dhcpd/dhcpd.leases \ --with-srv6-lease-file=/var/lib/dhcpd/dhcpd6.leases \ --with-cli-lease-file=/var/lib/dhclient/dhclient.leases \ --with-cli6-lease-file=/var/lib/dhclient/dhclient6.leases && make -j1
This package does not come with a test suite.
If you only want to install the ISC
DHCP client, issue the following commands as the
root
user:
make -C client install && mv -v /usr/sbin/dhclient /sbin && install -v -m755 client/scripts/linux /sbin/dhclient-script
Skip to the section called “Client Configuration” in order to configure the client
If you only want to install the ISC
DHCP server, issue the following command as the
root
user:
make -C server install
Skip to the section called “Server Configuration” in order to configure the server.
Alternatively, you can install whole package which includes
the client, server, relay, static libraries and development
headers by running the following commands as the root
user:
make install && mv -v /usr/sbin/dhclient /sbin && install -v -m755 client/scripts/linux /sbin/dhclient-script
Create a basic /etc/dhcp/dhclient.conf
by running the
following command as the root
user:
install -vdm755 /etc/dhcp &&
cat > /etc/dhcp/dhclient.conf << "EOF"
# Begin /etc/dhcp/dhclient.conf
#
# Basic dhclient.conf(5)
#prepend domain-name-servers 127.0.0.1;
request subnet-mask, broadcast-address, time-offset, routers,
domain-name, domain-name-servers, domain-search, host-name,
netbios-name-servers, netbios-scope, interface-mtu,
ntp-servers;
require subnet-mask, domain-name-servers;
#timeout 60;
#retry 60;
#reboot 10;
#select-timeout 5;
#initial-interval 2;
# End /etc/dhcp/dhclient.conf
EOF
See man 5 dhclient.conf for additional options.
Now create the /var/lib/dhclient
directory which will
contain DHCP Client leases by running the following command
as the root
user:
install -v -dm 755 /var/lib/dhclient
If you want to configure
network interfaces at boot using dhclient, you need to
install the dhclient@.service
unit included in the blfs-systemd-units-20160602
package by running the following command as the
root
user:
make install-dhclient
Make sure that you disable the systemd-networkd service or configure it not to manage the interfaces you want to manage with dhclient.
At this point you can test if dhclient is behaving as
expected by running the following command as the
root
user:
systemctl start dhclient@eth0
To start dhclient on a specific
interface at boot, enable the previously installed systemd
unit by running the following command as the root
user:
systemctl enable dhclient@eth0
Replace eth0
with
the actual interface name.
Note that you only need the DHCP server if you want to issue LAN addresses over your network. The DHCP client doesn't need the server in order to function properly.
Start with creating /etc/dhcp/dhcpd.conf
by running the
following command as the root
user:
cat > /etc/dhcp/dhcpd.conf << "EOF"
# Begin /etc/dhcp/dhcpd.conf
#
# Example dhcpd.conf(5)
# Use this to enble / disable dynamic dns updates globally.
ddns-update-style none;
# option definitions common to all supported networks...
option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;
default-lease-time 600;
max-lease-time 7200;
# This is a very basic subnet declaration.
subnet 10.254.239.0 netmask 255.255.255.224 {
range 10.254.239.10 10.254.239.20;
option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
}
# End /etc/dhcp/dhcpd.conf
EOF
Adjust the file to suit your needs. See man 5 dhcpd.conf for additional options.
Now create the /var/lib/dhcpd
directory which will contain DHCP Server leases by running
the following command as the root
user:
install -v -dm 755 /var/lib/dhcpd
If you want to start the DHCP Server at boot, install the
dhcpd.service
unit included in the blfs-systemd-units-20160602
package:
make install-dhcpd
You will need to edit the /etc/default/dhcpd
in order to set
the interface on which dhcpd will serve the DHCP
requests.
is the implementation of the DHCP client. |
|
is used by dhclient to (re)configure interfaces. It can make extra changes by invoking custom dhclient-{entry,exit}-hooks. |
|
implements Dynamic Host Configuration Protocol (DHCP) and Internet Bootstrap Protocol (BOOTP) requests for network addresses. |
|
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. |
|
provides an interactive way to connect to, query and possibly change the ISC DHCP Server's state via OMAPI, the Object Management API. |
Last updated on 2017-08-30 19:55:44 -0700
These applications are generally client applications used to access the appropriate server across the building or across the world. Tcpwrappers and portmap are support programs for daemons that you may have running on your machine.
The bridge-utils package contains a utility needed to create and manage bridge devices. This is useful in setting up networks for a hosted virtual machine (VM).
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://www.kernel.org/pub/linux/utils/net/bridge-utils/bridge-utils-1.6.tar.xz
Download MD5 sum: 541ae1c50cc268056693608920e6c908
Download size: 32 KB
Estimated disk space required: 916 KB
Estimated build time: less than 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/bridge
Enable the following options in the kernel configuration and recompile the kernel if necessary:
[*] Networking support ---> [CONFIG_NET]
Networking options --->
<*/M> 802.1d Ethernet Bridging [CONFIG_BRIDGE]
Install bridge-utils by running the following commands:
autoconf && ./configure --prefix=/usr && make
Testing the results requires running the six shell scripts in
the tools/
directory. Two of
the tests require two ethernet ports. Some tests will not
preserve the current network configuration. See tests/README
for details.
Now, as the root
user:
make install
Last updated on 2017-08-18 12:42:43 -0700
The cifs-utils provides a means for mounting SMB/CIFS shares on a Linux system.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://www.samba.org/ftp/linux-cifs/cifs-utils/cifs-utils-6.7.tar.bz2
Download MD5 sum: af3ae1d27aca624c4daac5bf3eb0d4c1
Download size: 356 KB
Estimated disk space required: 3.1 MB
Estimated build time: less than 0.1 SBU
keyutils-1.5.10 (required to build PAM module), Linux-PAM-1.3.0, MIT Kerberos V5-1.15.1, Samba-4.6.7, and libcap-ng or libcap-2.25 with PAM
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/cifsutils
Enable the following options in the kernel configuration and recompile the kernel if necessary:
File systems --->
[*] Network File Systems ---> [CONFIG_NETWORK_FILESYSTEMS]
<*/M> CIFS support (advanced network filesystem, SMBFS successor) [CONFIG_CIFS]
Install cifs-utils by running the following commands:
autoreconf -fiv && ./configure --prefix=/usr \ --disable-pam && make
This package does not come with a test suite.
Now, as the root
user:
make install
--disable-pam
: Do not
build PAM support. Remove it and use --with-pamdir
(see below), if Linux-PAM-1.3.0
is installed and you wish PAM support.
--with-pamdir=/lib/security
:
Install the PAM module in /lib/security
.
is a userspace helper program for the linux CIFS client filesystem. There are a number of activities that the kernel cannot easily do itself. This program is a callout program that does these things for the kernel and then returns the result. It is not intended to be run from the command-line. |
|
is a userspace helper program for the linux CIFS client filesystem. It is intended to be run when the kernel calls request-key for a particular key type. It is not intended to be run from the command-line. |
|
is a tool for managing credentials (username and password) for the purpose of establishing sessions in multiuser mounts. |
|
is a userspace helper to display an ACL in a security descriptor for Common Internet File System (CIFS). |
|
mounts a Linux CIFS filesystem. It is usually invoked indirectly by the mount(8) command when using the "-t cifs" option. |
|
is intended to alter an ACL of a security descriptor for a file system object. |
Last updated on 2017-08-24 15:03:00 -0700
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.
This package is known to build and work properly using an LFS-8.1 platform.
Download (FTP): ftp://ftp.ncftp.com/ncftp/ncftp-3.2.6-src.tar.xz
Download MD5 sum: 42d0f896d69a4d603ec097546444245f
Download size: 412 KB
Estimated disk space required: 6.6 MB
Estimated build time: 0.2 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/ncftp
There are two ways to build NcFTP. The first (and optimal) way
builds most of the functionality as a shared library and then
builds and installs the program linked against this library.
The second method simply links all of the functionality into
the binary statically. This doesn't make the dynamic library
available for linking by other applications. You need to
choose which method best suits you. Note that the second
method does not create
an entirely statically linked binary; only the libncftp
parts are statically linked in, in
this case. Be aware that building and using the shared
library is covered by the Clarified Artistic License;
however, developing applications that utilize the shared
library is subject to a different license.
To install NcFTP using the first (and optimal) method, run the following commands:
./configure --prefix=/usr --sysconfdir=/etc && make -C libncftp shared && make
This package does not come with a test suite.
Now, as the root
user:
make -C libncftp soinstall && make install
To install NcFTP using the
second method (with the libncftp
functionality linked in
statically) run the following commands:
./configure --prefix=/usr --sysconfdir=/etc && make
This package does not come with a test suite.
Now, as the root
user:
make install
make -C ... && make -C
...: These commands make and install the
dynamic library libncftp
which
is then used to link against when compiling the main program.
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. Global defaults can be set in
/etc/ncftp.prefs_v3
.
is a browser program for File Transfer Protocol. |
|
is an individual batch FTP job processor. |
|
is the NcFTP Bookmark Editor (NCurses-based). |
|
is an internet file transfer program for scripts used to retrieve files. |
|
is an internet file transfer program for scripts used to list files. |
|
is an internet file transfer program for scripts used to transfer files. |
|
is a global batch FTP job processor daemon. |
Last updated on 2017-08-24 15:03:00 -0700
The Net-tools package is a collection of programs for controlling the network subsystem of the Linux kernel.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://anduin.linuxfromscratch.org/BLFS/net-tools/net-tools-CVS_20101030.tar.gz
Download (FTP): ftp://anduin.linuxfromscratch.org/BLFS/net-tools/net-tools-CVS_20101030.tar.gz
Download MD5 sum: 6be14ed473cacdd68edeaa9605adc469
Download size: 222 KB
Estimated disk space required: 7.0 MB
Estimated build time: less than 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/net-tools
The instructions below automate the configuration process by piping yes to the make config command. If you wish to run the interactive configuration process (by changing the instruction to just make config), but you are not sure how to answer all the questions, then just accept the defaults. This will be just fine in the majority of cases. What you're asked here is a bunch of questions about which network protocols you've enabled in your kernel. The default answers will enable the tools from this package to work with the most common protocols: TCP, PPP, and several others. You still need to actually enable these protocols in the kernel—what you do here is merely tell the package to include support for those protocols in its programs, but it's up to the kernel to make the protocols available.
This package has several unneeded protocols and hardware device specific functions that are obsolete. To only build the minimum needed for your system, skip the yes command and answer each question interactively. The minimum needed options are 'UNIX protocol family' and 'INET (TCP/IP) protocol family'.
The patch below cleans up the installation so that it does not overwrite the ifconfig and hostname programs that were installed in LFS.
Install Net-tools by running the following commands:
patch -Np1 -i ../net-tools-CVS_20101030-remove_dups-1.patch && sed -i '/#include <netinet\/ip.h>/d' iptunnel.c && yes "" | make config && make
This package does not come with a test suite.
Now, as the root
user:
make update
sed -i '/#include <netinet\/ip.h>/d' iptunnel.c: This fixes build breakage with linux-4.8 headers.
yes "" | make config: Piping yes to make config skips the interactive configuration and accepts the defaults.
is used to manipulate the kernel's ARP cache, usually to add or delete an entry, or to dump the entire cache. |
|
adds, deletes and shows an interface's multicast addresses. |
|
adds, changes, deletes and shows an interface's tunnels. |
|
checks or sets the status of a network interface's Media Independent Interface (MII) unit. |
|
names network interfaces based on MAC addresses. |
|
is used to report network connections, routing tables, and interface statistics. |
|
is used to fine tune the PLIP device parameters, to improve its performance. |
|
is used to manipulate the kernel's RARP table. |
|
is used to manipulate the IP routing table. |
|
attaches a network interface to a serial line. This allows you to use normal terminal lines for point-to-point links to other computers. |
Last updated on 2017-08-18 12:42:43 -0700
The NFS Utilities package contains the userspace server and client tools necessary to use the kernel's NFS abilities. NFS is a protocol that allows sharing file systems over the network.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://downloads.sourceforge.net/nfs/nfs-utils-2.1.1.tar.bz2
Download MD5 sum: 1157abcfaa8670f990f408cf280426b4
Download size: 801 KB
Estimated disk space required: 16 MB
Estimated build time: 0.1 SBU
LVM2-2.02.171 (libdevmapper for NFSv4 support), libnfsidmap-0.26 (for NFSv4 support), libnsl-1.1.0 (for NIS client support), SQLite-3.20.0, MIT Kerberos V5-1.15.1 or libgssapi, and librpcsecgss (for GSS and RPC security support) and libcap-2.25 with PAM
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/nfs-utils
Enable the following options in the kernel configuration (choose client and/or server support as appropriate) and recompile the kernel if necessary:
File systems --->
[*] Network File Systems ---> [CONFIG_NETWORK_FILESYSTEMS]
<*/M> NFS client support [CONFIG_NFS_FS]
<*/M> NFS server support [CONFIG_NFSD]
Select the appropriate sub-options that appear when the above options are selected.
In BLFS we assume that nfs v3 will be used. If the
server offers nfs v4
(for linux, CONFIG_NFSD_V4) then auto-negotiation for v3
will fail and you will need to add nfsver=3
to the mount options. This also
applies if that option is enabled in the client's kernel, for example in
a distro trying to mount from a BLFS v3 server.
Before you compile the program, ensure that the nobody
user and nogroup
group have been created as done
in the current LFS book. You can add them by running the
following commands as the root
user:
groupadd -g 99 nogroup && useradd -c "Unprivileged Nobody" -d /dev/null -g nogroup \ -s /bin/false -u 99 nobody
The classic uid and gid values are 65534 which is also -2
when interpreted as a signed 16-bit number. These values
impact other files on some filesystems that do not have
support for sparse files. The nobody
and nogroup
values are relatively
arbitrary. The impact on a server is nil if the
exports
file is configured
correctly. If it is misconfigured, an ls -l or ps listing will show a
uid or gid number of 65534 instead of a name. The client
uses nobody
only as the
user running rpc.statd.
Install NFS Utilities by running the following commands:
sed -i '/fcntl.h/a#include <stdint.h>' support/nsm/rpc.c && ./configure --prefix=/usr \ --sysconfdir=/etc \ --sbindir=/sbin \ --without-tcp-wrappers \ --disable-nfsv4 \ --disable-gss && make
Now, as the root
user:
make install && chmod u+w,go+r /sbin/mount.nfs && chown nobody.nogroup /var/lib/nfs
The tests for this package require that the package be
installed and configured as specified below. In addition, the
the daemon from rpcbind-0.2.4 needs to be running and the
tests need to be run as the root
user.
To test the results, issue, as root: make check.
sed ... support/nsm/rpc.c: This sed it required to fix a build issue with glibc-2.26 and later.
--without-tcp-wrappers
: This
option is needed because TCP Wrappers is not in BLFS.
--disable-nfsv4
: This
allows the package to be built when libnfsidmap has not been
installed.
--disable-gss
:
Disables support for RPCSEC GSS (RPC Security).
chown nobody.nogroup /var/lib/nfs: The rpc.statd program uses the ownership of this directory to set it's UID and GID. This command sets those to unprivileged entries.
/etc/exports
contains the
exported directories on NFS servers. Refer to the
exports.5
manual page for the
syntax of this file. Also refer to the "NFS HowTo"
available at http://nfs.sourceforge.net/nfs-howto/
for information on how to configure the servers and clients
in a secure manner. For example, for sharing the
/home
directory over the
local network, the following line may be added:
/home 192.168.0.0/24
(rw,subtree_check,anonuid=99,anongid=99)
Be sure to replace the directory, network address. and prefix above to match your network. The only space in the line above should be between the directory and the network address.
Install the NFSv4 server units included in the blfs-systemd-units-20160602 package to start the server at boot.
make install-nfsv4-server
If you have disabled NFSv4 support, run the following
command as the root
user
to omit the NFSv4 specific systemd units:
make install-nfs-server
You can edit the /etc/default/nfs-utils
file to change
the startup options for NFS daemons. Defaults should be
fine for most use cases.
/etc/fstab
contains the
directories that are to be mounted on the client.
Alternately the partitions can be mounted by using the
mount command
with the proper options. To mount the /home
and /usr
partitions, add the following to the
/etc/fstab
:
<server-name>
:/home /home nfs rw,_netdev 0 0<server-name>
:/usr /usr nfs ro,_netdev 0 0
The options which can be used are specified in man 5 nfs. If both the
client and server are running recent versions of linux,
most of the options will be negotiated. You can specify
either rw
or ro
, _netdev
if the filesystem is to be automatically mounted at boot,
or noauto
(and perhaps
user
) for other filesystems.
If the fileserver is not running a recent version of linux, you may need to specifiy other options.
If you are using systemd, you may need to enable autofs v4
in your kernel, and add the option comment=systemd.automount
. Some machines
need this, because systemd tries to mount the external fs's
before the network is up, others do not need it. An
alternative is for root
to
run mount -a.
The following systemd units are not required if the nfs-server units are installed.
Install the units included in the blfs-systemd-units-20160602 package to start the client services at boot.
make install-nfs-client
maintains a list of NFS exported file systems. |
|
displays NFS client per-mount statistics. |
|
is used to mount a network share using NFS |
|
is used to mount a network share using NFSv4 |
|
reports input/output statistics for network filesystems. |
|
displays statistics kept about NFS client and server activity. |
|
is a script that is a part of the autologin feature mandated by the pnfs-objects standard. |
|
implements the NFS mount protocol on an NFS server. |
|
implements the user level part of the NFS service on the server. |
|
is used by the NFS file locking service. Run on both sides, client as well as server, when you want file locking enabled. |
|
sets or clears the kernel's NFS client and server debug flags. |
|
displays mount information for an NFS server. |
|
is used to send Network Status Monitor reboot messages. |
|
is a script called by nfsmount when mounting a filesystem with locking enabled, if statd does not appear to be running. It can be customised with whatever flags are appropriate for the site. |
|
is used to unmount a network share using NFS |
|
is used to unmount a network share using NFSv4 |
Last updated on 2017-08-23 23:54:51 -0700
The ntp package contains a client and server to keep the time synchronized between various computers over a network. This package is the official reference implementation of the NTP protocol.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2/ntp-4.2.8p10.tar.gz
Download MD5 sum: 745384ed0dedb3f66b33fe84d66466f9
Download size: 6.7 MB
Estimated disk space required: 102 MB (with tests)
Estimated build time: 0.7 SBU (with tests)
Wget-1.19.1 (runtime, for update-leap)
libcap-2.25 with PAM, libevent-2.1.8, OpenSSL-1.1.0f, libedit, and libopts from AutoGen
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/ntp
There should be a dedicated user and group to take control of
the ntpd daemon
after it is started. Issue the following commands as the
root
user:
groupadd -g 87 ntp && useradd -c "Network Time Protocol" -d /var/lib/ntp -u 87 \ -g ntp -s /bin/false ntp
The update-leap command needs to be fixed in order to run properly:
sed -e "s/https/http/" \ -e 's/"(\\S+)"/"?([^\\s"]+)"?/' \ -i scripts/update-leap/update-leap.in
Install ntp by running the following commands:
./configure CFLAGS="-O2 -g -fPIC" \ --prefix=/usr \ --bindir=/usr/sbin \ --sysconfdir=/etc \ --enable-linuxcaps \ --with-lineeditlibs=readline \ --docdir=/usr/share/doc/ntp-4.2.8p10 && make
To test the results, issue: make check.
Now, as the root
user:
make install && install -v -o ntp -g ntp -d /var/lib/ntp
CFLAGS="-O2 -g -fPIC"
: This
environment variable is necessary to generate Position
Independent Code needed for use in the package libraries.
--bindir=/usr/sbin
:
This parameter places the administrative programs in
/usr/sbin
.
--enable-linuxcaps
:
ntpd is run as user ntp, so use Linux capabilities for
non-root clock control.
--with-lineeditlibs=readline
:
This switch enables Readline
support for ntpdc and ntpq programs. If omitted,
libedit will be used if
installed, otherwise no readline capabilites will be
compiled.
The following configuration file first defines various ntp
servers with open access from different continents. Second,
it creates a drift file where ntpd stores the frequency
offset and a pid file to store the ntpd process ID. Third,
it defines the location for the leap-second definition file
/etc/ntp.leapseconds
, that
the update-leap script checks
and updates, when necessary. This script can be run as a
cron job and the ntp
developers recommend a frequency of about three weeks for
the updates. Since the documentation included with the
package is sparse, visit the ntp website at http://www.ntp.org/
and http://www.pool.ntp.org/ for
more information.
cat > /etc/ntp.conf << "EOF"
# Asia
server 0.asia.pool.ntp.org
# Australia
server 0.oceania.pool.ntp.org
# Europe
server 0.europe.pool.ntp.org
# North America
server 0.north-america.pool.ntp.org
# South America
server 2.south-america.pool.ntp.org
driftfile /var/lib/ntp/ntp.drift
pidfile /var/run/ntpd.pid
leapfile /etc/ntp.leapseconds
EOF
You may wish to add a “Security session”. For explanations, see https://www.eecis.udel.edu/~mills/ntp/html/accopt.html#restrict.
cat >> /etc/ntp.conf << "EOF"
# Security session
restrict default limited kod nomodify notrap nopeer noquery
restrict -6 default limited kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict ::1
EOF
There are two options. Option one is to run ntpd continuously and allow it to synchronize the time in a gradual manner. The other option is to run ntpd periodically (using cron) and update the time each time ntpd is scheduled.
If you choose Option one, then install the
ntpd.service
unit included in the blfs-systemd-units-20160602
package.
make install-ntpd
If you prefer to run ntpd periodically, add
the following command to root
's crontab
:
ntpd -q
calculates optimal value for tick given ntp drift file. |
|
generates cryptographic data files used by the NTPv4 authentication and identification schemes. |
|
is useful at boot time, to delay the boot sequence until ntpd has set the time. |
|
is a ntp daemon that runs in the background and keeps the date and time synchronized based on response from configured ntp servers. It also functions as a ntp server. |
|
is a client program that sets the date and time based on the response from an ntp server. This command is deprecated. |
|
is used to query the ntp daemon about its current state and to request changes in that state. |
|
is a utility program used to monitor ntpd operations and determine performance. |
|
reads and displays time-related kernel variables. |
|
traces a chain of ntp servers back to the primary source. |
|
is a Simple Network Time Protocol (SNTP) client. |
|
reads, and optionally modifies, several timekeeping-related variables in older kernels that do not have support for precision timekeeping. |
|
is a script to verify and, if necessary, update the leap-second definition file. |
Last updated on 2017-08-20 15:06:11 -0700
The rpcbind program is a replacement for portmap. It is required for import or export of Network File System (NFS) shared directories.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://downloads.sourceforge.net/rpcbind/rpcbind-0.2.4.tar.bz2
Download MD5 sum: cf10cd41ed8228fc54c316191c1f07fe
Download size: 120 KB
Estimated disk space required: 1.6 MB
Estimated build time: less than 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/rpcbind
There should be a dedicated user and group to take control of
the rpcbind
daemon after it is started. Issue the following commands as
the root
user:
groupadd -g 28 rpc && useradd -c "RPC Bind Daemon Owner" -d /dev/null -g rpc \ -s /bin/false -u 28 rpc
In order to get rpcbind to work properly, first fix the package to use correct service name:
sed -i "/servname/s:rpcbind:sunrpc:" src/rpcbind.c
Install rpcbind by running the following commands:
patch -Np1 -i ../rpcbind-0.2.4-vulnerability_fixes-1.patch && ./configure --prefix=/usr \ --bindir=/sbin \ --enable-warmstarts \ --with-rpcuser=rpc && make
This package does not come with a test suite.
Now, as the root
user:
make install
--with-rpcuser=rpc
:
This switch is used so the rpcbind daemon will run as
an unprivileged user instead of the root
user.
Install the rpcbind.service
unit included in
the blfs-systemd-units-20160602
package.
make install-rpcbind
Last updated on 2017-08-18 12:42:43 -0700
The rsync package contains the rsync utility. This is useful for synchronizing large file archives over a network.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://www.samba.org/ftp/rsync/src/rsync-3.1.2.tar.gz
Download MD5 sum: 0f758d7e000c0f7f7d3792610fad70cb
Download size: 872 KB
Estimated disk space required: 11 MB (with tests - additional 45 MB for HTML API documentation)
Estimated build time: 0.5 SBU (with tests)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/rsync
For security reasons, running the rsync server as an unprivileged user and
group is encouraged. If you intend to run rsync as a daemon, create
the rsyncd
user and group
with the following commands issued by the root
user:
groupadd -g 48 rsyncd && useradd -c "rsyncd Daemon" -d /home/rsync -g rsyncd \ -s /bin/false -u 48 rsyncd
Install rsync by running the following commands:
./configure --prefix=/usr --without-included-zlib && make
If you have Doxygen-1.8.13 installed and wish to build HTML API documentation, issue doxygen.
To test the results, issue: make check.
Now, as the root
user:
make install
If you built the documentation, install it using the
following commands as the root
user:
install -v -m755 -d /usr/share/doc/rsync-3.1.2/api && install -v -m644 dox/html/* /usr/share/doc/rsync-3.1.2/api
--without-included-zlib
: This
switch enables compilation with system-installed zlib
library.
For client access to remote files, you may need to install the OpenSSH-7.5p1 package to connect to the remote server.
This is a simple download-only configuration to set up running rsync as a server. See the rsyncd.conf(5) man-page for additional options (i.e., user authentication).
cat > /etc/rsyncd.conf << "EOF"
# This is a basic rsync configuration file
# It exports a single module without user authentication.
motd file = /home/rsync/welcome.msg
use chroot = yes
[localhost]
path = /home/rsync
comment = Default rsync module
read only = yes
list = yes
uid = rsyncd
gid = rsyncd
EOF
You can find additional configuration information and general documentation about rsync at http://rsync.samba.org/documentation.html.
Note that you only want to start the rsync server if you want to provide an rsync archive on your local machine. You don't need this unit to run the rsync client.
Install the rsyncd.service
unit included in
the blfs-systemd-units-20160602
package.
make install-rsyncd
This package comes with two types of units: A service file and a socket file. The service file will start rsync daemon once at boot and it will keep running until the system shuts down. The socket file will make systemd listen on rsync port (Default 873, needs to be edited for anything else) and will start rsync daemon when something tries to connect to that port and stop the daemon when the connection is terminated. This is called socket activation and is analogous to using {,x}inetd on a SysVinit based system.
By default, the first method is used - rsync daemon is
started at boot and stopped at shutdown. If the socket
method is desired, you need to run as the root
user:
systemctl stop rsyncd && systemctl disable rsyncd && systemctl enable rsyncd.socket && systemctl start rsyncd.socket
Note that socket method is only useful for remote backups. For local backups you'll need the service method.
is a replacement for rcp (and scp) that has many more features. It uses the “rsync algorithm” which provides a very fast method of syncing remote files. It does this by sending just the differences in the files across the link, without requiring that both sets of files are present at one end of the link beforehand. |
Last updated on 2017-08-20 15:06:11 -0700
The Samba package provides file and print services to SMB/CIFS clients and Windows networking to Linux clients. Samba can also be configured as a Windows Domain Controller replacement, a file/print server acting as a member of a Windows Active Directory domain and a NetBIOS (rfc1001/1002) nameserver (which among other things provides LAN browsing support).
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://www.samba.org/ftp/samba/stable/samba-4.6.7.tar.gz
Download MD5 sum: c6ee5c766016d59908c8fb672fbbd445
Download size: 21 MB
Estimated disk space required: 566 MB (add 371 MB for quicktest, add up to 1.6 GB additional for developer tests)
Estimated build time: 8.5 SBU (add 4.2 SBU for quicktest, and up to 280 SBU to run developer tests)
GPGME-1.9.0, libtirpc-1.0.2, libxslt-1.1.29 (for documentation), Parse::Yapp-1.21, PyCrypto-2.6.1, Python-3.6.2, OpenLDAP-2.4.45, and OpenSSL-1.1.0f
Avahi-0.7, Cups-2.2.4, Cyrus SASL-2.1.26, GDB-8.0, git-2.14.1, GnuPG-2.1.23 (required for ADS and testsuite), GnuTLS-3.5.14, libarchive-3.3.2, libcap-2.25 with PAM, libgcrypt-1.8.0, Linux-PAM-1.3.0, MIT Kerberos V5-1.15.1, NSS-3.32, popt-1.16, Talloc-2.1.10 (included), Vala-0.36.4, Valgrind-3.13.0 (optionally used by the test suite), xfsprogs-4.12.0, ctdb (included), Gamin, Heimdal (currently not working), libaio, libunwind, ldb (included), M2Crypto (required for ADS), OpenAFS, PyGPGME (recommended for ADS), tevent (included), and tdb (included)
Install in listed order: six, argparse, extras, py, enum34, hypothesis, pytest, coverage, pytest-cov, doctools, unittest2, testtools, fixtures, python-mimeparse, contextlib2, traceback2, linecache2, testscenarios, testresources, virtualenv, pbr, and python-subunit
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/samba4
Fix a test that always fails:
echo "^samba4.rpc.echo.*on.*ncacn_np.*with.*object.*nt4_dc" >> selftest/knownfail
Install Samba by running the following commands:
./configure \ --prefix=/usr \ --sysconfdir=/etc \ --localstatedir=/var \ --with-piddir=/run/samba \ --with-pammodulesdir=/lib/security \ --enable-fhs \ --without-ad-dc \ --enable-selftest && make
To test the results, as the root
user, issue: make quicktest. The test
suite will produce lines that look like failures, but these
are innocuous. The last few lines of output should report
"ALL OK" for a good
test run. A summary of any failures can be found in
./st/summary
.
Additionally, developer test suites are available. If you've installed the optional python modules above, you can run these tests with make test. It is not recommended for the average builder at nearly 100 SBU, and you should expect ~80 errors and ~30 failures from the 3000+ tests.
Now, as the root
user:
make install && mv -v /usr/lib/libnss_win{s,bind}.so* /lib && ln -v -sf ../../lib/libnss_winbind.so.2 /usr/lib/libnss_winbind.so && ln -v -sf ../../lib/libnss_wins.so.2 /usr/lib/libnss_wins.so && install -v -m644 examples/smb.conf.default /etc/samba && mkdir -pv /etc/openldap/schema && install -v -m644 examples/LDAP/README \ /etc/openldap/schema/README.LDAP && install -v -m644 examples/LDAP/samba* \ /etc/openldap/schema && install -v -m755 examples/LDAP/{get*,ol*} \ /etc/openldap/schema
--enable-fhs
: Assigns
all other file paths in a manner compliant with the
Filesystem Hierarchy Standard (FHS).
--without-ad-dc
:
Disable Active Directory Domain Controller functionality. See
Setup a Samba Active Directory Domain Controller for
detailed information. Remove this switch if you've installed
the Python modules needed for ADS support. Note that BLFS
does not provide a samba bootscript for an Active Directory
domain controller.
--with-selftest-prefix=SELFTEST_PREFIX
: This
option specifies the test suite work directory
(default=./st).
mv -v /usr/lib/libnss_win{s,bind}.so* /lib: The nss libraries are installed in /usr/lib by default. Move them to /lib.
ln -v -sf ../../lib/libnss_winbind.so.2 /usr/lib/libnss_winbind.so and ln -v -sf ../../lib/libnss_wins.so.2 /usr/lib/libnss_wins.so: These symlinks are required when applications build against these libraries.
install -v -m644
examples/LDAP/* /etc/openldap/schema: These
commands are used to copy sample Samba schemas to the
OpenLDAP schema
directory.
install -v -m644
../examples/smb.conf.default /etc/samba: This
copies a default smb.conf
file
into /etc/samba
. This sample
configuration will not work until you copy it to /etc/samba/smb.conf
and make the
appropriate changes for your installation. See the
configuration section for minimum values which must be set.
If you use CUPS for print
services, and you wish to print to a printer attached to an
SMB client, you need to create an SMB backend device. To
create the device, issue the following command as the
root
user:
ln -v -sf /usr/bin/smbspool /usr/lib/cups/backend/smb
Due to the complexity and the many various uses for
Samba, complete
configuration for all the package's capabilities is well
beyond the scope of the BLFS book. This section provides
instructions to configure the /etc/samba/smb.conf
file for two common
scenarios. The complete contents of /etc/samba/smb.conf
will depend on the
purpose of Samba
installation.
You may find it easier to copy the configuration
parameters shown below into an empty /etc/samba/smb.conf
file instead of
copying and editing the default file as mentioned in the
“Command
Explanations” section. How you create/edit
the /etc/samba/smb.conf
file will be left up to you. Do ensure the file is only
writeable by the root
user (mode 644).
Choose this variant if you only want to transfer files using smbclient, mount Windows shares and print to Windows printers, and don't want to share your files and printers to Windows machines.
A /etc/samba/smb.conf
file
with the following three parameters is sufficient:
[global]
workgroup = MYGROUP
dos charset = cp850
unix charset = ISO-8859-1
The values in this example specify that the computer
belongs to a Windows workgroup named “MYGROUP
”,
uses the “cp850
”
character set on the wire when talking to MS-DOS and MS
Windows 9x, and that the filenames are stored in the
“ISO-8859-1
”
encoding on the disk. Adjust these values appropriately
for your installation. The “unix charset” value must be the same
as the output of locale
charmap when executed with the
LANG
variable set to your
preferred locale, otherwise the ls command may not
display correct filenames of downloaded files.
There is no need to run any Samba servers in this scenario, thus you don't need to install the provided bootscripts.
Choose this variant if you want to share your files and printers to Windows machines in your workgroup in addition to the capabilities described in Scenario 1.
In this case, the /etc/samba/smb.conf.default
file may be
a good template to start from. Also add
“dos charset” and
“unix charset”
parameters to the “[global]” section as described in
Scenario 1 in order to prevent filename corruption. For
security reasons, you may wish to define path =
/home/alice/shared-files
, assuming your user
name is alice
and you only want to share the files in that directory,
instead of your entire home. Then, replace homes
by shared-files
and change
also the “comment
” if used the
configuration file below or the /etc/samba/smb.conf.default
to create
yours.
The following configuration file creates a separate share for each user's home directory and also makes all printers available to Windows machines:
[global]
workgroup = MYGROUP
dos charset = cp850
unix charset = ISO-8859-1
[homes]
comment = Home Directories
browseable = no
writable = yes
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
printable = yes
Other parameters you may wish to customize in the “[global]” section include:
server string =
security =
hosts allow =
load printers =
log file =
max log size =
socket options =
local master =
Reference the comments in the /etc/samba/smb.conf.default
file for
information regarding these parameters.
Since the smbd and nmbd daemons are needed
in this case, install the samba
bootscript. Be sure to run
smbpasswd
(with the -a
option to add
users) to enable and set passwords for all accounts that
need Samba access. Using
the default Samba passdb
backend, any user you attempt to add will also be
required to exist in the /etc/passwd
file.
More complex scenarios involving domain control or membership are possible. Such setups are advanced topics and cannot be adequately covered in BLFS. Many complete books have been written on these topics alone. Note that in some domain membership scenarios, the winbindd daemon and the corresponding bootscript are needed.
There is quite a bit of documentation available which covers many of these advanced configurations. Point your web browser to the links below to view some of the documentation included with the Samba package:
Using Samba, 2nd Edition; a popular book published by O'Reilly http://www.samba.org/samba/docs/using_samba/toc.html
The Official Samba HOWTO and Reference Guide http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/
Samba-3 by Example http://www.samba.org/samba/docs/man/Samba-Guide/
The default Samba
installation uses the nobody
user for guest access to the
server. This can be overridden by setting the
guest account =
parameter in
the /etc/samba/smb.conf
file. If you utilize the guest
account =
parameter, ensure this user exists in
the /etc/passwd
file.
To start the Samba
daemons at boot, install the systemd units from the
blfs-systemd-units-20160602
package by running the following command as the
root
user:
make install-samba
To start the winbindd daemon at
boot, install the systemd unit from the blfs-systemd-units-20160602
package by running the following command as the
root
user:
make install-winbindd
This package comes with two types of units: A service file and a socket file. The service file will start the smbd daemon once at boot and it will keep running until the system shuts down. The socket file will make systemd listen on the smbd port (Default 445, needs to be edited for anything else) and will start the smbd daemon when something tries to connect to that port and stop the daemon when the connection is terminated. This is called socket activation and is analogous to using {,x}inetd on a SysVinit based system.
By default, the first method is used - the smbd daemon
is started at boot and stopped at shutdown. If the
socket method is desired, you need to run the following
commands as the root
user:
systemctl stop smbd && systemctl disable smbd && systemctl enable smbd.socket && systemctl start smbd.socket
Note that only the smbd daemon can be socket activated.
is the dd command for SMB. |
|
is used to read and manipulate TDB/CTDB databases using the dbwrap interface. |
|
is used to write records to eventlogs from STDIN,
add the specified source and DLL eventlog registry
entries and display the active eventlog names (from
|
|
is used to list info about machines that respond to SMB name queries on a subnet. |
|
is used to run random generic SMB operations against two SMB servers and show the differences in behavior. |
|
is a command-line utility for adding records to an LDB database. |
|
is a command-line program for deleting LDB database records. |
|
allows you to edit LDB databases using your preferred editor. |
|
allows you to modify records in an LDB database. |
|
allows you to edit LDB databases using your preferred editor. |
|
searches an LDB database for records matching a specified expression. |
|
is used to find differences in locking between two SMB servers. |
|
is used to find differences in wildcard matching between Samba's implementation and that of a remote server. |
|
is used to recursively rename extended attributes. |
|
is a DCE/RPC Packet Parser and Dumper. |
|
is a tool for administration of Samba and remote CIFS servers, similar to the net utility for DOS/Windows. |
|
is the Samba NetBIOS name server. |
|
is used to query NetBIOS names and map them to IP addresses. |
|
is a tool to allow external access to Winbind's NTLM authentication function. |
|
converts LDAP schema's to LDB-compatible LDIF. |
|
is a tool used to manage the SAM database. |
|
is an IDL (Interface Definition Language) compiler written in Perl. |
|
is a utility that reports and changes SIDs in Windows registry files. It currently only supports Windows NT. |
|
is a Diff program for Windows registry files. |
|
applies registry patches to registry files. |
|
is a Windows registry file browser using readline. |
|
is a text-mode registry viewer. |
|
is used to execute MS-RPC client side functions. |
|
is a server to provide AD and SMB/CIFS services to clients. |
|
is used to update our DNS names using TSIG-GSS. |
|
is a script used to compute your KCC (Knowledge Consistency Checker) topology. |
|
is a ncurses based tool to manage the Samba registry. |
|
is a script to update the servicePrincipalName names from spn_update_list. |
|
is the main Samba administration tool. |
|
is a Unix SMB/CIFS implementation. |
|
manipulates share ACL permissions on SMB file shares. |
|
is used to manipulate Windows NT access control lists. |
|
is a SMB/CIFS access utility, similar to FTP. |
|
is used to control running smbd, nmbd and winbindd daemons. |
|
is used to manipulate Windows NT quotas on SMB file shares. |
|
is the main Samba daemon which provides SMB/CIFS services to clients. |
|
is a simple utility with wget-like semantics, that can download files from SMB servers. You can specify the files you would like to download on the command-line. |
|
changes a user's Samba password. |
|
sends a print job to an SMB printer. |
|
reports current Samba connections. |
|
is a shell script used for backing up SMB/CIFS shares directly to Linux tape drives or a file. |
|
is a testsuite that runs several tests against a SMB server. |
|
is a text-based SMB network browser. |
|
is a tool for backing up or validating the
integrity of Samba
|
|
is a tool used to print the contents of a
Samba |
|
is a tool for creating a Samba |
|
is a tool which allows simple database manipulation from the command line. |
|
checks an |
|
queries a running winbindd daemon. |
|
resolves names from Windows NT servers. |
|
provides Name Service Switch API functions for resolving names from NT servers. |
|
provides API functions for Samba's implementation of the Windows Internet Naming Service. |
|
provides the API functions for the administration tools used for Samba and remote CIFS servers. |
|
provides the API functions for the Samba SMB client tools. |
|
provides API functions for Windows domain client services. |
Last updated on 2017-08-20 18:24:53 -0700
The Wget package contains a utility useful for non-interactive downloading of files from the Web.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://ftp.gnu.org/gnu/wget/wget-1.19.1.tar.xz
Download (FTP): ftp://ftp.gnu.org/gnu/wget/wget-1.19.1.tar.xz
Download MD5 sum: d30d82186b93fcabb4116ff513bfa9bd
Download size: 2.0 MB
Estimated disk space required: 32 MB (with tests)
Estimated build time: 0.4 SBU (with tests)
Certificate Authority Certificates (runtime), OpenSSL-1.1.0f, and Python-3.6.2
GnuTLS-3.5.14, GPGME-1.9.0, libidn-1.33, PCRE-8.41, Valgrind-3.13.0 (optional for the test suite), IO::Socket::SSL, HTTP::Daemon (both required for the test suite), and libpsl
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/wget
Install Wget by running the following commands:
./configure --prefix=/usr \ --sysconfdir=/etc \ --with-ssl=openssl && make
To test the results, issue: make check. The HTTPS tests fail if valgrind is enabled.
Now, as the root
user:
make install
--sysconfdir=/etc
:
This relocates the configuration file from /usr/etc
to /etc
.
--with-ssl=openssl
:
This allows the program to use OpenSSL-1.1.0f instead
of GnuTLS-3.5.14.
--enable-valgrind-tests
: This
allows the tests to be run under valgrind.
Last updated on 2017-08-16 21:41:37 -0700
The Wireless Extension (WE) is a generic API in the Linux kernel allowing a driver to expose configuration and statistics specific to common Wireless LANs to user space. A single set of tools can support all the variations of Wireless LANs, regardless of their type as long as the driver supports Wireless Extensions. WE parameters may also be changed on the fly without restarting the driver (or Linux).
The Wireless Tools (WT) package is a set of tools allowing manipulation of the Wireless Extensions. They use a textual interface to support the full Wireless Extension.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/wireless_tools.29.tar.gz
Download MD5 sum: e06c222e186f7cc013fd272d023710cb
Download size: 288 KB
Estimated disk space required: 2.0 MB
Estimated build time: less than 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/WirelessTools
To use Wireless Tools, the kernel must have the appropriate drivers and other support available. The appropriate bus must also be available. For many laptops, the PCMCIA bus (CONFIG_PCCARD) needs to be built. In some cases, this bus support will also need to be built for embedded wireless cards. The appropriate bridge support also needs to be built. For many modern laptops, the CardBus host bridge (CONFIG_YENTA) will be needed.
In addition to the bus, the actual driver for the specific wireless card must also be available. There are many wireless cards and they don't all work with Linux. The first place to look for card support is the kernel. The drivers are located in Device Drivers → Network Device Support → Wireless LAN (non-hamradio). There are also external drivers available for some very common cards. For more information, look at the user notes.
After the correct drivers are loaded, the interface will
appear in /proc/net/wireless
.
First, apply a patch that fixes a problem when numerous networks available:
patch -Np1 -i ../wireless_tools-29-fix_iwlist_scanning-1.patch
To install Wireless Tools, use the following commands:
make
This package does not come with a test suite.
Now, as the root
user:
make PREFIX=/usr INSTALL_MAN=/usr/share/man install
INSTALL_MAN=/usr/share/man: Install manual pages in /usr/share/man instead of /usr/man
renames network interfaces based on various static criteria. |
|
configures a wireless network interface. |
|
displays wireless events generated by drivers and setting changes. |
|
reports ESSID, NWID or AP/Cell Address of wireless networks. |
|
gets detailed wireless information from a wireless interface. |
|
configures optional (private) parameters of a wireless network interface. |
|
gets wireless statistics from specific node. |
|
contains functions required by the wireless programs and provides an API for other programs. |
Last updated on 2017-08-23 21:43:54 -0700
WPA Supplicant is a Wi-Fi Protected Access (WPA) client and IEEE 802.1X supplicant. It implements WPA key negotiation with a WPA Authenticator and Extensible Authentication Protocol (EAP) authentication with an Authentication Server. In addition, it controls the roaming and IEEE 802.11 authentication/association of the wireless LAN driver. This is useful for connecting to a password protected wireless access point.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://w1.fi/releases/wpa_supplicant-2.6.tar.gz
Download MD5 sum: 091569eb4440b7d7f2b4276dbfc03c3c
Download size: 2.6 MB
Estimated disk space required: 36 MB
Estimated build time: 0.4 SBU (includes optional gui)
libnl-3.3.0 and OpenSSL-1.1.0f
dbus-1.10.22, libxml2-2.9.4, and Qt-5.9.1
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/wpa_supplicant
Enable the following options in the kernel configuration as well as specific device drivers for your hardware and recompile the kernel if necessary:
[*] Networking support ---> [CONFIG_NET]
[*] Wireless ---> [CONFIG_WIRELESS]
<*/M> cfg80211 - wireless configuration API [CONFIG_CFG80211]
[*] cfg80211 wireless extensions compatibility [CONFIG_CFG80211_WEXT]
<*/M> Generic IEEE 802.11 Networking Stack (mac80211) [CONFIG_MAC80211]
Device Drivers --->
[*] Network device support ---> [CONFIG_NETDEVICES]
[*] Wireless LAN ---> [CONFIG_WLAN]
Open the submenu and select the options that support your hardware: lspci from pciutils-3.5.5 can be used to view your hardware configuration.
First you will need to create an initial configuration file
for the build process. You can read wpa_supplicant/README
and wpa_supplicant/defconfig
for the
explanation of the following options as well as other options
that can be used. Create a build configuration file that
should work for standard WiFi setups by running the following
command:
cat > wpa_supplicant/.config << "EOF"
CONFIG_BACKEND=file
CONFIG_CTRL_IFACE=y
CONFIG_DEBUG_FILE=y
CONFIG_DEBUG_SYSLOG=y
CONFIG_DEBUG_SYSLOG_FACILITY=LOG_DAEMON
CONFIG_DRIVER_NL80211=y
CONFIG_DRIVER_WEXT=y
CONFIG_DRIVER_WIRED=y
CONFIG_EAP_GTC=y
CONFIG_EAP_LEAP=y
CONFIG_EAP_MD5=y
CONFIG_EAP_MSCHAPV2=y
CONFIG_EAP_OTP=y
CONFIG_EAP_PEAP=y
CONFIG_EAP_TLS=y
CONFIG_EAP_TTLS=y
CONFIG_IEEE8021X_EAPOL=y
CONFIG_IPV6=y
CONFIG_LIBNL32=y
CONFIG_PEERKEY=y
CONFIG_PKCS12=y
CONFIG_READLINE=y
CONFIG_SMARTCARD=y
CONFIG_WPS=y
CFLAGS += -I/usr/include/libnl3
EOF
If you wish to use WPA Supplicant with NetworkManager-1.8.2, make sure that you have installed dbus-1.10.22 and libxml2-2.9.4, then add the following options to the WPA Supplicant build configuration file by running the following command:
cat >> wpa_supplicant/.config << "EOF"
CONFIG_CTRL_IFACE_DBUS=y
CONFIG_CTRL_IFACE_DBUS_NEW=y
CONFIG_CTRL_IFACE_DBUS_INTRO=y
EOF
Install WPA Supplicant by running the following commands:
cd wpa_supplicant && make BINDIR=/sbin LIBDIR=/lib
If you have installed Qt-5.9.1 and wish to build the WPA Supplicant GUI program, run the following commands:
The following directory name is labelled qt4, but is compatible with Qt-5.9.1.
pushd wpa_gui-qt4 && qmake wpa_gui.pro && make && popd
This package does not come with a test suite.
Now, as the root
user:
install -v -m755 wpa_{cli,passphrase,supplicant} /sbin/ && install -v -m644 doc/docbook/wpa_supplicant.conf.5 /usr/share/man/man5/ && install -v -m644 doc/docbook/wpa_{cli,passphrase,supplicant}.8 /usr/share/man/man8/
Install the systemd support
files by running the following command as the root
user:
install -v -m644 systemd/*.service /lib/systemd/system/
If you have built WPA
Supplicant with D-Bus
support, you will need to install D-Bus configuration files. Install them
by running the following commands as the root
user:
install -v -m644 dbus/fi.{epitest.hostap.WPASupplicant,w1.wpa_supplicant1}.service \ /usr/share/dbus-1/system-services/ && install -v -d -m755 /etc/dbus-1/system.d && install -v -m644 dbus/dbus-wpa_supplicant.conf \ /etc/dbus-1/system.d/wpa_supplicant.conf
Additionally, enable the wpa_supplicant.service
so that systemd can properly activate the
D-Bus service. Note that the
per-connection service and the D-Bus service cannot be
enabled at the same time. Run the following command as the
root
user:
systemctl enable wpa_supplicant
If you have built the WPA
Supplicant GUI program, install it by running the
following commands as the root
user:
install -v -m755 wpa_gui-qt4/wpa_gui /usr/bin/ && install -v -m644 doc/docbook/wpa_gui.8 /usr/share/man/man8/ && install -v -m644 wpa_gui-qt4/wpa_gui.desktop /usr/share/applications/ && install -v -m644 wpa_gui-qt4/icons/wpa_gui.svg /usr/share/pixmaps/
You will need to restart the system D-Bus daemon before you can use the WPA Supplicant D-Bus interface.
This package installs desktop files into the /usr/share/applications
hierarchy and you
can improve system performance and memory usage by updating
/usr/share/applications/mimeinfo.cache
.
To perform the update you must have desktop-file-utils-0.23
installed and issue the following command as the
root
user:
update-desktop-database
To connect to an access point that uses a password, you
need to put the pre-shared key in /etc/wpa_supplicant/wpa_supplicant-
.
SSID is the string that the access point/router transmits
to identify itself. Run the following command as the
wifi0
.confroot
user:
install -v -dm755 /etc/wpa_supplicant && wpa_passphraseSSID
SECRET_PASSWORD
> /etc/wpa_supplicant/wpa_supplicant-wifi0
.conf
/etc/sysconfig/wpa_supplicant-
can hold the details of several access points. When
wpa_supplicant is
started, it will scan for the SSIDs it can see and choose
the appropriate password to connect.
wifi0
.conf
If you want to connect to an access point that isn't
password protected, put an entry like this in
/etc/sysconfig/wpa_supplicant-
.
Replace "Some-SSID" with the SSID of the access
point/router.
wifi0
.conf
network={
ssid="Some-SSID
"
key_mgmt=NONE
}
Connecting to a new access point that is not in the configuration file can be accomplished manually via the command line or GUI, but it must be done via a privileged user. To do that, add the following to the configuration file:
ctrl_interface=DIR=/run/wpa_supplicant GROUP=<privileged group> update_config=1
Replace the <privileged group> above with a system group where members have the ability to connect to a wireless access point.
There are many options that you could use to tweak how you
connect to each access point. They are described in some
detail in the wpa_supplicant/wpa_supplicant.conf
file
in the source tree.
There are 3 types of systemd units that were installed:
wpa_supplicant@.service
wpa_supplicant-nl80211@.service
wpa_supplicant-wired@.service
The only difference between 3 of them is what driver is used for connecting (-D option). The first one uses the default driver, the second one uses the nl80211 driver and the third one uses the wired driver.
You can connect to the wireless access point by running the
following command as the root
user:
systemctl start wpa_supplicant@wlan0
To connect to the wireless access point at boot, simply
enable the appropriate wpa_supplicant service by
running the following command as the root
user:
systemctl enable wpa_supplicant@wlan0
Depending on your setup, you can replace the wpa_supplicant@.service
with any other
listed above.
To assign a network address to your wireless interface, consult the General Network Configuration page in LFS.
is a graphical frontend program for interacting with wpa_supplicant. |
|
is a daemon that can connect to a password protected wireless access point. |
|
takes an SSID and a password and generates a simple configuration that wpa_supplicant can understand. |
|
is a command line interface used to control a running wpa_supplicant daemon. |
Last updated on 2017-08-30 13:28:29 -0700
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/othernetprogs
NCPFS contains client and administration tools for use with Novell networks. See the User Notes for details.
Last updated on 2007-04-04 12:42:53 -0700
This chapter contains some tools that come in handy when the network needs investigating.
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/basicnetworkingutilities
The Avahi package is a system which facilitates service discovery on a local network.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://github.com/lathiat/avahi/releases/download/v0.7/avahi-0.7.tar.gz
Download MD5 sum: d76c59d0882ac6c256d70a2a585362a6
Download size: 1.3 MB
Estimated disk space required: 23 MB
Estimated build time: 0.3 SBU
gobject-introspection-1.52.1, GTK+-2.24.31, GTK+-3.22.18, libdaemon-0.14 and libglade-2.6.4
D-Bus Python-1.2.4 and PyGTK-2.24.0
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/avahi
There should be a dedicated user and group to take control of
the avahi-daemon daemon after
it is started. Issue the following commands as the
root
user:
groupadd -fg 84 avahi && useradd -c "Avahi Daemon Owner" -d /var/run/avahi-daemon -u 84 \ -g avahi -s /bin/false avahi
There should also be a dedicated priviliged access group for
Avahi clients. Issue the
following command as the root
user:
groupadd -fg 86 netdev
Install Avahi by running the following commands:
./configure --prefix=/usr \ --sysconfdir=/etc \ --localstatedir=/var \ --disable-static \ --disable-mono \ --disable-monodoc \ --disable-python \ --disable-qt3 \ --disable-qt4 \ --enable-core-docs \ --with-distro=none \ --with-systemdsystemunitdir=/lib/systemd/system && make
This package does not come with a test suite.
Now, as the root
user:
make install
--disable-static
:
This switch prevents installation of static versions of the
libraries.
--disable-mono
: This
parameter disables the Mono
bindings.
--disable-monodoc
:
This parameter disables documentation for the Mono bindings.
--disable-python
:
This parameter disables the scripts that depend on
Python. It also allows a
regular install to complete successfully.
--disable-qt3
: This
parameter disables the attempt to build the obsolete
Qt3 portions of the package.
--disable-qt4
: This
parameter disables the attempt to build the obsolete
Qt4Core portions of the
package.
--enable-core-docs
:
This parameter enables the building of documentation.
--with-distro=none
:
There is an obsolete boot script in the distribution for LFS.
This option disables it.
--with-systemdsystemunitdir=/lib/systemd/system
:
This parameter is used to set the correct installation
directory for systemd units.
--disable-dbus
: This parameter
disables the use of D-Bus.
--disable-gtk
: This parameter
disables the use of GTK+2.
--disable-gtk3
: This parameter
disables the use of GTK+3.
--disable-libdaemon
: This
parameter disables the use of libdaemon. If you use this option,
avahi-daemon
won't be built.
--enable-tests
: This option
enables the building of tests and examples.
--enable-compat-howl
: This option
enables the compatibility layer for HOWL.
--enable-compat-libdns_sd
: This
option enables the compatibility layer for libdns_sd.
To start the avahi-daemon daemon at
boot, enable the previously installed systemd unit by
running the following command as the root
user:
systemctl enable avahi-daemon
To start the avahi-dnsconfd daemon at
boot, enable the previously installed systemd unit by
running the following command as the root
user:
systemctl enable avahi-dnsconfd
is a IPv4LL network address configuration daemon. |
|
is a Web service showing mDNS/DNS-SD announced HTTP services using the Avahi daemon. |
|
browses for mDNS/DNS-SD services using the Avahi daemon. |
|
browses for mDNS/DNS-SD services using the Avahi daemon. |
|
is the Avahi mDNS/DNS-SD daemon. |
|
browses for mDNS/DNS-SD services using the Avahi daemon. |
|
browses for mDNS/DNS-SD services using the Avahi daemon. |
|
is a Unicast DNS server from mDNS/DNS-SD configuration daemon. |
|
registers a mDNS/DNS-SD service or host name or address mapping using the Avahi daemon. |
|
registers a mDNS/DNS-SD service or host name or address mapping using the Avahi daemon. |
|
registers a mDNS/DNS-SD service or host name or address mapping using the Avahi daemon. |
|
resolves one or more mDNS/DNS host name(s) to IP address(es) (and vice versa) using the Avahi daemon. |
|
resolves one or more mDNS/DNS host name(s) to IP address(es) (and vice versa) using the Avahi daemon. |
|
resolves one or more mDNS/DNS host name(s) to IP address(es) (and vice versa) using the Avahi daemon. |
|
changes the mDNS host name. |
|
browses for SSH servers on the local network. |
|
browses for VNC servers on the local network. |
Last updated on 2017-08-24 18:56:23 -0700
BIND Utilities is not a separate package, it is a collection of the client side programs that are included with BIND-9.11.2. The BIND package includes the client side programs nslookup, dig and host. If you install BIND server, these programs will be installed automatically. This section is for those users who don't need the complete BIND server, but need these client side applications.
This package is known to build and work properly using an LFS-8.1 platform.
Download (FTP): ftp://ftp.isc.org/isc/bind9/9.11.2/bind-9.11.2.tar.gz
Download MD5 sum: efca7e5a63a07efba264da9be2fbb57f
Download size: 9.3 MB
Estimated disk space required: 125 MB
Estimated build time: 0.6 SBU
libcap-2.25 with PAM, libxml2-2.9.4, and OpenSSL-1.1.0f
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/bind-utils
Install BIND Utilities by running the following commands:
./configure --prefix=/usr && make -C lib/dns && make -C lib/isc && make -C lib/bind9 && make -C lib/isccfg && make -C lib/lwres && make -C bin/dig
This portion of the package does not come with a test suite.
Now, as the root
user:
make -C bin/dig install
make -C lib/...: These commands build the libraries that are needed for the client programs.
make -C bin/dig: This command builds the client programs.
See the program descriptions in the BIND-9.11.2 section.
Last updated on 2017-08-23 21:43:54 -0700
The mod_dnssd package is an Apache HTTPD module which adds Zeroconf support via DNS-SD using Avahi. This allows Apache to advertise itself and the websites available to clients compatible with the protocol.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://0pointer.de/lennart/projects/mod_dnssd/mod_dnssd-0.6.tar.gz
Download MD5 sum: bed3d95a98168bf0515922d1c05020c5
Download size: 84 KB
Estimated disk space required: 1 MB
Estimated build time: less than 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/mod_dnssd
Install mod_dnssd by running the following commands:
sed -i 's/unixd_setup_child/ap_&/' src/mod_dnssd.c && ./configure --prefix=/usr \ --disable-lynx && make
This package does not come with a test suite.
Now, as the root
user:
make install sed -i 's| usr| /usr|' /etc/httpd/httpd.conf
sed ... src/mod_dnssd.c: Fix an external function call that has been updated since this package was released.
--disable-lynx
: This
parameter turns off Lynx
usage for documentation generation. Remove it if you have
Lynx installed.
sed ... /etc/httpd/httpd.conf: Fix a directory path that the intallation procedure incorrectly puts in the httpd configuration file.
Last updated on 2017-08-30 18:21:03 -0700
NetworkManager is a set of co-operative tools that make networking simple and straightforward. Whether WiFi, wired, 3G, or Bluetooth, NetworkManager allows you to quickly move from one network to another: Once a network has been configured and joined once, it can be detected and re-joined automatically the next time it's available.
This package is known to build and work properly using an LFS-8.1 platform.
Make sure that you disable the systemd-networkd service or configure it not to manage the interfaces you want to manage with NetworkManager.
Download (HTTP): http://ftp.gnome.org/pub/gnome/sources/NetworkManager/1.8/NetworkManager-1.8.2.tar.xz
Download (FTP): ftp://ftp.gnome.org/pub/gnome/sources/NetworkManager/1.8/NetworkManager-1.8.2.tar.xz
Download MD5 sum:
Download size: 3.6 MB
Estimated disk space required: 560 MB (with tests)
Estimated build time: 2.2 SBU (with parallelism=4, with tests)
dbus-glib-0.108, libndp-1.6, libnl-3.3.0, and NSS-3.32
cURL-7.55.1, dhcpcd-6.11.5 or DHCP-4.3.6 (client only), gobject-introspection-1.52.1, Iptables-1.6.1, newt-0.52.20 (for nmtui), Polkit-0.113+git_2919920+js38, PyGObject-3.24.1, Systemd-234, UPower-0.99.5, Vala-0.36.4, and wpa_supplicant-2.6 (built with D-Bus support),
BlueZ-5.46, GTK-Doc-1.26, Qt-5.9.1 (for examples), ModemManager-1.6.8, Valgrind-3.13.0, dnsmasq, Jansson, libteam, PPP, and RP-PPPoE
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/NetworkManager
If Qt-5.9.1 is installed and the Qt based examples are desired, fix the configure script:
sed -e '/Qt[CDN]/s/Qt/Qt5/g' \ -e 's/moc_location/host_bins/' \ -i configure
Install NetworkManager by running the following commands:
CXXFLAGS="-O2 -fPIC" \ ./configure --prefix=/usr \ --sysconfdir=/etc \ --localstatedir=/var \ --with-nmtui \ --disable-ppp \ --disable-json-validation \ --with-session-tracking=systemd \ --with-systemdsystemunitdir=/lib/systemd/system \ --docdir=/usr/share/doc/network-manager-1.8.2 && make
An already active graphical session with bus address is necessary to run the tests. To test the results, issue: make check.
Now, as the root
user:
make install
CXXFLAGS="-O2 -fPIC"
: These
compiler options are necessary to build the Qt5 based
examples.
--with-nmtui
: This
parameter enables build of nmtui.
--with-session-tracking=systemd
:
This switch is used to set systemd-logind as the
default program for session tracking.
--with-systemdsystemunitdir=/lib/systemd/system
:
This switch is used to set the correct installation directory
for systemd units.
--disable-ppp
: This
parameter disables PPP
support in NetworkManager.
--disable-json-validation
: This
parameter allows building without Jansson, which is needed for
“team” configuration
validation (team is one way of bonding network interfaces for
increased throughput).
--enable-gtk-doc
: Use this switch
if you have installed GTK-Doc-1.26 and wish to build the API
manuals.
--without-iptables
: Use this
switch if you don't have Iptables installed.
--disable-introspection
: Use this
switch if gobject-introspection-1.52.1
is installed and you want to build without introspection
support. This also removes the need for PyGObject-3.24.1.
For NetworkManager to
work, at least a minimal configuration file must be
present. Such file is not installed with make install. Issue the
following command as the root
user to create minimal
NetworkManager.conf
file:
cat >> /etc/NetworkManager/NetworkManager.conf << "EOF"
[main]
plugins=keyfile
EOF
You can add dns=none
to
suppress changes to /etc/resolv.conf
. See man 5 NetworkManager.conf
for any additional options.
To allow regular users permission to configure network
connections, you should add them to the netdev
group, and create a polkit rule that grants access. Run
the following commands as the root
user:
groupadd -fg 86 netdev && /usr/sbin/usermod -a -G netdev<username>
cat > /usr/share/polkit-1/rules.d/org.freedesktop.NetworkManager.rules << "EOF"polkit.addRule(function(action, subject) { if (action.id.indexOf("org.freedesktop.NetworkManager.") == 0 && subject.isInGroup("netdev")) { return polkit.Result.YES; } });
EOF
To start the NetworkManager daemon at
boot, enable the previously installed systemd unit by
running the following command as the root
user:
If using Network Manager to manage an interface, any previous configuration for that interface should be removed, and the interface brought down prior to starting Network Manager.
systemctl enable NetworkManager
NetworkManager also ships
a systemd unit called NetworkManager-wait-online.service
which
can be used to prevent services that require network
connectivity from starting until NetworkManager has established the
connection. To enable it, run the following command as the
root
user:
systemctl enable NetworkManager-wait-online
is a command-line tool for controlling NetworkManager and getting its status. |
|
is a utility to find out whether you are online. |
|
is an interactive ncurses based interface for nmcli. |
|
is an interactive ncurses based interface connection to activate/deactivate connections. |
|
is an interactive ncurses based interface connection editor. |
|
is an interactive ncurses based interface hostname editor. |
|
is the network management daemon. |
|
contains functions used by NetworkManager. |
|
contains functions used by NetworkManager VPN plugins. |
|
contains functions used by NetworkManager utils. |
Last updated on 2017-08-25 14:22:07 -0700
Nmap is a utility for network exploration and security auditing. It supports ping scanning, port scanning and TCP/IP fingerprinting.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://nmap.org/dist/nmap-7.60.tar.bz2
Download MD5 sum: 4e454266559ddf2c4e2109866c62560c
Download size: 9.9 MB
Estimated disk space required: 114 MB (add 21 MB for tests)
Estimated build time: 0.9 SBU (add 0.2 SBU for tests)
These packages are recommended because if they're not installed, the build process will compile and link against its own (often older) version.
libpcap-1.8.1, PCRE-8.41 and liblinear-211
OpenSSL-1.1.0f, PyGTK-2.24.0 (required for zenmap), Python-2.7.13 (required for ndiff) and Subversion-1.9.7 (required for nmap-update)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/nmap
Install Nmap by running the following commands:
./configure --prefix=/usr --with-liblua=included && make
If you wish to run the test suite, run the following command:
sed -i 's/lib./lib/' zenmap/test/run_tests.py
To test the results, issue: make check as the
root
user. Tests need a
graphical session.
Now, as the root
user:
make install
--with-liblua=included
: This
switch is required to fix compilation with lua 5.3.
is a utility for reading and writing data across networks from the command line. |
|
is a tool to aid in the comparison of Nmap scans. |
|
is a utility for network exploration and security auditing. It supports ping scanning, port scanning and TCP/IP fingerprinting. |
|
is a symbolic link to zenmap. |
|
is an updater for Nmap architecture-independent files. |
|
is an open-source tool for network packet generation, response analysis and response time measurement. |
|
is a Python script to uninstall ndiff. |
|
is a Python script to uninstall zenmap. |
|
is a symbolic link to zenmap. |
|
is a Python based graphical nmap frontend viewer. |
Last updated on 2017-08-29 12:34:24 -0700
The Traceroute package contains a program which is used to display the network route that packets take to reach a specified host. This is a standard network troubleshooting tool. If you find yourself unable to connect to another system, traceroute can help pinpoint the problem.
This package overwrites the version of traceroute that was installed in the inetutils package in LFS. This version is more powerful and allows many more options than the standard version.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://downloads.sourceforge.net/traceroute/traceroute-2.1.0.tar.gz
Download MD5 sum: 84d329d67abc3fb83fc8cb12aeaddaba
Download size: 72 KB
Estimated disk space required: 588 KB
Estimated build time: less than 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/traceroute
Install Traceroute by running the following commands:
make
This package does not come with a test suite.
Now, as the root
user:
make prefix=/usr install && mv /usr/bin/traceroute /bin && ln -sv -f traceroute /bin/traceroute6 && ln -sv -f traceroute.8 /usr/share/man/man8/traceroute6.8 && rm -fv /usr/share/man/man1/traceroute.1
The traceroute.1 file that was installed in LFS by inetutils is no longer relevant. This package overwrites that version of traceroute and installs the man page in man chapter 8.
Last updated on 2017-08-24 15:03:00 -0700
Whois is a client-side application which queries the whois directory service for information pertaining to a particular domain name. This package will install two programs by default: whois and mkpasswd. The mkpasswd command is also installed by the Expect-5.45 package.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://ftp.debian.org/debian/pool/main/w/whois/whois_5.2.17.tar.xz
Download (FTP): ftp://ftp.debian.org/debian/pool/main/w/whois/whois_5.2.17.tar.xz
Download MD5 sum: 6f7a9462b4490cf272e2a37cff7d79e4
Download size: 84 KB
Estimated disk space required: 1.2 MB
Estimated build time: less than 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/whois
Build the application with:
make
You can install the whois program, the
mkpasswd
program, and the locale files independently. Control your
choice of what is installed with the following commands
issued as the root
user:
Installing this version of mkpasswd will overwrite the same command installed by Expect-5.45.
make prefix=/usr install-whois make prefix=/usr install-mkpasswd make prefix=/usr install-pos
HAVE_LIBIDN=1
: This make variable
adds internationalized string handling support to
whois.
Last updated on 2017-08-20 15:06:11 -0700
Wicd is a network manager written in Python. It simplifies network setup by automatically detecting and connecting to wireless and wired networks. Wicd includes support for WPA authentication and DHCP configuration. It provides Curses- and GTK-based graphical frontends for user-friendly control. An excellent KDE-based frontend is also available http://projects.kde.org/projects/extragear/network/wicd-kde.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://launchpad.net/wicd/1.7/1.7.4/+download/wicd-1.7.4.tar.gz
Download MD5 sum: aaa2e9f5320849e0b5d053099a6f0007
Download size: 536 KB
Estimated disk space required: 4.2 MB
Estimated build time: less than 0.1 SBU
Python-2.7.13, D-Bus Python-1.2.4, Wireless Tools-29, and Net-tools-CVS_20101030 (Wicd needs mii-tool from this package)
PyGTK-2.24.0 (for the GTK frontend), wpa_supplicant-2.6 (for WPA support), and dhcpcd-6.11.5 or DHCP-4.3.6 (for DHCP support)
pm-utils-1.4.1 (for suspend/resume integration), Urwid (for the Curses-based frontend), and Babel (for internationalization)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/wicd
Install Wicd by running the following commands:
sed -e "/detection failed/ a self.init='init/default/wicd'" \ -i.orig setup.py && rm po/*.po && python setup.py configure --no-install-kde \ --no-install-acpi \ --no-install-pmutils \ --no-install-init \ --no-install-gnome-shell-extensions \ --docdir=/usr/share/doc/wicd-1.7.4
This package does not come with a test suite.
Now, as the root
user,
install the package:
python setup.py install
sed ... -i.orig setup.py: Fix and issue while building with BLFS.
rm po/*.po: This command removes the international messages associated with this package. The command is required unless Babel is installed. If it is installed, po/ast.po still needs to be removed in order for the build to complete.
--no-install-kde
: Prevent
installation of an autostart desktop file for KDE. If you use
KDE, you should instead install the
Wicd KDE Client.
--no-install-acpi
: Prevent
installation of suspend and resume scripts for acpid.
Omit this option if you use acpid.
--no-install-pmutils
: Prevent
installation of hooks for pm-utils. Omit this option if you
use pm-utils.
--no-install-init
: Prevent
installation of service files twice. They are installed as a
part of the sed to setup.py.
--no-install-gnome-shell-extensions
: Prevent
installation of the respective extensions. Remove this
switch, if you are using Gnome Shell.
--wicdgroup=
: The
group that will have permission to use the Wicd client
(default is the <group>
users
group).
/etc/wicd/manager-settings.conf
,
/etc/wicd/wired-settings.conf
and /etc/wicd/wireless-settings.conf
Make sure that you disable the systemd-networkd service or configure it not to manage the interfaces you want to manage with Wicd.
To enable wicd at boot time, as the root
user, run:
systemctl enable wicd
No manual configuration of Wicd is needed if you use the
graphical frontends. If you are only going to use Wicd from
command-line, you can configure it using the configuration
files in /etc/wicd
. For a
list of available options, look at the man-pages for:
wicd-manager-settings.conf, wicd-wired-settings.conf and
wicd-wireless-settings.conf.
Be sure to add all users who are to have rights to open and
close network connections with Wicd to the users
group (or the group specified
with the --wicdgroup
configuration option).
is the wicd daemon. |
|
is a command line interface for configuring the wicd daemon. |
|
is the wicd client. This script attempts to automatically choose the relevant configuration interface. |
|
is a curses interface for configuring the wicd daemon. |
|
is a GTK interface for configuring the wicd daemon |
Last updated on 2017-08-30 19:55:44 -0700
The Wireshark package contains a network protocol analyzer, also known as a “sniffer”. This is useful for analyzing data captured “off the wire” from a live network connection, or data read from a capture file.
Wireshark provides both a graphical and a TTY-mode front-end for examining captured network packets from over 500 protocols, as well as the capability to read capture files from many other popular network analyzers.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://www.wireshark.org/download/src/all-versions/wireshark-2.4.0.tar.xz
Download MD5 sum: 655106f8cf3bb8f521336d3a8ab5b10b
Download size: 27 MB
Estimated disk space required: 1.9 GB (with default GUI front-end, and all optional dependencies available in the BLFS book)
Estimated build time: 10.3 SBU (with default GUI front-end and all optional dependencies available in the BLFS book)
Optional patch:
http://www.linuxfromscratch.org/patches/blfs/8.1/wireshark-2.4.0-lua_5_3-1.patch
(allows building the LUA bindings if Lua-5.3.4 is
installed and LUA is not disabled by passing
--without-lua
to
configure)
Additional Documentation: https://www.wireshark.org/download/docs/ (contains links to several different docs in a variety of formats)
GLib-2.52.3 and libgcrypt-1.8.0
libpcap-1.8.1 (required to capture data), and Qt-5.9.1 (for the Qt5 GUI)
c-ares-1.12.0, GnuTLS-3.5.14, GTK+-3.22.18 or GTK+-2.24.31 (for the legacy GTK GUI), libnl-3.3.0, Lua-5.3.4, MIT Kerberos V5-1.15.1, nghttp2-1.25.0, OpenSSL-1.1.0f, SBC-1.3, libsmi, lz4, GeoIP, libssh, PortAudio (for GTK+ RTP player), Snappy, and Spandsp
The Qt GUI front-end is built by default, if Qt-5.9.1 is found. If you want to build the GTK+ GUI front-end, some configure switches have to be set (see “Command Explanations”).
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/wireshark
The kernel must have the Packet protocol enabled for Wireshark to capture live packets from the network:
[*] Networking support ---> [CONFIG_NET]
Networking options --->
<*/M> Packet socket [CONFIG_PACKET]
If built as a module, the name is af_packet.ko
.
Wireshark is a very large
and complex application. These instructions provide
additional security measures to ensure that only trusted
users are allowed to view network traffic. First, set up a
system group for wireshark. As the root
user:
groupadd -g 62 wireshark
Continue to install Wireshark by running the following commands:
patch -Np1 -i ../wireshark-2.4.0-lua_5_3-1.patch && ./configure --prefix=/usr --sysconfdir=/etc && make
This package does not come with a test suite.
Now, as the root
user:
make install && install -v -m755 -d /usr/share/doc/wireshark-2.4.0 && install -v -m644 README{,.linux} doc/README.* doc/*.{pod,txt} \ /usr/share/doc/wireshark-2.4.0 && pushd /usr/share/doc/wireshark-2.4.0 && for FILENAME in ../../wireshark/*.html; do ln -s -v -f $FILENAME . done && popd unset FILENAME
If you downloaded any of the documentation files from the
page listed in the 'Additional Downloads', install them by
issuing the following commands as the root
user:
install -v -m644 <Downloaded_Files>
\
/usr/share/doc/wireshark-2.4.0
Now, set ownership and permissions of sensitive applications
to only allow authorized users. As the root
user:
chown -v root:wireshark /usr/bin/{tshark,dumpcap} && chmod -v 6550 /usr/bin/{tshark,dumpcap}
Finally, add any users to the wireshark group (as
root
user):
usermod -a -G wireshark <username>
If you are installing wireshark for the first time, it will be necessary to leave the session and login again, thus you will now have wireshark between your groups, otherwise, it will not run properly.
--with-gtk=[yes/no/2/3]
: For the
Gtk+ GUI. Default is no. If both Gtk+2 and 3 are installed,
and “yes” is selected,
default is 3. Obviously, GTK+-2.24.31 or GTK+-3.22.18 must have been
built for this to work.
--with-qt=[yes/no/4/5]
: For the
Qt GUI. Default is yes, if Qt-5.9.1 is found on the system.
--disable-wireshark
: Use this
switch if you have Qt
installed but do not want to build any of the GUIs.
/etc/wireshark.conf
and
~/.config/wireshark/*
(unless
there is already ~/.wireshark/*
in the system)
Though the default configuration parameters are very sane, reference the configuration section of the Wireshark User's Guide for configuration information. Most of Wireshark's configuration can be accomplished using the menu options of the wireshark graphical interfaces.
If you want to look at packets, make sure you don't filter them out with Iptables-1.6.1. If you want to exclude certain classes of packets, it is more efficient to do it with iptables than it is with Wireshark.
reads a saved capture file and returns any or all of several statistics about that file. It is able to detect and read any capture supported by the Wireshark package. |
|
prints the file types of capture files. |
|
is a display-filter-compiler test program. |
|
is a network traffic dump tool. It lets you capture packet data from a live network and write the packets to a file. |
|
edits and/or translates the format of capture files. It knows how to read libpcap capture files, including those of tcpdump, Wireshark and other tools that write captures in that format. |
|
combines multiple saved capture files into a single output file. |
|
creates random-packet capture files. |
|
dump and analyze raw libpcap data. |
|
reorder timestamps of input file frames into output file. |
|
is a daemon that listens on UNIX sockets. |
|
reads in an ASCII hex dump and writes the data described into a libpcap-style capture file. |
|
is a TTY-mode network protocol analyzer. It lets you capture packet data from a live network or read packets from a previously saved capture file. |
|
is the Qt GUI network protocol analyzer. It lets you interactively browse packet data from a live network or from a previously saved capture file. |
|
is the Gtk+ GUI network protocol analyzer. It lets you interactively browse packet data from a live network or from a previously saved capture file. |
|
contains functions used by the Wireshark programs to perform filtering and packet capturing. |
|
is a library being developed as a future
replacement for |
Last updated on 2017-08-29 12:34:24 -0700
These applications are support libraries for other applications in the book. It is unlikely that you would just install these libraries, you will generally find that you will be referred to this chapter to satisfy a dependency of other applications.
c-ares is a C library for asynchronous DNS requests.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://c-ares.haxx.se/download/c-ares-1.12.0.tar.gz
Download MD5 sum: 2ca44be1715cd2c5666a165d35788424
Download size: 1.7 MB
Estimated disk space required: 13 MB
Estimated build time: 0.4 SBU
Install c-ares by running the following commands:
./configure --prefix=/usr --disable-static && make
This package does not include a test suite.
Now, as the root
user:
make install
--disable-static
:
This switch prevents installation of static versions of the
libraries.
Last updated on $
The cURL package contains an utility and a library used for transferring files with URL syntax to any of the following protocols: FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS and FILE. Its ability to both download and upload files can be incorporated into other programs to support functions like streaming media.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://curl.haxx.se/download/curl-7.55.1.tar.xz
Download MD5 sum: ac4a59c38c47adc160ea71eace20257b
Download size: 2.1 MB
Estimated disk space required: 36 MB (additional 11 MB for tests)
Estimated build time: 0.3 SBU (additional 4.3 SBU for tests)
Certificate Authority Certificates (runtime) and OpenSSL-1.1.0f
c-ares-1.12.0, GnuTLS-3.5.14, MIT Kerberos V5-1.15.1, nghttp2-1.25.0, OpenLDAP-2.4.45, Samba-4.6.7, libidn2, libmetalink, libpsl, librtmp, libssh2, mbed TLS (formerly known as PolarSSL), and SPNEGO
stunnel-5.42 (for the HTTPS and FTPS tests) and Valgrind-3.13.0
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/curl
Install cURL by running the following commands:
./configure --prefix=/usr \ --disable-static \ --enable-threaded-resolver \ --with-ca-path=/etc/ssl/certs && make
To run the tests for this package, valgrind requires a version of the /lib/ld-2.23.so (or later) library with debugging symbols present. Normally in LFS these debugging symbols are stripped at the end of Chapter 6. To get this library, glibc must be rebuilt with the current glibc version using the same compiler that was used to build LFS. The ld-2.23.so can then be renamed to ld-2.23.so.dbg and copied to /lib. Then a symlink needs to be changed:
ln -sfv ld-2.23.so.dbg /lib/ld-linux-x86-64.so.2
Adjust the above instruction as needed for a 32-bit system or for a different version of glibc.
To run the test suite, issue: make test.
Now, as the root
user:
make install && rm -rf docs/examples/.deps && find docs \( -name Makefile\* \ -o -name \*.1 \ -o -name \*.3 \) \ -exec rm {} \; && install -v -d -m755 /usr/share/doc/curl-7.55.1 && cp -v -R docs/* /usr/share/doc/curl-7.55.1
Simple tests to the new installed curl: curl --trace-ascii debugdump.txt
http://www.example.com/ and curl --trace-ascii d.txt --trace-time
http://example.com/. Inspect the locally
created trace files debugdump.txt
and d.txt
, which contain version downloaded
files information, etc. One file has the time for each action
logged.
--disable-static
:
This switch prevents installation of static versions of the
libraries.
--enable-threaded-resolver
:
This switch enables cURL's
builtin threaded DNS resolver.
--with-ca-path=/etc/ssl/certs
:
This switch sets the location of the BLFS Certificate Authority
Certificates.
--with-gssapi
: This parameter
adds Kerberos 5 support to
libcurl
.
--without-ssl --with-gnutls
: Use
to build with GnuTLS support
instead of OpenSSL for
SSL/TLS.
--with-ca-bundle=/etc/ssl/ca-bundle.crt
: Use
this switch instead of --with-ca-path
if building with
GnuTLS support instead of
OpenSSL for SSL/TLS.
find docs ... -exec rm {}
\;: This command removes Makefiles
and man files from the
documentation directory that would otherwise be installed by
the commands that follow.
Last updated on 2017-08-18 14:56:07 -0700
GeoClue is a modular geoinformation service built on top of the D-Bus messaging system. The goal of the GeoClue project is to make creating location-aware applications as simple as possible.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://www.freedesktop.org/software/geoclue/releases/2.4/geoclue-2.4.7.tar.xz
Download MD5 sum: e50086e742740413669ab72d8572db05
Download size: 360 KB
Estimated disk space required: 12 MB
Estimated build time: 0.2 SBU
JSON-GLib-1.2.8 and libsoup-2.58.2
ModemManager-1.6.8 and Avahi-0.7
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/geoclue2
Install GeoClue by running the following commands:
./configure --prefix=/usr --sysconfdir=/etc && make
This package does not come with a test suite.
Now, as the root
user:
make install
--disable-3g-source
: This switch
disables the 3G backend. Use it if you have not installed the
ModemManager package.
--disable-modem-gps-source
: This
switch disables the modem GPS backend. Use it if you have not
installed the ModemManager
package.
Last updated on 2017-08-26 21:14:29 -0700
The GLib Networking package contains Network related gio modules for GLib.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://ftp.gnome.org/pub/gnome/sources/glib-networking/2.50/glib-networking-2.50.0.tar.xz
Download (FTP): ftp://ftp.gnome.org/pub/gnome/sources/glib-networking/2.50/glib-networking-2.50.0.tar.xz
Download MD5 sum: 4d06d0224646f274918b1cb6da9a07f6
Download size: 428 KB
Estimated disk space required: 10 MB (with tests)
Estimated build time: 0.1 SBU (with tests)
GLib-2.52.3, GnuTLS-3.5.14 and gsettings-desktop-schemas-3.24.0
Certificate Authority Certificates and p11-kit-0.23.8
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/glib-networking
Install GLib Networking by running the following commands:
./configure --prefix=/usr \ --without-ca-certificates \ --disable-static && make
To test the results, issue: make -k check.
Now, as the root
user:
make install
--without-ca-certificates
: This
parameter forces use of PKCS #11 modules for TLS certificate
validation instead of a bundle of certificates.
--disable-static
:
This switch prevents installation of static versions of the
libraries.
/usr/lib/gio/modules
)
Last updated on 2017-08-23 17:35:52 -0700
ldns is a fast DNS library with the goal to simplify DNS programming and to allow developers to easily create software conforming to current RFCs and Internet drafts. This packages also includes the drill tool.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://www.nlnetlabs.nl/downloads/ldns/ldns-1.7.0.tar.gz
Download MD5 sum: 74b75c9ba69fb3af2a0c26244ecfd9f6
Download size: 1.2 MB
Estimated disk space required: 28 MB (with docs)
Estimated build time: 0.2 SBU (with docs)
Certificate Authority Certificates and libpcap-1.8.1 (for example programs), Python-2.7.13 and SWIG-3.0.12 (for Python bindings), and Doxygen-1.8.13 (for html documentation)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/ldns
Install ldns by running the following commands:
./configure --prefix=/usr \ --sysconfdir=/etc \ --disable-static \ --disable-dane-ta-usage \ --with-drill && make
If you have Doxygen-1.8.13 installed and want to build html documentation, run the following command:
make doc
This package does not come with a working test suite.
Now, as the root
user:
make install
If you built html documentation, install it by running the
following commands as the root
user:
install -v -m755 -d /usr/share/doc/ldns-1.7.0 && install -v -m644 doc/html/* /usr/share/doc/ldns-1.7.0
--disable-dane-ta-usage
: This
option disables DANE-TA (DNS-Based Authentication of Named
Entities) support. Remove this opion if OpenSSL-1.1.0 or
later is installed.
--disable-static
:
This switch prevents installation of static versions of the
libraries.
--with-drill
: This
option enables building of the drill tool (used for
obtaining debug information from DNS(SEC))
--with-examples
: This option
enables building of the example programs.
--with-pyldns
: This option
enables building of the Python bindings.
is a tool like dig from BIND Utilities-9.11.2 designed to get all sorts of information out of the DNS. |
|
shows compiler and linker flags for ldns usage. |
|
provides the ldns API functions to programs. |
Last updated on 2017-08-29 12:34:24 -0700
libevent is an asynchronous event notification software library. The libevent API provides a mechanism to execute a callback function when a specific event occurs on a file descriptor or after a timeout has been reached. Furthermore, libevent also supports callbacks due to signals or regular timeouts.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://github.com/libevent/libevent/releases/download/release-2.1.8-stable/libevent-2.1.8-stable.tar.gz
Download MD5 sum: f3eeaed018542963b7d2416ef1135ecc
Download size: 1.0 MB
Estimated disk space required: 18 MB (add 1 MB for the tests and 6 MB for the API docs)
Estimated build time: 0.3 SBU (add 10 SBU for the tests)
Doxygen-1.8.13 (for API documentation)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libevent
Install libevent by running the following commands:
./configure --prefix=/usr --disable-static && make
If you have Doxygen-1.8.13 installed and wish to build API documentation, issue doxygen Doxyfile.
To test the results, issue: make verify.
Now, as the root
user:
make install
If you built the API documentation, install it by issuing the
following commands as the root
user:
install -v -m755 -d /usr/share/doc/libevent-2.1.8/api && cp -v -R doxygen/html/* \ /usr/share/doc/libevent-2.1.8/api
--disable-static
:
This switch prevents installation of static versions of the
libraries.
Last updated on 2017-08-22 13:27:15 -0700
The libnl suite is a collection of libraries providing APIs to netlink protocol based Linux kernel interfaces.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://github.com/thom311/libnl/releases/download/libnl3_3_0/libnl-3.3.0.tar.gz
Download MD5 sum: ab3ef137cad95bdda5ff0ffa5175dfa5
Download size: 912 KB
Estimated disk space required: 28 MB (with tests and API documentation)
Estimated build time: 0.6 SBU (with tests and API documentation)
Download (HTTP): https://github.com/thom311/libnl/releases/download/libnl3_3_0/libnl-doc-3.3.0.tar.gz
Download MD5 sum: caea892c8c09e759d9e05698d9cc692c
Download size: 11 MB
Check-0.11.0 (for tests)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libnl
Install libnl by running the following commands:
./configure --prefix=/usr \ --sysconfdir=/etc \ --disable-static && make
To test the results, issue: make check.
Now, as the root
user:
make install
If you wish to install the API documentation, as the
root
user:
mkdir -vp /usr/share/doc/libnl-3.3.0 && tar -xf ../libnl-doc-3.3.0.tar.gz --strip-components=1 --no-same-owner \ -C /usr/share/doc/libnl-3.3.0
--disable-static
:
This switch prevents installation of static versions of the
libraries.
--disable-cli
: Use this parameter
if you don't want to install cli tools provided by the
package.
queries the Generic Netlink controller in the kernel and prints a list of all registered Generic Netlink families including the version of the interface that has been registered. |
|
adds, updates, or replaces Traffic Classes |
|
deletes Traffic Classes |
|
is used to resolve qdisc/class names to classid values and vice versa. |
|
lists Traffic Classes. |
|
adds a classifier. |
|
deletes a classifier. |
|
lists classifiers. |
|
dumps link attributes. |
|
allows the lookup of packet location definitions. |
|
adds queueing disciplines (qdiscs) in the kernel. |
|
deletes queueing disciplines (qdiscs) in the kernel. |
|
lists queueing disciplines (qdiscs) in the kernel. |
|
These libraries contain API functions used to access Netlink interfaces in Linux kernel. |
Last updated on 2017-08-24 15:03:00 -0700
The libnsl package contains the public client interface for NIS(YP) and NIS+. It replaces the NIS library that used to be in GlibC.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://github.com/thkukuk/libnsl/archive/1.1.0/libnsl-1.1.0.tar.gz
Download MD5 sum: af13f06000c691bc19dfc82822ab5374
Download size: 212 KB
Estimated disk space required: 8.1 MB
Estimated build time: 0.3 SBU
rpcsvc-proto-1.2 and libtirpc-1.0.2
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libnsl
Install libnsl by running the following commands:
autoreconf -fi && ./configure --sysconfdir=/etc && make
This package does not come with a test suite.
Now, as the root
user:
make install && mv /usr/lib/libnsl.so.2* /lib && ln -sfv ../../lib/libnsl.so.2.0.0 /usr/lib/libnsl.so
--disable-static
:
This switch prevents installation of static versions of the
libraries.
mv -v /usr/lib/libnsl.so.2* ...: Move shared libraries into /lib so they are available before /usr is mounted.
Last updated on 2017-08-25 05:15:41 -0700
libpcap provides functions for user-level packet capture, used in low-level network monitoring.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://www.tcpdump.org/release/libpcap-1.8.1.tar.gz
Download MD5 sum: 3d48f9cd171ff12b0efd9134b52f1447
Download size: 724 KB
Estimated disk space required: 7.1 MB
Estimated build time: less than 0.1 SBU
Recommended patch: http://www.linuxfromscratch.org/patches/blfs/8.1/libpcap-1.8.1-enable_bluetooth-1.patch (Needed for bluez-5.21)
BlueZ-5.46, libnl-3.3.0, libusb-1.0.21, Software distribution for the DAG, and Septel range of passive network monitoring cards.
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libpcap
Install libpcap by running the following commands:
patch -Np1 -i ../libpcap-1.8.1-enable_bluetooth-1.patch && ./configure --prefix=/usr && make
This package does not come with a test suite.
If you want to disable installing the static library, use this sed:
sed -i '/INSTALL_DATA.*libpcap.a\|RANLIB.*libpcap.a/ s/^/#/' Makefile
Now, as the root
user:
make install
--enable-bluetooth=no
: Necessary,
if the recommended patch is not applied, because since 1.6.1
this application needs a fix, in order to build with
bluez-5.21.
Last updated on 2017-08-29 12:34:24 -0700
The libndp package provides a wrapper for IPv6 Neighbor Discovery Protocol. It also provides a tool named ndptool for sending and receiving NDP messages.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://libndp.org/files/libndp-1.6.tar.gz
Download MD5 sum: 1e54d26bcb4a4110bc3f90c5dd04f1a7
Download size: 356 KB
Estimated disk space required: 2.7 MB
Estimated build time: less than 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libndp
Install libndp by running the following command:
./configure --prefix=/usr \ --sysconfdir=/etc \ --localstatedir=/var \ --disable-static && make
This package does not come with a test suite.
Now, as the root
user:
make install
Last updated on 2017-08-25 14:22:07 -0700
The libsoup is a HTTP client/server library for GNOME. It uses GObject and the GLib main loop to integrate with GNOME applications and it also has an asynchronous API for use in threaded applications.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://ftp.gnome.org/pub/gnome/sources/libsoup/2.58/libsoup-2.58.2.tar.xz
Download (FTP): ftp://ftp.gnome.org/pub/gnome/sources/libsoup/2.58/libsoup-2.58.2.tar.xz
Download MD5 sum: eb33adb459c2283efc5c7d09ccdbbcfc
Download size: 1.7 MB
Estimated disk space required: 23 MB (with tests)
Estimated build time: 0.6 SBU (with tests)
glib-networking-2.50.0, libxml2-2.9.4 and SQLite-3.20.0
gobject-introspection-1.52.1 and Vala-0.36.4
Apache-2.4.27 (required to run the test suite), cURL-7.55.1 (required to run the test suite), MIT Kerberos V5-1.15.1 (required to run the test suite), GTK-Doc-1.26, PHP-7.1.8 compiled with XMLRPC-EPI support (only used for the XMLRPC regression tests) and Samba-4.6.7 (ntlm_auth is required to run the test suite).
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libsoup
Install libsoup by running the following commands:
./configure --prefix=/usr --disable-static && make
To test the results, issue: make check.
Now, as the root
user:
make install
--disable-static
:
This switch prevents installation of static versions of the
libraries.
--disable-vala
: use this if you
have not installed Vala,
e.g. because you are not building GNOME.
--enable-gtk-doc
: Use this
parameter if GTK-Doc is
installed and you wish to rebuild and install the API
documentation.
Last updated on 2017-08-23 17:35:52 -0700
The libtirpc package contains libraries that support programs that use the Remote Procedure Call (RPC) API. It replaces the RPC, but not the NIS library entries that used to be in glibc.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://downloads.sourceforge.net/libtirpc/libtirpc-1.0.2.tar.bz2
Download MD5 sum: d5a37f1dccec484f9cabe2b97e54e9a6
Download size: 500 KB
Estimated disk space required: 6.8 MB
Estimated build time: less than 0.1 SBU
MIT Kerberos V5-1.15.1 for the GSSAPI
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/libtirpc
If updating this package, you will also need to update any existing version of rpcbind-0.2.4
Fix a build issue with glibc-2.26:
sed '/stdlib.h/a#include <stdint.h>' -i src/xdr_sizeof.c
Fix a symbol name needed by NIS libraries:
sed '/key_secret_is/s/secret/secretkey/' -i src/libtirpc.map
Install libtirpc by running the following commands:
./configure --prefix=/usr \ --sysconfdir=/etc \ --disable-static \ --disable-gssapi && make
This package does not come with a test suite.
Now, as the root
user:
make install && mv -v /usr/lib/libtirpc.so.* /lib && ln -sfv ../../lib/libtirpc.so.3.0.0 /usr/lib/libtirpc.so
--disable-static
:
This switch prevents installation of static versions of the
libraries.
--disable-gssapi
:
This switch is needed if no GSSAPI is installed. Remove this
switch if you have one installed (for example MIT Kerberos
V5-1.15.1) and you wish to use it.
mv -v /usr/lib/libtirpc.so.* ...: Move shared libraries into /lib so they are available before /usr is mounted.
Last updated on 2017-08-23 23:54:51 -0700
neon is an HTTP and WebDAV client library, with a C interface.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://www.webdav.org/neon/neon-0.30.2.tar.gz
Download MD5 sum: e28d77bf14032d7f5046b3930704ef41
Download size: 911 KB
Estimated disk space required: 8.5 MB (additional 18 MB for the tests)
Estimated build time: 0.1 SBU (additional 0.3 SBU for the tests)
OpenSSL-1.1.0f or GnuTLS-3.5.14
libxml2-2.9.4, MIT Kerberos V5-1.15.1, libproxy, and pakchois,
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/neon
Fix some code when building with gnutls-3.4 and later:
sed -e 's/client_set/set/' \ -e 's/gnutls_retr/&2/' \ -e 's/type = t/cert_&/' \ -i src/ne_gnutls.c
Install neon by running the following commands:
./configure --prefix=/usr \ --with-ssl \ --enable-shared \ --disable-static && make
To test the results, issue: make check. Most of the
ssl
tests fail, using
--with-ssl=gnutls
.
Now, as the root
user:
make install
--with-ssl
: This
switch enables SSL support using OpenSSL or GnuTLS respectively. Remove it if you
don't have any of these installed. To force GnuTLS usage when both are present,
simply pass --with-ssl=gnutls
and
--with-ca-bundle=/etc/ssl/ca-bundle.crt
to
the configure
script.
--disable-static
:
This switch prevents installation of static versions of the
libraries.
--with-libxml2
: This switch
forces the use of libxml2
instead of Expat.
Last updated on 2017-08-23 17:35:52 -0700
nghttp2 is an implementation of HTTP/2 and its header compression algorithm, HPACK.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://github.com/nghttp2/nghttp2/releases/download/v1.25.0/nghttp2-1.25.0.tar.xz
Download MD5 sum: 2f9b40d404956a6a054fabb6a2401a12
Download size: 1.5 MB
Estimated disk space required: 17 MB
Estimated build time: 0.1 SBU
Boost-1.64.0, libevent-2.1.8, Python-2.7.13, CUnit (required for the testsuite), Cython, Jansson, jemalloc, libev, mruby, Spdylay, and Sphinx.
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/nghttp2
Install nghttp2 by running the following commands:
./configure --prefix=/usr \ --disable-static \ --enable-lib-only \ --docdir=/usr/share/doc/nghttp2-1.25.0 && make
This package does not come with a usable test suite.
Now, as the root
user:
make install
--disable-static
:
This switch prevents installation of static versions of the
libraries.
--enable-lib-only
:
only build libnghttp2. Omit this switch if you'd like to
build the example applications, Python bindings, or the C++
asio library.
Last updated on 2017-08-20 19:03:10 -0700
The rpcsvc-proto package contains the rcpsvc protocol.x files and headers, fromerly included with GlibC, that are not included in replacment libtirpc-1.0.2, along with the rpcgen program.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://github.com/thkukuk/rpcsvc-proto/archive/rpcsvc-proto-1.2.tar.gz
Download MD5 sum: 9b118a3026cc2ce8ded16c5f4f162042
Download size: 64 KB
Estimated disk space required: 2.6 MB
Estimated build time: less than 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/rpcsvc-proto
Install rpcsvc-proto by running the following commands:
autoreconf -fi && ./configure --sysconfdir=/etc && make
This package does not come with a test suite.
Now, as the root
user:
make install
Last updated on 2017-08-23 23:54:51 -0700
The Serf package contains a C-based HTTP client library built upon the Apache Portable Runtime (APR) library. It multiplexes connections, running the read/write communication asynchronously. Memory copies and transformations are kept to a minimum to provide high performance operation.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://archive.apache.org/dist/serf/serf-1.3.9.tar.bz2
Download MD5 sum: 370a6340ff20366ab088012cd13f2b57
Download size: 144 KB
Estimated disk space required: 3.2 MB (additional 3 MB for the tests)
Estimated build time: less than 0.1 SBU (additional 0.5 SBU for the tests)
Apr-Util-1.6.0, OpenSSL-1.1.0f, and SCons-2.5.1
MIT Kerberos V5-1.15.1, for the GSSAPI
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/serf
Install Serf by running the following commands:
sed -i "/Append/s:RPATH=libdir,::" SConstruct && sed -i "/Default/s:lib_static,::" SConstruct && sed -i "/Alias/s:install_static,::" SConstruct && scons PREFIX=/usr
To test the results, issue: scons check.
Now, as the root
user:
scons PREFIX=/usr install
sed -i "...": The first command removes the runtime path from a shared library and the next two commands disable building and installing of the static library.
GSSAPI=/usr
: Use this switch if
you have installed a GSSAPI library and you want serf to use it.
Last updated on 2017-08-25 21:58:04 -0700
The uhttpmock package contains a library for mocking web service APIs which use HTTP or HTTPS.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://tecnocode.co.uk/downloads/uhttpmock/uhttpmock-0.5.1.tar.xz
Download MD5 sum: 3c566039f7b338d1f923b707a31e12a3
Download size: 308 KB
Estimated disk space required: 4.0 MB
Estimated build time: less than 0.1 SBU
gobject-introspection-1.52.1 and Vala-0.36.4
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/uhttpmock
Install uhttpmock by running the following commands:
./configure --prefix=/usr --disable-static && make
To test the results, issue: make check.
Now, as the root
user:
make install
--disable-static
:
This switch prevents installation of static versions of the
libraries.
--enable-gtk-doc
: Use this
parameter if GTK-Doc is
installed and you wish to rebuild and install the API
documentation.
Last updated on 2017-08-28 23:13:49 -0700
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 primary method of browsing; either to avoid the clutter and bandwidth which accompanies images or because they may use a text-to-speech synthesizer which can read the page to them (of use for instance to partially sighted or blind users). In this chapter you will find installation instructions for three console web browsers:
Links is a text and graphics mode WWW browser. It includes support for rendering tables and frames, features background downloads, can display colors and has many other features.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://links.twibright.com/download/links-2.14.tar.bz2
Download MD5 sum: 0d11b388de22ba280008a36a409a34c6
Download size: 6.2 MB
Estimated disk space required: 48 MB (with --enable-graphics)
Estimated build time: 0.3 SBU (with --enable-graphics)
Graphics mode requires at least one of GPM-1.20.7 (mouse support to be used with a framebuffer-based console), SVGAlib, DirectFB, and X Window System
For decoding various image formats Links can utilize libpng-1.6.31, libjpeg-turbo-1.5.2, librsvg-2.40.18, and LibTIFF-4.0.8
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/LinksBrowser
Install Links by running the following commands:
./configure --prefix=/usr --mandir=/usr/share/man && make
This package does not come with a test suite.
Now, as the root
user:
make install && install -v -d -m755 /usr/share/doc/links-2.14 && install -v -m644 doc/links_cal/* KEYS BRAILLE_HOWTO \ /usr/share/doc/links-2.14
--enable-graphics
: This switch
enables support for graphics mode.
Last updated on 2017-08-20 15:06:11 -0700
Lynx is a text based web browser.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://invisible-mirror.net/archives/lynx/tarballs/lynx2.8.8rel.2.tar.bz2
Download MD5 sum: b231c2aa34dfe7ca25681ef4e55ee7e8
Download size: 2.5 MB
Estimated disk space required: 31 MB
Estimated build time: 0.3 SBU
Patch to build with openssl-1.1: http://www.linuxfromscratch.org/patches/blfs/8.1/lynx-2.8.8rel.2-openssl_1.1.0-1.patch
GnuTLS-3.5.14 (experimental, to replace openssl), Zip-3.0, UnZip-6.0, an MTA (that provides a sendmail command), and Sharutils-4.15.2 (for a uudecode program)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/Lynx
Apply a patch to build Lynx with openssl-1.1:
patch -p1 -i ../lynx-2.8.8rel.2-openssl_1.1.0-1.patch
Install Lynx by running the following commands:
./configure --prefix=/usr \ --sysconfdir=/etc/lynx \ --datadir=/usr/share/doc/lynx-2.8.8rel.2 \ --with-zlib \ --with-bzlib \ --with-ssl \ --with-screen=ncursesw \ --enable-locale-charset && make
This package does not come with a test suite.
Now, as the root
user:
make install-full && chgrp -v -R root /usr/share/doc/lynx-2.8.8rel.2/lynx_doc
--sysconfdir=/etc/lynx
: This
parameter is used so that the configuration files are located
in /etc/lynx
instead of
/usr/etc
.
--datadir=/usr/share/doc/lynx-2.8.8rel.2
:
This parameter is used so that the documentation files are
installed into /usr/share/doc/lynx-2.8.8rel.2
instead of
/usr/share/lynx_{doc,help}
.
--with-zlib
: This
enables support for linking libz
into Lynx.
--with-bzlib
: This
enables support for linking libbz2
into Lynx.
--with-ssl
: This
enables support for linking SSL into Lynx.
--with-screen=ncursesw
: This
switch enables the use of advanced wide-character support
present in the system NCurses library. This is needed for
proper display of characters and line wrapping in multibyte
locales.
--enable-locale-charset
: This
switch allows Lynx to deduce
the proper character encoding for terminal output from the
current locale. A configuration step is still needed (see
below), but unlike the situation without this switch, the
configuration step becomes the same for all users (without
the switch one must specify the display character set
explicitly). This is important for environments such as a
LiveCD, where the amount of system-specific configuration
steps has to be reduced to the minimum.
--enable-nls
: This switch allows
Lynx to print translated
messages (such as questions about cookies and SSL
certificates).
--with-gnutls
: This enables
experimental support for linking GnuTLS into Lynx. Remove the --with-ssl
switch if you want
to use gnutls.
make install-full: In addition to the standard installation, this target installs the documentation and help files.
chgrp -v -R root /usr/share/doc/lynx-2.8.8rel.2/lynx_doc: This command corrects the improper group ownership of installed documentation files.
The proper way to get the display character set is to
examine the current locale. However, Lynx does not do this by default. As
the root
user, change this
setting:
sed -e '/#LOCALE/ a LOCALE_CHARSET:TRUE' \ -i /etc/lynx/lynx.cfg
The built-in editor in Lynx
Breaks Multibyte Characters. This issue manifests
itself in multibyte locales, e.g., as the Backspace key not
erasing non-ASCII characters properly, and as incorrect
data being sent to the network when one edits the contents
of text areas. The only solution to this problem is to
configure Lynx to use an
external editor (bound to the “Ctrl+X e” key combination by default).
Still as the root
user:
sed -e '/#DEFAULT_ED/ a DEFAULT_EDITOR:vi' \ -i /etc/lynx/lynx.cfg
Lynx handles the following values of the DEFAULT_EDITOR option specially by adding cursor-positioning arguments: “emacs”, “jed”, “jmacs”, “joe”, “jove”, “jpico”, “jstar”, “nano”, “pico”, “rjoe”, “vi” (but not “vim”: in order to position the cursor in Vim-8.0.586, set this option to “vi”).
By default, Lynx doesn't
save cookies between sessions. Again as the root
user, change this setting:
sed -e '/#PERSIST/ a PERSISTENT_COOKIES:TRUE' \ -i /etc/lynx/lynx.cfg
Many other system-wide settings such as proxies can also be
set in the /etc/lynx/lynx.cfg
file.
Last updated on 2017-08-18 12:42:43 -0700
w3m is primarily a pager but it can also be used as a text-mode WWW browser.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://downloads.sourceforge.net/w3m/w3m-0.5.3.tar.gz
Download MD5 sum: 1b845a983a50b8dec0169ac48479eacc
Download size: 2.1 MB
Estimated disk space required: 26 MB
Estimated build time: 0.3 SBU
GPM-1.20.7, OpenSSL-1.0.2l Libraries, Imlib2-1.4.10, GTK+-2.24.31, Imlib (not recommended: obsolete, abandoned upstream, buggy, and gives no additional functionality as compared to other image loading libraries), gdk-pixbuf-2.36.8, Compface-1.5.2, and nkf, a Mail User Agent, and an External Browser
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/W3M
Install w3m by running the following commands:
patch -Np1 -i ../w3m-0.5.3-bdwgc72-1.patch && sed -i 's/file_handle/file_foo/' istream.{c,h} && sed -i 's#gdk-pixbuf-xlib-2.0#& x11#' configure && PKG_CONFIG_PATH="/usr/lib/openssl-1.0/pkgconfig:$PKG_CONFIG_PATH" \ ./configure --prefix=/usr --sysconfdir=/etc && make
This package does not come with a test suite.
Now, as the root
user:
make install && install -v -m644 -D doc/keymap.default /etc/w3m/keymap && install -v -m644 doc/menu.default /etc/w3m/menu && install -v -m755 -d /usr/share/doc/w3m-0.5.3 && install -v -m644 doc/{HISTORY,READ*,keymap.*,menu.*,*.html} \ /usr/share/doc/w3m-0.5.3
patch -p1 < ../w3m-0.5.3-bdwgc72-1.patch: This patch fixes compiling w3m with GC-7.2 installed.
sed -i 's/file_handle/file_foo/' istream.{c,h}: This sed renames the file_handle function to avoid a clash with a glibc function that has the same name, defined in /usr/include/bits/fcntl.h.
sed -i 's#gdk-pixbuf-xlib-2.0#& x11#' configure: This sed fixes compiling w3m using GTK+-2.24.31 as its image library. It has no impact if GTK+-2.24.31 is not installed.
--sysconfdir=/etc
:
This option puts the configuration files in /etc.
Last updated on 2017-08-29 12:34:24 -0700
Mail Clients help you retrieve (Fetchmail), sort (Procmail), read and compose responses (Heirloom mailx, Mutt, Pine, Kmail, Balsa, Evolution, SeaMonkey) to email.
News clients also help you retrieve, sort, read and compose responses, but these messages travel through USENET (a worldwide bulletin board system) using the Network News Transfer Protocol (NNTP).
Alpine is a text-based email client developed by the University of Washington.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://alpine.freeiz.com/alpine/release/src/alpine-2.21.tar.xz
Download MD5 sum: 02dad85c1be80ce020206f222ecf5ac8
Download size: 4.6 MB
Estimated disk space required: 122 MB
Estimated build time: 1.0 SBU
OpenLDAP-2.4.45, MIT Kerberos V5-1.15.1, Aspell-0.60.6.1, Tcl-8.6.7, and Linux-PAM-1.3.0
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/alpine
Install Alpine by running the following commands:
LIBS+="-lcrypto" ./configure --prefix=/usr \ --sysconfdir=/etc \ --without-ldap \ --without-krb5 \ --without-pam \ --without-tcl \ --with-ssl-dir=/usr \ --with-passfile=.pine-passfile && make
This package does not come with a test suite.
Now, as the root
user:
make install
LIBS+="-lcrypto": Enable
linking to OpenSSL-1.1.0f. Additional linker flags
are required for Linux-PAM-1.3.0, -lpam
, and for MIT Kerberos V5-1.15.1,
-lkrb5
.
--without-ldap
:
Disables LDAP support.
--without-krb5
:
Disables Kerberos support.
--without-pam
:
Disables Linux-PAM support.
--without-tcl
:
Disables TCL support.
--with-ssl-dir=/usr
:
Sets the root path to OpenSSL libraries and include files.
--with-passfile=.pine-passfile
:
Sets the password cache file.
--without-ssl
: Disables OpenSSL
support.
is the Alpine mailer. |
|
is a standalone text editor similar to the Alpine message composer. |
|
is a standalone file system navigator. |
|
is a utility for downloading a pinerc or address book to the local machine. |
|
is a utility for uploading a local pinerc or address book to an IMAP server. |
Last updated on 2017-08-30 17:02:22 -0700
The Fetchmail package contains a mail retrieval program. It retrieves mail from remote mail servers and forwards it to the local (client) machine's delivery system, so it can then be read by normal mail user agents.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://downloads.sourceforge.net/fetchmail/fetchmail-6.3.26.tar.xz
Download MD5 sum: 61b66faad044afa26e142bb1791aa2b3
Download size: 1.2 MB
Estimated disk space required: 14 MB
Estimated build time: 0.1 SBU
OpenSSL-1.1.0f and a local MDA (Procmail-3.22)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/fetchmail
Install Fetchmail by running the following commands:
patch -Np1 -i ../fetchmail-6.3.26-disable_sslv3-1.patch && ./configure --prefix=/usr --with-ssl --enable-fallback=procmail && make
This package does not come with a test suite.
Now, as the root
user:
make install
--with-ssl
: This
enables SSL support, 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 the port 25 mail server is not present or
not responding.
cat > ~/.fetchmailrc << "EOF"
set logfile /var/log/fetchmail.log
set no bouncemail
set postmaster root
poll SERVERNAME :
user <username>
pass <password>
;
mda "/usr/bin/procmail -f %F -d %T";
EOF
chmod -v 0600 ~/.fetchmailrc
This is an example configuration that should suffice for most people. You can add as many users and servers as you need using the same syntax.
man fetchmail: Look for the section near the bottom named CONFIGURATION EXAMPLES. It gives some quick examples. There are countless other configuration options once you get used to it.
Last updated on 2017-08-26 17:08:59 -0700
The Heirloom mailx package (formerly known as the Nail package) contains mailx, a command-line Mail User Agent derived from Berkeley Mail. It is intended to provide the functionality of the POSIX mailx command with additional support for MIME messages, IMAP (including caching), POP3, SMTP, S/MIME, message threading/sorting, scoring, and filtering. Heirloom mailx is especially useful for writing scripts and batch processing.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://ftp.debian.org/debian/pool/main/h/heirloom-mailx/heirloom-mailx_12.5.orig.tar.gz
Download (FTP): ftp://ftp.debian.org/debian/pool/main/h/heirloom-mailx/heirloom-mailx_12.5.orig.tar.gz
Download MD5 sum: 29a6033ef1412824d02eb9d9213cb1f2
Download size: 317 KB
Estimated disk space required: 3.2 MB
Estimated build time: less than 0.1 SBU
OpenSSL-1.0.2l Libraries or NSS-3.32, MIT Kerberos V5-1.15.1 (for IMAP GSSAPI authentication), and an MTA
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/mailx
This package does not support parallel build.
Install Heirloom mailx by running the following commands.
patch -Np1 -i ../heirloom-mailx-12.5-fixes-1.patch && sed 's@<openssl@<openssl-1.0/openssl@' \ -i openssl.c fio.c makeconfig && make -j1 LDFLAGS+="-L /usr/lib/openssl-1.0/" \ SENDMAIL=/usr/sbin/sendmail
This package does not come with a test suite.
Now, as the root
user:
make PREFIX=/usr UCBINSTALL=/usr/bin/install install && ln -v -sf mailx /usr/bin/mail && ln -v -sf mailx /usr/bin/nail && install -v -m755 -d /usr/share/doc/heirloom-mailx-12.5 && install -v -m644 README /usr/share/doc/heirloom-mailx-12.5
make SENDMAIL=/usr/sbin/sendmail: This changes the default MTA path of /usr/lib/sendmail.
make PREFIX=/usr
UCBINSTALL=/usr/bin/install install: This
changes the default installation path of /usr/local
and the default install command path of
/usr/ucb
.
Last updated on 2017-08-30 19:14:49 -0700
The Mutt package contains a Mail User Agent. This is useful for reading, writing, replying to, saving, and deleting your email.
This package is known to build and work properly using an LFS-8.1 platform.
Download (FTP): ftp://ftp.mutt.org/pub/mutt/mutt-1.8.3.tar.gz
Download MD5 sum: 8d1ff7275a3b4fbb0023145abe309cc8
Download size: 4.0 MB
Estimated disk space required: 38 MB (plus a further 5MB for the PDF manual)
Estimated build time: 0.3 SBU (plus a further 0.2 SBU to build the PDF manual)
Aspell-0.60.6.1, Cyrus SASL-2.1.26, GDB-8.0, GnuPG-2.1.23, GPGME-1.9.0, libgssapi, libidn-1.33, MIT Kerberos V5-1.15.1, Mixmaster, an MTA (that provides a sendmail command), slang-2.3.1, OpenSSL-1.1.0f or GnuTLS-3.5.14, Berkeley DB-6.2.32 or QDBM or Tokyo Cabinet
libxslt-1.1.29 and either Lynx-2.8.8rel.2, w3m-0.5.3, or ELinks
docbook-dsssl-1.79, OpenJade-1.3.2, and texlive-20170524 (or install-tl-unx)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/mutt
Mutt requires a group named
mail
. You can add this group,
if it does not exist, with this command:
groupadd -g 34 mail
If you did not install an MTA,
you need to modify the ownership of /var/mail
with this command:
chgrp -v mail /var/mail
Mutt will rebuild the html documentation if libxslt is present, then use that to update the text manual - even if none of the specified browsers are present. That will create an empty text file, so we will save the shipped file.
Install Mutt by running the following commands:
cp -v doc/manual.txt{,.shipped} && ./configure --prefix=/usr \ --sysconfdir=/etc \ --with-docdir=/usr/share/doc/mutt-1.8.3 \ --enable-external-dotlock \ --enable-pop \ --enable-imap \ --enable-hcache \ --enable-sidebar && make && test -s doc/manual.txt || mv -v doc/manual.txt{.shipped,}
To generate the PDF manual with texlive-20170524, run the following command:
make -C doc manual.pdf
This package does not come with a test suite.
Now, as the root
user:
make install
If you generated the PDF manual, install it by issuing the
following command as the root
user:
install -v -m644 doc/manual.pdf \ /usr/share/doc/mutt-1.8.3
If you used a DESTDIR method to only install to a temporary
location as a regular user (as part of a package menagement
process), you will need to run the following as the
root
user after completing
the real install:
chown root:mail /usr/bin/mutt_dotlock && chmod -v 2755 /usr/bin/mutt_dotlock
--enable-external-dotlock
: In
some circumstances the mutt-dotlock program is not created.
This switch ensures it is always created.
--enable-pop
: This
switch enables POP3 support.
--enable-imap
: This
switch enables IMAP support.
--enable-hcache
: This
switch enables header caching.
--enable-sidebar
:
This switch enables support for the sidebar (a list of
mailboxes). It is off by default, but can be turned on by
:set
sidebar_visible in mutt (and off again with
':unset'), or it can be enabled in ~/.muttrc
.
--enable-smtp
: This switch
enables SMTP relay support.
--with-ssl
: This parameter adds
SSL/TLS support from OpenSSL-1.1.0f in POP3/IMAP/SMTP if they
are enabled.
--with-sasl
: This parameter adds
authentication support from Cyrus SASL-2.1.26
in POP3/IMAP/SMTP if they are enabled. Depending on the
server configuration, this may not be needed for POP3 or
IMAP. However, it is needed for SMTP authentication.
test -s doc/manual.txt || mv -v doc/manual.txt{.shipped,}: if the text manual is now empty (libxslt is installed, but without any of the specified text browsers), restore it from the copy.
is a bug submitter for Mutt. |
|
is a Mail User Agent (MUA) which enables you to read, write and delete your email. |
|
implements the mail spool file lock. |
|
is a script that executes flea. |
|
prepares a command line for the GnuPG-2.1.23 utilities. |
|
is a key ring dumper for PGP. It is not needed for GnuPG-2.1.23. |
|
manages a keystore for S/MIME certificates. |
Last updated on 2017-08-26 17:08:59 -0700
The Procmail package contains an autonomous mail processor. This is useful for filtering and sorting incoming mail.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://www.ring.gr.jp/archives/net/mail/procmail/procmail-3.22.tar.gz
Download (FTP): ftp://ftp.ucsb.edu/pub/mirrors/procmail/procmail-3.22.tar.gz
Download MD5 sum: 1678ea99b973eb77eda4ecf6acae53f1
Download size: 226 KB
Estimated disk space required: 1.7 MB
Estimated build time: less than 0.1 SBU
A MTA that installs sendmail
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/procmail
This package does not come with a test suite.
Install Procmail by running
the following commands as the root
user:
sed -i 's/getline/get_line/' src/*.[ch] && make LOCKINGTEST=/tmp MANDIR=/usr/share/man install && make install-suid
sed -i 's/getline/get_line/' src/*.[ch]: This renames procmail's getline function to avoid conflict with the getline function from glibc.
make LOCKINGTEST=/tmp install: This prevents make from asking you where to test file-locking patterns.
make install-suid: Modifies permissions of the installed files.
Recipes have to be written and placed in ~/.procmailrc
for execution. The
procmailex man page is the starting place to learn how to
write recipes. For additional information, see also
http://pm-doc.sourceforge.net/.
is a filter that can be used to format mail into mailbox format. |
|
is a utility that can lock a file for single use interactively or in a script. |
|
prints a summary report of mail that has been filtered by procmail since the last time mailstat was ran. |
|
is an autonomous mail processor. It performs all the functions of an MDA (Mail Delivery Agent). |
Last updated on 2017-08-23 21:43:54 -0700
Balsa-2.5.3 is a GTK2 based mail client.
SeaMonkey-2.48 includes both a mail client and newsreader in its installation.
Thunderbird-52.3.0 is a mail/news client based on the Mozilla code base.
Last updated on 2013-06-01 05:20:39 -0700
Major servers are the programs that provide content or services to users or other programs.
The Apache HTTPD package contains an open-source HTTP server. It is useful for creating local intranet web sites or running huge web serving operations.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://archive.apache.org/dist/httpd/httpd-2.4.27.tar.bz2
Download MD5 sum: 97b6bbfa83c866dbe20ef317e3afd108
Download size: 6.2 MB
Estimated disk space required: 118 MB
Estimated build time: 0.7 SBU
Berkeley DB-6.2.32, Doxygen-1.8.13, libxml2-2.9.4, Lynx-2.8.8rel.2 or Links-2.14 or ELinks, nghttp2-1.25.0, OpenLDAP-2.4.45 (Apr-Util-1.6.0 needs to be installed with ldap suport), rsync-3.1.2, Distcache, and Lua-5.3.4
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/apache
For security reasons, running the server as an unprivileged
user and group is strongly encouraged. Create the following
group and user using the following commands as root
:
groupadd -g 25 apache && useradd -c "Apache Server" -d /srv/www -g apache \ -s /bin/false -u 25 apache
Build and install Apache HTTPD by running the following commands:
patch -Np1 -i ../httpd-2.4.27-blfs_layout-1.patch && sed '/dir.*CFG_PREFIX/s@^@#@' -i support/apxs.in && ./configure --enable-authnz-fcgi \ --enable-layout=BLFS \ --enable-mods-shared="all cgi" \ --enable-mpms-shared=all \ --enable-suexec=shared \ --with-apr=/usr/bin/apr-1-config \ --with-apr-util=/usr/bin/apu-1-config \ --with-suexec-bin=/usr/lib/httpd/suexec \ --with-suexec-caller=apache \ --with-suexec-docroot=/srv/www \ --with-suexec-logfile=/var/log/httpd/suexec.log \ --with-suexec-uidmin=100 \ --with-suexec-userdir=public_html && make
This package does not come with a test suite.
Now, as the root
user:
This package does not install properly using DESTDIR techniques as an unpriviledged user.
make install && mv -v /usr/sbin/suexec /usr/lib/httpd/suexec && chgrp apache /usr/lib/httpd/suexec && chmod 4754 /usr/lib/httpd/suexec && chown -v -R apache:apache /srv/www
sed '/dir.*CFG_PREFIX/s@^@#@'...: Forces the apxs utility to use absolute pathnames for modules, when instructed to do so.
--enable-authnz-fcgi
:
Build FastCGI authorizer-based authentication and
authorization (mod_authnz_fcgi.so fast CGI module).
--enable-mods-shared="all
cgi"
: The modules should be compiled and used as
Dynamic Shared Objects (DSOs) so they can be included and
excluded from the server using the run-time configuration
directives.
--enable-mpms-shared=all
: This
switch ensures that all MPM (Multi Processing Modules) are
built as Dynamic Shared Objects (DSOs), so the user can
choose which one to use at runtime.
--enable-suexec
: This
switch enables building of the Apache suEXEC module which can be used
to allow users to run CGI and SSI scripts under user IDs
different from the user ID of the calling web server.
--with-suexec-*
:
These switches control suEXEC module behavior, such as
default document root, minimal UID that can be used to run
the script under the suEXEC. Please note that with minimal
UID 100, you can't run CGI or SSI scripts under suEXEC as the
apache
user.
...
/usr/lib/httpd/suexec: These commands put
suexec wrapper
into proper location, since it is not meant to be run
directly. They also adjust proper permissions of the binary,
making it setgid apache
.
chown -R apache:apache
/srv/www: By default, the installation
process installs files (documentation, error messages,
default icons, etc.) with the ownership of the user that
extracted the files from the tar file. If you want to change
the ownership to another user, you should do so at this
point. The only requirement is that the document directories
need to be accessible by the httpd process with (r-x)
permissions and files need to be readable (r--) by the
apache
user.
See file:///usr/share/httpd/manual/configuring.html for detailed instructions on customising your Apache HTTP server configuration file.
If you want the Apache
server to start automatically when the system is booted,
install the httpd.service
unit included in the
blfs-systemd-units-20160602
package.
make install-httpd
is a tool for benchmarking your Apache HTTP server. |
|
is a front end to the Apache HTTP server which is designed to help the administrator control the functioning of the Apache httpd daemon. |
|
is a tool for building and installing extension modules for the Apache HTTP server. |
|
is a program that checks whether it can setgid to the group specified. This is to see if it is a valid group for Apache2 to use at runtime. If the user (should be run as superuser) is in that group, or can setgid to it, it will return 0. |
|
is used to create and update the DBM format files used to store usernames and passwords for basic authentication of HTTP users. |
|
is a tool to start a FastCGI program. |
|
is used to clean up the disk cache. |
|
is used to manipulate the DBM password databases. |
|
is used to create and update the flat-files used to store usernames, realms and passwords for digest authentication of HTTP users. |
|
is used to create and update the flat-files used to store usernames and passwords for basic authentication of HTTP users. |
|
is the Apache HTTP server program. |
|
is used to generate DBM files from text, for use in RewriteMap. |
|
is a post-processing program to resolve IP-addresses in Apache's access log files. |
|
is a simple program for use in conjunction with Apache's piped log file feature. |
|
allows users to run CGI and SSI applications as a different user. |
Last updated on 2017-08-26 09:42:24 -0700
The BIND package provides a DNS server and client utilities. If you are only interested in the utilities, refer to the BIND Utilities-9.11.2.
This package is known to build and work properly using an LFS-8.1 platform.
Download (FTP): ftp://ftp.isc.org/isc/bind9/9.11.2/bind-9.11.2.tar.gz
Download MD5 sum: efca7e5a63a07efba264da9be2fbb57f
Download size: 9.3 MB
Estimated disk space required: 119 MB (additional 192 MB for the test suite)
Estimated build time: 1.0 SBU (additional 30+ minutes, processor independent, to run the complete test suite)
Optional patch (if net-tools is not installed): http://www.linuxfromscratch.org/patches/blfs/8.1/bind-9.11.2-use_iproute2-1.patch
libcap-2.25 with PAM, libxml2-2.9.4, MIT Kerberos V5-1.15.1, OpenSSL-1.1.0f, and geoip
Berkeley DB-6.2.32, MariaDB-10.2.8 or MySQL, OpenLDAP-2.4.45, PostgreSQL-9.6.4, and unixODBC-2.3.4
Net::DNS-1.12 and Net-tools-CVS_20101030 (you may omit net-tools by using the optional patch to utilize iproute2, but the IPv6 tests will fail)
Doxygen-1.8.13, libxslt-1.1.29, and texlive-20170524 (or install-tl-unx)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/bind
If you have chosen not to install net-tools, apply the iproute2 patch with the following command:
patch -Np1 -i ../bind-9.11.2-use_iproute2-1.patch
Install BIND by running the following commands:
./configure --prefix=/usr \ --sysconfdir=/etc \ --localstatedir=/var \ --mandir=/usr/share/man \ --enable-threads \ --with-libtool \ --disable-static \ --with-randomdev=/dev/urandom && make
Issue the following commands to run the complete suite of
tests. First, as the root
user, set up some test interfaces:
If IPv6 is not enabled in the kernel, there will be several error messages: "RTNETLINK answers: Operation not permitted". These messages do not afffect the tests.
bin/tests/system/ifconfig.sh up
The test suite may indicate some skipped tests depending on what configuration options are used. Some tests are marked “UNTESTED ” if Net::DNS-1.12 is not installed. To run the tests, as an unprivileged user, execute:
make -k check
Again as root
, clean up the
test interfaces:
bin/tests/system/ifconfig.sh down
Finally, install the package as the root
user:
make install && install -v -m755 -d /usr/share/doc/bind-9.11.2/{arm,misc} && install -v -m644 doc/arm/*.html \ /usr/share/doc/bind-9.11.2/arm && install -v -m644 doc/misc/{dnssec,ipv6,migrat*,options,rfc-compliance,roadmap,sdb} \ /usr/share/doc/bind-9.11.2/misc
--sysconfdir=/etc
:
This parameter forces BIND
to look for configuration files in /etc
instead of /usr/etc
.
--enable-threads
:
This parameter enables multi-threading capability.
--with-libtool
: This
parameter forces the building of dynamic libraries and links
the installed binaries to these libraries.
--with-randomdev=/dev/urandom
:
This parameter specifes a non-blocking random device for use
with digital signatures.
--enable-fetchlimit
: Use this
option if you want to be able to limit the rate of recursive
client queries. This may be useful on servers which receive a
large number of queries.
--disable-static
:
This switch prevents installation of static versions of the
libraries.
cd doc; install ...: These commands install additional package documentation. Omit any or all of these commands if desired.
BIND will be configured to
run in a chroot jail as an
unprivileged user (named
).
This configuration is more secure in that a DNS compromise
can only affect a few files in the named
user's HOME
directory.
Create the unprivileged user and group named
:
groupadd -g 20 named && useradd -c "BIND Owner" -g named -s /bin/false -u 20 named && install -d -m770 -o named -g named /srv/named
Set up some files, directories and devices needed by BIND:
mkdir -p /srv/named && cd /srv/named && mkdir -p dev etc/namedb/{slave,pz} usr/lib/engines var/run/named && mknod /srv/named/dev/null c 1 3 && mknod /srv/named/dev/urandom c 1 9 && chmod 666 /srv/named/dev/{null,urandom} && cp /etc/localtime etc && touch /srv/named/managed-keys.bind
The rndc.conf
file contains
information for controlling named operations with the
rndc utility.
Generate a key for use in the named.conf
and rdnc.conf
with the rndc-confgen command:
rndc-confgen -r /dev/urandom -b 512 > /etc/rndc.conf && sed '/conf/d;/^#/!d;s:^# ::' /etc/rndc.conf > /srv/named/etc/named.conf
Complete the named.conf
file
from which named will read the
location of zone files, root name servers and secure DNS
keys:
cat >> /srv/named/etc/named.conf << "EOF"
options {
directory "/etc/namedb";
pid-file "/var/run/named.pid";
statistics-file "/var/run/named.stats";
};
zone "." {
type hint;
file "root.hints";
};
zone "0.0.127.in-addr.arpa" {
type master;
file "pz/127.0.0";
};
// Bind 9 now logs by default through syslog (except debug).
// These are the default logging rules.
logging {
category default { default_syslog; default_debug; };
category unmatched { null; };
channel default_syslog {
syslog daemon; // send to syslog's daemon
// facility
severity info; // only send priority info
// and higher
};
channel default_debug {
file "named.run"; // write to named.run in
// the working directory
// Note: stderr is used instead
// of "named.run"
// if the server is started
// with the '-f' option.
severity dynamic; // log at the server's
// current debug level
};
channel default_stderr {
stderr; // writes to stderr
severity info; // only send priority info
// and higher
};
channel null {
null; // toss anything sent to
// this channel
};
};
EOF
Create a zone file with the following contents:
cat > /srv/named/etc/namedb/pz/127.0.0 << "EOF"
$TTL 3D
@ IN SOA ns.local.domain. hostmaster.local.domain. (
1 ; Serial
8H ; Refresh
2H ; Retry
4W ; Expire
1D) ; Minimum TTL
NS ns.local.domain.
1 PTR localhost.
EOF
Create the root.hints
file
with the following commands:
Caution must be used to ensure there are no leading spaces in this file.
cat > /srv/named/etc/namedb/root.hints << "EOF"
. 6D IN NS A.ROOT-SERVERS.NET.
. 6D IN NS B.ROOT-SERVERS.NET.
. 6D IN NS C.ROOT-SERVERS.NET.
. 6D IN NS D.ROOT-SERVERS.NET.
. 6D IN NS E.ROOT-SERVERS.NET.
. 6D IN NS F.ROOT-SERVERS.NET.
. 6D IN NS G.ROOT-SERVERS.NET.
. 6D IN NS H.ROOT-SERVERS.NET.
. 6D IN NS I.ROOT-SERVERS.NET.
. 6D IN NS J.ROOT-SERVERS.NET.
. 6D IN NS K.ROOT-SERVERS.NET.
. 6D IN NS L.ROOT-SERVERS.NET.
. 6D IN NS M.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET. 6D IN A 198.41.0.4
A.ROOT-SERVERS.NET. 6D IN AAAA 2001:503:ba3e::2:30
B.ROOT-SERVERS.NET. 6D IN A 192.228.79.201
B.ROOT-SERVERS.NET. 6D IN AAAA 2001:500:200::b
C.ROOT-SERVERS.NET. 6D IN A 192.33.4.12
C.ROOT-SERVERS.NET. 6D IN AAAA 2001:500:2::c
D.ROOT-SERVERS.NET. 6D IN A 199.7.91.13
D.ROOT-SERVERS.NET. 6D IN AAAA 2001:500:2d::d
E.ROOT-SERVERS.NET. 6D IN A 192.203.230.10
E.ROOT-SERVERS.NET. 6D IN AAAA 2001:500:a8::e
F.ROOT-SERVERS.NET. 6D IN A 192.5.5.241
F.ROOT-SERVERS.NET. 6D IN AAAA 2001:500:2f::f
G.ROOT-SERVERS.NET. 6D IN A 192.112.36.4
G.ROOT-SERVERS.NET. 6D IN AAAA 2001:500:12::d0d
H.ROOT-SERVERS.NET. 6D IN A 198.97.190.53
H.ROOT-SERVERS.NET. 6D IN AAAA 2001:500:1::53
I.ROOT-SERVERS.NET. 6D IN A 192.36.148.17
I.ROOT-SERVERS.NET. 6D IN AAAA 2001:7fe::53
J.ROOT-SERVERS.NET. 6D IN A 192.58.128.30
J.ROOT-SERVERS.NET. 6D IN AAAA 2001:503:c27::2:30
K.ROOT-SERVERS.NET. 6D IN A 193.0.14.129
K.ROOT-SERVERS.NET. 6D IN AAAA 2001:7fd::1
L.ROOT-SERVERS.NET. 6D IN A 199.7.83.42
L.ROOT-SERVERS.NET. 6D IN AAAA 2001:500:9f::42
M.ROOT-SERVERS.NET. 6D IN A 202.12.27.33
M.ROOT-SERVERS.NET. 6D IN AAAA 2001:dc3::35
EOF
The root.hints
file is a list
of root name servers. This file must be updated
periodically with the dig utility. A current
copy of root.hints can be obtained from ftp://rs.internic.net/domain/named.root.
For details, consult the "BIND 9 Administrator Reference
Manual", included in every source archive of BIND 9
distributed by ISC, in HTML and PDF formats, also available
at BIND
9 Administrator Reference Manual.
Create or modify resolv.conf
to use the new name server with the following commands:
Replace <yourdomain.com>
with your own valid domain name.
cp /etc/resolv.conf /etc/resolv.conf.bak &&
cat > /etc/resolv.conf << "EOF"
search <yourdomain.com>
nameserver 127.0.0.1
EOF
Set permissions on the chroot jail with the following command:
chown -R named:named /srv/named
To start the DNS server at boot, install the
named.service
unit included in the blfs-systemd-units-20160602
package.
make install-named
Now start BIND with the following command:
systemctl start named
Test out the new BIND 9 installation. First query the local host address with dig:
dig -x 127.0.0.1
Now try an external name lookup, taking note of the speed difference in repeated lookups due to the caching. Run the dig command twice on the same address:
dig www.linuxfromscratch.org && dig www.linuxfromscratch.org
You can see almost instantaneous results with the named
caching lookups. Consult the BIND Administrator Reference Manual
located at doc/arm/Bv9ARM.html
in the package source
tree, for further configuration options.
translates IP addresses to the corresponding ARPA names. |
|
is hardlinked to isc-config.sh. |
|
generates a key for use by nsupdate and named. |
|
is a new debugging tool that is a successor to dig. |
|
interrogates DNS servers. |
|
outputs the Delegation Signer (DS) resource record (RR). |
|
reads a public DNSKEY record and generates a pair of .key/.private files. |
|
gets keys with the given label from a crypto hardware and builds key files for DNSSEC. |
|
is a key generator for secure DNS. |
|
sets the REVOKED bit on a DNSSEC key. |
|
sets the key timing metadata for a DNSSEC key. |
|
generates signed versions of zone files. |
|
verifies that a zone is fully signed for each algorithm found in the DNSKEY RRset for the zone, and that the NSEC / NSEC3 chains are complete. |
|
generates a file containing random data. |
|
is a utility for DNS lookups. |
|
prints information related to the installed version of ISC BIND. |
|
fixes HMAC keys generated by older versions of BIND. |
|
is a caching-only name server for local process use. |
|
is the name server daemon. |
|
checks the syntax of |
|
checks zone file validity. |
|
is similar to named-checkzone, but it always dumps the zone contents to a specified file in a specified format. |
|
prints the zone journal in human-readable form. |
|
reads an individual DNS resource record from standard input and checks if it is syntactically correct. |
|
generates an NSEC3 hash based on a set of NSEC3 parameters. |
|
is a program used to query Internet domain nameservers. |
|
is used to submit DNS update requests. |
|
controls the operation of BIND. |
|
generates |
|
is a symlink to ddns-confgen. |
Last updated on 2017-08-29 17:44:28 -0700
The ProFTPD package contains a secure and highly configurable FTP daemon. This is useful for serving large file archives over a network.
This package is known to build and work properly using an LFS-8.1 platform.
Download (FTP): ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.6.tar.gz
Download MD5 sum: 13270911c42aac842435f18205546a1b
Download size: 19 MB
Estimated disk space required: 65 MB
Estimated build time: 0.3 SBU
libcap-2.25 with PAM, Linux-PAM-1.3.0, MariaDB-10.2.8 or MySQL, OpenSSL-1.1.0f, PCRE-8.41, and PostgreSQL-9.6.4
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/proftpd
For security reasons, you should install ProFTPD using an unprivileged user and
group. As the root
user:
groupadd -g 46 proftpd && useradd -c proftpd -d /srv/ftp -g proftpd \ -s /usr/bin/proftpdshell -u 46 proftpd && install -v -d -m775 -o proftpd -g proftpd /srv/ftp && ln -v -s /bin/false /usr/bin/proftpdshell && echo /usr/bin/proftpdshell >> /etc/shells
Install ProFTPD as an unprivileged user by running the following commands:
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var/run && make
This packages does not come with a usable test suite.
Now, as the root
user:
make install && install -d -m755 /usr/share/doc/proftpd-1.3.6 && cp -Rv doc/* /usr/share/doc/proftpd-1.3.6
install -v -d -m775 -o proftpd -g proftpd /srv/ftp: Create the home directory for ProFTPD.
ln -v -s /bin/false /usr/bin/proftpdshell: Set the default shell as a link to an invalid shell.
echo /usr/bin/proftpdshell >> /etc/shells: Fake a valid shell for compatibility purposes.
The above two commands can be omitted if the following directive is placed in the configuration file:
RequireValidShell off
By default, proftpd will require that users logging in have valid shells. The RequireValidShell directive turns off this requirement. This is only recommended if you are setting up your FTP server exclusively for anonymous downloads.
Support for most of the dependency packages requires using options passed to the configure script. View the output from ./configure --help for complete information about enabling dependency packages.
This is a simple, download-only sample configuration. See
the ProFTPD documentation
in /usr/share/doc/proftpd
and
consult the website at http://www.proftpd.org/ for
example configurations.
cat > /etc/proftpd.conf << "EOF"
# This is a basic ProFTPD configuration file
# It establishes a single server and a single anonymous login.
ServerName "ProFTPD Default Installation"
ServerType standalone
DefaultServer on
# Port 21 is the standard FTP port.
Port 21
# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
Umask 022
# To prevent DoS attacks, set the maximum number of child processes
# to 30. If you need to allow more than 30 concurrent connections
# at once, simply increase this value. Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
MaxInstances 30
# Set the user and group that the server normally runs at.
User proftpd
Group proftpd
# To cause every FTP user to be "jailed" (chrooted) into their home
# directory, uncomment this line.
#DefaultRoot ~
# Normally, files should be overwritable.
<Directory /*>
AllowOverwrite on
</Directory>
# A basic anonymous configuration, no upload directories.
<Anonymous ~proftpd>
User proftpd
Group proftpd
# Clients should be able to login with "anonymous" as well as "proftpd"
UserAlias anonymous proftpd
# Limit the maximum number of anonymous logins
MaxClients 10
# 'welcome.msg' should be displayed at login, and '.message' displayed
# in each newly chdired directory.
DisplayLogin welcome.msg
DisplayChdir .message
# Limit WRITE everywhere in the anonymous chroot
<Limit WRITE>
DenyAll
</Limit>
</Anonymous>
EOF
Install the proftpd.service
unit included in
the blfs-systemd-units-20160602
package.
make install-proftpd
is the FTP daemon. |
|
shows the current number of connections. |
|
is used to control the proftpd daemon while it is running. |
|
is a Perl script designed to create and manage AuthUserFiles and AuthGroupFiles of the correct format for proftpd. |
|
is a Perl script for sending email based on the proftpd TransferLog. |
|
is a Perl script designed to create and manage limits and tally files for the mod_quotatab + mod_quotatab_file module combination for proftpd. |
|
provides a way to scrub the scoreboard file on demand. |
|
shuts down all proftpd servers at a given time. |
|
displays running status on connections. |
|
shows current process information for each session. |
|
is a Perl script designed to compile and install third-party modules, from source code, as DSO modules for the installed proftpd. |
Last updated on 2017-08-29 20:55:36 -0700
The vsftpd package contains a very secure and very small FTP daemon. This is useful for serving files over a network.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://security.appspot.com/downloads/vsftpd-3.0.3.tar.gz
Download MD5 sum: da119d084bd3f98664636ea05b5bb398
Download size: 196 KB
Estimated disk space required: 2 MB
Estimated build time: less than 0.1 SBU
libcap-2.25 with PAM, and Linux-PAM-1.3.0
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/vsftpd
For security reasons, running vsftpd as an unprivileged user and group
is encouraged. Also, a user should be created to map
anonymous users. As the root
user, create the needed directories, users, and groups with
the following commands:
install -v -d -m 0755 /usr/share/vsftpd/empty && install -v -d -m 0755 /home/ftp && groupadd -g 47 vsftpd && groupadd -g 45 ftp && useradd -c "vsftpd User" -d /dev/null -g vsftpd -s /bin/false -u 47 vsftpd && useradd -c anonymous_user -d /home/ftp -g ftp -s /bin/false -u 45 ftp
Build vsftpd as an unprivileged user using the following command:
make
This package does not come with a test suite.
Once again, become the root
user and install vsftpd with
the following commands:
install -v -m 755 vsftpd /usr/sbin/vsftpd && install -v -m 644 vsftpd.8 /usr/share/man/man8 && install -v -m 644 vsftpd.conf.5 /usr/share/man/man5 && install -v -m 644 vsftpd.conf /etc
install -v -d
...: This creates the directory that
anonymous users will use (/home/ftp
) and the directory the daemon
will chroot into (/usr/share/vsftpd/empty
).
/home/ftp
should not be owned
by the user vsftpd
, or the
user ftp
.
echo "#define VSF_BUILD_TCPWRAPPERS" >>builddefs.h: Use this prior to make to add support for tcpwrappers.
echo "#define VSF_BUILD_SSL" >>builddefs.h: Use this prior to make to add support for SSL.
install -v -m
...: The Makefile
uses non-standard installation
paths. These commands install the files in /usr
and /etc
.
vsftpd comes with a basic
anonymous-only configuration file that was copied to
/etc
above. While still as
root
, this file should be
modified because it is now recommended to run vsftpd in standalone
mode. Also, you should specify the privilege separation
user created above. Finally, you should specify the
chroot
directory. man
vsftpd.conf will give you all the details.
cat >> /etc/vsftpd.conf << "EOF"
background=YES
listen=YES
nopriv_user=vsftpd
secure_chroot_dir=/usr/share/vsftpd/empty
EOF
To enable local logins, append the following to the
/etc/vsftpd.conf
file (as the
root
user):
cat >> /etc/vsftpd.conf << "EOF"
local_enable=YES
EOF
In addition, if using Linux-PAM and vsftpd with local user logins, you
will need a Linux-PAM
configuration file. As the root
user, create the /etc/pam.d/vsftpd
file, and add the
needed configuration changes for Linux-PAM session support using the
following commands:
cat > /etc/pam.d/vsftpd << "EOF" &&# Begin /etc/pam.d/vsftpd auth required /lib/security/pam_listfile.so item=user sense=deny \ file=/etc/ftpusers \ onerr=succeed auth required pam_shells.so auth include system-auth account include system-account session include system-session
EOF cat >> /etc/vsftpd.conf << "EOF"session_support=YES pam_service_name=vsftpd
EOF
Install the vsftpd.service
unit included in
the blfs-systemd-units-20160602
package.
make install-vsftpd
Last updated on 2017-08-29 20:55:36 -0700
MTAs are the programs which transport mail from one machine to the other. The traditional MTA is Sendmail, however there are several other choices.
As well as SMTP servers there is a POP server (qpopper) and an IMAP server (Courier-IMAP).
Dovecot is an Internet Message Access Protocol (IMAP) and Post Office Protocol (POP) server, written primarily with security in mind. Dovecot aims to be lightweight, fast and easy to set up as well as highly configurable and easily extensible with plugins.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://www.dovecot.org/releases/2.2/dovecot-2.2.32.tar.gz
Download MD5 sum: 534feae88700ddc704584e0fc8ee5bdc
Download size: 5.8 MB
Estimated disk space required: 147 MB (add 6 MB for tests)
Estimated build time: 1.4 SBU (add 1.6 SBU for tests)
CLucene-2.3.3.4, ICU-59.1, libcap-2.25 with PAM, Linux-PAM-1.3.0, MariaDB-10.2.8 or MySQL, MIT Kerberos V5-1.15.1 (for GSSAPI support), OpenLDAP-2.4.45, OpenSSL-1.1.0f, PostgreSQL-9.6.4, SQLite-3.20.0, Valgrind-3.13.0, Cassandra, lz4, and stemmer
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/dovecot
There should be dedicated users and groups for unprivileged
Dovecot processes and for processing users' logins. Issue the
following commands as the root
user:
groupadd -g 42 dovecot && useradd -c "Dovecot unprivileged user" -d /dev/null -u 42 \ -g dovecot -s /bin/false dovecot && groupadd -g 43 dovenull && useradd -c "Dovecot login user" -d /dev/null -u 43 \ -g dovenull -s /bin/false dovenull
Install Dovecot by running the following commands:
CFLAGS+="-I/usr/include/tirpc" \ LDFLAGS+="-ltirpc" \ ./configure --prefix=/usr \ --sysconfdir=/etc \ --localstatedir=/var \ --docdir=/usr/share/doc/dovecot-2.2.32 \ --disable-static \ --with-systemdsystemunitdir=/lib/systemd/system && make
To test the results, issue make -k check. An error may be reported if Valgrind-3.13.0 is present when running the test.
Now, as the root
user:
make install
CFLAGS+=...LDFLAGS+=...: build with libtirpc instead of the recently removed RPC code provided by GlibC.
--disable-static
:
This switch prevents installation of static versions of the
libraries.
--with-systemdsystemunitdir=/lib/systemd/system
:
This switch is used to set the correct installation directory
for systemd units.
--with-ldap
: This switch enables
OpenLDAP authentication
support.
--with-pgsql
: This switch enables
PostgreSQL authentication
support.
--with-mysql
: This switch enables
MySQL authentication
support.
--with-sqlite
: This switch
enables SQLite
authentication support.
--with-lucene
: This switch
enables CLucene full text
search support.
--with-krb5
: This switch enables
GSSAPI authentication support.
Copy an example configuration, which you can use as a starting point:
cp -rv /usr/share/doc/dovecot-2.2.32/example-config/* /etc/dovecot
The following configuration is a simple proof of concept
with IMAP service using local users for authentication and
mailbox location. Reading files from the conf.d
directory is commented out since
the included example configuration requires OpenSSL and Linux PAM.
sed -i '/^\!include / s/^/#/' /etc/dovecot/dovecot.conf &&
chmod -v 1777 /var/mail &&
cat > /etc/dovecot/local.conf << "EOF"
protocols = imap
ssl = no
# The next line is only needed if you have no IPv6 network interfaces
listen = *
mail_location = mbox:~/Mail:INBOX=/var/mail/%u
userdb {
driver = passwd
}
passdb {
driver = shadow
}
EOF
You will definitely want to read the official documentation at http://wiki2.dovecot.org/ if you plan to use Dovecot in production environment.
/usr/lib/dovecot
Last updated on 2017-08-31 13:35:17 -0700
The Exim package contains a Mail Transport Agent written by the University of Cambridge, released under the GNU Public License.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): http://mirrors-usa.go-parts.com/eximftp/exim/exim4/exim-4.89.tar.xz
Download (FTP): ftp://ftp.exim.org/pub/exim/exim4/exim-4.89.tar.xz
Download MD5 sum: b569ec80c495dffc54545895e680ed61
Download size: 1.6 MB
Estimated disk space required: 14 MB
Estimated build time: 0.2 SBU
Additional formats of the documentation (text-based docs are shipped with the sources) can be downloaded by following the links shown at http://exim.org/docs.html.
Recommended patch (prevents triggering CVE-2017-1000369 by using exim commands): http://www.linuxfromscratch.org/patches/blfs/8.1/exim-4.89-avoid_mem_clash-1.patch
Berkeley DB-6.2.32 or TDB (alternatives to GDBM, built in LFS), Cyrus SASL-2.1.26, libidn-1.33, Linux-PAM-1.3.0, MariaDB-10.2.8 or MySQL, OpenLDAP-2.4.45, GnuTLS-3.5.14, PostgreSQL-9.6.4, SQLite-3.20.0, X Window System, Heimdal GSSAPI, and OpenDMARC
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/exim
Before building Exim, as the
root
user you should create
the group and user exim
which
will run the exim daemon:
groupadd -g 31 exim && useradd -d /dev/null -c "Exim Daemon" -g exim -s /bin/false -u 31 exim
Install Exim with the following commands:
patch -p1 -i ../exim-4.89-avoid_mem_clash-1.patch && sed -e 's,^BIN_DIR.*$,BIN_DIRECTORY=/usr/sbin,' \ -e 's,^CONF.*$,CONFIGURE_FILE=/etc/exim.conf,' \ -e 's,^EXIM_USER.*$,EXIM_USER=exim,' \ -e '/SUPPORT_TLS/s,^#,,' \ -e '/USE_OPENSSL/s,^#,,' \ -e 's,^EXIM_MONITOR,#EXIM_MONITOR,' src/EDITME > Local/Makefile && printf "USE_GDBM = yes\nDBMLIB = -lgdbm\n" >> Local/Makefile && make
This package does not come with a test suite.
Now, as the root
user:
make install && install -v -m644 doc/exim.8 /usr/share/man/man8 && install -v -d -m755 /usr/share/doc/exim-4.89 && install -v -m644 doc/* /usr/share/doc/exim-4.89 && ln -sfv exim /usr/sbin/sendmail && install -v -d -m750 -o exim -g exim /var/spool/exim
sed -e ... >
Local/Makefile: Most of Exim's configuration options are defined
in Local/Makefile
, which is
created from the src/EDITME
file. This command specifies the minimum set of options.
Descriptions for the options are listed below.
printf ... > Local/Makefile: Setting those variables allows to use GDBM instead of the default Berkeley DB. Remove this command if you have installed Berkeley DB-6.2.32.
BIN_DIRECTORY=/usr/sbin
: This
installs all of Exim's
binaries and scripts in /usr/sbin
.
CONFIGURE_FILE=/etc/exim.conf
:
This installs Exim's main
configuration file in /etc
.
EXIM_USER=exim
: This
tells Exim that after the
daemon no longer needs root
privileges, the process hands off the daemon to the
exim
user.
SUPPORT_TLS=yes
: This
allows to support STARTTLS connexions. If you use this
option, you need to select whether OpenSSL or GnuTLS is used (see src/EDITME
).
USE_OPENSSL_PC=openssl
: This
tells the build system to use OpenSSL, and to find the needed
libraries with pkg-config.
#EXIM_MONITOR
: This
defers building the Exim
monitor program, as it requires X
Window System support, by commenting out the
EXIM_MONITOR
line in
the Makefile
. If you wish to
build the monitor program, omit this sed command and issue the
following command before building the package (modify
Local/eximon.conf
, if
necessary): cp
exim_monitor/EDITME Local/eximon.conf.
ln -sfv exim /usr/sbin/sendmail: Creates a link to sendmail for applications which need it. Exim will accept most Sendmail command-line options.
install -v -m750 -o exim -g
exim /var/spool/exim: Since /var/spool is
owned by root and this version of exim drops root
privileges early, to run as user
exim
, it cannot create the
/var/spool/exim
directory. As a
work around, it is created manually.
To utilize some or all of the dependency packages, you'll
need to modify Local/Makefile
to include the appropriate directives and parameters to link
additional libraries before you build Exim. Local/Makefile
is heavily commented with
instructions on how to do this. Listed below is additional
information to help you link these dependency packages or add
additional functionality.
If you wish to build and install the .info
documentation, refer to
http://exim.org/exim-html-4.89/doc/html/spec_html/ch04.html#SECTinsinfdoc.
If you wish to build in Exim's interfaces for calling virus
and spam scanning software directly from access control
lists, uncomment the WITH_CONTENT_SCAN=yes
parameter and review
the information found at
http://exim.org/exim-html-4.89/doc/html/spec_html/ch45.html.
To use a backend database other than Berkeley DB, see the instructions at http://exim.org/exim-html-4.89/doc/html/spec_html/ch04.html#SECTdb.
For SSL functionality, see the instructions at http://exim.org/exim-html-4.89/doc/html/spec_html/ch04.html#SECTinctlsssl and http://exim.org/exim-html-4.89/doc/html/spec_html/ch42.html.
For tcpwrappers functionality, see the instructions at http://exim.org/exim-html-4.89/doc/html/spec_html/ch04.html#SECID27.
For information about adding authentication mechanisms to the build, see chapters 33—41 of http://exim.org/exim-html-4.89/doc/html/spec_html/index.html.
For information about linking Linux-PAM, refer to the instructions http://exim.org/exim-html-4.89/doc/html/spec_html/ch11.html#SECTexpcond.
For information about linking database engine libraries used for Exim name lookups, see the instructions at http://exim.org/exim-html-4.89/doc/html/spec_html/ch09.html.
If you wish to add Readline
support to Exim when invoked
in “test expansion”
(-be
) mode, see the information
in the -be
section of
http://exim.org/exim-html-4.89/doc/html/spec_html/ch05.html#id2525974.
You may wish to modify the default configuration and send log
files to syslog instead of the default /var/spool/exim/log
directory. See the
information at
http://exim.org/exim-html-4.89/doc/html/spec_html/ch52.html.
A wealth of information can be also found at the Exim Wiki.
Review the file /etc/exim.conf
, and modify any settings
to suit your needs. Note that the default configuration
assumes that the /var/mail
directory is world writable, but has the stiky bit set. If
you want to use the default configuration, issue as the
root
user:
chmod -v a+wt /var/mail
A default (nothing but comments) /etc/aliases
file is installed during the
package installation if this file did not exist on your
system. Create the necessary aliases and start the
Exim daemon using the
following commands:
cat >> /etc/aliases << "EOF"
postmaster: root
MAILER-DAEMON: root
EOF
exim -v -bi &&
/usr/sbin/exim -bd -q15m
To protect an existing /etc/aliases
file, the command above
appends these aliases to it. This file should be checked
and duplicate aliases removed, if present.
The /usr/sbin/exim -bd -q15m command starts the Exim daemon with a 15 minute interval in processing the mail queue. Adjust this parameter to suit your desires.
To automatically start exim at boot, install the
exim.service
unit included in the blfs-systemd-units-20160602
package.
make install-exim
cycles Exim log files. |
|
searches Exim log files. |
|
is a symlink to the exim-4.89-3 MTA daemon. |
|
is the Exim mail transport agent daemon. |
|
states whether a given recipient address from a given host is acceptable or not. |
|
creates and rebuilds Exim databases. |
|
writes the contents of Exim databases to the standard output. |
|
modifies data in Exim databases. |
|
locks a mailbox file. |
|
removes old records from Exim databases. |
|
generates mail statistics from Exim log files. |
|
queries remote host retry times. |
|
selects messages based on various criteria. |
|
is a utility for selective queue listing. |
|
produces a summary of the messages in the mail queue. |
|
queries running Exim processes. |
|
is a start-up shell script for eximon.bin used to set the required environment variables before running the program. |
|
is a monitor program which displays current information in an X window, and also contains a menu interface to Exim's command line administration options. |
Last updated on 2017-08-26 22:03:17 -0700
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.
This package is known to build and work properly using an LFS-8.1 platform.
Download (FTP): ftp://ftp.porcupine.org/mirrors/postfix-release/official/postfix-3.2.2.tar.gz
Download MD5 sum: aea073a9b0bea5bdb590460a270a4aa0
Download size: 4.2 MB
Estimated disk space required: 175 MB
Estimated build time: 0.4 SBU
Berkeley DB-6.2.32, Cyrus SASL-2.1.26, libnsl-1.1.0, and OpenSSL-1.1.0f
ICU-59.1 for Email Address Internationalization (SMTPUTF8) support, MariaDB-10.2.8 or MySQL, OpenLDAP-2.4.45, PCRE-8.41, PostgreSQL-9.6.4, SQLite-3.20.0, and CDB or TinyCDB
Note that SQLite, MySQL, PostgreSQL and CDB are only useful if there is a known need for them.
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/postfix
Before you compile the program, you need to create users
and groups that will be expected to be in place during the
installation. Add the users and groups with the following
commands issued by the root
user:
groupadd -g 32 postfix && groupadd -g 33 postdrop && useradd -c "Postfix Daemon User" -d /var/spool/postfix -g postfix \ -s /bin/false -u 32 postfix && chown -v postfix:postfix /var/mail
The README files are formatted to be read with a pager like Less or More. If you want to use a text editor, make them legible with the following sed:
sed -i 's/.\x08//g' README_FILES/*
The Postfix source tree
does not contain a configure
script, rather the makefile in the top-level directory
contains a makefiles
target
that regenerates all the other makefiles in the build tree.
If you wish to use additional software such as a database
back-end for virtual users, or TLS/SSL authentication, you
will need to regenerate the makefiles using one or more of
the appropriate CCARGS
and
AUXLIBS
settings listed below.
For more details read the readme files.
To use Cyrus-SASL with Postfix, use the following arguments:
CCARGS='-DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl'
AUXLIBS='-lsasl2'
To use OpenLDAP with Postfix, use the following arguments:
CCARGS='-DHAS_LDAP'
AUXLIBS='-lldap -llber'
To use Sqlite with Postfix, use the following arguments:
CCARGS='-DHAS_SQLITE'
AUXLIBS='-lsqlite3 -lpthread'
To use MySQL with Postfix, use the following arguments:
CCARGS='-DHAS_MYSQL -I/usr/include/mysql'
AUXLIBS='-lmysqlclient -lz -lm'
To use PostgreSQL with Postfix, use the following arguments:
CCARGS='-DHAS_PGSQL -I/usr/include/postgresql'
AUXLIBS='-lpq -lz -lm'
To use CDB or TinyCDB with Postfix, use the following arguments:
CCARGS='-DHAS_CDB'
AUXLIBS='</path/to/CDB>
/libcdb.a'
If you have Cyrus SASL and OpenSSL installed, install Postfix by running the following commands:
make CCARGS="-DUSE_TLS -I/usr/include/openssl/ \ -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl" \ AUXLIBS="-lssl -lcrypto -lsasl2" \ makefiles && make
This package does not come with a useful test suite.
Now, as the root
user:
sh postfix-install -non-interactive \ daemon_directory=/usr/lib/postfix \ manpage_directory=/usr/share/man \ html_directory=/usr/share/doc/postfix-3.2.2/html \ readme_directory=/usr/share/doc/postfix-3.2.2/readme
make makefiles:
This command rebuilds the makefiles throughout the source
tree to use the options contained in the CCARGS
and AUXLIBS
variables.
sh postfix-install
-non-interactive: This keeps the install
script from asking any questions, thereby accepting default
destination directories in all but the few cases. If the
html_directory
and readme_directory
options are not set then the
documentation will not be installed.
CCARGS="-DNO_EAI ..."
: this will
turn off SMTPUTF8 support, for example if the rest of your
email address infrastructure cannot handle UTF-8 email
addresses and message header values.
Create (or append to an existing) /etc/aliases
with the following command.
Change <LOGIN>
for your
non-root login identity so mail addressed to root
can be forwarded to you. As the
root
user:
cat >> /etc/aliases << "EOF"
# Begin /etc/aliases
MAILER-DAEMON: postmaster
postmaster: root
root: <LOGIN>
# End /etc/aliases
EOF
To protect an existing /etc/aliases
file, the above command
appends these aliases to it if it exists. This file should
be checked and duplicate aliases removed, if present.
The /etc/postfix/main.cf
and /etc/postfix/master.cf
files must be personalized for your system. The
main.cf
file needs your
fully qualified hostname. You will find that main.cf
is self documenting, so load it
into your editor to make the changes you need for your
situation.
Postfix can also be set
up to run in a chroot jail. See the file in the source
examples/chroot-setup/LINUX2
for
details.
If you have an existing configuration, you can run the
postfix
utility to add any necessary definitions to your existing
files. As the root
user:
/usr/sbin/postfix upgrade-configuration
Before starting Postfix,
you should check that your configuration and file
permissions will work properly. Run the following commands
as the root
user to check
and start your Postfix
server:
/usr/sbin/postfix check && /usr/sbin/postfix start
To automate the running of Postfix at startup, install the
postfix.service
unit included in the blfs-systemd-units-20160602
package.
make install-postfix
A symlink to |
|
A symlink to |
|
is a utility for Postfix alias database maintenance |
|
Prints the contents of files from the Postfix queue in human readable format. |
|
Displays or changes the value of Postfix configuration parameters. |
|
Creates a file in the maildrop directory and copies its standard input to the file. |
|
is the Postfix control program. |
|
Sends requests to the specified service over a local transport channel. |
|
Locks a mail folder for exclusive use, and executes commands passed to it. |
|
A Postfix-compatible logging interface for use in, for example, shell scripts. |
|
Creates or queries one or more Postfix lookup tables, or updates an existing one. |
|
is the Postfix multi-instance manager. It allows a system administrator to manage multiple Postfix instances on a single host. |
|
The Postfix user interface for queue management. |
|
The Postfix user interface for superuser queue management. |
|
is the Postfix to Sendmail compatibility interface. |
Last updated on 2017-08-23 23:54:51 -0700
The sendmail package contains a Mail Transport Agent (MTA).
This package is known to build and work properly using an LFS-8.1 platform.
Download (FTP): ftp://ftp.sendmail.org/pub/sendmail/sendmail.8.15.2.tar.gz
Download MD5 sum: a824fa7dea4d3341efb6462ccd816f00
Download size: 2.1 MB
Estimated disk space required: 14 MB
Estimated build time: 0.2 SBU
OpenLDAP-2.4.45 (client)
OpenSSL-1.0.2l Libraries and Cyrus SASL-2.1.26
ghostscript-9.21 (for creating PDF documentation), Procmail-3.22 (the configuration proposed below requires that procmail be present at run-time), and nph
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/sendmail
Before building sendmail,
create the required user, group and directory with the
following commands issued as the root
user:
groupadd -g 26 smmsp && useradd -c "Sendmail Daemon" -g smmsp -d /dev/null \ -s /bin/false -u 26 smmsp && chmod -v 1777 /var/mail && install -v -m700 -d /var/spool/mqueue
See the source tree sendmail/README
file for information on
linking optional packages into the build. Use the example
below, which adds support for SASL, StartTLS (OpenSSL) and OpenLDAP, as a starting point. Of
course, modify it to suit your particular needs.
cat >> devtools/Site/site.config.m4 << "EOF"
APPENDDEF(`confENVDEF',`-DSTARTTLS -DSASL -DLDAPMAP')
APPENDDEF(`confLIBS', `-L/usr/lib/openssl-1.0 -lssl -lcrypto -lsasl2 -lldap -llber -ldb')
APPENDDEF(`confINCDIRS', `-I/usr/include/sasl -I/usr/include/openssl-1.0')
EOF
Install sendmail with the following commands:
cat >> devtools/Site/site.config.m4 << "EOF"
define(`confMANGRP',`root')
define(`confMANOWN',`root')
define(`confSBINGRP',`root')
define(`confUBINGRP',`root')
define(`confUBINOWN',`root')
EOF
sed -i 's|/usr/man/man|/usr/share/man/man|' \
devtools/OS/Linux &&
cd sendmail &&
sh Build &&
cd ../cf/cf &&
cp generic-linux.mc sendmail.mc &&
sh Build sendmail.cf
This package does not come with a test suite.
Now, as the root
user:
install -v -d -m755 /etc/mail && sh Build install-cf && cd ../.. && sh Build install && install -v -m644 cf/cf/{submit,sendmail}.mc /etc/mail && cp -v -R cf/* /etc/mail && install -v -m755 -d /usr/share/doc/sendmail-8.15.2/{cf,sendmail} && install -v -m644 CACerts FAQ KNOWNBUGS LICENSE PGPKEYS README RELEASE_NOTES \ /usr/share/doc/sendmail-8.15.2 && install -v -m644 sendmail/{README,SECURITY,TRACEFLAGS,TUNING} \ /usr/share/doc/sendmail-8.15.2/sendmail && install -v -m644 cf/README /usr/share/doc/sendmail-8.15.2/cf && for manpage in sendmail editmap mailstats makemap praliases smrsh do install -v -m644 $manpage/$manpage.8 /usr/share/man/man8 done && install -v -m644 sendmail/aliases.5 /usr/share/man/man5 && install -v -m644 sendmail/mailq.1 /usr/share/man/man1 && install -v -m644 sendmail/newaliases.1 /usr/share/man/man1 && install -v -m644 vacation/vacation.1 /usr/share/man/man1
Install the sendmail Installation and Operations Guide with the following commands:
Remove op.pdf
from the
make and
install
commands below if you don't have Ghostscript installed.
cd doc/op && sed -i 's/groff/GROFF_NO_SGR=1 groff/' Makefile && make op.txt op.pdf
Now, as the root
user:
install -v -d -m755 /usr/share/doc/sendmail-8.15.2 && install -v -m644 op.ps op.txt op.pdf /usr/share/doc/sendmail-8.15.2 && cd ../..
cat > devtools/Site/site.config.m4 << "EOF": This creates a configuration file changing some of the default settings.
sed ... devtools/OS/Linux: The site.config.m4 does not honor a change to the man directory, so fix it in the OS definitions.
sed ... include/sm/bdb.h: This allows sendmail to build properly with Berkeley DB-6.2.32 versions 5 and above.
sh Build; sh Build sendmail.cf;
sh Build install-cf; sh Build install:
sendmail uses an
m4 based build script to
create the various Makefile
s.
These commands build and install the package.
for manpage in...;do...;done; install ...: The man pages are installed already formatted and man displays them somewhat garbled. These commands replace the formatted pages with pages man can display properly.
Ensure you have a fully qualified domain name defined in
/etc/hosts
for your system
before proceeding.
Create the /etc/mail/local-host-names
and
/etc/mail/aliases
files using
the following commands as the root
user:
echo $(hostname) > /etc/mail/local-host-names
cat > /etc/mail/aliases << "EOF"
postmaster: root
MAILER-DAEMON: root
EOF
newaliases
sendmail's primary
configuration file, /etc/mail/sendmail.cf
, is complex and not
meant to be directly edited. The recommended method for
changing it is to modify /etc/mail/sendmail.mc
and various
m4 files, then run the
m4 macro
processor from within /etc/mail
as follows:
cd /etc/mail && m4 m4/cf.m4 sendmail.mc > sendmail.cf
A full explanation of the files to modify, and the
available parameters can be found in /etc/mail/README
.
To automate the running of sendmail at startup, install the
sendmail.service
unit included in the blfs-systemd-units-20160602
package.
make install-sendmail
The -qNm option to sendmail, where N is number of minutes, controls how often sendmail will process the mail queue. A default of 5 minutes is used in the systemd unit. Individual workstation users may want to set this as low as 1 minute, large installations handling more mail may want to set it higher.
queries and edits sendmail map files. |
|
prints sendmail's persistent host status. |
|
displays sendmail statistics. |
|
prints a summary of outbound mail messages waiting for delivery. |
|
creates sendmail map files. |
|
rebuilds |
|
displays current sendmail aliases. |
|
causes sendmail to clear (purge) all its host-status information. |
|
is the sendmail mail transport agent. |
|
is a restricted shell for sendmail. |
|
is an email auto responder. |
Last updated on 2017-08-23 21:43:54 -0700
This chapter includes databases that range from single-user read/write to industrial database servers with transaction support. Generally, you will be sent here to satisfy dependencies to other applications although building a SQL server on a base LFS system is entirely possible.