cURL-8.0.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.

[Note]

Note

Development versions of BLFS may not build or run some packages properly if dependencies have been updated since the most recent stable versions of the book.

Package Information

  • Download (HTTP): https://curl.se/download/curl-8.0.1.tar.xz

  • Download MD5 sum: f6c2fdeb30ad30234378a56c28350845

  • Download size: 2.5 MB

  • Estimated disk space required: 45 MB (add 19 MB for tests)

  • Estimated build time: 0.3 SBU (with parallelism=4; add 16 SBU for tests (without valgrind, add 35 SBU with valgrind)

cURL Dependencies

Recommended

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.53.0, OpenLDAP-2.6.4, Samba-4.18.2 (runtime, for NTLM authentication), gsasl, impacket, libmetalink, librtmp, ngtcp2, quiche, and SPNEGO

Optional if Running the Test Suite

Apache-2.4.57 and stunnel-5.69 (for the HTTPS and FTPS tests), and Valgrind-3.21.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. The tests related to the SMB protocol 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-8.0.1 &&
cp -v -R docs/*     /usr/share/doc/curl-8.0.1

To run some simple verification tests on the newly installed curl, issue the following commands: 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 contains version information, 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-8.0.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