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.
This package is known to build and work properly using an LFS 12.2 platform.
Download (HTTP): https://curl.se/download/curl-8.9.1.tar.xz
Download MD5 sum: 5882f056460240d98cdb5b7f86a06153
Download size: 2.7 MB
Estimated disk space required: 42 MB (add 18 MB for tests)
Estimated build time: 0.2 SBU (with parallelism=4; add 4.9 SBU for tests (without valgrind, add 17 SBU with valgrind))
![[Note]](../images/note.png) 
          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.
Brotli-1.1.0, c-ares-1.33.0, GnuTLS-3.8.7.1, libidn2-2.3.7, libssh2-1.11.0, MIT Kerberos V5-1.21.3, nghttp2-1.62.1, OpenLDAP-2.6.8, Samba-4.20.4 (runtime, for NTLM authentication), gsasl, impacket, libmetalink, librtmp, ngtcp2, quiche, and SPNEGO
Apache-2.4.62 and stunnel-5.72 (for the HTTPS and FTPS tests), OpenSSH-9.8p1, and Valgrind-3.23.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. 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.9.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.
        
          --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.