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.
Download (HTTP): https://curl.se/download/curl-8.11.0.tar.xz
While there is an option to build the package without libpsl, both the upstream developers, the BLFS, and GLFS editors alike highly recommend not disabling support for libpsl due to severe security implications.
Install cURL by running the following commands:
mkdir -v build && cd build && ../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.11.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.
First clean the build directory:
rm -rf *
Install lib32-cURL by running the following commands:
CC="gcc -m32" CXX="g++ -m32" \ PKG_CONFIG_PATH=/usr/lib32/pkgconfig \ ../configure --prefix=/usr \ --libdir=/usr/lib32 \ --host=i686-pc-linux-gnu \ --disable-static \ --with-openssl \ --with-ca-path=/etc/ssl/certs && make
Now, as the root
user:
make DESTDIR=$PWD/DESTDIR install && cp -vr DESTDIR/usr/lib32/* /usr/lib32 && rm -rf DESTDIR && ldconfig
--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. This requires
GnuTLS-3.8.8 to be installed already.
--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.