17. Networking Libraries
These applications are support libraries for other applications in the book. It is unlikely that you would just install these libraries, you will generally find that you will be referred to this chapter to satisfy a dependency of other applications.
17.1 c-ares-1.19.0
Introduction to c-ares
c-ares is a C library for asynchronous DNS requests.
This package is known to build and work properly using an LFS 11.3 platform.
Package Information
-
Download (HTTP): https://c-ares.haxx.se/download/c-ares-1.19.0.tar.gz
-
Download MD5 sum: 2668790bc92603e292d0fbcb25ded39c
-
Download size: 1.5 MB
-
Estimated disk space required: 11 MB
-
Estimated build time: less than 0.1 SBU
c-ares Dependencies
Required
Installation of c-ares
Install c-ares by running the following commands:
mkdir build &&
cd build &&
cmake -
This package does not include a test suite.
Now, as the root user:
make install
Contents
Installed Programs: acountry, adig, and ahost
Installed Libraries: libcares.so
Installed Directories: None
Short Descriptions
acountry prints the country where an IPv4 address or host is located.
adig queries information from DNS servers.
ahost prints the A or AAAA record associated with a hostname or IP address.
libcares.so is a C library for asynchronous DNS requests.
17.2 cURL-7.88.1
Introduction to cURL
The cURL package contains an utility and a library used for transferring files with URL syntax to any of the following protocols: DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, POP3, POP3S, RTSP, SMB, SMBS, SMTP, SMPTS, TELNET, and TFTP. 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 11.3 platform.
Package Information
-
Download (HTTP): https://curl.se/download/curl-7.88.1.tar.xz
-
Download MD5 sum: 8bea0c58428578f397471fe209fad6ab
-
Download size: 2.5 MB
-
Estimated disk space required: 150 MB (add 23 MB for tests)
-
Estimated build time: 0.2 SBU (with parallelism=4; add 16 SBU for tests)
cURL Dependencies
Recommended
make-ca-1.12 (runtime)
Optional
Brotli-1.0.9, c-ares-1.19.0, GnuTLS-3.8.0, libidn2-2.3.4, libpsl-0.21.2, libssh2-1.10.0, MIT Kerberos V5-1.20.1, nghttp2-1.52.0, OpenLDAP-2.6.4, Samba-4.17.5, gsasl, impacket, libmetalink, librtmp, ngtcp2, quiche, and SPNEGO
Optional if Running the Test Suite
stunnel-5.68 (for the HTTPS and FTPS tests) and Valgrind-3.20.0 (this will slow the tests down and may cause failures.)
User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/curl
Installation of cURL
Install cURL by running the following commands:
./configure --prefix=/usr \
--disable-static \
--with-openssl \
--enable-threaded-resolver \
--with-ca-path=/etc/ssl/certs &&
make
To run the test suite, issue: make test. If Samba is installed, the related tests will output a message duplicated many times complaining the Python module impacket (not a part of BLFS) is missing and be skipped.
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.88.1 &&
cp -v -R docs/* /usr/share/doc/curl-7.88.1
Simple tests to the new installed curl: curl –trace-ascii debugdump.txt https://www.example.com/ and curl –trace-ascii d.txt –trace-time https://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.
Command Explanations
--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 store.
--with-openssl: This parameter chooses OpenSSL as SSL/TLS implementation. This seems mandatory now.
--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/pki/tls/certs/ca-bundle.crt: Use this switch instead of --with-ca-path if building with GnuTLS support instead of OpenSSL for SSL/TLS.
--with-libssh2: This parameter adds SSH support to cURL. This is disabled by default.
--enable-ares: This parameter adds support for DNS resolution through the c-ares library. It overrides --enable-threaded-resolver and is not widely tested by the editors.
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.
Contents
Installed Programs: curl and curl-config
Installed Library: libcurl.so
Installed Directories: /usr/include/curl and /usr/share/doc/curl-7.88.1
Short Descriptions
curl is a command line tool for transferring files with URL syntax.
curl-config prints information about the last compile, like libraries linked to and prefix setting.
libcurl.so provides the API functions required by curl and other programs.
17.3 GeoClue-2.7.0
Introduction to GeoClue
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 11.3 platform.
Package Information
-
Download (HTTP): https://gitlab.freedesktop.org/geoclue/geoclue/-/archive/2.7.0/geoclue-2.7.0.tar.bz2
-
Download MD5 sum: 8226cc9d4b2750b6ebdfd59e7815bf2a
-
Download size: 104 KB
-
Estimated disk space required: 6.8 MB
-
Estimated build time: 0.2 SBU
GeoClue Dependencies
Required
JSON-GLib-1.6.6 and libsoup-3.2.2
Recommended
ModemManager-1.18.12, Vala-0.56.4, and Avahi-0.8
Optional
GTK-Doc-1.33.2 and libnotify-0.8.1
User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/geoclue2
Installation of GeoClue
Install GeoClue by running the following commands:
mkdir build &&
cd build &&
meson --prefix=/usr --buildtype=release -Dgtk-doc=false .. &&
ninja
This package does not come with a test suite.
Now, as the root user:
ninja install
Command Explanations
--buildtype=release: Specify a buildtype suitable for stable releases of the package, as the default may produce unoptimized binaries.
-D3g-source=false: This switch disables the 3G backend. Use it if you have not installed the ModemManager package.
-Dmodem-gps-source=false: This switch disables the modem GPS backend. Use it if you have not installed the ModemManager package.
-Dcdma-source=false: This switch disables the CDMA source backend. Use it if you have not installed the ModemManager package.
-Dnmea-source=false: This switch disables the NMEA source. Use it if you have not installed the Avahi package.
-Ddemo-agent=false: This switch disables the demo. Use it if you have not installed the libnotify package.
Contents
Installed Programs: None
Installed Libraries: libgeoclue-2.so
Installed Directories: /etc/geoclue, /usr/include/libgeoclue-2.0, /usr/libexec/geoclue-2.0, and /usr/share/gtk-doc/html/{geoclue,libgeoclue}.
17.4 glib-networking-2.74.0
Introduction to GLib Networking
The GLib Networking package contains Network related gio modules for GLib.
This package is known to build and work properly using an LFS 11.3 platform.
Package Information
-
Download (HTTP): https://download.gnome.org/sources/glib-networking/2.74/glib-networking-2.74.0.tar.xz
-
Download MD5 sum: 7fc6ca153af0833fdf5c65044a3f7c42
-
Download size: 272 KB
-
Estimated disk space required: 8.9 MB (with tests)
-
Estimated build time: 0.1 SBU (with tests)
GLib Networking Dependencies
Required
Recommended
gsettings-desktop-schemas-43.0 (for the applications using this package to use proxy server settings in GNOME) and make-ca-1.12
Optional
User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/glib-networking
Installation of GLib Networking
Install GLib Networking by running the following commands:
mkdir build &&
cd build &&
meson --prefix=/usr \
--buildtype=release &&
ninja
To test the results, issue: ninja test. One test named connection-gnutls-tls1.2 is known to fail with GnuTLS 3.7.8 or later.
Now, as the root user:
ninja install
Command Explanations
--buildtype=release: Specify a buildtype suitable for stable releases of the package, as the default may produce unoptimized binaries.
Contents
Installed Program: None
Installed Libraries: libgioenvironmentproxy.so, libgiognomeproxy.so, and libgiognutls.so (GIO Modules installed in /usr/lib/gio/modules)
Installed Directories: None
17.5 kdsoap-2.1.1
Introduction to kdsoap
The kdsoap is Qt-based client-side and server-side SOAP component. It can be used to create client applications for web services and also provides the means to create web services without the need for any further component such as a dedicated web server.
This package is known to build and work properly using an LFS 11.3 platform.
Package Information
-
Download (HTTP): https://github.com/KDAB/KDSoap/releases/download/kdsoap-2.1.1/kdsoap-2.1.1.tar.gz
-
Download MD5 sum: 7dff6d770e1942997d986207e3107585
-
Download size: 928 KB
-
Estimated disk space required: 25 MB
-
Estimated build time: 0.4 SBU (Using parallelism=4)
kdsoap Dependencies
Required
User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/kdsoap
Installation of kdsoap
Install kdsoap by running the following commands:
mkdir build &&
cd build &&
cmake -DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_DOCDIR=/usr/share/doc/kdsoap-2.1.1 \
.. &&
make
The package does not come with a test suite.
Now, as the root user:
make install
Contents
Installed Programs: kdwsdl2cpp
Installed Libraries: libkdsoap.so and libkdsoap-server.so
Installed Directories: /usr/lib/cmake/KDSoap, /usr/share/doc/kdsoap-2.1.1, /usr/include/KDSoapClient. and /usr/include/KDSoapServer.
17.6 ldns-1.8.3
Introduction to ldns
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 11.3 platform.
Package Information
-
Download (HTTP): https://www.nlnetlabs.nl/downloads/ldns/ldns-1.8.3.tar.gz
-
Download MD5 sum: 429b93dacb2d6ecc5ed63788b14c38e6
-
Download size: 1.2 MB
-
Estimated disk space required: 30 MB (with docs)
-
Estimated build time: 0.2 SBU (with docs)
ldns Dependencies
Optional
make-ca-1.12 and libpcap-1.10.3 (for example programs), Python-2.7.18 and SWIG-4.1.1 (for Python bindings), and Doxygen-1.9.6 (for html documentation)
User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/ldns
Installation of ldns
Install ldns by running the following commands:
./configure --prefix=/usr \
--sysconfdir=/etc \
--disable-static \
--with-drill &&
make
If you have Doxygen-1.9.6 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.8.3 &&
install -v -m644 doc/html/* /usr/share/doc/ldns-1.8.3
Command Explanations
--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))
--disable-dane-ta-usage: This option disables DANE-TA (DNS-Based Authentication of Named Entities) support. It is only needed if OpenSSL-1.1.0 or later is not installed.
--with-examples: This option enables building of the example programs.
--with-pyldns: This option enables building of the Python bindings.
Contents
Installed Programs: drill and ldns-config
Installed Library: libldns.so and /usr/lib/python2.7/site-packages/_ldns.so
Installed Directories: /usr/include/ldns and /usr/share/doc/ldns-1.8.3
Short Descriptions
drill is a tool like dig from BIND Utilities-9.18.12 designed to get all sorts of information out of the DNS.
ldns-config shows compiler and linker flags for ldns usage.
libldns.so provides the ldns API functions to programs.
17.7 libevent-2.1.12
Introduction to libevent
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 11.3 platform.
Package Information
-
Download (HTTP): https://github.com/libevent/libevent/releases/download/release-2.1.12-stable/libevent-2.1.12-stable.tar.gz
-
Download MD5 sum: b5333f021f880fe76490d8a799cd79f4
-
Download size: 1.0 MB
-
Estimated disk space required: 20 MB (add 4 MB for tests and 4 MB for API docs)
-
Estimated build time: 0.3 SBU (add 11 SBU for tests)
libevent Dependencies
Optional
Doxygen-1.9.6 (for API documentation)
User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libevent
Installation of libevent
First, fix an issue that prevents event_rpcgen.py from working:
sed -i 's/python/&3/' event_rpcgen.py
Install libevent by running the following commands:
./configure --prefix=/usr --disable-static &&
make
If you have Doxygen-1.9.6 installed and wish to build API documentation, issue :
doxygen Doxyfile
To test the results, issue: make verify. Six tests in every suite related to regress_ssl.c and regress_http.c are known to fail due to incompatibilities with OpenSSL-3.
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.12/api &&
cp -v -R doxygen/html/* \
/usr/share/doc/libevent-2.1.12/api
Command Explanations
--disable-static: This switch prevents installation of static versions of the libraries.
Contents
Installed Program: event_rpcgen.py
Installed Libraries: libevent_core.so, libevent_extra.so, libevent_openssl.so, libevent_pthreads.so and libevent.so
Installed Directory: /usr/include/event2 and /usr/share/doc/libevent-2.1.12.
17.8 libmnl-1.0.5
Introduction to libmnl
The libmnl library provides a minimalistic userspace library oriented to Netlink developers. There are a lot of common tasks in the parsing, validating, and constructing of both the Netlink header and TLVs that are repetitive and easy to get wrong. This library aims to provide simple helpers that allow you to re-use code and to avoid re-inventing the wheel.
This package is known to build and work properly using an LFS 11.3 platform.
Package Information
-
Download (HTTP): https://netfilter.org/projects/libmnl/files/libmnl-1.0.5.tar.bz2
-
Download MD5 sum: 0bbb70573119ec5d49435114583e7a49
-
Download size: 308 KB
-
Estimated disk space required: 2.9 MB
-
Estimated build time: less than 0.1 SBU
libnma Dependencies
Optional
User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libmnl
Installation of libmnl
Install libmnl by running the following commands:
./configure --prefix=/usr &&
make
This package does not come with a test suite.
Now, as the root user:
make install
Contents
Installed Library: libmnl.so
Short Descriptions
libmnl.so provides functions for parsing, validating, constructing of both the Netlink header and TLVs.
17.9 libnl-3.7.0
Introduction to libnl
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 11.3 platform.
Package Information
-
Download (HTTP): https://github.com/thom311/libnl/releases/download/libnl3_7_0/libnl-3.7.0.tar.gz
-
Download MD5 sum: b381405afd14e466e35d29a112480333
-
Download size: 980 KB
-
Estimated disk space required: 31 MB (with API documentation)
-
Estimated build time: 0.4 SBU (with API documentation)
Optional Download
-
Download (HTTP): https://github.com/thom311/libnl/releases/download/libnl3_7_0/libnl-doc-3.7.0.tar.gz
-
Download MD5 sum: 15f55a421a16ff4084c4a1af085c19b8
-
Download size: 13 MB
User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libnl
Installation of libnl
Install libnl by running the following commands:
./configure --prefix=/usr \
--sysconfdir=/etc \
--disable-static &&
make
This package does not come with a working test suite.
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.7.0 &&
tar -xf ../libnl-doc-3.7.0.tar.gz --strip-components=1 --no-same-owner \
-C /usr/share/doc/libnl-3.7.0
Command Explanations
--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.
Contents
Installed Programs: genl-ctrl-list, idiag-socket-details, nl-class-add, nl-class-delete, nl-classid-lookup, nl-class-list, nl-cls-add, nl-cls-delete, nl-cls-list, nl-link-list, nl-pktloc-lookup, nl-qdisc-add, nl-qdisc-delete, nl-qdisc-list, and 48 other helper programs with nl- and nf- prefixes
Installed Libraries: libnl-3.so, libnl-cli-3.so, libnl-genl-3.so, libnl-idiag-3.so, libnl-nf-3.so, libnl-route-3.so, libnl-xfrm-3.so, and cli modules under /usr/lib/libnl/cli tree
Installed Directories: /etc/libnl, /usr/include/libnl3, /usr/lib/libnl, and /usr/share/doc/libnl-3.7.0
Short Descriptions
genl-ctrl-list 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.
nl-class-add adds, updates, or replaces Traffic Classes.
nl-class-delete deletes Traffic Classes.
nl-classid-lookup is used to resolve qdisc/class names to classid values and vice versa.
nl-class-list lists Traffic Classes.
nl-cls-add adds a classifier.
nl-cls-delete deletes a classifier.
nl-cls-list lists classifiers.
nl-link-list dumps link attributes.
nl-pktloc-lookup allows the lookup of packet location definitions.
nl-qdisc-add adds queueing disciplines (qdiscs) in the kernel.
nl-qdisc-delete deletes queueing disciplines (qdiscs) in the kernel.
nl-qdisc-list lists queueing disciplines (qdiscs) in the kernel.
libnl*-3.so These libraries contain API functions used to access Netlink interfaces in Linux kernel.
17.10 libnma-1.10.6
Introduction to libnma
The libnma package contains an implementation of the NetworkManager GUI functions.
This package is known to build and work properly using an LFS 11.3 platform.
Package Information
-
Download (HTTP): https://download.gnome.org/sources/libnma/1.10/libnma-1.10.6.tar.xz
-
Download (FTP): ftp://ftp.acc.umu.se/pub/gnome/sources/libnma/1.10/libnma-1.10.6.tar.xz
-
Download MD5 sum: 71c7ce674fea1fae8f1368a7fcb6ff43
-
Download size: 688 KB
-
Estimated disk space required: 15 MB
-
Estimated build time: 0.1 SBU (Using parallism=4; with test)
libnma Dependencies
Required
Gcr-3.41.1, GTK+-3.24.36, ISO Codes-4.12.0, and NetworkManager-1.42.0
Recommended
GTK-4.8.3 and Vala-0.56.4
Optional
mobile-broadband-provider-info
User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libnma
Installation of libnma
Install libnma by running the following commands:
mkdir build &&
cd build &&
meson --prefix=/usr \
--buildtype=release \
-Dgtk_doc=false \
-Dlibnma_gtk4=true \
-Dmobile_broadband_provider_info=false .. &&
ninja
To test the results, issue: ninja test.
Now, as the root user:
ninja install
Command Explanations
--buildtype=release: Specify a buildtype suitable for stable releases of the package, as the default may produce unoptimized binaries.
-Dgtk_doc=false: This parameter disables generating API documentation using gtk-doc. If you have GTK-Doc-1.33.2 installed and wish to generate the API documentation, omit this switch.
-Dlibnma_gtk4=true: This parameter is only needed by the latest gnome-control-center-43.4.1.
-Dmobile_broadband_provider_info=false: This switch disables WWAN support because mobile-broadband-provider-info is not in BLFS. Omit this switch if you have it installed and wish to enable WWAN support.
Contents
Installed Programs: None
Installed Libraries: libnma.so and libnma-gtk4.so
Installed Directories: /usr/include/libnma
Short Descriptions
libnma.so contains the NetworkManager GUI library.
libnma-gtk4.so contains the GTK-4 version of the NetworkManager GUI library.
17.11 libnsl-2.0.0
Introduction to libnsl
The libnsl package contains the public client interface for NIS(YP). It replaces the NIS library that used to be in glibc.
This package is known to build and work properly using an LFS 11.3 platform.
Package Information
-
Download (HTTP): https://github.com/thkukuk/libnsl/releases/download/v2.0.0/libnsl-2.0.0.tar.xz
-
Download MD5 sum: 1e8c0615071ea13202452304de1eaab9
-
Download size: 280 KB
-
Estimated disk space required: 3.2 MB
-
Estimated build time: less than 0.1 SBU
libnsl Dependencies
Required
rpcsvc-proto-1.4.3 and libtirpc-1.3.3
User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libnsl
Installation of libnsl
Install libnsl by running the following commands:
./configure --sysconfdir=/etc --disable-static &&
make
This package does not come with a test suite.
Now, as the root user:
make install
Command Explanations
--disable-static: This switch prevents installation of static versions of the libraries.
Contents
Installed Programs: None
Installed Libraries: libnsl.so
Installed Directories: None
Short Descriptions
libnsl.so provides the NIS (YP) API functions required by other programs.
17.12 libpcap-1.10.3
Introduction to libpcap
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 11.3 platform.
Package Information
-
Download (HTTP): https://www.tcpdump.org/release/libpcap-1.10.3.tar.gz
-
Download MD5 sum: c42fde2eb75a5075f19116f8c9768573
-
Download size: 932 KB
-
Estimated disk space required: 11 MB
-
Estimated build time: less than 0.1 SBU
libpcap Dependencies
Optional
BlueZ-5.66, libnl-3.7.0, libusb-1.0.26, Software distribution for the DAG, and Septel range of passive network monitoring cards.
User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libpcap
Installation of libpcap
Install libpcap by running the following commands:
./configure --prefix=/usr &&
make
This package does not come with a test suite.
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
Contents
Installed Program: pcap-config
Installed Libraries: libpcap.so
Installed Directory: /usr/include/pcap
Short Descriptions
pcap-config provides configuration information for libpcap.
libpcap.{a,so} are libraries used for user-level packet capture.
17.13 libpsl-0.21.2
Introduction to libpsl
The libpsl package provides a library for accessing and resolving information from the Public Suffix List (PSL). The PSL is a set of domain names beyond the standard suffixes, such as .com.
This package is known to build and work properly using an LFS 11.3 platform.
Package Information
-
Download (HTTP): https://github.com/rockdaboot/libpsl/releases/download/0.21.2/libpsl-0.21.2.tar.gz
-
Download MD5 sum: 2864d3eb744b378d68f5c4da25603459
-
Download size: 7.2 MB
-
Estimated disk space required: 51 MB
-
Estimated build time: less than 0.1 SBU (including tests)
libpsl Dependencies
Required
Optional
GTK-Doc-1.33.2 (for documentation) and Valgrind-3.20.0 (for tests)
User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libpsl
Installation of libpsl
Install libpsl by running the following commands:
sed -i 's/env python/&3/' src/psl-make-dafsa &&
./configure --prefix=/usr --disable-static PYTHON=python3 &&
make
To test the results, issue: make check.
Now, as the root user:
make install
Command Explanations
sed -i …: This command forces the use of Python 3 in an utility.
Contents
Installed Program: psl
Installed Library: libpsl.so
Installed Directories: None
Short Descriptions
psl queries the Public Suffix List.
libpsl.so contains a library used to access the Public Suffix List.
17.14 libndp-1.8
Introduction to libndp
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 11.3 platform.
Package Information
-
Download (HTTP): http://libndp.org/files/libndp-1.8.tar.gz
-
Download MD5 sum: c7e775fd5a9d676e8cba9c3732c4df93
-
Download size: 360 KB
-
Estimated disk space required: 2.5 MB
-
Estimated build time: less than 0.1 SBU
User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libndp
Installation of 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
Contents
Installed Program: ndptool
Installed Library: libndp.so
Installed Directory: None
Short Descriptions
ndptool is a tool for sending and receiving NDP messages.
libndp.so provides a wrapper for the IPv6 Neighbor Discovery Protocol.
17.15 Libslirp-4.7.0
Introduction to libslirp
Libslirp is a user-mode networking library used by virtual machines, containers or various tools.
This package is known to build and work properly using an LFS 11.3 platform.
Package Information
-
Download (HTTP): https://gitlab.freedesktop.org/slirp/libslirp/-/archive/v4.7.0/libslirp-v4.7.0.tar.bz2
-
Download MD5 sum: b815c4de99265559caf5ef635a213609
-
Download size: 107 KB
-
Estimated disk space required: 3.1 MB
-
Estimated build time: less than 0.1 SBU
libslirp Dependencies
Required
User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libslirp
Installation of Libslirp
Install libslirp by running the following commands:
mkdir build &&
cd build &&
meson setup --prefix=/usr --buildtype=release .. &&
ninja
This package does not come with a test suite.
Now, as the root user:
ninja install
Command Explanations
--buildtype=release: Specify a buildtype suitable for stable releases of the package, as the default may produce unoptimized binaries.
Contents
Installed Program: None
Installed Library: libslirp.so
Installed Directory: /usr/include/slirp
Short Descriptions
libclirp.so contains user-mode TCP-IP emulation functions.
17.16 libsoup-2.74.3
Introduction to libsoup
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 11.3 platform.
Package Information
-
Download (HTTP): https://download.gnome.org/sources/libsoup/2.74/libsoup-2.74.3.tar.xz
-
Download (FTP): ftp://ftp.acc.umu.se/pub/gnome/sources/libsoup/2.74/libsoup-2.74.3.tar.xz
-
Download MD5 sum: 8f657fd301a213629204b3320c35d75a
-
Download size: 1.4 MB
-
Estimated disk space required: 17 MB (with tests)
-
Estimated build time: 0.3 SBU (Using parallelism=4; with tests)
libsoup Dependencies
Required
glib-networking-2.74.0, libpsl-0.21.2, libxml2-2.10.3, and SQLite-3.40.1
Recommended
gobject-introspection-1.74.0 and Vala-0.56.4
Optional
Apache-2.4.55 (required to run the test suite), Brotli-1.0.9, cURL-7.88.1 (required to run the test suite), sysprof-3.46.0 (for profiling), MIT Kerberos V5-1.20.1 (required to run the test suite), GTK-Doc-1.33.2, PHP-8.2.3 compiled with XMLRPC-EPI support (only used for the XMLRPC regression tests), and Samba-4.17.5 (ntlm_auth is required to run the test suite)
User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libsoup
Installation of libsoup
Install libsoup by running the following commands:
mkdir build &&
cd build &&
meson --prefix=/usr \
--buildtype=release \
-Dvapi=enabled \
-Dgssapi=disabled \
-Dsysprof=disabled \
.. &&
ninja
To test the results, issue: ninja test. One test named ssl-test is known to fail.
Now, as the root user:
ninja install
Command Explanations
--buildtype=release: Specify a buildtype suitable for stable releases of the package, as the default may produce unoptimized binaries.
-Dvapi=disabled: Use this if you have not installed Vala, e.g. because you are not building GNOME.
-Ddoc=enabled: Use this option if you want to build the documentation. Note that you must have GTK-Doc-1.33.2 installed.
-Dgssapi=disabled: libsoup defaults to building with GSSAPI support, which requires Kerberos (as does the test suite). If you are building GNOME or have kerberos installed, remove this option.
-Dsysprof=disabled: libsoup will automatically download a git version of sysprof-3.46.0 if git is available or use the installed version if available. If you need profiling, remove this option.
Contents
Installed Programs: None
Installed Libraries: libsoup-2.4.so and libsoup-gnome-2.4.so
Installed Directories: /usr/include/libsoup-2.4, /usr/include/libsoup-gnome-2.4 and /usr/share/gtk-doc/html/libsoup-2.4
Short Descriptions
libsoup-2.4.so provides functions for asynchronous HTTP connections.
libsoup-gnome-2.4.so provides GNOME specific features.
17.17 libsoup-3.2.2
Introduction to libsoup3
The libsoup3 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 11.3 platform.
Package Information
-
Download (HTTP): https://download.gnome.org/sources/libsoup/3.2/libsoup-3.2.2.tar.xz
-
Download (FTP): ftp://ftp.acc.umu.se/pub/gnome/sources/libsoup/3.2/libsoup-3.2.2.tar.xz
-
Download MD5 sum: 33902089d52f862d6b39680dd4c4e3aa
-
Download size: 1.5 MB
-
Estimated disk space required: 24 MB (with tests)
-
Estimated build time: 0.3 SBU (Using parallelism=4; with tests)
libsoup3 Dependencies
Required
glib-networking-2.74.0, libpsl-0.21.2, libxml2-2.10.3, nghttp2-1.52.0, and SQLite-3.40.1
Recommended
gobject-introspection-1.74.0 and Vala-0.56.4
Optional
Apache-2.4.55 (required to run the test suite), Brotli-1.0.9, cURL-7.88.1 (required to run the test suite), Gi-DocGen-2023.1, MIT Kerberos V5-1.20.1 (required to run the test suite), PHP-8.2.3 compiled with XMLRPC-EPI support (only used for the XMLRPC regression tests), Samba-4.17.5 (ntlm_auth is required to run the test suite), and sysprof-3.46.0 (for profiling)
User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libsoup3
Installation of libsoup3
Fix the installation path of API documentation:
sed 's/apiversion/soup_version/' -i docs/reference/meson.build
Install libsoup3 by running the following commands:
mkdir build &&
cd build &&
meson --prefix=/usr \
--buildtype=release \
-Dvapi=enabled \
-Dgssapi=disabled \
-Dsysprof=disabled \
--wrap-mode=nofallback \
.. &&
ninja
To test the results, issue: ninja test.
Now, as the root user:
ninja install
Command Explanations
--buildtype=release: Specify a buildtype suitable for stable releases of the package, as the default may produce unoptimized binaries.
--wrap-mode=nofallback: This switch prevents meson from using subproject fallbacks for any dependency declarations in the build files, stopping it downloading any optional dependency which is not installed on the system.
-Dvapi=disabled: Use this if you have not installed Vala, e.g. because you are not building GNOME.
-Ddocs=enabled: If Gi-DocGen-2023.1 is installed, the API documentation will be built and installed no matter if this option is used or not. This option causes the meson command to fail if Gi-DocGen-2023.1 is not installed.
-Dgssapi=disabled: libsoup3 defaults to building with GSSAPI support, which requires Kerberos (as does the test suite).
-Dsysprof=disabled: libsoup3 will automatically download a git version of sysprof-3.46.0 if git is available or use the installed version if available. If you need profiling, remove this option.
Contents
Installed Programs: None
Installed Libraries: libsoup-3.0.so
Installed Directories: /usr/include/libsoup-3.0, /usr/share/gtk-doc/html/libsoup-3.0 (only installed if -Ddocs=enabled is passed)
Short Descriptions
libsoup-3.0.so provides functions for asynchronous HTTP connections.
17.18 libtirpc-1.3.3
Introduction to libtirpc
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 11.3 platform.
Package Information
-
Download (HTTP): https://downloads.sourceforge.net/libtirpc/libtirpc-1.3.3.tar.bz2
-
Download MD5 sum: bacdad5c27dcf6e2830b3e26a1c8ed3f
-
Download size: 552 KB
-
Estimated disk space required: 6.8 MB
-
Estimated build time: less than 0.1 SBU
libtirpc Dependencies
Optional
MIT Kerberos V5-1.20.1 for the GSSAPI
User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libtirpc
Installation of libtirpc
Note
If updating this package, you will also need to update any existing version of rpcbind-1.2.6
./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
Command Explanations
--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.20.1) and you wish to use it.
Contents
Installed Programs: None
Installed Libraries: libtirpc.so
Installed Directory: /usr/include/tirpc
Short Descriptions
libtirpc.so provides the Remote Procedure Call (RPC) API functions required by other programs.
17.19 neon-0.32.5
Introduction to neon
neon is an HTTP and WebDAV client library, with a C interface.
This package is known to build and work properly using an LFS 11.3 platform.
Package Information
-
Download (HTTP): https://notroj.github.io/neon/neon-0.32.5.tar.gz
-
Download MD5 sum: 7976b1cd67b7228cddb7eb4f39640ac5
-
Download size: 876 KB
-
Estimated disk space required: 8.6 MB (additional 18 MB for tests)
-
Estimated build time: 0.1 SBU (add 0.4 SBU for tests)
neon Dependencies
Optional
GnuTLS-3.8.0, libxml2-2.10.3, MIT Kerberos V5-1.20.1, nss-3.88.1 (for some tests), xmlto-0.0.28 (to regenerate the documentation), libproxy, and PaKChoiS
User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/neon
Installation of neon
Install neon by running the following commands:
./configure --prefix=/usr \
--with-ssl \
--enable-shared \
--disable-static &&
make
To test the results, issue: make check.
If you wish to regenerate the documentation, issue:
make docs
Now, as the root user:
make install
Command Explanations
--with-ssl: This switch enables SSL support using OpenSSL. GnuTLS can be used instead, by passing --with-ssl=gnutls and --with-ca-bundle=/etc/pki/tls/certs/ca-bundle.crt to the configure script.
--disable-static: This switch prevents installation of static versions of the libraries.
Contents
Installed Program: neon-config
Installed Library: libneon.so
Installed Directories: /usr/include/neon and /usr/share/doc/neon-0.32.5
Short Descriptions
neon-config is a script that provides information about an installed copy of the neon library.
libneon.so is used as a high-level interface to common HTTP and WebDAV methods.
17.20 nghttp2-1.52.0
Introduction to nghttp2
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 11.3 platform.
Package Information
-
Download (HTTP): https://github.com/nghttp2/nghttp2/releases/download/v1.52.0/nghttp2-1.52.0.tar.xz
-
Download MD5 sum: 30cab20160abb7981c713544d31e2d60
-
Download size: 1.5 MB
-
Estimated disk space required: 19 MB
-
Estimated build time: less than 0.1 SBU
nghttp2 Dependencies
Recommended
Optional
The following are only used if building the full package instead of only the main libraries: Boost-1.81.0, c-ares-1.19.0, cython-0.29.33, jansson-2.14, libevent-2.1.12, sphinx-6.1.3, jemalloc, libev, mruby, and Spdylay.
CUnit is required if you wish to run the test suite.
User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/nghttp2
Installation of nghttp2
Install nghttp2 by running the following commands:
./configure --prefix=/usr \
--disable-static \
--enable-lib-only \
--docdir=/usr/share/doc/nghttp2-1.52.0 &&
make
The test suite needs CUnit, which is beyond the scope of BLFS.
Now, as the root user:
make install
Command Explanations
--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.
Contents
Installed Programs: None
Installed Libraries: libnghttp2.so
Installed Directories: /usr/include/nghttp2, /usr/share/nghttp2, and /usr/share/doc/nghttp2-1.52.0
Short Descriptions
libnghttp2.so an implementation of the Hypertext Transfer Protocol version 2 in C.
17.21 rpcsvc-proto-1.4.3
Introduction to rpcsvc-proto
The rpcsvc-proto package contains the rcpsvc protocol files and headers, formerly included with glibc, that are not included in replacement libtirpc-1.3.3, along with the rpcgen program.
This package is known to build and work properly using an LFS 11.3 platform.
Package Information
-
Download (HTTP): https://github.com/thkukuk/rpcsvc-proto/releases/download/v1.4.3/rpcsvc-proto-1.4.3.tar.xz
-
Download MD5 sum: 5cc9a871db85e34ab68a9cecfb448a97
-
Download size: 168 KB
-
Estimated disk space required: 2.1 MB
-
Estimated build time: less than 0.1 SBU
User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/rpcsvc-proto
Installation of rpcsvc-proto
Install rpcsvc-proto by running the following commands:
./configure --sysconfdir=/etc &&
make
This package does not come with a test suite.
Now, as the root user:
make install
Contents
Installed Programs: rpcgen
Installed Libraries: None
Installed Directories: /usr/include/rpcsvc
Short Descriptions
rpcgen Generates C code to implement the RPC protocol.
17.22 Serf-1.3.9
Introduction to Serf
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 11.3 platform.
Package Information
-
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
-
Estimated build time: less than 0.1 SBU
Additional Downloads
- Required patch: https://www.linuxfromscratch.org/patches/blfs/11.3/serf-1.3.9-openssl3_fixes-1.patch
Serf Dependencies
Required
Apr-Util-1.6.3 and SCons-4.4.0
Optional
MIT Kerberos V5-1.20.1, for the GSSAPI
User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/serf
Installation of Serf
First, fix an issue that causes compilation issues in other packages when using OpenSSL-3:
patch -Np1 -i ../serf-1.3.9-openssl3_fixes-1.patch
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 &&
sed -i "/ print/{s/print/print(/; s/$/)/}" SConstruct &&
sed -i "/get_contents()/s/,/.decode()&/" SConstruct &&
scons PREFIX=/usr
This package does not come with a functional test suite.
Now, as the root user:
scons PREFIX=/usr install
Command Explanations
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. The fourth command corrects for changes in scons-3.x. The last command allows to use Python 3.
GSSAPI=/usr: Use this switch if you have installed a GSSAPI library and you want serf to use it.
Contents
Installed Programs: None
Installed Library: libserf-1.so
Installed Directory: /usr/include/serf-1
Short Descriptions
libserf-1.so contains the Serf API functions.
17.23 uhttpmock-0.5.3
Introduction to uhttpmock
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 11.3 platform.
Package Information
-
Download (HTTP): https://tecnocode.co.uk/downloads/uhttpmock/uhttpmock-0.5.3.tar.xz
-
Download MD5 sum: dcbd66e80e1635e41b0e434b9852bd39
-
Download size: 311 KB
-
Estimated disk space required: 3.6 MB
-
Estimated build time: less than 0.1 SBU (with tests)
uhttpmock Dependencies
Required
Recommended
gobject-introspection-1.74.0 and Vala-0.56.4
Optional
User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/uhttpmock
Installation of 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
Command Explanations
--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.
Contents
Installed Programs: None
Installed Libraries: libuhttpmock-0.0.so
Installed Directories: /usr/include/libuhttpmock-0.0 and /usr/share/gtk-doc/html/libuhttpmock-0.0
Short Descriptions
libuhttpmock-0.0.so contains the uhttpmock API functions.