Introduction to cURL
The cURL package contains a
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
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.
Package Information
-
Download (HTTP): https://curl.se/download/curl-8.17.0.tar.xz
-
Download MD5 sum: 7a9d4b772fc56d68479b0416f234105a
-
Download size: 2.7 MB
-
Estimated disk space required: 49 MB (add 64 MB for tests)
-
Estimated build time: 0.3 SBU (add 4.5 SBU for tests (without
valgrind, add 17 SBU with valgrind) all using parallelism=4)
cURL Dependencies
Recommended
libpsl-0.21.5
Note
While there is an option to build the package without libpsl,
both the upstream developers and the BLFS editors alike highly
recommend not disabling support for libpsl due to severe security
implications.
Recommended at runtime
make-ca-1.16.1
Optional
Brotli-1.2.0, c-ares-1.34.5, GnuTLS-3.8.10,
libidn2-2.3.8, libssh2-1.11.1, MIT
Kerberos V5-1.22.1, nghttp2-1.68.0, OpenLDAP-2.6.10, Samba-4.23.3 (runtime, for
NTLM authentication), gsasl, impacket,
libmetalink, librtmp,
ngtcp2, quiche, and
SPNEGO
Optional if Running the Test Suite
Apache-2.4.65 and stunnel-5.76
(for the HTTPS and FTPS tests), OpenSSH-10.2p1, and Valgrind-3.26.0 (this will slow the tests
down and may cause failures)
Installation of cURL
Install cURL by running the
following commands:
./configure --prefix=/usr \
--disable-static \
--with-openssl \
--with-ca-path=/etc/ssl/certs &&
make
To run the test suite, issue: make
test. 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). If you run the
tests after the package has been installed, some tests may fail
because the man pages were deleted by the 'find' command in the
installation instructions below.
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.17.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.
Command Explanations
--disable-static: This
switch prevents installation of static versions of the libraries.
--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 option is not needed if --with-gnutls is selected instead.
--with-gssapi: This parameter adds
Kerberos 5 support to libcurl.
--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.
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, curl-config, and wcurl
Installed Library:
libcurl.so
Installed Directories:
/usr/include/curl and
/usr/share/doc/curl-8.17.0
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
|
|
wcurl
|
is a simple wrapper around curl to easily download files
|
|
libcurl.so
|
provides the API functions required by curl and other programs
|