Jak vytvořit a nainstalovat nejnovější verzi cURL na CentOS a Ubuntu?

Photo of author

By etechblogcz

Potřebujete si sami sestavit nejnovější verzi cURL ze zdrojového kódu?

Verze cURL, která je standardně součástí operačního systému, nemusí být vždy aktuální. Pokud potřebujete nejnovější verzi pro specifické potřeby, je kompilace ze zdroje nezbytná.

Nedávno jsem testoval protokol HTTP/3 s cURL, které bylo součástí mého CentOS, ale nefungovalo to správně. Mimochodem, cURL nabízí mnohem více než se zdá na první pohled.

    [[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] ~]#
   

Aktuální verze cURL (7.67) již ale podporuje HTTP/3. Proto mi nezbylo nic jiného, než ji sestavit ze zdrojového kódu. Tento příklad je jen jeden z mnoha. Možná máte i jiné požadavky.

Následující postup je popsán pro verzi 7.67 (nejnovější v době psaní tohoto textu) na systémech CentOS 8.x a Ubuntu 20.x. Nicméně, postup je v podstatě stejný i pro ostatní verze.

Předběžné kroky

Nejprve si nainstalujeme potřebné balíčky.

  • Aktualizujte systém. I když to není povinné, doporučuji provést aktualizaci systému před instalací nových balíčků.
yum update -y
  • Instalace nezbytných balíčků
yum install wget gcc openssl-devel -y
wget https://curl.haxx.se/download/curl-7.67.0.tar.gz
  • Rozbalení staženého archivu
gunzip -c curl-7.67.0.tar.gz | tar xvf -

Tím se v aktuálním adresáři vytvoří nová složka.

Kompilace cURL na CentOS/RHEL

Po stažení a rozbalení archivu s nejnovějším cURL se můžeme pustit do samotné kompilace.

  • Po rozbalení archivu přejdeme do nově vytvořené složky.
cd curl-7.67.0
  • Konfigurace s podporou SSL.
./configure --with-ssl
  • Měli byste vidět podobný výstup.
 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
  

Kompilace a instalace může trvat několik sekund. Po dokončení ověřte verzi a přesvědčte se, že proběhla úspěšně.

Kompilace cURL na Ubuntu

Předpokládám, že již máte staženou nejnovější verzi podle kroků uvedených v sekci „Předběžné kroky“.

  • Přejděte do složky, kam jste extrahovali stažené cURL.
  • Nainstalujte potřebné závislosti.
apt-get install -y binutils-common binutils make
  • Pokud nemáte nainstalované výše uvedené závislosti (binutils), může se objevit následující chyba.
configure: error: ar not found in PATH. Cannot continue without ar.
  • A nyní můžeme provést konfiguraci.
./configure --with-ssl
  • Pokud konfigurace proběhla bez chyb, můžete přejít k instalaci pomocí příkazu make.
     make
     make install
    

A to je vše!

Ověření

Pro zobrazení informací o verzi použijte přepínač –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
    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
    #
    

Závěr

Jak vidíte, je to snadné, když znáte správný postup. Doufám, že vám tento návod pomůže úspěšně nainstalovat cURL ze zdrojového kódu.

Líbil se vám tento článek? Podělte se o něj se svými přáteli!