¿Cómo compilar e instalar la última versión de cURL en CentOS y Ubuntu?

¿Está buscando construir la última cURL desde la fuente?

Es posible que cURL que se envía con el sistema operativo no esté actualizado y, si necesita la versión más reciente para un requisito en particular, debe compilar desde la fuente.

Últimamente, estaba probando HTTP/3 usando cURL con la versión enviada por defecto en CentOS, pero eso no funcionó. Por cierto, hay más que puedes hacer con cURL.

[[email protected] ~]# curl --version
curl 7.29.0 (x86_64-redhat-linux-gnu) libcurl/7.29.0 NSS/3.44 zlib/1.2.7 libidn/1.28 libssh2/1.8.0
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smtp smtps telnet tftp 
Features: AsynchDNS GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz unix-sockets 
[[email protected] ~]#

Sin embargo, la última versión de cURL (7.67) admite HTTP/3. Entonces, solo tenía una opción: construir desde la fuente. Esto es sólo un ejemplo; usted puede tener algunos otros requisitos.

El siguiente ejemplo es para 7.67 (más reciente mientras escribo) en CentOS 8.x y Ubuntu 20.x. Pero el procedimiento sigue siendo el mismo para cualquier otra versión.

Requisito previo

Vamos a instalar las dependencias requeridas.

  • Actualice el sistema. Aunque esto es opcional, prefiero hacerlo. Siempre tengo paquetes instalados actualizados.
yum update -y
  • Instalación de los paquetes necesarios
yum install wget gcc openssl-devel -y
wget https://curl.haxx.se/download/curl-7.67.0.tar.gz
  • Extraiga el archivo gz descargado
gunzip -c curl-7.67.0.tar.gz | tar xvf -

Crearía una nueva carpeta en el directorio de trabajo actual

Construyendo cURL en CentOS/RHEL

Una vez que haya descargado y extraído la última cURL, es hora de compilarla.

  • Vaya dentro de la carpeta recién creada después de la extracción
cd curl-7.67.0
  • Configure con SSL como se muestra a continuación
./configure --with-ssl
  • Verá una salida similar a la siguiente.
configure: Configured to build curl/libcurl:

  Host setup:       x86_64-pc-linux-gnu
  Install prefix:   /usr/local
  Compiler:         gcc
   CFLAGS:          -Werror-implicit-function-declaration -O2 -Wno-system-headers -pthread
   CPPFLAGS:        
   LDFLAGS:         
   LIBS:            -lssl -lcrypto -lssl -lcrypto -lz

  curl version:     7.67.0
  SSL:              enabled (OpenSSL)
  SSH:              no      (--with-libssh2)
  zlib:             enabled
  brotli:           no      (--with-brotli)
  GSS-API:          no      (--with-gssapi)
  TLS-SRP:          no      (--enable-tls-srp)
  resolver:         POSIX threaded
  IPv6:             enabled
  Unix sockets:     enabled
  IDN:              no      (--with-{libidn2,winidn})
  Build libcurl:    Shared=yes, Static=yes
  Built-in manual:  enabled
  --libcurl option: enabled (--disable-libcurl-option)
  Verbose errors:   enabled (--disable-verbose)
  Code coverage:    disabled
  SSPI:             no      (--enable-sspi)
  ca cert bundle:   /etc/pki/tls/certs/ca-bundle.crt
  ca cert path:     no
  ca fallback:      no
  LDAP:             no      (--enable-ldap / --with-ldap-lib / --with-lber-lib)
  LDAPS:            no      (--enable-ldaps)
  RTSP:             enabled
  RTMP:             no      (--with-librtmp)
  Metalink:         no      (--with-libmetalink)
  PSL:              no      (libpsl not found)
  Alt-svc:          no      (--enable-alt-svc)
  HTTP2:            disabled (--with-nghttp2)
  HTTP3:            disabled (--with-ngtcp2, --with-quiche)
  ESNI:             no      (--enable-esni)
  Protocols:        DICT FILE FTP FTPS GOPHER HTTP HTTPS IMAP IMAPS POP3 POP3S RTSP SMB SMBS SMTP SMTPS TELNET TFTP
  Features:         SSL IPv6 UnixSockets libz AsynchDNS NTLM NTLM_WB HTTPS-proxy
make
make install

Tardará unos segundos en completarse, y una vez hecho; puede verificar la versión para asegurarse de que se haya instalado correctamente.

Construyendo cURL en Ubuntu

Supongo que ha descargado la última versión como se explica en la sección de requisitos previos.

  • Vaya a la carpeta donde se extrae la cURL descargada
  • Instalar las dependencias
apt-get install -y binutils-common binutils make
  • Si no tiene instaladas las dependencias anteriores (binutils), es posible que reciba el siguiente error.
configure: error: ar not found in PATH. Cannot continue without ar.
  • Y es hora de construir ahora con el comando de configuración.
./configure --with-ssl
  • Si no hay ningún error en la ejecución anterior, finalmente instálelo con el comando make.
make 
make install

¡Eso es todo!

Verificación

Use –version para ver los detalles de la versión.

# curl --version
curl 7.67.0 (x86_64-pc-linux-gnu) libcurl/7.67.0 OpenSSL/1.0.2k-fips zlib/1.2.7
Release-Date: 2019-11-06
Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
Features: AsynchDNS HTTPS-proxy IPv6 Largefile libz NTLM NTLM_WB SSL UnixSockets
#

Conclusión

Verás, es fácil cuando tienes los pasos. Espero que esto te ayude a instalar cURL desde la fuente.

¿Te gustó leer el artículo? ¿Qué tal compartir con el mundo?