Compilando o cURL Mais Recente a Partir do Código-Fonte
O cURL que acompanha o seu sistema operacional pode não ser a versão mais atualizada. Se você precisa da versão mais recente para alguma funcionalidade específica, a solução é compilar o programa a partir do seu código-fonte.
Recentemente, eu estava testando o protocolo HTTP/3 utilizando o cURL, mas a versão padrão que veio no CentOS não era compatível. Aliás, o cURL pode ser usado em diversas outras situações.
[[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] ~]#
No entanto, a versão mais recente do cURL (7.67) possui suporte para HTTP/3. Então, a minha única alternativa era construir o programa a partir do código-fonte. Esse é apenas um exemplo; você pode ter outros motivos para precisar da versão mais recente.
O exemplo abaixo utiliza a versão 7.67 (a mais recente no momento da escrita deste artigo) no CentOS 8.x e Ubuntu 20.x. Mas o procedimento é o mesmo para qualquer outra versão do cURL.
Pré-requisitos
Vamos instalar os pacotes necessários para a compilação:
- Atualize o sistema. Embora seja opcional, eu recomendo para garantir que todos os pacotes instalados estejam atualizados.
yum update -y
- Instale os pacotes necessários para a compilação:
yum install wget gcc openssl-devel -y
wget https://curl.haxx.se/download/curl-7.67.0.tar.gz
- Extraia o arquivo .tar.gz baixado:
gunzip -c curl-7.67.0.tar.gz | tar xvf -
Isso irá criar uma nova pasta no diretório de trabalho atual com os arquivos extraídos.
Compilando cURL no CentOS/RHEL
Depois de baixar e extrair a versão mais recente do cURL, está na hora de compilá-la:
- Acesse a pasta recém-criada após a extração:
cd curl-7.67.0
- Configure o build com SSL:
./configure --with-ssl
- Você verá uma saída semelhante a esta:
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
A compilação e instalação levarão alguns instantes. Depois de concluído, você pode verificar a versão para confirmar se a instalação foi bem-sucedida.
Compilando cURL no Ubuntu
Partindo do pressuposto de que você baixou a versão mais recente conforme descrito nos pré-requisitos:
- Acesse a pasta onde o cURL foi extraído
- Instale as dependências:
apt-get install -y binutils-common binutils make
- Caso você não tenha as dependências (binutils) instaladas, poderá receber o seguinte erro:
configure: error: ar not found in PATH. Cannot continue without ar.
- Agora, configure a compilação:
./configure --with-ssl
- Se não houver erros, instale com o comando make:
make
make install
E isso é tudo!
Verificação
Utilize o comando --version
para ver os detalhes da versão:
# 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
#
Conclusão
Como você viu, é bem simples compilar o cURL quando se tem as instruções certas. Espero que este guia tenha sido útil para você instalar o cURL a partir do código-fonte.
Gostou deste artigo? Que tal compartilhá-lo com outras pessoas?