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]](../images/note.png)
Development versions of BLFS may not build or run some packages properly if LFS or dependencies have been updated since the most recent stable versions of the books.
Download (HTTP): https://curl.se/download/curl-8.4.0.tar.xz
Download MD5 sum: 8424597f247da68b6041dd7f9ca367fe
Download size: 2.5 MB
Estimated disk space required: 47 MB (add 19 MB for tests)
Estimated build time: 0.3 SBU (with parallelism=4; add 15 SBU for tests (without valgrind, add 36 SBU with valgrind)
make-ca-1.13 (runtime)
Brotli-1.1.0, c-ares-1.22.1, GnuTLS-3.8.2, libidn2-2.3.4, libpsl-0.21.2, libssh2-1.11.0, MIT Kerberos V5-1.21.2, nghttp2-1.58.0, OpenLDAP-2.6.6, Samba-4.19.3 (runtime, for NTLM authentication), gsasl, impacket, libmetalink, librtmp, ngtcp2, quiche, and SPNEGO
Apache-2.4.58 and stunnel-5.71 (for the HTTPS and FTPS tests), OpenSSH-9.5p1, and Valgrind-3.22.0 (this will slow the tests down and may cause failures.)
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.
Two tests, 3021 and 3022,
are known to fail due to incompatibilities with OpenSSH-9.x.
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 will be skipped.
Some tests are flaky, so if some tests have failed it's possible to
run a test again with: (cd tests; ./runtests.pl
<test ID>) (the ID of
failed tests are shown in the “These test cases
failed:” message).
Now, as the root
user:
make install &&
rm -rf docs/examples/.deps &&
find docs \( -name Makefile\* -o \
-name \*.1 -o \
-name \*.3 -o \
-name CMakeLists.txt \) -delete &&
cp -v -R docs -T /usr/share/doc/curl-8.4.0
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.
--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 this switch 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.