¿Desea compilar la última versión de cURL a partir del código fuente?
cURL enviado con el sistema operativo puede no estar actualizado, y si necesita la versión más reciente para un requisito particular, entonces necesita construir desde la fuente.
Últimamente, estuve probando HTTP/3 usando cURL con la versión enviada por defecto en CentOS, pero no funcionó. BTW, hay más cosas que puede hacer con cURL.
[root@lab ~]# 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
Protocolos: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smtp smtps telnet <a href="https://geekflare.com/es/tftp-servers-for-windows/">tftp</a>
Características: AsynchDNS GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz unix-sockets
[root@lab ~]#
Sin embargo, la última versión de cURL (7.67) soporta HTTP/3. Así que sólo tenía una opción: compilar desde el código fuente. Esto es sólo un ejemplo; puede que usted tenga otros requisitos.
El siguiente ejemplo es para la 7.67 (la última en el momento de escribir esto) en CentOS 8.x y Ubuntu 20.x. Pero el procedimiento sigue siendo el mismo para cualquier otra versión.
Requisitos previos
Vamos a instalar las dependencias necesarias.
- Actualice el sistema. Aunque esto es opcional, yo prefiero hacerlo. Siempre tengo paquetes instalados actualizados.
yum update -y
- Instalar los paquetes necesarios
yum install wget gcc openssl-devel -y
- Descargar la última fuente de cURL - puede consultar su página oficial de descargas para conocer la última versión.
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á una nueva carpeta en el directorio de trabajo actual
Construir cURL en CentOS/RHEL
Una vez que haya descargado y extraído las últimas versiones de cURL, es hora de compilarlas.
- Entre en la carpeta recién creada tras la extracción
cd curl-7.67.0
- Configure con SSL como se indica a continuación
./configurar --con-ssl
- Verá una salida como la siguiente
configure: Configurado para construir curl/libcurl:
Configuración del host: x86_64-pc-linux-gnu
Prefijo de instalación: /usr/local
Compilador: 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: activado (OpenSSL)
SSH: no (--with-libssh2)
zlib: activado
brotli: no (--with-brotli)
GSS-API: no (--with-gssapi)
TLS-SRP: no (--enable-tls-srp)
resolver: POSIX threaded
IPv6: habilitado
Unix sockets: habilitado
IDN: no (--with-{libidn2,winidn})
Build libcurl: Shared=yes, Static=yes
Built-in manual: habilitado
Opción --libcurl: habilitada (--disable-libcurl-option)
Verbose errors: habilitado (--disable-verbose)
Code coverage: deshabilitado
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: activado
RTMP: no (--with-librtmp)
Metalink: no (--with-libmetalink)
PSL: no (libpsl not found)
Alt-svc: no (--enable-alt-svc)
HTTP2: desactivado (--with-nghttp2)
HTTP3: desactivado (--with-ngtcp2, --with-quiche)
ESNI: no (--enable-esni)
Protocolos: DICT FILE FTP FTPS GOPHER HTTP HTTPS IMAP IMAPS POP3 POP3S RTSP SMB SMBS SMTP SMTPS TELNET TFTP
Características: SSL IPv6 UnixSockets libz AsynchDNS NTLM NTLM_WB HTTPS-proxy
- Vamos a instalarlos
make
make install
Tardará unos segundos en completarse, y una vez hecho; puede verificar la versión para asegurarse de que se ha instalado correctamente.
Construyendo cURL en Ubuntu
Asumo que ha descargado la última versión como se explica en la sección de prerrequisitos.
- Vaya a la carpeta donde está extraído el cURL descargado
- Instale las dependencias
apt-get install -y binutils-common binutils make
- Si no tiene instaladas las dependencias anteriores (binutils) entonces puede obtener el siguiente error.
configure: error: ar no se encuentra en PATH. No se puede continuar sin ar.
- Y, es hora de construir ahora con el comando
configure
.
./configure --with-ssl
- Si no se produce ningún error en la ejecución anterior, instale finalmente con el comando make.
make
make install
Eso es todo
Verificación
Utilice --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
Protocolos: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
Características: AsynchDNS HTTPS-proxy IPv6 Largefile libz NTLM NTLM_WB SSL UnixSockets
#
Conclusión
Como ve, es fácil cuando se tienen los pasos. Espero que esto le ayude a instalar cURL desde la fuente.