#### Beyond Linux® From Scratch (systemd Edition) - Version 10.1

### Chapter 17. Networking Libraries

- Prev

  c-ares-1.17.1

- Next

  GeoClue-2.5.7

- Up
- Home

# cURL-7.75.0

## Introduction to cURL

The cURL package contains an utility and a library used for transferring files with URL syntax to any of the following protocols: FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS and FILE. 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-10.1 platform.

### Package Information

- Download (HTTP): https://curl.haxx.se/download/curl-7.75.0.tar.xz

- Download MD5 sum: 9730df8636d67b4e256ebc49daf27246

- Download size: 2.4 MB

- Estimated disk space required: 100 MB (add 17 MB for tests)

- Estimated build time: 0.3 SBU (add 14 SBU for tests)

### cURL Dependencies

#### Recommended

make-ca-1.7 (runtime)

#### Optional

Brotli-1.0.9, c-ares-1.17.1, GnuTLS-3.7.0, libidn2-2.3.0, libpsl-0.21.1, libssh2-1.9.0, MIT Kerberos V5-1.19.1, nghttp2-1.43.0, OpenLDAP-2.4.57, Samba-4.13.4, impacket, libmetalink, librtmp, ngtcp2, quiche, and SPNEGO

#### Optional if Running the Test Suite

stunnel-5.58 (for the HTTPS and FTPS tests) and Valgrind-3.16.1 (this will slow the tests down and may cause failures.)

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/curl

## Installation of cURL

First, adapt the tests to python3:

    grep -rl '#!.*python$' | xargs sed -i '1s/python/&3/'

Install cURL by running the following commands:

    ./configure --prefix=/usr                           \
                --disable-static                        \
                --enable-threaded-resolver              \
                --with-ca-path=/etc/ssl/certs &&
    make

To run the test suite, issue: make test.

Now, as the `root` user:

    make install &&

    rm -rf docs/examples/.deps &&

    find docs \( -name Makefile\* -o -name \*.1 -o -name \*.3 \) -exec rm {} \; &&

    install -v -d -m755 /usr/share/doc/curl-7.75.0 &&
    cp -v -R docs/*     /usr/share/doc/curl-7.75.0

Simple tests to the new installed curl: curl --trace-ascii debugdump.txt http://www.example.com/ and curl --trace-ascii d.txt --trace-time http://example.com/. Inspect the locally created trace files `debugdump.txt` and `d.txt`, which contain version 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.

`--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-gssapi`: This parameter adds Kerberos 5 support to `libcurl`.

`--without-ssl --with-gnutls`: Use 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 paramater adds SSH support to cURL. This is disabled by default.

`--enable-ares`: This paramater adds support for DNS resolution through the c-ares library. It is disabled by default, but does speed up DNS resolution queries.

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 and curl-config
Installed Library: libcurl.so
Installed Directories: /usr/include/curl and /usr/share/doc/curl-7.75.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
`libcurl.so` | provides the API functions required by curl and other programs

Last updated on 2021-02-19 21:30:09 -0800

- Prev

  c-ares-1.17.1

- Next

  GeoClue-2.5.7

- Up
- Home