Compile o cURL mais recente: Guia completo para CentOS e Ubuntu

Foto do autor

By luis

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?