Skip to the content.

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

c-ares Dependencies

Required

CMake-3.25.2

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

cURL Dependencies

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

GeoClue Dependencies

Required

JSON-GLib-1.6.6 and libsoup-3.2.2

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

GLib Networking Dependencies

Required

GLib-2.74.5 and GnuTLS-3.8.0

gsettings-desktop-schemas-43.0 (for the applications using this package to use proxy server settings in GNOME) and make-ca-1.12

Optional

libproxy

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

kdsoap Dependencies

Required

Qt-5.15.8

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

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

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

libnma Dependencies

Optional

Doxygen-1.9.6

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

Optional Download

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

libnma Dependencies

Required

Gcr-3.41.1, GTK+-3.24.36, ISO Codes-4.12.0, and NetworkManager-1.42.0

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

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

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

libpsl Dependencies

Required

libidn2-2.3.4

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

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

libslirp Dependencies

Required

GLib-2.74.5

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

libsoup Dependencies

Required

glib-networking-2.74.0, libpsl-0.21.2, libxml2-2.10.3, and SQLite-3.40.1

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

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

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

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

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

nghttp2 Dependencies

libxml2-2.10.3

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

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

Additional Downloads

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

uhttpmock Dependencies

Required

libsoup-2.74.3

gobject-introspection-1.74.0 and Vala-0.56.4

Optional

GTK-Doc-1.33.2

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.