2022-08-13 04:30 Temps de lecture : 7 min

Comment construire et installer la dernière version de cURL sur CentOS et Ubuntu ?

Souhaitez-vous générer la dernière version de cURL à partir de ses sources ?

Il est possible que la version de cURL incluse avec votre système d'exploitation ne soit pas la plus récente. Si vous avez besoin de la dernière version pour répondre à des exigences spécifiques, vous devrez la compiler vous-même à partir des sources.

Récemment, lors de mes tests de HTTP/3, j'ai rencontré des difficultés en utilisant la version de cURL par défaut sur CentOS. Saviez-vous que cURL offre bien plus de fonctionnalités ?

    [[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
    Protocoles: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smtp smtps telnet tftp 
    Fonctionnalités: AsynchDNS GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz unix-sockets 
    [[email protected] ~]#
  

La version la plus récente de cURL, soit la 7.67, prend en charge le protocole HTTP/3. Par conséquent, j'ai été contraint de la compiler à partir des sources. Cet exemple n'est qu'une illustration, car vos besoins peuvent varier.

Les instructions ci-dessous s'appliquent à la version 7.67 (la plus récente au moment de la rédaction de cet article) sur CentOS 8.x et Ubuntu 20.x. Néanmoins, la procédure est similaire pour d'autres versions.

Prérequis

Commençons par installer les dépendances nécessaires.

  • Mettez à jour votre système. Bien que ce soit optionnel, je vous le recommande. Cela garantit que vous utilisez des versions récentes des paquets installés.
yum update -y
  • Installation des paquets requis
yum install wget gcc openssl-devel -y
wget https://curl.haxx.se/download/curl-7.67.0.tar.gz
  • Décompression de l'archive .tar.gz téléchargée
gunzip -c curl-7.67.0.tar.gz | tar xvf -

Cette opération créera un nouveau répertoire dans votre répertoire de travail courant.

Compilation de cURL sur CentOS/RHEL

Après avoir téléchargé et décompressé la dernière version de cURL, il est temps de procéder à sa compilation.

  • Naviguez vers le répertoire nouvellement créé après la décompression.
cd curl-7.67.0
  • Configurez cURL avec le support SSL, comme indiqué ci-dessous
./configure --with-ssl
  • Vous devriez obtenir un résultat similaire à celui-ci :
      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

L'opération prendra quelques instants. Une fois terminée, vérifiez la version pour confirmer la réussite de l'installation.

Compilation de cURL sur Ubuntu

Je pars du principe que vous avez téléchargé la dernière version, comme expliqué dans la section des prérequis.

  • Accédez au répertoire où vous avez extrait le contenu de l'archive cURL.
  • Installez les dépendances.
apt-get install -y binutils-common binutils make
  • Si les dépendances ci-dessus (binutils) ne sont pas installées, l'erreur suivante peut se produire :
configure: error: ar not found in PATH. Cannot continue without ar.
  • Il est temps de compiler, à présent, à l'aide de la commande configure :
./configure --with-ssl
  • Si la commande précédente n'a pas généré d'erreur, vous pouvez procéder à l'installation à l'aide de la commande make.
make 
make install

C'est terminé !

Vérification

Utilisez la commande –version pour obtenir les informations sur la version.

# 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
    Protocoles: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
    Fonctionnalités: AsynchDNS HTTPS-proxy IPv6 Largefile libz NTLM NTLM_WB SSL UnixSockets
    #

Conclusion

Comme vous pouvez le constater, c'est facile si vous suivez les étapes. J'espère que cela vous a aidé à installer cURL à partir des sources.

Avez-vous apprécié cet article ? N'hésitez pas à le partager !

Auteur
France

Rédacteur tech, guides pratiques et astuces numériques.