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.
Package Information
Download (HTTP): https://curl.se/download/curl-8.17.0.tar.xz
Download SHA256 Sum: 955f6e729ad6b3566260e8fef68620e76ba3c31acf0a18524416a185acf77992
Download MD5 sum: 7a9d4b772fc56d68479b0416f234105a
Download size: 2,797 KB
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) using parallelism=4)
cURL Dependencies
Recommended
libpsl-0.21.5
![[Note]](../images/note.png)
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.11,
libidn2-2.3.8,
nghttp2-1.68.0,
OpenLDAP-2.6.10,
"libssh2", "mitkrb",
'runtime' "samba"
(runtime, for NTLM authentication),
gsasl,
impacket,
libmetalink,
librtmp,
ngtcp2,
quiche, and
SPNEGO
Optional if Running the Test Suite
"apache" and "stunnel" (for the HTTPS and FTPS tests),
OpenSSH-10.2p1, and
"valgrind" (this will slow the tests down and may cause failures)
Installation of cURL
First, resolve a problem with a security fix:
sed -i 's/2F 5C/%2F %5C/' scripts/wcurl
Configure cURL by running the following commands:
./configure --prefix=/usr \
--disable-static \
--with-openssl \
--with-ca-path=/etc/ssl/certs
Now to compile cURL by running the following commands:
make
To run the test suite, issue:
make test
![[Note]](../images/note.png)
Note
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, Install cURL by running the following commands:
make install
To Install the optional documentation issue:
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
--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
|